summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2008-11-01 19:53:31 +0000
committerivan <ivan>2008-11-01 19:53:31 +0000
commit9d0fa42c1500bb5fa7e7f19d3271911240469bfc (patch)
treef1ae10d5e699c5d68860d7ea311019bd8b429db9
parent3fc32f9511ea065d5a754da66270f09b0287b160 (diff)
backport bind_param fixes for DBD:Pg 1.x from 1.9, fixes "Cannot bind ... unknown sql_type 6 on tax report, RT#4133
-rw-r--r--FS/FS/Record.pm13
1 files changed, 9 insertions, 4 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm
index 31b0fe75f..ad6613e64 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -379,17 +379,22 @@ sub qsearch {
my $value = $record->{$field};
#done above in 1.7# $value = $value->{'value'} if ref($value);
my $type = dbdef->table($table)->column($field)->type;
+
+ my $TYPE = SQL_VARCHAR;
if ( $type =~ /(int|(big)?serial)/i && $value =~ /^\d+(\.\d+)?$/ ) {
- $sth->bind_param($bind++, $value, { TYPE => SQL_INTEGER } );
+ $TYPE = SQL_INTEGER;
+
+ #DBD::Pg 1.49: Cannot bind ... unknown sql_type 6 with SQL_FLOAT
} elsif ( ( $type =~ /(numeric)/i && $value =~ /^[+-]?\d+(\.\d+)?$/)
|| ( $type =~ /(real|float4)/i
&& $value =~ /[-+]?\d*\.?\d+([eE][-+]?\d+)?/
)
) {
- $sth->bind_param($bind++, $value, { TYPE => SQL_FLOAT } );
- } else {
- $sth->bind_param($bind++, $value, { TYPE => SQL_VARCHAR } );
+ $TYPE = SQL_DECIMAL;
}
+
+ $sth->bind_param($bind++, $value, { TYPE => $TYPE } );
+
}
# $sth->execute( map $record->{$_},