Recno/Queue#[] and #[]= fixed. value.to_s
This commit is contained in:
parent
b6254035a6
commit
691b5dacf3
1 changed files with 21 additions and 6 deletions
27
lib/sbdb.rb
27
lib/sbdb.rb
|
@ -17,7 +17,8 @@ module SBDB
|
||||||
@env
|
@env
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize dir, flags = nil, mode = nil
|
def initialize dir = nil, flags = nil, mode = nil
|
||||||
|
dif ||= '.'
|
||||||
flags ||= INIT_TXN | INIT_LOCK | INIT_LOG | INIT_MPOOL | CREATE
|
flags ||= INIT_TXN | INIT_LOCK | INIT_LOG | INIT_MPOOL | CREATE
|
||||||
mode ||= 0
|
mode ||= 0
|
||||||
@env = Bdb::Env.new 0
|
@env = Bdb::Env.new 0
|
||||||
|
@ -49,10 +50,15 @@ module SBDB
|
||||||
# see SBDB::DB, SBDB::Btree, SBDB::Hash, SBDB::Recno, SBDB::Queue
|
# see SBDB::DB, SBDB::Btree, SBDB::Hash, SBDB::Recno, SBDB::Queue
|
||||||
def open type, *p, &e
|
def open type, *p, &e
|
||||||
p[5] = self
|
p[5] = self
|
||||||
|
type ||= SBDB::Unkown
|
||||||
type.new *p, &e
|
type.new *p, &e
|
||||||
end
|
end
|
||||||
alias db open
|
alias db open
|
||||||
alias open_db open
|
alias open_db open
|
||||||
|
|
||||||
|
def [] file, name = nil, &e
|
||||||
|
open nil, file, name, CREATE | AUTO_COMMIT, &e
|
||||||
|
end
|
||||||
end
|
end
|
||||||
Env = Environment
|
Env = Environment
|
||||||
|
|
||||||
|
@ -207,7 +213,16 @@ module SBDB
|
||||||
|
|
||||||
class Unknown < DB
|
class Unknown < DB
|
||||||
def self.new *p, &e
|
def self.new *p, &e
|
||||||
super *p[0...2], UNKNOWN, *p[2..-1], &e
|
db = super *p[0...2], UNKNOWN, *p[2..-1], &e
|
||||||
|
case db.bdb_object.get_type
|
||||||
|
when BTREE then Btree.new *p
|
||||||
|
when HASH then Hash.new *p
|
||||||
|
when RECNO then Recno.new *p
|
||||||
|
when QUEUE then Queue.new *p
|
||||||
|
else super *p[0...2], UNKNOWN, *p[2..-1], &e
|
||||||
|
end
|
||||||
|
ensure
|
||||||
|
db.close
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -229,11 +244,11 @@ module SBDB
|
||||||
end
|
end
|
||||||
|
|
||||||
def [] k
|
def [] k
|
||||||
super [k].pack('N')
|
super k.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def []= k, v
|
def []= k, v
|
||||||
super [k].pack('N'), v
|
super k.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Array = Recno
|
Array = Recno
|
||||||
|
@ -244,11 +259,11 @@ module SBDB
|
||||||
end
|
end
|
||||||
|
|
||||||
def [] k
|
def [] k
|
||||||
super [k].pack('N')
|
super k.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def []= k, v
|
def []= k, v
|
||||||
super [k].pack('N'), v
|
super k.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue