When attempting to run a delta-import, I'm getting an error stating that the
query can't be executed. The query works fine when executed at a psql prompt.
I've included the contents of my data-config.xml (with hostname, username, and
password details changed) and the error messages that I see in solr.log below.
If there's anything else I should include (schema.xml, solrconfig.xml, etc),
let me know and I'll be more than happy to send them along.
(Note: I only wrote the deltaQuery and deltaImportQuery - the rest of
data-config.xml is someone else's work.)
data-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource
name="ds-1"
driver="org.postgresql.Driver"
user="myuser"
password="strongpassword"
type="JdbcDataSource"
url="jdbc:postgresql://777.555.444.333:5432/ttd"/>
<document name="ttd">
<entity name="destination" dataSource="ds-1" pk="destID"
query="SELECT
dd.id || COALESCE(ddt.destination_type, '') || COALESCE(df.feature, '') ||
COALESCE(dc.cuisine, '') as destID,
dd.id as did,
dd.name as dName,
dd.web_description as dDescription,
dd.editors_pick as dPick,
dd.open_table_id as onLineReservation,
dd.critics_rating as dStar,
ddt.destination_type as category,
df.feature as feature,
dc.cuisine as cuisine,
tad.neighborhood_name as neighborhood,
tad.latitude as latitude,
tad.longitude as longitude,
tad.priority as priority,
tad.neighborhood_slug as neighborhoodSlug,
pc.city as city,
pz.zip_code as zipCode,
pp.street_address as street,
pcty.county as county,
ps.state as state
FROM public.destinations_destination dd
LEFT JOIN public.destinations_destination_destination_type dddt ON dd.id =
dddt.destination_id
LEFT JOIN public.destinations_destinationtype ddt ON
dddt.destinationtype_id = ddt.id
LEFT JOIN public.destinations_destination_features ddf ON dd.id =
ddf.destination_id
LEFT JOIN public.destinations_feature df ON ddf.feature_id = df.id
LEFT JOIN public.destinations_destination_cuisine_types ddct ON dd.id =
ddct.destination_id
LEFT JOIN public.destinations_cuisine dc ON ddct.cuisine_id = dc.id
LEFT JOIN public.ttd_api_destination tad ON dd.id = tad.api_id
LEFT JOIN public.places_place pp ON dd.place_id = pp.id
LEFT JOIN public.places_zipcode pz ON pp.zip_code_id = pz.id
LEFT JOIN public.places_city pc ON pp.city_id =pc.id
LEFT JOIN public.places_county pcty ON pc.county_id = pcty.id
LEFT JOIN public.places_state ps ON pcty.state_id = ps.id;"
deltaQuery="SELECT * into TEMPORARY tempttdDest FROM (SELECT
dd.id || COALESCE(ddt.destination_type, '') || COALESCE(df.feature, '') ||
COALESCE(dc.cuisine, '') as destID,
dd.id as did,
dd.created as dcreated,
dd.updated as dupdated,
dd.name as dName,
dd.web_description as dDescription,
dd.editors_pick as dPick,
dd.open_table_id as onLineReservation,
dd.critics_rating as dStar,
ddt.destination_type as category,
df.feature as feature,
dc.cuisine as cuisine,
tad.neighborhood_name as neighborhood,
tad.latitude as latitude,
tad.longitude as longitude,
tad.priority as priority,
tad.neighborhood_slug as neighborhoodSlug,
pc.city as city,
pz.zip_code as zipCode,
pp.street_address as street,
pcty.county as county,
ps.state as state
FROM public.destinations_destination dd
LEFT JOIN public.destinations_destination_destination_type dddt ON dd.id =
dddt.destination_id
LEFT JOIN public.destinations_destinationtype ddt ON
dddt.destinationtype_id = ddt.id
LEFT JOIN public.destinations_destination_features ddf ON dd.id =
ddf.destination_id
LEFT JOIN public.destinations_feature df ON ddf.feature_id = df.id
LEFT JOIN public.destinations_destination_cuisine_types ddct ON dd.id =
ddct.destination_id
LEFT JOIN public.destinations_cuisine dc ON ddct.cuisine_id = dc.id
LEFT JOIN public.ttd_api_destination tad ON dd.id = tad.api_id
LEFT JOIN public.places_place pp ON dd.place_id = pp.id
LEFT JOIN public.places_zipcode pz ON pp.zip_code_id = pz.id
LEFT JOIN public.places_city pc ON pp.city_id =pc.id
LEFT JOIN public.places_county pcty ON pc.county_id = pcty.id
LEFT JOIN public.places_state ps ON pcty.state_id = ps.id) AS
coalesced_all;
SELECT destID from tempttdDest WHERE dcreated >
'${dih.last_index_time}.00000-00' OR dupdated >
'${dih.last_index_time}.00000-00';"
deltaImportQuery="SELECT
destID,
did,
dName,
dDescription,
dPick,
onLineReservation,
dStar,
category,
feature,
cuisine,
neighborhood,
latitude,
longitude,
priority,
neighborhoodSlug,
city,
zipCode,
street,
county,
state
FROM tempttdDest
WHERE destID = '${dih.delta.id}';" >
<field column="destID" name="destID"/>
<field column="did" name="did"/>
<field column="dName" name="dName"/>
<field column="dDescription" name="dDescription"/>
<field column="dPick" name="dPick"/>
<field column="onLineReservation" name="onLineReservation"/>
<field column="dStar" name="dStar"/>
<field column="neighborhood" name="neighborhood"/>
<field column="latitude" name="latitude"/>
<field column="longitude" name="longitude"/>
<field column="priority" name="priority"/>
<field column="neighborhoodSlug" name="neighborhoodSlug"/>
<field column="seouri" name="seouri"/>
<field column="active" name="active"/>
<field column="category" name="category"/>
<field column="feature" name="feature"/>
<field column="cuisine" name="cuisine"/>
<field column="startTime" name="startTime"/>
<field column="city" name="city"/>
<field column="street" name="street"/>
<field column="zipCode" name="zipCode"/>
<field column="county" name="county"/>
<field column="state" name="state"/>
</entity>
</document>
</dataConfig>
And the errors I see in solr.log when attempting to run the delta-import:
ERROR - 2015-04-13 19:09:33.389;
org.apache.solr.handler.dataimport.DataImporter; Delta Import Failed
java.lang.RuntimeException:
org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to
execute query: SELECT * into TEMPORARY tempttdDest FROM (SELECT dd.id ||
COALESCE(ddt.destination_type, '') || COALESCE(df.feature, '') ||
COALESCE(dc.cuisine, '') as destID, dd.id as did, dd.created as
dcreated, dd.updated as dupdated, dd.name as dName,
dd.web_description as dDescription, dd.editors_pick as dPick,
dd.open_table_id as onLineReservation, dd.critics_rating as dStar,
ddt.destination_type as category, df.feature as feature, dc.cuisine
as cuisine, tad.neighborhood_name as neighborhood, tad.latitude as
latitude, tad.longitude as longitude, tad.priority as priority,
tad.neighborhood_slug as neighborhoodSlug, pc.city as city,
pz.zip_code as zipCode, pp.street_address as street, pcty.county as
county, ps.state as state FROM public.destinations_destination dd
LEFT JOIN public.destinations_destination_destination_type dddt ON dd.id =
dddt.destination_id LEFT JOIN public.destinations_destinationtype ddt ON
dddt.destinationtype_id = ddt.id LEFT JOIN
public.destinations_destination_features ddf ON dd.id = ddf.destination_id
LEFT JOIN public.destinations_feature df ON ddf.feature_id = df.id LEFT
JOIN public.destinations_destination_cuisine_types ddct ON dd.id =
ddct.destination_id LEFT JOIN public.destinations_cuisine dc ON
ddct.cuisine_id = dc.id LEFT JOIN public.ttd_api_destination tad ON dd.id
= tad.api_id LEFT JOIN public.places_place pp ON dd.place_id = pp.id
LEFT JOIN public.places_zipcode pz ON pp.zip_code_id = pz.id LEFT JOIN
public.places_city pc ON pp.city_id =pc.id LEFT JOIN public.places_county
pcty ON pc.county_id = pcty.id LEFT JOIN public.places_state ps ON
pcty.state_id = ps.id) AS coalesced_all; SELECT destID from tempttdDest
WHERE dcreated > '2015-04-10 17:57:04.00000-00' OR dupdated > '2015-04-10
17:57:04.00000-00'; Processing Document # 1
at
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)
at
org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:440)
at
org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:478)
at
org.apache.solr.handler.dataimport.DataImportHandler.handleRequestBody(DataImportHandler.java:179)
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1904)
at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:659)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:362)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at
org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:2379)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException:
Unable to execute query: SELECT * into TEMPORARY tempttdDest FROM (SELECT
dd.id || COALESCE(ddt.destination_type, '') || COALESCE(df.feature, '') ||
COALESCE(dc.cuisine, '') as destID, dd.id as did, dd.created as
dcreated, dd.updated as dupdated, dd.name as dName,
dd.web_description as dDescription, dd.editors_pick as dPick,
dd.open_table_id as onLineReservation, dd.critics_rating as dStar,
ddt.destination_type as category, df.feature as feature, dc.cuisine
as cuisine, tad.neighborhood_name as neighborhood, tad.latitude as
latitude, tad.longitude as longitude, tad.priority as priority,
tad.neighborhood_slug as neighborhoodSlug, pc.city as city,
pz.zip_code as zipCode, pp.street_address as street, pcty.county as
county, ps.state as state FROM public.destinations_destination dd
LEFT JOIN public.destinations_destination_destination_type dddt ON dd.id =
dddt.destination_id LEFT JOIN public.destinations_destinationtype ddt ON
dddt.destinationtype_id = ddt.id LEFT JOIN
public.destinations_destination_features ddf ON dd.id = ddf.destination_id
LEFT JOIN public.destinations_feature df ON ddf.feature_id = df.id LEFT
JOIN public.destinations_destination_cuisine_types ddct ON dd.id =
ddct.destination_id LEFT JOIN public.destinations_cuisine dc ON
ddct.cuisine_id = dc.id LEFT JOIN public.ttd_api_destination tad ON dd.id
= tad.api_id LEFT JOIN public.places_place pp ON dd.place_id = pp.id
LEFT JOIN public.places_zipcode pz ON pp.zip_code_id = pz.id LEFT JOIN
public.places_city pc ON pp.city_id =pc.id LEFT JOIN public.places_county
pcty ON pc.county_id = pcty.id LEFT JOIN public.places_state ps ON
pcty.state_id = ps.id) AS coalesced_all; SELECT destID from tempttdDest
WHERE dcreated > '2015-04-10 17:57:04.00000-00' OR dupdated > '2015-04-10
17:57:04.00000-00'; Processing Document # 1
at
org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71)
at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:279)
at
org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:236)
at
org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:40)
at
org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
at
org.apache.solr.handler.dataimport.SqlEntityProcessor.nextModifiedRowKey(SqlEntityProcessor.java:84)
at
org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextModifiedRowKey(EntityProcessorWrapper.java:267)
at
org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:781)
at
org.apache.solr.handler.dataimport.DocBuilder.doDelta(DocBuilder.java:338)
at
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:223)
... 24 more
Caused by: java.lang.NullPointerException
at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:277)
... 32 more
Andrew Gilbertson