diff src/cjr_print.sml @ 683:9a2c18dab11d

Expunging non-nullable rows
author Adam Chlipala <adamc@hcoop.net>
date Sun, 29 Mar 2009 13:30:01 -0400
parents 5bbb542243e8
children f0224c7f12bb
line wrap: on
line diff
--- a/src/cjr_print.sml	Sun Mar 29 11:37:29 2009 -0400
+++ b/src/cjr_print.sml	Sun Mar 29 13:30:01 2009 -0400
@@ -1937,119 +1937,128 @@
                             string x,
                             string " */",
                             newline]
-      | DDatabase s => box [string "static void uw_db_validate(uw_context);",
-                            newline,
-                            string "static void uw_db_prepare(uw_context);",
-                            newline,
-                            newline,
-                            string "void uw_db_init(uw_context ctx) {",
-                            newline,
-                            string "PGconn *conn = PQconnectdb(\"",
-                            string (String.toString s),
-                            string "\");",
-                            newline,
-                            string "if (conn == NULL) uw_error(ctx, BOUNDED_RETRY, ",
-                            string "\"libpq can't allocate a connection.\");",
-                            newline,
-                            string "if (PQstatus(conn) != CONNECTION_OK) {",
-                            newline,
-                            box [string "char msg[1024];",
+      | DDatabase (s, n) => box [string "static void uw_db_validate(uw_context);",
                                  newline,
-                                 string "strncpy(msg, PQerrorMessage(conn), 1024);",
+                                 string "static void uw_db_prepare(uw_context);",
                                  newline,
-                                 string "msg[1023] = 0;",
                                  newline,
-                                 string "PQfinish(conn);",
+                                 string "void uw_db_init(uw_context ctx) {",
                                  newline,
-                                 string "uw_error(ctx, BOUNDED_RETRY, ",
-                                 string "\"Connection to Postgres server failed: %s\", msg);"],
-                            newline,
-                            string "}",
-                            newline,
-                            string "uw_set_db(ctx, conn);",
-                            newline,
-                            string "uw_db_validate(ctx);",
-                            newline,
-                            string "uw_db_prepare(ctx);",
-                            newline,
-                            string "}",
-                            newline,
-                            newline,
-                            string "void uw_db_close(uw_context ctx) {",
-                            newline,
-                            string "PQfinish(uw_get_db(ctx));",
-                            newline,
-                            string "}",
-                            newline,
-                            newline,
+                                 string "PGconn *conn = PQconnectdb(\"",
+                                 string (String.toString s),
+                                 string "\");",
+                                 newline,
+                                 string "if (conn == NULL) uw_error(ctx, BOUNDED_RETRY, ",
+                                 string "\"libpq can't allocate a connection.\");",
+                                 newline,
+                                 string "if (PQstatus(conn) != CONNECTION_OK) {",
+                                 newline,
+                                 box [string "char msg[1024];",
+                                      newline,
+                                      string "strncpy(msg, PQerrorMessage(conn), 1024);",
+                                      newline,
+                                      string "msg[1023] = 0;",
+                                      newline,
+                                      string "PQfinish(conn);",
+                                      newline,
+                                      string "uw_error(ctx, BOUNDED_RETRY, ",
+                                      string "\"Connection to Postgres server failed: %s\", msg);"],
+                                 newline,
+                                 string "}",
+                                 newline,
+                                 string "uw_set_db(ctx, conn);",
+                                 newline,
+                                 string "uw_db_validate(ctx);",
+                                 newline,
+                                 string "uw_db_prepare(ctx);",
+                                 newline,
+                                 string "}",
+                                 newline,
+                                 newline,
+                                 string "void uw_db_close(uw_context ctx) {",
+                                 newline,
+                                 string "PQfinish(uw_get_db(ctx));",
+                                 newline,
+                                 string "}",
+                                 newline,
+                                 newline,
 
-                            string "int uw_db_begin(uw_context ctx) {",
-                            newline,
-                            string "PGconn *conn = uw_get_db(ctx);",
-                            newline,
-                            string "PGresult *res = PQexec(conn, \"BEGIN ISOLATION LEVEL SERIALIZABLE\");",
-                            newline,
-                            newline,
-                            string "if (res == NULL) return 1;",
-                            newline,
-                            newline,
-                            string "if (PQresultStatus(res) != PGRES_COMMAND_OK) {",
-                            box [string "PQclear(res);",
+                                 string "int uw_db_begin(uw_context ctx) {",
                                  newline,
-                                 string "return 1;",
-                                 newline],
-                            string "}",
-                            newline,
-                            string "return 0;",
-                            newline,
-                            string "}",
-                            newline,
-                            newline,
+                                 string "PGconn *conn = uw_get_db(ctx);",
+                                 newline,
+                                 string "PGresult *res = PQexec(conn, \"BEGIN ISOLATION LEVEL SERIALIZABLE\");",
+                                 newline,
+                                 newline,
+                                 string "if (res == NULL) return 1;",
+                                 newline,
+                                 newline,
+                                 string "if (PQresultStatus(res) != PGRES_COMMAND_OK) {",
+                                 box [string "PQclear(res);",
+                                      newline,
+                                      string "return 1;",
+                                      newline],
+                                 string "}",
+                                 newline,
+                                 string "return 0;",
+                                 newline,
+                                 string "}",
+                                 newline,
+                                 newline,
 
-                            string "int uw_db_commit(uw_context ctx) {",
-                            newline,
-                            string "PGconn *conn = uw_get_db(ctx);",
-                            newline,
-                            string "PGresult *res = PQexec(conn, \"COMMIT\");",
-                            newline,
-                            newline,
-                            string "if (res == NULL) return 1;",
-                            newline,
-                            newline,
-                            string "if (PQresultStatus(res) != PGRES_COMMAND_OK) {",
-                            box [string "PQclear(res);",
+                                 string "int uw_db_commit(uw_context ctx) {",
                                  newline,
-                                 string "return 1;",
-                                 newline],
-                            string "}",
-                            newline,
-                            string "return 0;",
-                            newline,
-                            string "}",
-                            newline,
-                            newline,
+                                 string "PGconn *conn = uw_get_db(ctx);",
+                                 newline,
+                                 string "PGresult *res = PQexec(conn, \"COMMIT\");",
+                                 newline,
+                                 newline,
+                                 string "if (res == NULL) return 1;",
+                                 newline,
+                                 newline,
+                                 string "if (PQresultStatus(res) != PGRES_COMMAND_OK) {",
+                                 box [string "PQclear(res);",
+                                      newline,
+                                      string "return 1;",
+                                      newline],
+                                 string "}",
+                                 newline,
+                                 string "return 0;",
+                                 newline,
+                                 string "}",
+                                 newline,
+                                 newline,
 
-                            string "int uw_db_rollback(uw_context ctx) {",
-                            newline,
-                            string "PGconn *conn = uw_get_db(ctx);",
-                            newline,
-                            string "PGresult *res = PQexec(conn, \"ROLLBACK\");",
-                            newline,
-                            newline,
-                            string "if (res == NULL) return 1;",
-                            newline,
-                            newline,
-                            string "if (PQresultStatus(res) != PGRES_COMMAND_OK) {",
-                            box [string "PQclear(res);",
+                                 string "int uw_db_rollback(uw_context ctx) {",
                                  newline,
-                                 string "return 1;",
-                                 newline],
-                            string "}",
-                            newline,
-                            string "return 0;",
-                            newline,
-                            string "}",
-                            newline]
+                                 string "PGconn *conn = uw_get_db(ctx);",
+                                 newline,
+                                 string "PGresult *res = PQexec(conn, \"ROLLBACK\");",
+                                 newline,
+                                 newline,
+                                 string "if (res == NULL) return 1;",
+                                 newline,
+                                 newline,
+                                 string "if (PQresultStatus(res) != PGRES_COMMAND_OK) {",
+                                 box [string "PQclear(res);",
+                                      newline,
+                                      string "return 1;",
+                                      newline],
+                                 string "}",
+                                 newline,
+                                 string "return 0;",
+                                 newline,
+                                 string "}",
+                                 newline,
+                                 newline,
+
+                                 string "void uw_expunger(uw_context ctx, uw_Basis_client cli) {",
+                                 newline,
+                                 box [p_enamed env n,
+                                      string "(ctx, cli);",
+                                      newline],
+                                 string "}",
+                                 newline]
 
       | DPreparedStatements [] =>
         box [string "static void uw_db_prepare(uw_context ctx) {",