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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list