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.

Reply via email to