On Saturday, December 5, 2015 at 9:49:53 AM UTC-8, Mike Pastore wrote:
>
> On Saturday, December 5, 2015 at 11:33:09 AM UTC-6, Jeremy Evans wrote:
>
>> On Saturday, December 5, 2015 at 9:10:43 AM UTC-8, Mike Pastore wrote:
>>>
>>>
>>>    - Is there a quick and easy way to mark my models as "clean" after 
>>>    the batch update is successfully applied?
>>>    
>>> I'm not sure  what you mean.  If you mean individual records, adding a 
>> column that stores whether the record is clean should work.  If you mean 
>> for the whole table, maybe another table with a single column that stores 
>> the tables that have already been cleaned.
>>
>
> Hrrm, I was under the impression that setting a field with #set or #field= 
> mutates @changed_columns and causes #modified? to return true. The model is 
> "dirty" because it has unsaved changes. Calling #save or #refresh clears 
> these bits with a database call. Is there a way to clear those bits without 
> a database call? 
>

I think this would be the best way:

  worlds.each{|w| w.changed_columns.clear}
 

>
>>>    - Are there any other style or performance suggestions you can make? 
>>>    This is for some Sinatra/Sequel tests I'm working on for 
>>>    FrameworkBenchmarks[1].
>>>    
>>> Well, for significantly better performance, you'd probably have to drop 
>> to lower levels.  As a minor speedup, you could pass the block you are 
>> passing to worlds.each to all, that would eliminate the method call to 
>> worlds.each.  I'm not sure the sort! is necessary.  I doubt it would make a 
>> difference on PostgreSQL, but maybe on MySQL it does.
>>
>
> I'll try that. Yeah, I was getting deadlock on MySQL without the sort. 
> This post on Stack Overflow helped me figure out a solution: 
> http://stackoverflow.com/questions/2332768/how-to-avoid-mysql-deadlock-found-when-trying-to-get-lock-try-restarting-trans
>  
>

I wonder if MySQL doesn't optimize a large IN () using a hash table, but 
instead does a linear search of all of the elements.  That would explain 
the need to sort.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to