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