[ 
https://issues.apache.org/jira/browse/SOLR-1229?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Erik Hatcher updated SOLR-1229:
-------------------------------

    Description: 
Problem doing a delta-import such that records marked as "deleted" in the 
database are removed from Solr using deletedPkQuery.

Here's a config I'm using against a mocked test database:

{code:xml}
<dataConfig>
 <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/db"/>
 <document name="tests">
   <entity name="test"
           pk="board_id"
           transformer="TemplateTransformer"
           deletedPkQuery="select board_id from boards where deleted = 'Y'"
           query="select * from boards where deleted = 'N'"
           deltaImportQuery="select * from boards where deleted = 'N'"
           deltaQuery="select * from boards where deleted = 'N'"
           preImportDeleteQuery="datasource:board">
     <field column="id" template="board-${test.board_id}"/>
     <field column="datasource" template="board"/>
     <field column="title" />
   </entity>
 </document>
</dataConfig>
{code}

Note that the uniqueKey in Solr is the "id" field.  And its value is a template 
board-<PK>.

I noticed the javadoc comments in DocBuilder#collectDelta it says "Note: In our 
definition, unique key of Solr document is the primary key of the top level 
entity".  This of course isn't really an appropriate assumption.

  was:
Problem doing a delta-import such that records marked as "deleted" in the 
database are removed from Solr using deletedPkQuery.

Here's a config I'm using against a mocked test database:

<dataConfig>
 <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/db"/>
 <document name="tests">
   <entity name="test"
           pk="board_id"
           transformer="TemplateTransformer"
           deletedPkQuery="select board_id from boards where deleted = 'Y'"
           query="select * from boards where deleted = 'N'"
           deltaImportQuery="select * from boards where deleted = 'N'"
           deltaQuery="select * from boards where deleted = 'N'"
           preImportDeleteQuery="datasource:board">
     <field column="id" template="board-${test.board_id}"/>
     <field column="datasource" template="board"/>
     <field column="title" />
   </entity>
 </document>
</dataConfig>

Note that the uniqueKey in Solr is the "id" field.  And its value is a template 
board-<PK>.

I noticed the javadoc comments in DocBuilder#collectDelta it says "Note: In our 
definition, unique key of Solr document is the primary key of the top level 
entity".  This of course isn't really an appropriate assumption.


> deletedPkQuery feature does not work when pk and uniqueKey field do not have 
> the same value
> -------------------------------------------------------------------------------------------
>
>                 Key: SOLR-1229
>                 URL: https://issues.apache.org/jira/browse/SOLR-1229
>             Project: Solr
>          Issue Type: Bug
>          Components: contrib - DataImportHandler
>    Affects Versions: 1.4
>            Reporter: Erik Hatcher
>             Fix For: 1.4
>
>         Attachments: SOLR-1229.patch, SOLR-1229.patch, SOLR-1229.patch, 
> SOLR-1229.patch
>
>
> Problem doing a delta-import such that records marked as "deleted" in the 
> database are removed from Solr using deletedPkQuery.
> Here's a config I'm using against a mocked test database:
> {code:xml}
> <dataConfig>
>  <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/db"/>
>  <document name="tests">
>    <entity name="test"
>            pk="board_id"
>            transformer="TemplateTransformer"
>            deletedPkQuery="select board_id from boards where deleted = 'Y'"
>            query="select * from boards where deleted = 'N'"
>            deltaImportQuery="select * from boards where deleted = 'N'"
>            deltaQuery="select * from boards where deleted = 'N'"
>            preImportDeleteQuery="datasource:board">
>      <field column="id" template="board-${test.board_id}"/>
>      <field column="datasource" template="board"/>
>      <field column="title" />
>    </entity>
>  </document>
> </dataConfig>
> {code}
> Note that the uniqueKey in Solr is the "id" field.  And its value is a 
> template board-<PK>.
> I noticed the javadoc comments in DocBuilder#collectDelta it says "Note: In 
> our definition, unique key of Solr document is the primary key of the top 
> level entity".  This of course isn't really an appropriate assumption.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to