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 <, >? 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 < 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 >