[ 
https://issues.apache.org/jira/browse/SOLR-2907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13418038#comment-13418038
 ] 

Cory Berg commented on SOLR-2907:
---------------------------------

Hi All,

Saw this exact issue today in Solr 3.6.  The issue is in findMatchingPkColumn.  
When I debugged this for a similar case, I noticed that the pk passed in during 
the case below will be the string "ITEM_ID, CATEGORY_ID".  However on the line 
that actually compares the pk to the returned fields, they will of course not 
match, because the returned keys are "ITEM_ID" and "CATEGORY_ID".  Ergo, 
multiple comma-separated pks, as given in the Solr DIH Wiki, will not work.  
The fix appears to be to parse out the pks in order to satisfy the comparison, 
or to munge the actual returned column names so that the match is forced, but 
this is much uglier.  I will attempt a fix for my own purposes you are welcome 
to it if interested.
                
> java.lang.IllegalArgumentException: deltaQuery has no column to resolve to 
> declared primary key pk='ITEM_ID, CATEGORY_ID'
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-2907
>                 URL: https://issues.apache.org/jira/browse/SOLR-2907
>             Project: Solr
>          Issue Type: Bug
>          Components: contrib - DataImportHandler, Schema and Analysis
>    Affects Versions: 3.4
>            Reporter: Alan Baker
>
> We are using solr for our site and ran into this error in our own schema and 
> I was able to reproduce it using the dataimport example code in the solr 
> project.  We do not get this error in SOLR 1.4 only started seeing it as we 
> are working to upgrade to 3.4.0.  It fails when delta-importing linked tables.
> Complete trace:
> Nov 18, 2011 5:21:02 PM org.apache.solr.handler.dataimport.DataImporter 
> doDeltaImport
> SEVERE: Delta Import Failed
> java.lang.IllegalArgumentException: deltaQuery has no column to resolve to 
> declared primary key pk='ITEM_ID, CATEGORY_ID'
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.findMatchingPkColumn(DocBuilder.java:849)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:900)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:879)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.doDelta(DocBuilder.java:285)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:179)
>       at 
> org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:390)
>       at 
> org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:429)
>       at 
> org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408)
> I used this dataConfig from the wiki on the data import:
> <dataConfig>
>     <dataSource driver="org.hsqldb.jdbcDriver" 
> url="jdbc:hsqldb:./example-DIH/hsqldb/ex" user="sa" />
>     <document>
>    <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 &gt; 
> '${dataimporter.last_index_time}'">
>             <entity name="item_category" pk="ITEM_ID, CATEGORY_ID"
>                     query="select CATEGORY_ID from item_category where 
> ITEM_ID='${item.ID}'"
>                     deltaQuery="select ITEM_ID, CATEGORY_ID from 
> item_category where last_modified > '${dataimporter.last_index_time}'"
>                     parentDeltaQuery="select ID from item where 
> ID=${item_category.ITEM_ID}">
>                 
>                       <entity name="category" pk="ID"
>                         query="select DESCRIPTION as cat from category where 
> ID = '${item_category.CATEGORY_ID}'"
>                         deltaQuery="select ID from category where 
> last_modified &gt; '${dataimporter.last_index_time}'"
>                         parentDeltaQuery="select ITEM_ID, CATEGORY_ID from 
> item_category where CATEGORY_ID=${category.ID}"/>
>               </entity>
>         </entity>
>         
>     </document>
> </dataConfig>
> To reproduce use the data config from above and set the dataimport.properties 
> last update times to before the last_modifed date in the example data.  I my 
> case I had to set the year to 1969.  Then run a delta-import and the 
> exception occurs.  Thanks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to