Author: REHSACK
Date: Mon Oct 1 02:31:20 2012
New Revision: 15403
Modified:
dbi/branches/sqlengine/lib/DBD/File.pm
Log:
compat fix to support DBD::File 0.40 API
Modified: dbi/branches/sqlengine/lib/DBD/File.pm
==============================================================================
--- dbi/branches/sqlengine/lib/DBD/File.pm (original)
+++ dbi/branches/sqlengine/lib/DBD/File.pm Mon Oct 1 02:31:20 2012
@@ -738,6 +738,9 @@
exists $meta->{f_lockfile} or $meta->{f_lockfile} =
$dbh->{f_lockfile};
defined $meta->{f_schema} or $meta->{f_schema} = $dbh->{f_schema};
+ defined $meta->{f_open_file_needed} or
+ $meta->{f_open_file_needed} = $self->can ("open_file") !=
DBD::File::Table->can ("open_file");
+
defined ($meta->{sql_data_source}) or
$meta->{sql_data_source} = _HANDLE ($meta->{f_file})
? 'DBD::File::DataSource::Stream'
@@ -768,6 +771,21 @@
__PACKAGE__->register_compat_map( \%compat_map );
+# ====== DBD::File <= 0.40 compat stuff
========================================
+
+sub open_file
+{
+ my ($self, $meta, $attrs, $flags) = @_;
+
+ $meta->{fh} and return;
+
+ $meta->{sql_data_source} or
+ croak "Table " . $meta->{table_name} . " not completely initialized";
+ $meta->{sql_data_source}->open_data ($meta, $attrs, $flags);
+
+ return;
+ } # open_file
+
# ====== SQL::Eval API
=========================================================
sub new
@@ -779,8 +797,12 @@
my ($tblnm, $meta) = $className->get_table_meta ($data->{Database},
$attrs->{table}, 1) or
croak "Cannot find appropriate file for table '$attrs->{table}'";
$meta->{sql_data_source}->open_data ($meta, $attrs, $flags);
+ # compat to 0.38 .. 0.40 API
+ $meta->{f_open_file_needed} and $className->open_file ($meta, $attrs,
$flags);
+
+ my $self = $className->SUPER::new ($data, $attrs, $flags);
- return $className->SUPER::new ($data, $attrs, $flags);
+ return $self;
} # new
sub drop ($)