Changeset: 7e04d884b977 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7e04d884b977
Added Files:
        sql/test/pg_regress/Tests/oid.stable.err.32bit
Modified Files:
        gdk/gdk_atoms.c
        monetdb5/modules/mal/remote.c
        sql/storage/store.c
        sql/test/pg_regress/Tests/oid.stable.err
        sql/test/remote/Tests/ssbm.SQL.py
Branch: Jun2016
Log Message:

Merge with Jul2015 branch.


diffs (truncated from 426 to 300 lines):

diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -854,8 +854,11 @@ dblFromStr(const char *src, int *len, db
                 * ERANGE.  We accept underflow, but not overflow. */
                char *pe;
                errno = 0;
-               d = strtod(src, &pe);
-               p = pe;
+               d = strtod(p, &pe);
+               if (p == pe)
+                       p = src; /* nothing converted */
+               else
+                       p = pe;
                n = (int) (p - src);
                if (n == 0 || (errno == ERANGE && (d < -1 || d > 1))
 #ifdef isfinite
@@ -917,8 +920,11 @@ fltFromStr(const char *src, int *len, fl
                 * ERANGE.  We accept underflow, but not overflow. */
                char *pe;
                errno = 0;
-               f = strtof(src, &pe);
-               p = pe;
+               f = strtof(p, &pe);
+               if (p == pe)
+                       p = src; /* nothing converted */
+               else
+                       p = pe;
                n = (int) (p - src);
                if (n == 0 || (errno == ERANGE && (f < -1 || f > 1))
 #else /* no strtof, try sscanf */
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -862,9 +862,10 @@ str RMTregister(Client cntxt, MalBlkPtr 
  */
 str RMTexec(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) {
        str conn, mod, func, tmp;
-       int i, len;
+       int i;
+       size_t len, buflen;
        connection c= NULL;
-       char qbuf[BUFSIZ+1];    /* FIXME: make this dynamic */
+       char *qbuf;
        MapiHdl mhdl;
 
        (void)cntxt;
@@ -892,38 +893,56 @@ str RMTexec(Client cntxt, MalBlkPtr mb, 
        /* this call should be a single transaction over the channel*/
        MT_lock_set(&c->lock);
 
+       assert(pci->argc - pci->retc >= 3); /* conn, mod, func, ... */
+
+       len = 0;
+       /* count how big a buffer we need */
+       len += 2 * (pci->retc > 1);
+       for (i = 0; i < pci->retc; i++) {
+               len += 2 * (i > 0);
+               len += strlen(*getArgReference_str(stk, pci, i));
+       }
+       len += strlen(mod) + strlen(func) + 6;
+       for (i = 3; i < pci->argc - pci->retc; i++) {
+               len += 2 * (i > 3);
+               len += strlen(*getArgReference_str(stk, pci, pci->retc + i));
+       }
+       len += 2;
+       buflen = len + 1;
+       if ((qbuf = GDKmalloc(buflen)) == NULL)
+               throw(MAL, "remote.exec", MAL_MALLOC_FAIL);
+
        len = 0;
 
-       /* use previous defined remote objects to keep result */
        if (pci->retc > 1)
                qbuf[len++] = '(';
        for (i = 0; i < pci->retc; i++)
-               len += snprintf(&qbuf[len], BUFSIZ - len, "%s%s",
+               len += snprintf(&qbuf[len], buflen - len, "%s%s",
                                (i > 0 ? ", " : ""), *getArgReference_str(stk, 
pci, i));
 
-       if (pci->retc > 1 && len < BUFSIZ)
+       if (pci->retc > 1)
                qbuf[len++] = ')';
 
        /* build the function invocation string in qbuf */
-       len += snprintf(&qbuf[len], BUFSIZ - len, " := %s.%s(", mod, func);
+       len += snprintf(&qbuf[len], buflen - len, " := %s.%s(", mod, func);
 
        /* handle the arguments to the function */
-       assert(pci->argc - pci->retc >= 3); /* conn, mod, func, ... */
 
        /* put the arguments one by one, and dynamically build the
         * invocation string */
        for (i = 3; i < pci->argc - pci->retc; i++) {
-               len += snprintf(&qbuf[len], BUFSIZ - len, "%s%s",
+               len += snprintf(&qbuf[len], buflen - len, "%s%s",
                                (i > 3 ? ", " : ""),
                                *(getArgReference_str(stk, pci, pci->retc + 
i)));
        }
 
        /* finish end execute the invocation string */
-       len += snprintf(&qbuf[len], BUFSIZ - len, ");");
+       len += snprintf(&qbuf[len], buflen - len, ");");
 #ifdef _DEBUG_REMOTE
        mnstr_printf(cntxt->fdout,"#remote.exec:%s:%s\n",c->name,qbuf);
 #endif
        tmp = RMTquery(&mhdl, "remote.exec", c->mconn, qbuf);
+       GDKfree(qbuf);
        if (mhdl)
                mapi_close_handle(mhdl);
        MT_lock_unset(&c->lock);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1710,7 +1710,11 @@ store_manager(void)
                }
 
                MT_lock_set(&bs_lock);
-               if (GDKexiting() || (!need_flush && logger_funcs.changes() < 
1000000 && shared_transactions_drift < shared_drift_threshold)) {
+               if (GDKexiting()) {
+                       MT_lock_unset(&bs_lock);
+                       return;
+               }
+               if ((!need_flush && logger_funcs.changes() < 1000000 && 
shared_transactions_drift < shared_drift_threshold)) {
                        MT_lock_unset(&bs_lock);
                        continue;
                }
@@ -1718,7 +1722,7 @@ store_manager(void)
                while (store_nr_active) { /* find a moment to flush */
                        MT_lock_unset(&bs_lock);
                        if (GDKexiting())
-                               continue;
+                               return;
                        MT_sleep_ms(timeout);
                        MT_lock_set(&bs_lock);
                }
diff --git a/sql/test/pg_regress/Tests/oid.stable.err 
b/sql/test/pg_regress/Tests/oid.stable.err
--- a/sql/test/pg_regress/Tests/oid.stable.err
+++ b/sql/test/pg_regress/Tests/oid.stable.err
@@ -1,11 +1,11 @@
 stderr of test 'oid` in directory 'sql/test/pg_regress` itself:
 
 
-# 16:27:39 >  
-# 16:27:39 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=30205" "--set" 
"mapi_usock=/var/tmp/mtest-19737/.s.monetdb.30205" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_pg_regress" 
"--set" "mal_listing=0" "--set" "embedded_r=yes"
-# 16:27:39 >  
+# 13:47:46 >  
+# 13:47:46 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=38887" "--set" 
"mapi_usock=/var/tmp/mtest-7019/.s.monetdb.38887" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_pg_regress" 
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 13:47:46 >  
 
-# builtin opt  gdk_dbpath = 
/ufs/sjoerd/Monet-candidate/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_dbpath = /ufs/sjoerd/Monet-stable/var/monetdb5/dbfarm/demo
 # builtin opt  gdk_debug = 0
 # builtin opt  gdk_vmtrim = no
 # builtin opt  monet_prompt = >
@@ -17,62 +17,62 @@ stderr of test 'oid` in directory 'sql/t
 # builtin opt  sql_debug = 0
 # cmdline opt  gdk_nr_threads = 0
 # cmdline opt  mapi_open = true
-# cmdline opt  mapi_port = 30205
-# cmdline opt  mapi_usock = /var/tmp/mtest-19737/.s.monetdb.30205
+# cmdline opt  mapi_port = 38887
+# cmdline opt  mapi_usock = /var/tmp/mtest-7019/.s.monetdb.38887
 # cmdline opt  monet_prompt = 
 # cmdline opt  mal_listing = 2
-# cmdline opt  gdk_dbpath = 
/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_pg_regress
+# cmdline opt  gdk_dbpath = 
/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_pg_regress
 # cmdline opt  mal_listing = 0
 # cmdline opt  embedded_r = yes
 # cmdline opt  gdk_debug = 536870922
 
-# 16:27:39 >  
-# 16:27:39 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-19737" "--port=30205"
-# 16:27:39 >  
+# 13:47:46 >  
+# 13:47:46 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-7019" "--port=38887"
+# 13:47:46 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
 ERROR = !conversion of string 'asdfasd' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
 ERROR = !conversion of string '99asdfasd' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('5    d');
 ERROR = !conversion of string '5    d' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('    5d');
 ERROR = !conversion of string '    5d' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('5    5');
 ERROR = !conversion of string '5    5' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES (-10);   -- negative oids are not 
allowed in MonetDB, so this should fail
 ERROR = !overflow in conversion of -10 to oid.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES (-1040);   -- negative oids are not 
allowed in MonetDB, so this should fail
 ERROR = !overflow in conversion of -1040 to oid.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('-1040');   -- negative oids are not 
allowed in MonetDB, so this should fail
 ERROR = !conversion of string '-1040' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES (' - 500');
 ERROR = !conversion of string ' - 500' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
 ERROR = !conversion of string '32958209582039852935' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES (32958209582039852935);
 ERROR = !integer value too large or not a number (32958209582039852935) in: 
"insert into oid_tbl(f1) values (32958209582039852935"
         !syntax error, unexpected ')' in: ")"
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
 ERROR = !conversion of string '-23582358720398502385' to type oid failed.
-MAPI  = (monetdb) /var/tmp/mtest-19737/.s.monetdb.30205
+MAPI  = (monetdb) /var/tmp/mtest-7019/.s.monetdb.38887
 QUERY = INSERT INTO OID_TBL(f1) VALUES (-23582358720398502385);
 ERROR = !integer value too large or not a number (23582358720398502385) in: 
"insert into oid_tbl(f1) values (-23582358720398502385"
         !syntax error, unexpected ')' in: ")"
 
-# 16:27:39 >  
-# 16:27:39 >  "Done."
-# 16:27:39 >  
+# 13:47:46 >  
+# 13:47:46 >  "Done."
+# 13:47:46 >  
 
diff --git a/sql/test/pg_regress/Tests/oid.stable.err.32bit 
b/sql/test/pg_regress/Tests/oid.stable.err.32bit
new file mode 100644
--- /dev/null
+++ b/sql/test/pg_regress/Tests/oid.stable.err.32bit
@@ -0,0 +1,80 @@
+stderr of test 'oid` in directory 'sql/test/pg_regress` itself:
+
+
+# 17:11:18 >  
+# 17:11:18 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=38959" "--set" 
"mapi_usock=/var/tmp/mtest-1142/.s.monetdb.38959" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress" "--set" 
"mal_listing=0"
+# 17:11:18 >  
+
+# builtin opt  gdk_dbpath = /ufs/dinther/INSTALL/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 38959
+# cmdline opt  mapi_usock = /var/tmp/mtest-1142/.s.monetdb.38959
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress
+# cmdline opt  mal_listing = 0
+# cmdline opt  gdk_debug = 536870922
+
+# 15:18:43 >  
+# 15:18:43 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-7372" "--port=31804"
+# 15:18:43 >  
+
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES (12345678901);
+ERROR = !overflow in conversion of 12345678901 to oid.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
+ERROR = !conversion of string 'asdfasd' to type oid failed.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
+ERROR = !conversion of string '99asdfasd' to type oid failed.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES ('5    d');
+ERROR = !conversion of string '5    d' to type oid failed.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES ('    5d');
+ERROR = !conversion of string '    5d' to type oid failed.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES ('5    5');
+ERROR = !conversion of string '5    5' to type oid failed.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES (-10);   -- negative oids are not 
allowed in MonetDB, so this should fail
+ERROR = !overflow in conversion of -10 to oid.
+MAPI  = (monetdb) /var/tmp/mtest-9364/.s.monetdb.31208
+QUERY = INSERT INTO OID_TBL(f1) VALUES (-1040);   -- negative oids are not 
allowed in MonetDB, so this should fail
+ERROR = !overflow in conversion of -1040 to oid.
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to