Changeset: c2fce286eb95 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c2fce286eb95
Modified Files:
        
Branch: default
Log Message:

Merge with Jun2010 branch.
If dumping fails (e.g. because of closed pipe in \|less), rollback our 
transaction.


diffs (truncated from 405 to 300 lines):

diff -r 5e050ef2e154 -r c2fce286eb95 clients/src/mapiclient/dump.c
--- a/clients/src/mapiclient/dump.c     Wed Jul 07 14:13:43 2010 +0200
+++ b/clients/src/mapiclient/dump.c     Wed Jul 07 15:09:15 2010 +0200
@@ -1109,32 +1109,20 @@
        if (!describe)
                stream_printf(toConsole, "START TRANSACTION;\n");
 
-       if ((hdl = mapi_query(mid, start)) == NULL || mapi_error(mid)) {
-               if (hdl) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-               } else
-                       mapi_explain(mid, stderr);
-               return 1;
-       }
+       if ((hdl = mapi_query(mid, start)) == NULL || mapi_error(mid))
+               goto bailout;
        mapi_close_handle(hdl);
 
        sname = get_schema(mid);
        if (sname == NULL)
-               return 1;
+               goto bailout2;
        if (strcmp(sname, "sys") == 0 || strcmp(sname, "tmp") == 0) {
                free(sname);
                sname = NULL;
 
                /* dump roles */
-               if ((hdl = mapi_query(mid, roles)) == NULL || mapi_error(mid)) {
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, roles)) == NULL || mapi_error(mid))
+                       goto bailout;
 
                while (mapi_fetch_row(hdl) != 0) {
                        char *name = mapi_fetch_field(hdl, 0);
@@ -1143,46 +1131,26 @@
                        quoted_print(toConsole, name);
                        stream_printf(toConsole, ";\n");
                }
-               if (mapi_error(mid)) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-                       return 1;
-               }
+               if (mapi_error(mid))
+                       goto bailout;
                mapi_close_handle(hdl);
 
 
                /* dump users, part 1 */
                /* first make sure the password_hash function exists */
-               if ((hdl = mapi_query(mid, chkhash)) == NULL || 
mapi_error(mid)) {
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, chkhash)) == NULL || mapi_error(mid))
+                       goto bailout;
                create_hash_func = mapi_rows_affected(hdl) == 0;
                mapi_close_handle(hdl);
                if (create_hash_func) {
-                       if ((hdl = mapi_query(mid, createhash)) == NULL || 
mapi_error(mid)) {
-                               if (hdl) {
-                                       mapi_explain_query(hdl, stderr);
-                                       mapi_close_handle(hdl);
-                               } else
-                                       mapi_explain(mid, stderr);
-                               return 1;
-                       }
+                       if ((hdl = mapi_query(mid, createhash)) == NULL ||
+                           mapi_error(mid))
+                               goto bailout;
                        mapi_close_handle(hdl);
                }
 
-               if ((hdl = mapi_query(mid, users1)) == NULL || mapi_error(mid)) 
{
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, users1)) == NULL || mapi_error(mid))
+                       goto bailout;
 
                while (mapi_fetch_row(hdl) != 0) {
                        char *uname = mapi_fetch_field(hdl, 0);
@@ -1193,35 +1161,22 @@
                        quoted_print(toConsole, uname);
                        stream_printf(toConsole, " WITH ENCRYPTED PASSWORD '%s' 
NAME '%s' SCHEMA \"sys\";\n", pwhash, fullname);
                }
-               if (mapi_error(mid)) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-                       return 1;
-               }
+               if (mapi_error(mid))
+                       goto bailout;
                mapi_close_handle(hdl);
 
                /* clean up -- not strictly necessary due to ROLLBACK */
                if (create_hash_func) {
-                       if ((hdl = mapi_query(mid, drophash)) == NULL || 
mapi_error(mid)) {
-                               if (hdl) {
-                                       mapi_explain_query(hdl, stderr);
-                                       mapi_close_handle(hdl);
-                               } else
-                                       mapi_explain(mid, stderr);
-                               return 1;
-                       }
+                       if ((hdl = mapi_query(mid, drophash)) == NULL ||
+                           mapi_error(mid))
+                               goto bailout;
                        mapi_close_handle(hdl);
                }
 
                /* dump schemas */
-               if ((hdl = mapi_query(mid, schemas)) == NULL || 
mapi_error(mid)) {
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, schemas)) == NULL ||
+                   mapi_error(mid))
+                       goto bailout;
 
                while (mapi_fetch_row(hdl) != 0) {
                        char *sname = mapi_fetch_field(hdl, 0);
@@ -1235,22 +1190,13 @@
                        }
                        stream_printf(toConsole, ";\n");
                }
