]> andersk Git - moira.git/blobdiff - gen/pobox.dc
add deadlock detection
[moira.git] / gen / pobox.dc
index 0c1d32968d00362412b30266faa83baafd513144..f0fd135a6d338dc6edfa6e8936af5ead6ce820d1 100644 (file)
@@ -33,10 +33,11 @@ char **argv;
     EXEC SQL END DECLARE SECTION;
 
 #ifsql INGRES
-    EXEC SQL CONNECT sms;
+    EXEC SQL CONNECT moira;
+    EXEC SQL SET LOCKMODE SESSION WHERE LEVEL=TABLE, READLOCK=SHARED;
 #endsql
 #ifsql INFORMIX
-    EXEC SQL DATABASE sms;
+    EXEC SQL DATABASE moira;
 #endsql
 
     if (argc == 2) {
@@ -62,11 +63,15 @@ char **argv;
        outf = NULL;
     }
 
+    /* The following is declarative, not executed,
+     * and so is dependent on where it is in the file,
+     * not in the order of execution of statements.
+     */
     EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
 
     EXEC SQL DECLARE x CURSOR FOR SELECT 
-      mit_id, login
-       FROM users WHERE status != 3 and potype="POP";
+      clearid, login
+       FROM users WHERE status != 3 and potype='POP';
     EXEC SQL OPEN x;
     while (1) {
        EXEC SQL FETCH x INTO :id, :login;
@@ -74,15 +79,15 @@ char **argv;
        strtrim(login);
        strtrim(id);
        if (isdigit(id[0]))
-         fprintf(out, "%s %s@ATHENA.MIT.EDU\n", id, login);
+         fprintf(out, "%s %s@MIT.EDU\n", id, login);
     }
 
     EXEC SQL CLOSE x;
 
     EXEC SQL DECLARE y CURSOR FOR SELECT 
-      u.mit_id, s.string
+      u.clearid, s.string
        FROM users u, strings s
-       WHERE u.status != 3 and u.potype="SMTP" and u.box_id = s.string_id;
+       WHERE u.status != 3 and u.potype='SMTP' and u.box_id = s.string_id;
     EXEC SQL OPEN y;
     while (1) {
        EXEC SQL FETCH y INTO :id, :string;
@@ -118,6 +123,10 @@ char **argv;
 
  sqlerr:
     com_err(whoami, MR_INGRES_ERR, " code %d\n", sqlca.sqlcode);
+#ifsql INGRES
+    if (sqlca.sqlcode == 17700 || sqlca.sqlcode == -37000)
+      exit(MR_DEADLOCK);
+#endsql
     critical_alert("DCM", "Pobox build encountered INGRES ERROR %d",
                   sqlca.sqlcode);
     exit(MR_INGRES_ERR);
This page took 0.063795 seconds and 4 git commands to generate.