]> git.proxmox.com Git - pmg-api.git/commitdiff
PMG/DBTools.pm: add missing TicketID column to CMSReceivers
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 28 Dec 2017 10:17:16 +0000 (11:17 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 28 Dec 2017 10:20:54 +0000 (11:20 +0100)
PMG/DBTools.pm

index e2e45c3ab8b65f2b42dc982a1666fce898e1790b..266e78cc8089314e32920a4cceded259129120da 100644 (file)
@@ -253,6 +253,7 @@ my $cmailstore_ctablecmd =  <<__EOD;
      CMailStore_RID INTEGER NOT NULL,
      PMail VARCHAR(255) NOT NULL,
      Receiver VARCHAR(255),
+     TicketID INTEGER NOT NULL,
      Status "char" NOT NULL,
      MTime INTEGER NOT NULL);
 
@@ -329,6 +330,17 @@ sub cond_create_dbtable {
     }
 }
 
+sub database_column_exists {
+    my ($dbh, $table, $column) = @_;
+
+    my $sth = $dbh->prepare(
+       "SELECT column_name FROM information_schema.columns " .
+       "WHERE table_name = ? and column_name = ?");
+    $sth->execute(lc($table), lc($column));
+    my $res = $sth->fetchrow_hashref();
+    return defined($res);
+}
+
 sub create_ruledb {
     my ($dbname) = @_;
 
@@ -479,6 +491,25 @@ sub upgradedb {
                 "PregreetCount INTEGER DEFAULT 0 NOT NULL");
     };
 
+    # add missing TicketID to CMSReceivers
+    if (!database_column_exists($dbh, 'CMSReceivers', 'TicketID')) {
+       eval {
+           $dbh->begin_work;
+           $dbh->do("CREATE SEQUENCE cmsreceivers_ticketid_seq");
+           $dbh->do("ALTER TABLE CMSReceivers ADD COLUMN " .
+                    "TicketID INTEGER NOT NULL " .
+                    "DEFAULT nextval('cmsreceivers_ticketid_seq')");
+           $dbh->do("ALTER TABLE CMSReceivers ALTER COLUMN " .
+                    "TicketID DROP DEFAULT");
+           $dbh->do("DROP SEQUENCE cmsreceivers_ticketid_seq");
+           $dbh->commit;
+       };
+       if (my $err = $@) {
+           $dbh->rollback;
+           die $err;
+       }
+    }
+
     # update obsolete content type names
     eval {
        $dbh->do("UPDATE Object " .