52 |
my %parm = @_; |
my %parm = @_; |
53 |
my $self = {}; |
my $self = {}; |
54 |
|
|
55 |
for my $x (qw(file attr subname env maindbfile tablename)) { |
for my $x (qw(path attr subname env maindbfile tablename)) { |
56 |
$self->{$x} = $parm{$x} or croak "No $x specified"; |
$self->{$x} = $parm{$x} or confess "No $x specified"; |
57 |
} |
} |
58 |
|
|
59 |
$self->{filter} = $parm{filter}; |
$self->{filter} = $parm{filter}; |
151 |
sub drop { |
sub drop { |
152 |
my $self = shift; |
my $self = shift; |
153 |
if ((caller)[0] eq 'WAIT::Table') { # Table knows about this |
if ((caller)[0] eq 'WAIT::Table') { # Table knows about this |
154 |
my $file = $self->{file}; |
my $path = $self->{path}; |
155 |
|
|
156 |
! (!-e $file or unlink $file); |
# ! (!-e $path or unlink $path); |
157 |
|
warn "DEBUG: fix drop index!"; |
158 |
} else { # notify our database |
} else { # notify our database |
159 |
croak ref($self)."::drop called directly"; |
confess ref($self)."::drop called directly"; |
160 |
} |
} |
161 |
} |
} |
162 |
|
|
163 |
sub open { |
sub open { |
164 |
my $self = shift; |
my $self = shift; |
165 |
my $file = $self->{file}; |
my $path = $self->{path}; |
166 |
|
|
167 |
if (defined $self->{dbh}) { |
if (defined $self->{dbh}) { |
168 |
$self->{dbh}; |
$self->{dbh}; |
172 |
my $flags; |
my $flags; |
173 |
if ($self->{mode} & O_RDWR) { |
if ($self->{mode} & O_RDWR) { |
174 |
$flags = DB_CREATE; # | DB_INIT_MPOOL | DB_PRIVATE | DB_INIT_CDB; |
$flags = DB_CREATE; # | DB_INIT_MPOOL | DB_PRIVATE | DB_INIT_CDB; |
175 |
warn "Flags on inverted $file set to 'writing'"; |
#warn "DEBUG: Flags on inverted $path set to 'writing'\n"; |
176 |
} else { |
} else { |
177 |
$flags = DB_RDONLY; |
$flags = DB_RDONLY; |
178 |
# warn "Flags on inverted $file set to 'readonly'"; |
#warn "DEBUG: Flags on inverted $path set to 'readonly'\n"; |
179 |
} |
} |
180 |
my $filename = $self->maindbfile or die; |
my $filename = $self->maindbfile or die; |
181 |
my $subname = join("/",$self->tablename || die,$self->subname || die); |
my $subname = join("/",$self->tablename || die,$self->subname || die); |
182 |
my $env = $self->{env} || "[undef]"; |
my $env = $self->{env} || "[undef]"; |
183 |
$self->{dbh} = tie(%{$self->{db}}, 'BerkeleyDB::Btree', |
$self->{dbh} = tie(%{$self->{db}}, 'BerkeleyDB::Btree', |
184 |
# Filename => $file, |
# Filename => $path, |
185 |
Filename => $filename, |
Filename => $filename, |
186 |
$self->{env} ? (Env => $self->{env}) : (), |
$self->{env} ? (Env => $self->{env}) : (), |
187 |
Subname => $subname, |
Subname => $subname, |
766 |
$self->sync; |
$self->sync; |
767 |
delete $self->{dbh}; |
delete $self->{dbh}; |
768 |
untie %{$self->{db}}; |
untie %{$self->{db}}; |
769 |
for my $att (qw(db func cache cached cdict file maindbfile)) { |
for my $att (qw(db func cache cached cdict path maindbfile)) { |
770 |
delete $self->{$att}; |
delete $self->{$att}; |
771 |
} |
} |
772 |
for my $att (qw(pfunc ifunc xfunc)) { |
for my $att (qw(pfunc ifunc xfunc)) { |