Forum: Ruby ruby-sqlite 2.2.3 bug

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
86b36e556cec3b988cae0bc907cbbfc6?d=identicon&s=25 Jon A. Lambert (Guest)
on 2006-03-17 17:15
(Received via mailing list)
This is using sqlite-ruby (2.2.3)

-----------------------
require 'sqlite'
require 'pp'

class Foo
end
db = SQLite::Database.open("test.sqlite")
begin
  db.execute("drop table test;")
rescue
end
db.execute("create table test (id integer primary key, data object);")
db.type_translation = true
db.translator.add_translator("object") {|type, value|
  db.class.decode value
}
db.execute("insert into test values (1, ?);", db.class.encode(Foo.new))
db.execute("select * from test;") do |row|
  pp row
end
#db.type_translation = false  <== uncomment to make work
pp db.execute("pragma table_info(test)")  <======= bug here
db.table_info("test") do |row|  <===== and here
  pp row
end
----------------------

[1, #<Foo:0x2c35ee0>]
C:/apps/ruby/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3-mswin32/lib/sqlite/translator.rb:85:in
`type_name': undefined method `upcase' for nil:NilClass (NoMethodError)
 from
C:/apps/ruby/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3-mswin32/lib/sqlite/translator.rb:77:in
`translate'
 from
C:/apps/ruby/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3-mswin32/lib/sqlite/resultset.rb:136:in
`next'
 from
C:/apps/ruby/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3-mswin32/lib/sqlite/resultset.rb:135:in
`next'
 from
C:/apps/ruby/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3-mswin32/lib/sqlite/resultset.rb:161:in
`each'
 from
C:/apps/ruby/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3-mswin32/lib/sqlite/database.rb:199:in
`execute'
 from C:/work/teensymud/trunk/testsql.rb:21

Switching type_translation off allows pragma to work.

Also example in documentation, shows   'db.decode'  instead of
'db.class.decode'
This topic is locked and can not be replied to.