cvs commit: p5ee/App-Repository/t DBI-compress.t DBI-getset.t

[email protected] (Stephen Adkins)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
cvsuser     05/11/25 08:35:03

  Modified:    App-Repository/lib/App Repository.pm
               App-Repository/lib/App/Repository DBI.pm
               App-Repository/t DBI-compress.t DBI-getset.t
  Log:
  protect against undef params
  
  Revision  Changes    Path
  1.26      +18 -8     p5ee/App-Repository/lib/App/Repository.pm
  
  Index: Repository.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/lib/App/Repository.pm,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Repository.pm	21 Oct 2005 15:32:13 -0000	1.25
  +++ Repository.pm	25 Nov 2005 16:35:02 -0000	1.26
  @@ -496,6 +496,7 @@
   sub get {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $options) = @_;
  +    die "get(): params undefined" if (!defined $params);
       my ($row, $wantarray);
       if (ref($cols) eq "ARRAY") {
           $wantarray = 1;
  @@ -549,6 +550,7 @@
   sub set {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $col, $value, $options) = @_;
  +    die "set(): params undefined" if (!defined $params);
       $self->_load_table_metadata($table) if (! defined $self->{table}{$table}{loaded});
       my ($nrows);
       if ($col && ref($col) eq "") {
  @@ -590,6 +592,7 @@
   sub get_row {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $options) = @_;
  +    die "get_row(): params undefined" if (!defined $params);
   
       my ($row);
       my $repname = $self->{table}{$table}{repository};
  @@ -679,6 +682,7 @@
   sub set_row {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $row, $options) = @_;
  +    die "set_row(): params undefined" if (!defined $params);
       $self->_load_table_metadata($table) if (! defined $self->{table}{$table}{loaded});
   
       my ($nrows, $key_defined);
  @@ -945,6 +949,7 @@
   sub set_rows {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $rows, $options) = @_;
  +    die "set_rows(): params undefined" if (!defined $params);
       my ($nrows);
       my $repname = $self->{table}{$table}{repository};
       my $realtable = $self->{table}{$table}{table} || $table;
  @@ -994,6 +999,7 @@
   sub get_hash {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $options) = @_;
  +    die "get_hash(): params undefined" if (!defined $params);
       $cols = [] if (!$cols);
       my $row = $self->get_row($table, $params, $cols, $options);
       my ($hash, $col, $value);
  @@ -1090,6 +1096,7 @@
   sub get_object {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $options) = @_;
  +    die "get_object(): params undefined" if (!defined $params);
       my $tabledef = $self->{table}{$table};
       my $class = $tabledef->{class} || "App::RepositoryObject";
       App->use($class);
  @@ -1309,6 +1316,7 @@
   sub set_hash {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $values, $options) = @_;
  +    die "set_hash(): params undefined" if (!defined $params);
       $self->_load_table_metadata($table) if (! defined $self->{table}{$table}{loaded});
       &App::sub_exit() if ($App::trace);
   }
  @@ -1784,11 +1792,11 @@
       return(undef);  # sorry. maybe some subclass will know how to do this.
   }
   
  -# $ok = $rep->insert_rows ($table, \@cols, \@rows);
  +# $nrows = $rep->insert_rows ($table, \@cols, \@rows);
   sub insert_rows {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $cols, $rows, $options) = @_;
  -    my ($retval, $hashes, $hash, $columns);
  +    my ($nrows, $hashes, $hash, $columns);
       if (ref($cols) eq "ARRAY" && ref($cols->[0]) eq "HASH") {
           $hashes = $cols;     # an array of hashrefs was passed in instead of cols/rows
           $hash = $hashes->[0];
  @@ -1822,18 +1830,19 @@
               }
               push(@rows, $row);
           }
  -        $retval = $self->_insert_rows($table, \@cols, \@rows, $options);
  +        $nrows = $self->_insert_rows($table, \@cols, \@rows, $options);
       }
       else {
  -        $retval = $self->_insert_rows($table, $cols, $rows, $options);
  +        $nrows = $self->_insert_rows($table, $cols, $rows, $options);
       }
  -    &App::sub_exit($retval) if ($App::trace);
  -    $retval;
  +    &App::sub_exit($nrows) if ($App::trace);
  +    $nrows;
   }
   
   sub delete {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $row, $options) = @_;
  +    die "set_row(): params undefined" if (!defined $params);
       my $retval = $self->_delete($table,$params,$cols,$row,$options);
       &App::sub_exit($retval) if ($App::trace);
       return($retval);
  @@ -1842,6 +1851,7 @@
   sub update {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $params, $cols, $row, $options) = @_;
  +    die "update(): params undefined" if (!defined $params);
       my $retval = $self->_update($table,$params,$cols,$row,$options);
       &App::sub_exit($retval) if ($App::trace);
       return($retval);
  @@ -1859,7 +1869,7 @@
   
   sub _insert_rows {
       &App::sub_entry if ($App::trace);
  -    my ($self, $table, $params, $cols, $row, $options) = @_;
  +    my ($self, $table, $cols, $rows, $options) = @_;
       $self->{error} = "";
       my $retval = 0;
       die "_insert_rows(): not yet implemented";
  
  
  
  1.33      +13 -11    p5ee/App-Repository/lib/App/Repository/DBI.pm
  
  Index: DBI.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/lib/App/Repository/DBI.pm,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- DBI.pm	21 Nov 2005 20:24:57 -0000	1.32
  +++ DBI.pm	25 Nov 2005 16:35:03 -0000	1.33
  @@ -1957,22 +1957,21 @@
       $retval;
   }
   
  -# $ok = $rep->_insert_rows ($table, \@cols, \@rows);
  +# $nrows = $rep->_insert_rows ($table, \@cols, \@rows);
   sub _insert_rows {
       &App::sub_entry if ($App::trace);
       my ($self, $table, $cols, $rows) = @_;
       $self->{error} = "";
  -    my ($row, $sql, $nrows, $ok, $retval);
  +    my ($sql, $retval);
      
       my $dbh = $self->{dbh};
       return 0 if (!defined $dbh);
   
  -    $ok = 1;
  +    my $nrows = 0;
  +    my $ok = 1;
       $sql = $self->_mk_insert_row_sql($table, $cols);
       my $debug_sql = $self->{context}{options}{debug_sql};
  -    foreach $row (@$rows) {
  -        $nrows += $self->{numrows};
  -
  +    foreach my $row (@$rows) {
           if ($debug_sql) {
               print "DEBUG_SQL: _insert_rows()\n";
               print "DEBUG_SQL: bind vars [", join("|",map { defined $_ ? $_ : "undef" } @$row), "]\n";
  @@ -1984,7 +1983,10 @@
               print "\n";
           }
   
  -        if (!$retval) {
  +        if ($retval) {
  +            $nrows ++;
  +        }
  +        else {
               $self->{numrows} = $nrows;
               $ok = 0;
               last;
  @@ -1992,8 +1994,8 @@
       }
       $self->{sql} = $sql;
       $self->{numrows} = $nrows;
  -    &App::sub_exit($ok) if ($App::trace);
  -    return($ok);
  +    &App::sub_exit($nrows) if ($App::trace);
  +    return($nrows);
   }
   
   sub _delete {
  
  
  
  1.3       +3 -3      p5ee/App-Repository/t/DBI-compress.t
  
  Index: DBI-compress.t
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/t/DBI-compress.t,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DBI-compress.t	20 Oct 2005 20:08:37 -0000	1.2
  +++ DBI-compress.t	25 Nov 2005 16:35:03 -0000	1.3
  @@ -95,10 +95,10 @@
   
   my ($nrows);
   eval {
  -    $nrows = $rep->set_rows("test_person", undef, $columns, $rows, {create=>1});
  +    $nrows = $rep->insert_rows("test_person", $columns, $rows);
   };
  -ok(!$@, "set_rows() [test_person]");
  -is($nrows, 7, "set_rows() [test_person]: wrote 7 rows");
  +ok(!$@, "insert_rows() [test_person]");
  +is($nrows, 7, "insert_rows() [test_person]: wrote 7 rows");
   
   my $hash = $rep->get_hash("test_person",{first_name=>"stephen"});
   is($hash->{data}, "Temperament: Goofy\nTalent: Minimal", "get(data) ok");
  
  
  
  1.9       +6 -8      p5ee/App-Repository/t/DBI-getset.t
  
  Index: DBI-getset.t
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/t/DBI-getset.t,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DBI-getset.t	20 Oct 2005 20:08:38 -0000	1.8
  +++ DBI-getset.t	25 Nov 2005 16:35:03 -0000	1.9
  @@ -142,14 +142,6 @@
   is($person_id,   4, "get_row() 3 values w/ %crit (checking 3 of 3)");
   
   my ($hashes, $hash);
  -ok($rep->set("test_person", {person_id => 1, age => 40}), "set(table,%hash)");
  -$hash = $rep->get_hash("test_person");
  -is($hash->{person_id},  1,         "get_hash() person_id");
  -is($hash->{age},        40,        "get_hash() age");
  -is($hash->{first_name}, "steve",   "get_hash() first_name");
  -is($hash->{gender},     "M",       "get_hash() gender");
  -is($hash->{state},      "GA",      "get_hash() state");
  -
   ok($rep->set("test_person", 1, {person_id => 1, age => 41}), "set(table,\$key,\%hash)");
   $hash = $rep->get_hash("test_person", 1);
   is($hash->{person_id},  1,         "get_hash(1) person_id");
  @@ -184,6 +176,12 @@
   is($hash->{gender},     "M",       "get_hashes()->[n] gender");
   is($hash->{state},      "NY",      "get_hashes()->[n] state");
   
  +eval {
  +    $nrows = $rep->set("test_person", undef, "gender", "M");
  +    print "updated $nrows rows. ?!? shouldn't ever get here!\n";
  +};
  +ok($@, "set() with undef params");
  +
   exit(0);
   #####################################################################
   #  $rep->set_rows($table, undef,    \@cols, $rows, \%options);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.