[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST PATCH 06/17] db updates: Make all INSERTs (except into steps) name columns explicitly



This makes the code more robust against schema updates.  Specifically,
if any columns were to be deleted, these runes would break.  (Also if
any column was inserted other than after the existing columns,
although this is not something Postgres can currently do AIUI.)

Affected tables are:
  flights_harness_touched
  jobs
  resources
  runvars
  steps

Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
 Osstest/JobDB/Executive.pm |  4 +++-
 Osstest/TestSupport.pm     | 12 +++++++++---
 cs-adjust-flight           |  7 ++++---
 cs-bisection-step          |  3 ++-
 mg-allocate                |  2 +-
 mg-hosts                   |  1 +
 tcl/JobDB-Executive.tcl    |  4 +++-
 7 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/Osstest/JobDB/Executive.pm b/Osstest/JobDB/Executive.pm
index 45aabd4..0d1b3be 100644
--- a/Osstest/JobDB/Executive.pm
+++ b/Osstest/JobDB/Executive.pm
@@ -191,7 +191,9 @@ END
 
     if (!$already) {
         $dbh_tests->do(<<END, {}, $fl,$rev);
-            INSERT INTO flights_harness_touched VALUES (?,?)
+            INSERT INTO flights_harness_touched
+                        (flight, harness)
+                 VALUES (?,?)
 END
     }
 }
diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index e6599db..f10d56e 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -309,7 +309,9 @@ sub store_runvar ($$) {
                  WHERE flight=? AND job=? AND name=? AND synth='t'
 END
         $dbh_tests->do(<<END,{}, $flight,$job, $param,$value);
-            INSERT INTO runvars VALUES (?,?,?,?,'t')
+            INSERT INTO runvars
+                        (flight, job, name, val, synth)
+                 VALUES (?,?,?,?,'t')
 END
     });
     $r{$param}= get_runvar($param, "$flight.$job");
@@ -368,7 +370,9 @@ END
                  WHERE flight=? AND job=? AND name=? AND synth='t'
 END
        $dbh_tests->do(<<END, undef, $flight, $job, $param, $value+1);
-            INSERT INTO runvars VALUES (?,?,?,?,'t')
+            INSERT INTO runvars
+                        (flight, job, name, val, synth)
+                 VALUES (?,?,?,?,'t')
 END
     });
     logm("runvar increment: $param=$value");
@@ -1775,7 +1779,9 @@ END
             logm("select_ether $prefix:... $ether (first in flight)");
         }
         $dbh_tests->do(<<END, {}, $flight,$job,$vn,$ether);
-            INSERT INTO runvars VALUES (?,?,?,?,'t')
+            INSERT INTO runvars
+                        (flight, job, name, val, synth)
+                 VALUES (?,?,?,?,'t')
 END
         my $chkrow= $dbh_tests->selectrow_hashref(<<END,{}, $flight);
            SELECT val, count(*) FROM runvars WHERE flight=?
diff --git a/cs-adjust-flight b/cs-adjust-flight
index 03257a6..0be104e 100755
--- a/cs-adjust-flight
+++ b/cs-adjust-flight
@@ -196,11 +196,11 @@ sub copy_jobs ($$) {
     my ($srcflight, $jobs) = @_;
     prep_rm_jobs();
     my @job_copy_qs = map { $dbh_tests->prepare($_) }
-        ("INSERT INTO jobs".
+        ("INSERT INTO jobs (flight, job, recipe, status)".
          "     SELECT ?, job, recipe, 'queued'".
          "       FROM jobs".
          "      WHERE flight = ? AND job = ?",
-         "INSERT INTO runvars".
+         "INSERT INTO runvars (flight, job, name, val, synth)".
          "     SELECT ?, job, name, val, 'f'".
          "       FROM runvars".
          "      WHERE flight = ? AND job = ? AND NOT synth");
@@ -246,7 +246,8 @@ sub change__copy_jobs {
 our $runvar_rm_q = $dbh_tests->prepare
     ("DELETE FROM runvars WHERE flight = ? AND job = ? AND name = ?");
 our $runvar_insert_q = $dbh_tests->prepare
-    ("INSERT INTO runvars VALUES (?, ?, ?, ?, 'f')");
+    ("INSERT INTO runvars (flight, job, name, val, synth)".
+     " VALUES (?, ?, ?, ?, 'f')");
 
 sub runvar_set ($$$;$) {
     my ($job, $name, $val, $xwhat) = @_;
diff --git a/cs-bisection-step b/cs-bisection-step
index 76f5010..13ccd7a 100755
--- a/cs-bisection-step
+++ b/cs-bisection-step
@@ -1255,7 +1255,8 @@ END
             " from $copyflight)\n";
 
         $dbh_tests->do(<<END, {}, $popflight,$popjob,$recipe);
-            INSERT INTO jobs VALUES (?, ?, ?, 'queued')
+            INSERT INTO jobs (flight, job, recipe, status)
+                      VALUES (?, ?, ?, 'queued')
 END
         $dbh_tests->do(<<END, {}, $popflight,$popjob);
             INSERT INTO runvars (
diff --git a/mg-allocate b/mg-allocate
index 4f02ce5..dadac3c 100755
--- a/mg-allocate
+++ b/mg-allocate
@@ -180,7 +180,7 @@ sub alloc_1rescand ($$) {
 
     if ($allocate && $restype eq 'share-flight' && $shareix == $tid) {
        $dbh_tests->do(<<END,{},
-            INSERT INTO resources
+            INSERT INTO resources (restype, resname, shareix, owntaskid)
                  (SELECT ? AS restype,
                          ? AS resname,
                          ? AS shareix,
diff --git a/mg-hosts b/mg-hosts
index bd67a0a..5cdece5 100755
--- a/mg-hosts
+++ b/mg-hosts
@@ -178,6 +178,7 @@ sub cmd_create_like () {
         foreach my $dst (l($dsts)) {
             $dbh_tests->do(<<END,{}, $dst,$src);
                 INSERT INTO resources
+                       (restype, resname, shareix, owntaskid)
                 SELECT restype,
                        ? AS resname,
                        0 AS shareix,
diff --git a/tcl/JobDB-Executive.tcl b/tcl/JobDB-Executive.tcl
index 6b9bcb0..414a77e 100644
--- a/tcl/JobDB-Executive.tcl
+++ b/tcl/JobDB-Executive.tcl
@@ -282,7 +282,9 @@ proc spawn-step-begin {flight job ts stepnovar} {
                set stepno 1
            }
            db-execute "
-               INSERT INTO steps
+               INSERT INTO steps (flight, job, stepno,
+                                   step, status,
+                                   testid)
                    VALUES ([pg_quote $flight], [pg_quote $job], $stepno,
                            [pg_quote $ts], 'running',
                            'STARTING')
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.