Skip to content

Instantly share code, notes, and snippets.

@chanks
Created April 3, 2012 06:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chanks/2289822 to your computer and use it in GitHub Desktop.
Save chanks/2289822 to your computer and use it in GitHub Desktop.
Sequel bug with cursors and statement parameterization.
Loading development environment (Rails 3.2.2)
irb(main):001:0> DB.loggers << Logger.new(STDOUT)
=> [...array of loggers...]
irb(main):002:0> Problem.dataset.first
(0.001232s) SELECT * FROM "problems" LIMIT $1::int4; [1]
=> #<Problem @values={:id=>1, :content=>...}>
irb(main):003:0> Problem.dataset.use_cursor.first
(0.000347s) BEGIN
PGError: ERROR: there is no parameter $1
LINE 1: ...SOR WITHOUT HOLD FOR SELECT * FROM "problems" LIMIT $1::int4
^: DECLARE sequel_cursor NO SCROLL CURSOR WITHOUT HOLD FOR SELECT * FROM "problems" LIMIT $1::int4
PGError: ERROR: current transaction is aborted, commands ignored until end of transaction block: CLOSE sequel_cursor
(0.000205s) ROLLBACK
Sequel::DatabaseError: PGError: ERROR: current transaction is aborted, commands ignored until end of transaction block
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:211:in `async_exec'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:211:in `block in execute_query'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/logging.rb:32:in `log_yield'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:211:in `execute_query'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:198:in `block in execute'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:177:in `check_disconnect_errors'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:198:in `execute'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:312:in `block (2 levels) in execute'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/connecting.rb:230:in `block in synchronize'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/connection_pool/threaded.rb:88:in `hold'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/connecting.rb:230:in `synchronize'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:312:in `block in execute'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:467:in `check_database_errors'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:310:in `execute'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/extensions/pg_auto_parameterize.rb:99:in `execute'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/query.rb:74:in `execute_dui'
... 6 levels...
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/connecting.rb:230:in `block in synchronize'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/connection_pool/threaded.rb:101:in `hold'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/connecting.rb:230:in `synchronize'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/database/query.rb:247:in `transaction'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:730:in `cursor_fetch_rows'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/adapters/postgres.rb:580:in `fetch_rows'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/dataset/actions.rb:131:in `each'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel_pg-1.3.0/lib/sequel_pg/sequel_pg.rb:58:in `each'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/dataset/actions.rb:515:in `single_record'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/sequel-3.34.0/lib/sequel/dataset/actions.rb:188:in `first'
from (irb):3
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.2.2/lib/rails/commands/console.rb:47:in `start'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.2.2/lib/rails/commands/console.rb:8:in `start'
from /home/chris/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.2.2/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment