Hmm, when I change the code to db.execute(), I get this error:

/usr/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/
mysql.rb:196:in `close': Mysql::Error: Commands out of sync; you can't
run this command now (Sequel::DatabaseError)

Shawn

On Aug 4, 12:33 am, Shawn Van Ittersum <[email protected]>
wrote:
> Thanks, Jeremy.  I haven't run into that error recently, but it looks
> like your patch should do the trick.
>
> I checked the code that caused the error:
>
>   db[File.read(filename)].first
>
> I was reading a file of SQL and then executing it with db[].first.  I
> see that I should have been using db.execute() instead.  Still, there
> should probably be a check of the r value (via your patch or similar)
> before freeing it.
>
> I also just want to say a big thanks for your prompt responses to this
> and other issues I've brought to your attention in the past. Your
> management of Sequel is excellent!
>
> Shawn
>
> On Jul 27, 7:58 am, Jeremy Evans <[email protected]> wrote:
>
>
>
> > On Jul 27, 12:23 am, Shawn <[email protected]> wrote:
>
> > > sequel-3.2.0/lib/sequel/adapters/mysql.rb line 151:
>
> > >   148:            yield r if r
> > >   149:            if conn.respond_to?(:next_result) &&
> > > conn.next_result
> > >   150:              loop do
> > > =>151:                r.free
> > >   152:                r = nil
> > >   153:                begin
>
> > > Sometimes fails with message "undefined method `free' for nil:NilClass
> > > (NoMethodError)"
>
> > > It's checking r's value at 148, so there is the possibility that r is
> > > nil. But that conditional does not extend to line 151, so if r is nil,
> > > the method call to free will fail.
>
> > > Please fix.
>
> > This should only fail if conn.query(sql) returns nil or if
> > conn.use_result returns nil and conn.next_result is true.  That seems
> > unlikely, but I guess it can still happen.  Can you try the patch 
> > athttp://pastie.org/560310.txt? Also, if you wouldn't mind sharing the
> > code that causes the error, I'd appreciate it.
>
> > Jeremy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to