-               if (mapi_error(mid)) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-                       return 1;
-               }
+               if (mapi_error(mid))
+                       goto bailout;
                mapi_close_handle(hdl);
 
                /* dump users, part 2 */
-               if ((hdl = mapi_query(mid, users2)) == NULL || mapi_error(mid)) 
{
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, users2)) == NULL || mapi_error(mid))
+                       goto bailout;
 
                while (mapi_fetch_row(hdl) != 0) {
                        char *uname = mapi_fetch_field(hdl, 0);
@@ -1262,22 +1208,13 @@
                        quoted_print(toConsole, sname);
                        stream_printf(toConsole, ";\n");
                }
-               if (mapi_error(mid)) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-                       return 1;
-               }
+               if (mapi_error(mid))
+                       goto bailout;
                mapi_close_handle(hdl);
 
                /* grant user privileges */
-               if ((hdl = mapi_query(mid, grants)) == NULL || mapi_error(mid)) 
{
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, grants)) == NULL || mapi_error(mid))
+                       goto bailout;
 
                while (mapi_fetch_row(hdl) != 0) {
                        char *uname = mapi_fetch_field(hdl, 0);
@@ -1292,11 +1229,8 @@
                           server, so we can't dump them */
                        stream_printf(toConsole, ";\n");
                }
-               if (mapi_error(mid)) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-                       return 1;
-               }
+               if (mapi_error(mid))
+                       goto bailout;
                mapi_close_handle(hdl);
        } else {
                stream_printf(toConsole, "SET SCHEMA ");
@@ -1306,14 +1240,8 @@
        }
 
        /* dump sequences, part 1 */
-       if ((hdl = mapi_query(mid, sequences1)) == NULL || mapi_error(mid)) {
-               if (hdl) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-               } else
-                       mapi_explain(mid, stderr);
-               return 1;
-       }
+       if ((hdl = mapi_query(mid, sequences1)) == NULL || mapi_error(mid))
+               goto bailout;
 
        while (mapi_fetch_row(hdl) != 0) {
                char *schema = mapi_fetch_field(hdl, 0);
@@ -1327,22 +1255,14 @@
                quoted_print(toConsole, name);
                stream_printf(toConsole, " AS INTEGER;\n");
        }
-       if (mapi_error(mid)) {
-               mapi_explain_query(hdl, stderr);
-               mapi_close_handle(hdl);
-               return 1;
-       }
+       if (mapi_error(mid))
+               goto bailout;
        mapi_close_handle(hdl);
 
        /* dump tables */
-       if ((hdl = mapi_query(mid, tables_and_functions)) == NULL || 
mapi_error(mid)) {
-               if (hdl) {
-                       mapi_explain_query(hdl, stderr);
-                       mapi_close_handle(hdl);
-               } else
-                       mapi_explain(mid, stderr);
-               return 1;
-       }
+       if ((hdl = mapi_query(mid, tables_and_functions)) == NULL ||
+           mapi_error(mid))
+               goto bailout;
 
        while (rc == 0 &&
               !stream_errnr(toConsole) &&
@@ -1354,7 +1274,7 @@
                if (mapi_error(mid)) {
                        mapi_explain(mid, stderr);
                        mapi_close_handle(hdl);
-                       return 1;
+                       goto bailout2;
                }
                if (sname != NULL && strcmp(schema, sname) != 0)
                        continue;
@@ -1386,28 +1306,20 @@
                free(curschema);
                curschema = strdup(sname ? sname : "sys");
        }
-       if (mapi_error(mid)) {
-               mapi_explain_query(hdl, stderr);
-               mapi_close_handle(hdl);
-               return 1;
-       }
+       if (mapi_error(mid))
+               goto bailout;
        mapi_close_handle(hdl);
        if (stream_errnr(toConsole))
-               return 1;
+               goto bailout2;
 
        if (!describe) {
                if (dump_foreign_keys(mid, NULL, NULL, toConsole))
-                       return 1;
+                       goto bailout2;
 
                /* dump sequences, part 2 */
-               if ((hdl = mapi_query(mid, sequences2)) == NULL || 
mapi_error(mid)) {
-                       if (hdl) {
-                               mapi_explain_query(hdl, stderr);
-                               mapi_close_handle(hdl);
-                       } else
-                               mapi_explain(mid, stderr);
-                       return 1;
-               }
+               if ((hdl = mapi_query(mid, sequences2)) == NULL ||
+                   mapi_error(mid))
+                       goto bailout;
 
                while (mapi_fetch_row(hdl) != 0) {
                        char *schema = mapi_fetch_field(hdl, 0);
@@ -1435,25 +1347,16 @@
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to