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

Reply via email to