J
Jon A. Lambert
This is using sqlite-ruby (2.2.3)
-----------------------
require 'sqlite'
require 'pp'
class Foo
end
db = SQLite:
atabase.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'
-----------------------
require 'sqlite'
require 'pp'
class Foo
end
db = 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'