[svn:dbi] r15403 - dbi/branches/sqlengine/lib/DBD

[email protected] Mon, 1 Oct 2012 02:31:21 -0700 (PDT)
Newsgroups perl.dbi.changes
Message-ID <[email protected]>
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 ($)