summaryrefslogtreecommitdiff
path: root/databases/p5-Tie-DBI/patches/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'databases/p5-Tie-DBI/patches/patch-ab')
-rw-r--r--databases/p5-Tie-DBI/patches/patch-ab88
1 files changed, 88 insertions, 0 deletions
diff --git a/databases/p5-Tie-DBI/patches/patch-ab b/databases/p5-Tie-DBI/patches/patch-ab
new file mode 100644
index 00000000000..6c47f2f691f
--- /dev/null
+++ b/databases/p5-Tie-DBI/patches/patch-ab
@@ -0,0 +1,88 @@
+$NetBSD: patch-ab,v 1.1 2010/07/31 07:24:38 sno Exp $
+
+Fix several issue because of depreciated design
+
+--- lib/Tie/DBI.pm.orig 2010-04-10 06:15:01.000000000 +0000
++++ lib/Tie/DBI.pm
+@@ -27,23 +27,35 @@ my %DefaultOptions = (
+ # DBD drivers that work correctly with bound variables
+ my %CAN_BIND = (
+ 'ODBC' => 1,
++ 'AnyData' => 1,
+ 'mysql' => 1,
+ 'mSQL' => 1,
+ 'Oracle' => 1,
+ 'CSV' => 1,
++ 'DBM' => 1,
++ 'Sys' => 1,
+ 'Pg' => 1,
++ 'PO' => 1,
+ 'Informix' => 1,
+ 'Solid' => 1,
+ );
+ my %CANNOT_LISTFIELDS = (
+ 'SQLite' => 1,
+ 'Oracle' => 1,
++ 'CSV' => 1,
++ 'DBM' => 1,
++ 'PO' => 1,
++ 'AnyData' => 1,
+ );
+ my %CAN_BINDSELECT = (
+ 'mysql' => 1,
+ 'mSQL' => 1,
+ 'CSV' => 1,
+ 'Pg' => 1,
++ 'Sys' => 1,
++ 'DBM' => 1,
++ 'AnyData' => 1,
++ 'PO' => 1,
+ 'Informix' => 1,
+ 'Solid' => 1,
+ 'ODBC' => 1,
+@@ -59,6 +71,11 @@ my %DOES_IN = (
+ 'mysql' => 1,
+ 'Oracle' => 1,
+ 'Sybase' => 1,
++ 'CSV' => 1,
++ 'DBM' => 1, # at least with SQL::Statement
++ 'AnyData' => 1,
++ 'Sys' => 1,
++ 'PO' => 1,
+ );
+
+
+@@ -278,11 +295,11 @@ sub STORE {
+ $s->_update($key,\@fields,\@values)
+ : $s->_insert($key,\@fields,\@values);
+ } else {
+- $result = eval {
++ eval {
+ local($s->{'dbh'}->{PrintError}) = 0; # suppress warnings
+- $s->_insert($key,\@fields,\@values);
+- }
+- || $s->_update($key,\@fields,\@values);
++ $result = $s->_insert($key,\@fields,\@values);
++ };
++ $result or $result = $s->_update($key,\@fields,\@values);
+ }
+ croak "STORE: ",$s->errstr if $s->error;
+
+@@ -361,7 +378,7 @@ sub _run_query {
+ # if we get here, then we can't bind, so we replace ? with escaped parameters
+ while ( (my $pos = index($query, '?')) >= 0 ) {
+ my $value = shift(@bind_variables);
+- substr($query, $pos, 1) = (defined($value) ? $value : 'null');
++ substr($query, $pos, 1) = (defined($value) ? ( $self->{CanBind} ? $self->{'dbh'}->quote($value) : $value ) : 'null');
+ }
+ my $sth = $self->{'dbh'}->prepare($query);
+ return unless $sth && $sth->execute;
+@@ -375,7 +392,7 @@ sub _fields {
+ my ($dbh,$table) = @{$self}{'dbh','table'};
+
+ local($^W) = 0; # kill uninitialized variable warning
+- my $sth = $dbh->prepare("LISTFIELDS $table");
++ my $sth = $dbh->prepare("LISTFIELDS $table") unless($self->{CannotListfields});
+
+ # doesn't support LISTFIELDS, so try SELECT *
+ unless (!$self->{CannotListfields} && defined($sth) && $sth->execute) {