[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));