On Tue, Dec 30, 2008 at 3:33 PM, Manupriya <manupriya.si...@gmail.com>wrote:
>
> Thanks Shalin and Noble for all the help.
>
> I looked into the source code of 1.3 for the Null Pointer that I was
> getting. And indeed, there was a problem. In release 1.3,
> SqlEntityProcessor
> doesnt handle 'deltaImportQuery' for delta imports. But this problem is
> fixed in the nightly build.


DataImportHandler in the Solr 1.3 release supports delta imports. In that
version we used to generate the query ourselves after detecting the changed
primary key. This was not very flexible and worked only for very simple
queries. Due to this the deltaImportQuery attribute was introduced (after
release 1.3). You can use deltaImportQuery to exactly specify what query
should be executed once the primary key of a changed row is identified. The
example given in the wiki should work with Solr 1.3 release.

So now I have one question, we were planning to use Delta Import feature of
> Solr in our production environment. And the latest stable release (1.3)
> doesnt support all the features for Delta Import. So is it advisable to use
> one of the nightly builds in production environement? I am new to Solr, so
> I
> need expert opinion in decision making.


If the problem was related only to case sensitive names and your import
works without deltaImportQuery then you should use 1.3 otherwise you don't
have a lot of choice :)

All the normal caveats of trunk code apply to 1.4, however I believe it is
fairly stable.


>
> --------------------------------------------------------------------------------------------------
> Apart from this, I realized, Solr is 'case sensitive', while resolving
> variable values.
>
> For example, the following entity definition gives SQl syntax exception
> because the varaible is 'id' in deltaQuery and 'ID' in deltaImportQuery.
>
> <entity name="item" pk="ID" query="select * from item"
>               deltaQuery="select id from item where last_modified >
> '${dataimporter.last_index_time}'"
>               deltaImportQuery="select * from item where
> ID=${dataimporter.delta.ID}">
>
> ------------------------------------------------------------------------------------------------
> And the following definition works fine.
>
> <entity name="item" pk="ID" query="select * from item"
>                deltaQuery="select ID from item where last_modified >
> '${dataimporter.last_index_time}'"
>               deltaImportQuery="select * from item where
> ID=${dataimporter.delta.ID}">
>
> It took me sometime to figure this out and also some looking into the code.
> I wrongly assumed it to behave like normal SQL query.
>
> Is this case-sensitivity intentional? Is it documented somewhere that I can
> refer for constructing queries for Delta/Full Import?


There was a bug related to case-sensitivity in 1.3 which has been fixed in
trunk. Now, unless you specify the 'name' attribute for a field DIH does
case-insensitive matches. If you are providing a 'name' it must be in the
same case as the column name returned by SQL.

-- 
Regards,
Shalin Shekhar Mangar.

Reply via email to