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

Lance Norskog commented on SOLR-1229:
-------------------------------------

Noble-

With this change to DocBuilder.deleteAll(), the Delta2 test runs. With the code 
in the other order, the two delete operations do not work because the template 
is not applied. 

Please alter this config file (from unit test Delta2) to embody the use case 
you mention. The database pk is 'id' and the schema pk is 'solr_id'.  And 
please describe the primary key design of the database and solr schemas.

<dataConfig>
  <document>
     <entity name="x" pk="id" transformer="TemplateTransformer"          
         query="select * from x"  
         deletedPkQuery="select id from x where last_modified > NOW AND 
deleted='true'" 
         deltaImportQuery="select * from x where id='${dataimporter.delta.id}'" 
 
         deltaQuery="select id from x where last_modified > NOW">
            <field column="solr_id" template="prefix-${x.id}"/>
               <entity name="y" query="select * from y where y.A='${x.id}'">
                  <field column="desc" />
               </entity>
      </entity>
   </document>
</dataConfig>


> 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
>            Assignee: Erik Hatcher
>             Fix For: 1.4
>
>         Attachments: SOLR-1229.patch, SOLR-1229.patch, SOLR-1229.patch, 
> SOLR-1229.patch, SOLR-1229.patch, tests.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