Changeset: 086f386266d7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=086f386266d7 Branch: mtest Log Message:
merge heads diffs (truncated from 2864 to 300 lines): diff --git a/common/utils/matomic.h b/common/utils/matomic.h --- a/common/utils/matomic.h +++ b/common/utils/matomic.h @@ -220,6 +220,7 @@ typedef PVOID volatile ATOMIC_PTR_TYPE; #define ATOMIC_PTR_GET(var) (*(var)) #define ATOMIC_PTR_SET(var, val) _InterlockedExchangePointer(var, (PVOID) (val)) #define ATOMIC_PTR_XCG(var, val) _InterlockedExchangePointer(var, (PVOID) (val)) +#pragma intrinsic(_InterlockedCompareExchangePointer) static inline bool ATOMIC_PTR_CAS(ATOMIC_PTR_TYPE *var, void **exp, void *des) { diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h --- a/gdk/gdk_system.h +++ b/gdk/gdk_system.h @@ -320,8 +320,6 @@ static void wininit_##n(void) \ __declspec(allocate(".CRT$XCU")) void (*wininit_##n##_)(void) = wininit_##n; \ __pragma(comment(linker, "/include:" _LOCK_PREF_ "wininit_" #n "_")) -#pragma intrinsic(_InterlockedCompareExchangePointer) - #define MT_lock_init(l, n) \ do { \ InitializeCriticalSection(&(l)->lock); \ diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c --- a/monetdb5/mal/mal_runtime.c +++ b/monetdb5/mal/mal_runtime.c @@ -262,7 +262,7 @@ runtimeProfileInit(Client cntxt, MalBlkP QRYqueue[qhead].mb = mb; QRYqueue[qhead].tag = qtag++; QRYqueue[qhead].stk = stk; // for status pause 'p'/running '0'/ quiting 'q' - QRYqueue[qhead].finished = + QRYqueue[qhead].finished = 0; QRYqueue[qhead].start = time(0); q = isaSQLquery(mb); QRYqueue[qhead].query = q? GDKstrdup(q):0; diff --git a/monetdb5/modules/mal/sysmon.c b/monetdb5/modules/mal/sysmon.c --- a/monetdb5/modules/mal/sysmon.c +++ b/monetdb5/modules/mal/sysmon.c @@ -82,10 +82,14 @@ SYSMONstatistics(Client cntxt, MalBlkPtr goto bailout; } - tsn = timestamp_fromtime(USRstats[i].finished); - if (is_timestamp_nil(tsn)) { - msg = createException(MAL, "SYSMONstatistics", SQLSTATE(22003) "failed to convert finish time"); - goto bailout; + if (USRstats[i].finished == 0) { + tsn = timestamp_nil; + } else { + tsn = timestamp_fromtime(USRstats[i].finished); + if (is_timestamp_nil(tsn)) { + msg = createException(MAL, "SYSMONstatistics", SQLSTATE(22003) "failed to convert finish time"); + goto bailout; + } } if (BUNappend(finished, &tsn, false) != GDK_SUCCEED){ msg = createException(MAL, "SYSMONstatistics", "Failed to append 'finished'"); @@ -218,10 +222,14 @@ SYSMONqueue(Client cntxt, MalBlkPtr mb, if (BUNappend(started, &tsn, false) != GDK_SUCCEED) goto bailout; - tsn = timestamp_fromtime(QRYqueue[i].finished); - if (is_timestamp_nil(tsn)) { - msg = createException(MAL, "SYSMONqueue", SQLSTATE(22003) "cannot convert time"); - goto bailout; + if (QRYqueue[i].finished == 0) { + tsn = timestamp_nil; + } else { + tsn = timestamp_fromtime(QRYqueue[i].finished); + if (is_timestamp_nil(tsn)) { + msg = createException(MAL, "SYSMONqueue", SQLSTATE(22003) "cannot convert time"); + goto bailout; + } } if (BUNappend(finished, &tsn, false) != GDK_SUCCEED) goto bailout; diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -1611,7 +1611,7 @@ str mvc_append_column(sql_trans *t, sql_column *c, BAT *ins) { int res = store_funcs.append_col(t, c, ins, TYPE_bat); - if (res != 0) + if (res != LOG_OK) throw(SQL, "sql.append", SQLSTATE(42000) "Cannot append values"); return MAL_SUCCEED; } @@ -1667,7 +1667,7 @@ mvc_append_wrap(Client cntxt, MalBlkPtr const char *tname = *getArgReference_str(stk, pci, 3); const char *cname = *getArgReference_str(stk, pci, 4); ptr ins = getArgReference(stk, pci, 5); - int tpe = getArgType(mb, pci, 5); + int tpe = getArgType(mb, pci, 5), err = 0; sql_schema *s; sql_table *t; sql_column *c; @@ -1702,12 +1702,15 @@ mvc_append_wrap(Client cntxt, MalBlkPtr if( b && BATcount(b) > 4096 && !b->batTransient) BATmsync(b); if (cname[0] != '%' && (c = mvc_bind_column(m, t, cname)) != NULL) { - store_funcs.append_col(m->session->tr, c, ins, tpe); + if (store_funcs.append_col(m->session->tr, c, ins, tpe) != LOG_OK) + err = 1; } else if (cname[0] == '%') { sql_idx *i = mvc_bind_idx(m, s, cname + 1); - if (i) - store_funcs.append_idx(m->session->tr, i, ins, tpe); - } + if (i && store_funcs.append_idx(m->session->tr, i, ins, tpe) != LOG_OK) + err = 1; + } + if (err) + throw(SQL, "sql.append", SQLSTATE(42S02) "append failed"); if (b) { BBPunfix(b->batCacheid); } @@ -1727,7 +1730,7 @@ mvc_update_wrap(Client cntxt, MalBlkPtr bat Tids = *getArgReference_bat(stk, pci, 5); bat Upd = *getArgReference_bat(stk, pci, 6); BAT *tids, *upd; - int tpe = getArgType(mb, pci, 6); + int tpe = getArgType(mb, pci, 6), err = 0; sql_schema *s; sql_table *t; sql_column *c; @@ -1769,14 +1772,17 @@ mvc_update_wrap(Client cntxt, MalBlkPtr if( tids && BATcount(tids) > 4096 && !tids->batTransient) BATmsync(tids); if (cname[0] != '%' && (c = mvc_bind_column(m, t, cname)) != NULL) { - store_funcs.update_col(m->session->tr, c, tids, upd, TYPE_bat); + if (store_funcs.update_col(m->session->tr, c, tids, upd, TYPE_bat) != LOG_OK) + err = 1; } else if (cname[0] == '%') { sql_idx *i = mvc_bind_idx(m, s, cname + 1); - if (i) - store_funcs.update_idx(m->session->tr, i, tids, upd, TYPE_bat); + if (i && store_funcs.update_idx(m->session->tr, i, tids, upd, TYPE_bat) != LOG_OK) + err = 1; } BBPunfix(tids->batCacheid); BBPunfix(upd->batCacheid); + if (err) + throw(SQL, "sql.update", SQLSTATE(42S02) "update failed"); return MAL_SUCCEED; } @@ -1803,6 +1809,8 @@ mvc_clear_table_wrap(Client cntxt, MalBl if (t == NULL) throw(SQL, "sql.clear_table", SQLSTATE(42S02) "Table missing %s.%s", sname,tname); *res = mvc_clear_table(m, t); + if (*res == BUN_NONE) + throw(SQL, "sql.clear_table", SQLSTATE(42S02) "clear failed"); return MAL_SUCCEED; } @@ -1850,7 +1858,8 @@ mvc_delete_wrap(Client cntxt, MalBlkPtr } if( b && BATcount(b) > 4096 && !b->batTransient) BATmsync(b); - store_funcs.delete_tab(m->session->tr, t, b, tpe); + if (store_funcs.delete_tab(m->session->tr, t, b, tpe) != LOG_OK) + throw(SQL, "sql.delete", SQLSTATE(3F000) "delete failed"); if (b) BBPunfix(b->batCacheid); return MAL_SUCCEED; @@ -4075,7 +4084,7 @@ vacuum(Client cntxt, MalBlkPtr mb, MalSt bat bid; BAT *b, *del; node *o; - int i, bids[2049]; + int i, bids[2049], err = 0; if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) return msg; @@ -4140,17 +4149,21 @@ vacuum(Client cntxt, MalBlkPtr mb, MalSt } BBPunfix(del->batCacheid); - mvc_clear_table(m, t); + if (mvc_clear_table(m, t) == BUN_NONE) + throw(SQL, name, SQLSTATE(42000) "vacumm: clear failed"); for (o = t->columns.set->h, i = 0; o; o = o->next, i++) { sql_column *c = o->data; BAT *ins = BATdescriptor(bids[i]); /* use the insert bat */ if( ins){ - store_funcs.append_col(tr, c, ins, TYPE_bat); + if (store_funcs.append_col(tr, c, ins, TYPE_bat) != LOG_OK) + err = 1; BBPunfix(ins->batCacheid); } BBPrelease(bids[i]); } + if (err) + throw(SQL, name, SQLSTATE(42000) "vacuum: reappend failed"); /* TODO indices */ return MAL_SUCCEED; } diff --git a/sql/backends/monet5/sql_execute.c b/sql/backends/monet5/sql_execute.c --- a/sql/backends/monet5/sql_execute.c +++ b/sql/backends/monet5/sql_execute.c @@ -701,7 +701,7 @@ SQLengineIntern(Client c, backend *be) msg = SQLrun(c,m); cleanup_engine: - if (m->type == Q_SCHEMA && m->qc != NULL) + if (m->emode != m_prepare && m->type == Q_SCHEMA && m->qc != NULL) qc_clean(m->qc); if (msg) { /* don't print exception decoration, just the message */ diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -798,6 +798,8 @@ SQLreader(Client c) go = msg == MAL_SUCCEED; commit_done = true; } + if (m->session->tr && m->session->tr->active) + c->idle = 0; if (go && in->pos >= in->len) { ssize_t rd; diff --git a/sql/benchmarks/arno/Tests/one.test b/sql/benchmarks/arno/Tests/one.test --- a/sql/benchmarks/arno/Tests/one.test +++ b/sql/benchmarks/arno/Tests/one.test @@ -33,6 +33,7 @@ CREATE TABLE BOND ( statement ok commit + query ITII rowsort select * from model ---- @@ -45,13 +46,13 @@ query IITTT rowsort select * from bond ---- + statement ok START TRANSACTION statement ok COPY 188 RECORDS INTO "sys"."model" FROM stdin USING DELIMITERS E'\t',E'\n','"' - -statement error +<COPY_INTO_DATA> 1 "T" -1 4 2 "F" -1 1 3 "F" -1 2 @@ -240,9 +241,10 @@ 185 "F" -2 2 186 "F" -1 2 187 "T" -1 5 188 "F" -1 4 + +statement ok COPY 4893 RECORDS INTO "sys"."atom" FROM stdin USING DELIMITERS E'\t',E'\n','"' - -statement error +<COPY_INTO_DATA> "d1_1" 1 "c" "22" 0 "d1_2" 1 "c" "22" 0 "d1_3" 1 "c" "22" 0 @@ -5136,9 +5138,10 @@ statement error "d188_22" 188 "n" "38" 0 "d188_23" 188 "o" "40" 0 "d188_24" 188 "o" "40" 0 + +statement ok COPY 5243 RECORDS INTO "sys"."bond" FROM stdin USING DELIMITERS E'\t',E'\n','"' - -statement error +<COPY_INTO_DATA> 0 1 "d1_1" "d1_2" "7" 1 1 "d1_2" "d1_3" "7" 2 1 "d1_3" "d1_4" "7" @@ -10382,560 +10385,1500 @@ 5239 188 "d188_20" "d188_21" "1" 5240 188 "d188_14" "d188_22" "1" 5241 188 "d188_22" "d188_23" "2" 5242 188 "d188_22" "d188_24" "2" + +statement ok COMMIT -statement error + +query ITII rowsort select * from model - -statement error +---- +752 values hashing to 317302b973ca5b30595eae970168fadf + +query TITTI rowsort select * from atom - -statement error +---- +24465 values hashing to 91c906e09e4699aa457afd55cfbdbea3 + _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list