From 58bacd9b9c0fffe4f07803bf4cdd10c85ac635d5 Mon Sep 17 00:00:00 2001 From: Gerhard Gonter <ggonter@gmail.com> Date: Mon, 12 Sep 2016 19:57:52 +0200 Subject: [PATCH] alternative primary key for updates --- lib/Redmine/DB/MySQL.pm | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/Redmine/DB/MySQL.pm b/lib/Redmine/DB/MySQL.pm index 6d8112a..78b912c 100644 --- a/lib/Redmine/DB/MySQL.pm +++ b/lib/Redmine/DB/MySQL.pm @@ -10,10 +10,12 @@ use Data::Dumper; my $show_query= 0; my $show_fetched= 0; +my $show_updates= 0; sub show_fetched { shift; my $ret= $show_fetched; $show_fetched= shift; $ret; } sub show_query { shift; my $ret= $show_query; $show_query= shift; $ret; } -sub verbose { shift; my @ret= ($show_fetched, $show_query); $show_fetched= $show_query= shift; @ret; } +sub show_updates { shift; my $ret= $show_updates; $show_updates= shift; $ret; } +sub verbose { shift; my @ret= ($show_fetched, $show_query, $show_updates); $show_fetched= $show_query= $show_updates= shift; @ret; } sub connect { @@ -90,6 +92,9 @@ sub get_all_x my $tt= {}; my $pri= (exists ($self->{PRI}->{$table})) ? $self->{PRI}->{$table} : 'id'; + # print __LINE__, " pri=[$pri] ", main::Dumper ($self->{PRI}); + # print __LINE__, " pri=[$pri]\n"; + while (defined (my $x= $sth->fetchrow_hashref())) { print "x: ", Dumper ($x) if ($show_fetched); @@ -270,9 +275,18 @@ sub update } push (@vals, $id); - my $ssu= "UPDATE `$table` SET ". join (', ', map { $_.'=?' } @vars) . ' WHERE id=?'; - print "ssu=[$ssu]\n"; - print "vals: ", join (',', @vals), "\n"; + my $pri= (exists ($self->{PRI}->{$table})) ? $self->{PRI}->{$table} : 'id'; + # print __LINE__, " pri=[$pri] ", main::Dumper ($self->{PRI}); + # print __LINE__, " pri=[$pri]\n"; + + my $ssu= "UPDATE `$table` SET ". join (', ', map { $_.'=?' } @vars) . " WHERE `$pri`=?"; # Hmm... WHERE ?=? + + if ($show_updates) + { + print "ssu=[$ssu]\n"; + print "vals: ", join (',', @vals), "\n"; + } + my $sth= $dbh->prepare($ssu); $sth->execute(@vals); print "ERROR: ", $dbh->errstr() if ($dbh->err); -- GitLab