[interchange-cvs] interchange - heins modified 4 files

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Wed Apr 16 17:10:00 2003


User:      heins
Date:      2003-04-16 21:09:14 GMT
Modified:  lib/Vend/Table DBI.pm
Modified:  dist/foundation/dbconf/pgsql orderline.pgsql
Modified:           transactions.pgsql userdb.pgsql
Log:
* Fix LENGTH_EXCEPTION_DEFAULT logging, which did not work.

* Clean up length exception code a bit.

* Use LENGTH_EXCEPTION_DEFAULT for Postgres userdb, transactions,
  orderline tables in foundation.

Revision  Changes    Path
2.43      +22 -8     interchange/lib/Vend/Table/DBI.pm


rev 2.43, prev_rev 2.42
Index: DBI.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/DBI.pm,v
retrieving revision 2.42
retrieving revision 2.43
diff -u -r2.42 -r2.43
--- DBI.pm	7 Feb 2003 16:46:14 -0000	2.42
+++ DBI.pm	16 Apr 2003 21:09:14 -0000	2.43
@@ -1,6 +1,6 @@
 # Vend::Table::DBI - Access a table stored in an DBI/DBD database
 #
-# $Id: DBI.pm,v 2.42 2003/02/07 16:46:14 mheins Exp $
+# $Id: DBI.pm,v 2.43 2003/04/16 21:09:14 mheins Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -20,7 +20,7 @@
 # MA  02111-1307  USA.
 
 package Vend::Table::DBI;
-$VERSION = substr(q$Revision: 2.42 $, 10);
+$VERSION = substr(q$Revision: 2.43 $, 10);
 
 use strict;
 
@@ -1075,10 +1075,12 @@
 			   || $s->[$CONFIG]{LENGTH_EXCEPTION_DEFAULT};
 
 	my $slen = $fcfg->{LENGTH};
+	my $olen;
 
 	my $errout;
 	if( $action =~ /^truncate(?:_(\w+))$/i) {
-		my $errout = lc $1;
+		$errout = lc $1;
+		$olen = length($data);
 		$data = substr($data,0,$slen);			      
 	}
 	elsif ($action =~ /^filter/i){
@@ -1097,16 +1099,17 @@
 
 	if($errout) {
 		my $caller = caller();
-		my $msg1 = errmsg(
+		my $msg1 = ::errmsg(
 				"%s - Length Exception! - Data length: %s Field length: %s",
 				$caller,
-				length($data),
+				$olen,
 				$slen,
 			);
-		my $msg2 = errmsg(
+		my $msg2 = ::errmsg(
 				"%s - Length Exception - Table: %s, Field: %s. Action to take: %s",
 				$caller,
 				$s->[$TABLE],
+				$fname,
 				$action,
 			);
 		if($errout eq 'debug') {
@@ -1199,8 +1202,6 @@
 
 		my $lcfg   = $s->[$CONFIG]{FIELD_LENGTH_DATA}
 			or die "No field length data!";
-		my $ecfg   = $s->[$CONFIG]{LENGTH_EXCEPTION} || {};
-		my $edefault = $s->[$CONFIG]{LENGTH_EXCEPTION_DEFAULT};
 
 		for (my $i=0; $i < @$fary; $i++){
 			next unless defined $lcfg->{$fary->[$i]};
@@ -1512,6 +1513,19 @@
 					);
 		return undef;
 	}
+
+	my $lcfg;
+    if(
+		$s->[$CONFIG]->{LENGTH_EXCEPTION_DEFAULT}
+		and $s->[$CONFIG]{FIELD_LENGTH_DATA}
+		and $lcfg = $s->[$CONFIG]{FIELD_LENGTH_DATA}{$column}
+		and $lcfg->{LENGTH} < length($value)
+		)
+	{
+
+		$value = $s->length_exception($column, $value);
+    }
+
 
 	$key = $s->autonumber()  if ! length($key);
 



2.4       +4 -0      interchange/dist/foundation/dbconf/pgsql/orderline.pgsql


rev 2.4, prev_rev 2.3
Index: orderline.pgsql
===================================================================
RCS file: /var/cvs/interchange/dist/foundation/dbconf/pgsql/orderline.pgsql,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- orderline.pgsql	23 Jan 2003 19:05:50 -0000	2.3
+++ orderline.pgsql	16 Apr 2003 21:09:14 -0000	2.4
@@ -5,6 +5,10 @@
 ifdef SQLPASS
 Database  orderline  PASS         __SQLPASS__
 endif
+
+## this truncates too-long user input that might cause a die otherwise
+Database  orderline  LENGTH_EXCEPTION_DEFAULT  truncate_log
+
 Database  orderline  DEFAULT_TYPE varchar(128)
 Database  orderline  COLUMN_DEF   "code=varchar(14) NOT NULL PRIMARY KEY"
 Database  orderline  COLUMN_DEF   "store_id=varchar(9)"



2.6       +4 -0      interchange/dist/foundation/dbconf/pgsql/transactions.pgsql


rev 2.6, prev_rev 2.5
Index: transactions.pgsql
===================================================================
RCS file: /var/cvs/interchange/dist/foundation/dbconf/pgsql/transactions.pgsql,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- transactions.pgsql	23 Jan 2003 19:05:50 -0000	2.5
+++ transactions.pgsql	16 Apr 2003 21:09:14 -0000	2.6
@@ -5,6 +5,10 @@
 ifdef SQLPASS
 Database  transactions  PASS         __SQLPASS__
 endif
+
+## this truncates too-long user input that might cause a die otherwise
+Database  transactions  LENGTH_EXCEPTION_DEFAULT  truncate_log
+
 Database  transactions  DEFAULT_TYPE varchar(128)
 Database  transactions  COLUMN_DEF   "code=VARCHAR(14) NOT NULL PRIMARY KEY"
 Database  transactions  COLUMN_DEF   "store_id=VARCHAR(9)"



2.5       +5 -0      interchange/dist/foundation/dbconf/pgsql/userdb.pgsql


rev 2.5, prev_rev 2.4
Index: userdb.pgsql
===================================================================
RCS file: /var/cvs/interchange/dist/foundation/dbconf/pgsql/userdb.pgsql,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- userdb.pgsql	23 Jan 2003 19:05:50 -0000	2.4
+++ userdb.pgsql	16 Apr 2003 21:09:14 -0000	2.5
@@ -1,4 +1,5 @@
 Database  userdb  userdb.txt   __SQLDSN__
+
 ifdef SQLUSER
 Database  userdb  USER         __SQLUSER__
 endif
@@ -6,6 +7,10 @@
 Database  userdb  PASS         __SQLPASS__
 endif
 Database  userdb  DEFAULT_TYPE  VARCHAR(255)
+
+## this truncates too-long user input that might cause a die otherwise
+Database  userdb  LENGTH_EXCEPTION_DEFAULT  truncate_log
+
 Database  userdb  COLUMN_DEF   "username=VARCHAR(20) NOT NULL PRIMARY KEY"
 Database  userdb  COLUMN_DEF   "password=VARCHAR(20)"
 Database  userdb  COLUMN_DEF   "acl=text"