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 -~----------~----~----~----~------~----~------~--~---