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

interchange-core@interchange.redhat.com interchange-core@interchange.redhat.com
Mon Jul 8 22:00:01 2002


User:      jon
Date:      2002-07-09 01:59:59 GMT
Modified:  lib/Vend/Table Common.pm
Log:
Make set_slice return key, even when generated by autonumber or when
overloaded in field/values arrays.

Log error when empty key used (possible in DBM).

Allow key of '0' in standard stuff_row routine, as in freeze_row.

Revision  Changes    Path
2.16      +12 -5     interchange/lib/Vend/Table/Common.pm


rev 2.16, prev_rev 2.15
Index: Common.pm
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /var/cvs/interchange/lib/Vend/Table/Common.pm,v
retrieving revision 2.15
retrieving revision 2.16
diff -u -u -r2.15 -r2.16
--- Common.pm	27 Jun 2002 22:24:10 -0000	2.15
+++ Common.pm	9 Jul 2002 01:59:59 -0000	2.16
@@ -1,6 +1,6 @@
 # Vend::Table::Common - Common access methods for Interchange databases
 #
-# $Id: Common.pm,v 2.15 2002/06/27 22:24:10 jon Exp $
+# $Id: Common.pm,v 2.16 2002/07/09 01:59:59 jon Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -22,7 +22,7 @@
 # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 # MA  02111-1307  USA.
=20
-$VERSION =3D substr(q$Revision: 2.15 $, 10);
+$VERSION =3D substr(q$Revision: 2.16 $, 10);
 use strict;
=20
 package Vend::Table::Common;
@@ -354,6 +354,7 @@
 		unshift @$fary, $keyname;
 		unshift @$vary, $key;
 	}
+
 	my @current;
=20
 	@current =3D $s->row($key)
@@ -361,8 +362,13 @@
=20
 	@current[ map { $s->column_index($_) } @$fary ] =3D @$vary;
=20
-	$s->set_row(@current)
-		or die "failed to create row slice routine.";
+	$key =3D $s->set_row(@current);
+	length($key) or
+		::logError(
+			"Did set_slice with empty key on table %s",
+			$s->[$CONFIG]{name},
+		);
+
 	return $key;
 }
=20
@@ -407,8 +413,9 @@
 sub stuff_row {
     my ($s, @fields) =3D @_;
 	my $key =3D $fields[$s->[$KEY_INDEX]];
+#::logDebug("stuff key=3D$key");
 	$fields[$s->[$KEY_INDEX]] =3D $key =3D $s->autonumber()
-		if ! $key;
+		if ! length($key);
 	$s->filter(\@fields, $s->[$COLUMN_INDEX], $s->[$CONFIG]{FILTER_TO})
 		if $s->[$CONFIG]{FILTER_TO};
     $s->[$TIE_HASH]{"k$key"} =3D join("\t", map(stuff($_), @fields));