Ruby-sqlite 2.2.3 bug

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 methodupcase’ 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:innext’
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:ineach’
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 forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs