A thought I had on this from a DIH design perspective. Would it be better to
have the SQL queries stored in an element rather than an attribute so that
you can wrap it in a CDATA block without having to mess up the look of query
with &lt, &gt? Makes debugging easier (I know find and replace is trivial
but it can be annoying when debugging SQL issues :-)).

On Wed, Oct 28, 2009 at 5:15 PM, Lance Norskog <goks...@gmail.com> wrote:

> It is easier to put SQL select statements in a view, and just use that
> view from the DIH configuration file.
>
> On Tue, Oct 27, 2009 at 12:30 PM, Andrew Clegg <andrew.cl...@gmail.com>
> wrote:
> >
> >
> > Heh, eventually I decided
> >
> > "where 4 > node_depth"
> >
> > was the most pleasing (if slightly WTF-ish) way of writing it...
> >
> > Cheers,
> >
> > Andrew.
> >
> >
> > Erik Hatcher-4 wrote:
> >>
> >> Use &lt; instead of < in that attribute.  That should fix the issue.
> >> Remember, it's an XML file, so it has to obey XML encoding rules which
> >> make it ugly but whatcha gonna do?
> >>
> >>       Erik
> >>
> >> On Oct 27, 2009, at 11:50 AM, Andrew Clegg wrote:
> >>
> >>>
> >>> Hi,
> >>>
> >>> If I have a DataImportHandler query with a greater-than sign in,
> >>> like this:
> >>>
> >>>        <entity name="higher_node" dataSource="database"
> >>> query="select *,
> >>> title as keywords from cathnode_text where node_depth > 4">
> >>>
> >>> Everything's fine. However, if it contains a less-than sign:
> >>>
> >>>        <entity name="higher_node" dataSource="database"
> >>> query="select *,
> >>> title as keywords from cathnode_text where node_depth < 4">
> >>>
> >>> I get this exception:
> >>>
> >>> INFO: Processing configuration from solrconfig.xml:
> >>> {config=dataconfig.xml}
> >>> [Fatal Error] :240:129: The value of attribute "query" associated
> >>> with an
> >>> element type "null" must not contain the '<' character.
> >>> 27-Oct-2009 15:30:49
> >>> org.apache.solr.handler.dataimport.DataImportHandler
> >>> inform
> >>> SEVERE: Exception while loading DataImporter
> >>> org.apache.solr.handler.dataimport.DataImportHandlerException:
> >>> Exception
> >>> occurred while initializing context
> >>>        at
> >>> org
> >>> .apache
> >>> .solr
> >>> .handler.dataimport.DataImporter.loadDataConfig(DataImporter.java:184)
> >>>        at
> >>> org
> >>> .apache
> >>> .solr.handler.dataimport.DataImporter.<init>(DataImporter.java:101)
> >>>        at
> >>> org
> >>> .apache
> >>> .solr
> >>> .handler.dataimport.DataImportHandler.inform(DataImportHandler.java:
> >>> 113)
> >>>        at
> >>> org
> >>> .apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:
> >>> 424)
> >>>        at org.apache.solr.core.SolrCore.<init>(SolrCore.java:588)
> >>>        at
> >>> org.apache.solr.core.CoreContainer
> >>> $Initializer.initialize(CoreContainer.java:137)
> >>>        at
> >>> org
> >>> .apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:
> >>> 83)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina
> >>> .core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:
> >>> 275)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina
> >>> .core
> >>> .ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:
> >>> 397)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina
> >>> .core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.core.StandardContext.filterStart(StandardContext.java:3709)
> >>>        at
> >>> org.apache.catalina.core.StandardContext.start(StandardContext.java:
> >>> 4356)
> >>>        at
> >>> org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:
> >>> 1244)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:
> >>> 604)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:
> >>> 129)
> >>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> >>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina
> >>> .core
> >>> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> >>> 290)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina
> >>> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> >>> 233)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> >>> 175)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina
> >>> .authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
> >>>        at
> >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
> >>> 568)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> >>>        at
> >>> org
> >>> .apache
> >>> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
> >>> 109)
> >>>        at
> >>> org
> >>> .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> >>> 286)
> >>>        at
> >>> org
> >>> .apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> >>> 844)
> >>>        at
> >>> org.apache.coyote.http11.Http11Protocol
> >>> $Http11ConnectionHandler.process(Http11Protocol.java:583)
> >>>        at
> >>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
> >>> 447)
> >>>        at java.lang.Thread.run(Thread.java:619)
> >>> Caused by: org.xml.sax.SAXParseException: The value of attribute
> >>> "query"
> >>> associated with an element type "null" must not contain the '<'
> >>> character.
> >>>        at
> >>> com
> >>> .sun
> >>> .org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:
> >>> 239)
> >>>        at
> >>> com
> >>> .sun
> >>> .org
> >>> .apache
> >>> .xerces
> >>> .internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
> >>>        at
> >>> org
> >>> .apache
> >>> .solr
> >>> .handler.dataimport.DataImporter.loadDataConfig(DataImporter.java:172)
> >>>        ... 30 more
> >>>
> >>> Is this fixable, or an unavoidable feature of Xerces? If the latter,
> >>> perhaps
> >>> the docs could benefit from a note to say "use NOT a >= b" or
> >>> something?
> >>>
> >>> Speaking of, I found this in the wiki examples for the DIH:
> >>>
> >>>            <entity name="item" pk="ID"
> >>>                query="select * from item"
> >>>                deltaImportQuery="select * from item where
> >>> ID=='${dataimporter.delta.id}'"
> >>>                deltaQuery="select id from item where last_modified >
> >>> '${dataimporter.last_index_time}'">
> >>>
> >>> Shouldn't that be one equals sign:
> >>>
> >>>                deltaImportQuery="select * from item where
> >>> ID='${dataimporter.delta.id}'"
> >>>
> >>> Or is it doing something clever with Java operators?
> >>>
> >>> Cheers,
> >>>
> >>> Andrew.
> >>>
> >>> --
> >>> View this message in context:
> >>>
> http://www.nabble.com/Greater-than-and-less-than-in-data-import-SQL-queries-tp26080100p26080100.html
> >>> Sent from the Solr - User mailing list archive at Nabble.com.
> >>>
> >>
> >>
> >>
> >
> > --
> > View this message in context:
> http://www.nabble.com/Greater-than-and-less-than-in-data-import-SQL-queries-tp26080100p26083680.html
> > Sent from the Solr - User mailing list archive at Nabble.com.
> >
> >
>
>
>
> --
> Lance Norskog
> goks...@gmail.com
>

Reply via email to