diff src/cjr_print.sml @ 869:64ba57fa20bf

Moved nextval code into Settings
author Adam Chlipala <adamc@hcoop.net>
date Sun, 28 Jun 2009 16:41:10 -0400
parents 06497beb265b
children 7fa9a37a34b3
line wrap: on
line diff
--- a/src/cjr_print.sml	Sun Jun 28 16:22:17 2009 -0400
+++ b/src/cjr_print.sml	Sun Jun 28 16:41:10 2009 -0400
@@ -1751,81 +1751,23 @@
             box [string "(uw_begin_region(ctx), ",
                  string "({",
                  newline,
-                 string "PGconn *conn = uw_get_db(ctx);",
+                 string "uw_Basis_int n;",
                  newline,
+
                  case prepared of
                      NONE => box [string "char *query = ",
                                   p_exp env query,
                                   string ";",
-                                  newline]
-                   | SOME _ =>
-                     box [],
-                 newline,
-                 string "PGresult *res = ",
-                 case prepared of
-                     NONE => string "PQexecParams(conn, query, 0, NULL, NULL, NULL, NULL, 0);"
-                   | SOME (n, s) =>
-                     if #persistent (Settings.currentProtocol ()) then
-                         box [string "PQexecPrepared(conn, \"uw",
-                              string (Int.toString n),
-                              string "\", 0, NULL, NULL, NULL, 0);"]
-                     else
-                         box [string "PQexecParams(conn, \"uw",
-                              string (Int.toString n),
-                              string "\", 0, NULL, NULL, NULL, NULL, 0);"],
-                 newline,
-                 string "uw_Basis_int n;",
+                                  newline,
+                                  newline,
+
+                                  #nextval (Settings.currentDbms ()) loc]
+                   | SOME (id, query) => #nextvalPrepared (Settings.currentDbms ()) {loc = loc,
+                                                                                     id = id,
+                                                                                     query = query},
                  newline,
                  newline,
 
-                 string "if (res == NULL) uw_error(ctx, FATAL, \"Out of memory allocating nextval result.\");",
-                 newline,
-                 newline,
-
-                 string "if (PQresultStatus(res) != PGRES_TUPLES_OK) {",
-                 newline,
-                 box [string "PQclear(res);",
-                      newline,
-                      string "uw_error(ctx, FATAL, \"",
-                      string (ErrorMsg.spanToString loc),
-                      string ": Query failed:\\n%s\\n%s\", ",
-                      case prepared of
-                          NONE => string "query"
-                        | SOME _ => p_exp env query,
-                      string ", PQerrorMessage(conn));",
-                      newline],
-                 string "}",
-                 newline,
-                 newline,
-
-                 string "uw_end_region(ctx);",
-                 newline,
-                 string "n = PQntuples(res);",
-                 newline,
-                 string "if (n != 1) {",
-                 newline,
-                 box [string "PQclear(res);",
-                      newline,
-                      string "uw_error(ctx, FATAL, \"",
-                      string (ErrorMsg.spanToString loc),
-                      string ": Wrong number of result rows:\\n%s\\n%s\", ",
-                      case prepared of
-                          NONE => string "query"
-                        | SOME _ => p_exp env query,
-                      string ", PQerrorMessage(conn));",
-                      newline],
-                 string "}",
-                 newline,
-                 newline,
-
-                 string "n = ",
-                 p_unsql true env (TFfi ("Basis", "int"), loc)
-                         (string "PQgetvalue(res, 0, 0)")
-                         (box []),
-                 string ";",
-                 newline,
-                 string "PQclear(res);",
-                 newline,
                  string "n;",
                  newline,
                  string "}))"]