[interchange-cvs] interchange - jon modified lib/Vend/Table/DBI.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Thu Jan 23 22:15:01 2003


User:      jon
Date:      2003-01-24 03:14:37 GMT
Modified:  lib/Vend/Table Tag: STABLE_4_8-branch DBI.pm
Log:
Merge from trunk:

* Simplify field_settor subroutines with prepared query and placeholder.
  Prevents infamous DBD::Pg::do errors.

Revision  Changes    Path
No                   revision



No                   revision



2.0.2.11  +6 -7      interchange/lib/Vend/Table/DBI.pm


rev 2.0.2.11, prev_rev 2.0.2.10
Index: DBI.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/DBI.pm,v
retrieving revision 2.0.2.10
retrieving revision 2.0.2.11
diff -u -u -r2.0.2.10 -r2.0.2.11
--- DBI.pm	26 Nov 2002 03:21:13 -0000	2.0.2.10
+++ DBI.pm	24 Jan 2003 03:14:37 -0000	2.0.2.11
@@ -1,6 +1,6 @@
 # Vend::Table::DBI - Access a table stored in an DBI/DBD database
 #
-# $Id: DBI.pm,v 2.0.2.10 2002/11/26 03:21:13 jon Exp $
+# $Id: DBI.pm,v 2.0.2.11 2003/01/24 03:14:37 jon Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. and
 # Interchange Development Group, http://www.icdevgroup.org/
@@ -21,7 +21,7 @@
 # MA  02111-1307  USA.
 
 package Vend::Table::DBI;
-$VERSION = substr(q$Revision: 2.0.2.10 $, 10);
+$VERSION = substr(q$Revision: 2.0.2.11 $, 10);
 
 use strict;
 
@@ -1166,13 +1166,12 @@
 sub field_settor {
     my ($s, $column) = @_;
 	$s = $s->import_db() if ! defined $s->[$DBI];
+	my $q = "update $s->[$TABLE] SET $column = ? where $s->[$KEY] = ?";
+	my $sth = $s->[$DBI]->prepare($q)
+		or Carp::croak errmsg("Unable to prepare query for field_settor: %s", $q);
     return sub {
         my ($key, $value) = @_;
-		$value = $s->quote($value)
-			unless exists $s->[$CONFIG]{NUMERIC}{$column};
-		$key = $s->quote($key)
-			unless exists $s->[$CONFIG]{NUMERIC}{$s->[$KEY]};
-        $s->[$DBI]->do("update $s->[$TABLE] SET $column=$value where $s->[$KEY] = $key");
+        $sth->execute($value, $key);
     };
 }