On 9 Dec 2008, at 23:37, Jeffrey L. Taylor wrote:

>
> Quoting Frederick Cheung <[EMAIL PROTECTED]>:
>> On 9 Dec 2008, at 21:33, Jeffrey L. Taylor wrote:
> [snip]
>>> I think I've found the answer.  The key thing is that the test
>>> script is
>>> adding a record at run time.  ActiveRecord does not commit these
>>> records.
>>> This is so it can rollback the test database to just the fixtures
>>> after each
>>> test.  The record ID is being passed to Xapian thru acts_as_xapian
>>> database,
>>> but there is no such record actually in the database, just in the
>>> ActiveRecord
>>> cache.  This problem exists for all search engines that read the
>>> database
>>> directly instead of going thru Rails.
>>
>> Although the record isn't committed, other connections to the  
>> database
>> can see it if they ask.
>> With Sphinx I get it to execute "SET SESSION TRANSACTION ISOLATION
>> LEVEL READ UNCOMMITTED" and it can then see the non committed changes
>> from my tests.
>>
>
> Thank you.  Do you know if this is an SQL standard?  From the MySQL  
> manual it
> looks like it is MySQL specific.  For the moment I'll just test the  
> Xapian
> searching against records in the fixtures.  But this is good to know  
> it that
> turns out to be too great a restriction, i.e., an undetected because  
> of this
> bug bites me.
>

I've only used it with mysql. The transaction isolation levels it  
provides are the 4 ones defined by  the ISO sql standard (at least  
they claim to be). Exactly how you tell the database what isolation  
level you want might vary, I don't know.

Fred

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to