Changeset: 21adae07a9f0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=21adae07a9f0
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        sql/backends/monet5/sql.c
Branch: default
Log Message:

Merge with Apr2019.


diffs (162 lines):

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
@@ -1161,14 +1161,13 @@ mvc_delta_values(Client cntxt, MalBlkPtr
                } else {
                        nrows = t->columns.set->cnt;
                }
-       } else {
+       } else if (s->tables.set) {
                for (n = s->tables.set->h; n ; n = n->next) {
                        t = (sql_table *) n->data;
                        if (!(isView(t) || isMergeTable(t) || isStream(t) || 
isRemote(t) || isReplicaTable(t)))
                                nrows += t->columns.set->cnt;
                }
        }
-       assert(nrows);
 
        if ((col1 = COLnew(0, TYPE_int, nrows, TRANSIENT)) == NULL) {
                msg = createException(SQL, "sql.delta", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
@@ -1199,53 +1198,18 @@ mvc_delta_values(Client cntxt, MalBlkPtr
                goto cleanup;
        }
 
-       tr = m->session->tr;
-       while((tr = tr->parent)) level++;
-
-       if (tname) {
-               cleared = (t->cleared != 0);
-               deletes = (lng) store_funcs.count_del(m->session->tr, t);
-               if (cname) {
-                       inserted = (lng) store_funcs.count_col(m->session->tr, 
c, 0);
-                       all = (lng) store_funcs.count_col(m->session->tr, c, 1);
-                       updates = (lng) 
store_funcs.count_col_upd(m->session->tr, c);
-                       readonly = all - inserted;
-
-                       if (BUNappend(col1, &c->base.id, false) != GDK_SUCCEED) 
{
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-                       if (BUNappend(col2, &cleared, false) != GDK_SUCCEED) {
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-                       if (BUNappend(col3, &readonly, false) != GDK_SUCCEED) {
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-                       if (BUNappend(col4, &inserted, false) != GDK_SUCCEED) {
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-                       if (BUNappend(col5, &updates, false) != GDK_SUCCEED) {
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-                       if (BUNappend(col6, &deletes, false) != GDK_SUCCEED) {
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-                       if (BUNappend(col7, &level, false) != GDK_SUCCEED) {
-                               msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
-                               goto cleanup;
-                       }
-               } else {
-                       for (n = t->columns.set->h; n ; n = n->next) {
-                               c = (sql_column*) n->data;
-
+       if (nrows) {
+               tr = m->session->tr;
+               while((tr = tr->parent)) level++;
+
+               if (tname) {
+                       cleared = (t->cleared != 0);
+                       deletes = (lng) store_funcs.count_del(m->session->tr, 
t);
+                       if (cname) {
                                inserted = (lng) 
store_funcs.count_col(m->session->tr, c, 0);
                                all = (lng) 
store_funcs.count_col(m->session->tr, c, 1);
                                updates = (lng) 
store_funcs.count_col_upd(m->session->tr, c);
+                               assert(all >= inserted);
                                readonly = all - inserted;
 
                                if (BUNappend(col1, &c->base.id, false) != 
GDK_SUCCEED) {
@@ -1276,21 +1240,14 @@ mvc_delta_values(Client cntxt, MalBlkPtr
                                        msg = createException(SQL,"sql.delta", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
                                        goto cleanup;
                                }
-                       }
-               }
-       } else {
-               for (n = s->tables.set->h; n ; n = n->next) {
-                       t = (sql_table *) n->data;
-                       if (!(isView(t) || isMergeTable(t) || isStream(t) || 
isRemote(t) || isReplicaTable(t))) {
-                               cleared = (t->cleared != 0);
-                               deletes = (lng) 
store_funcs.count_del(m->session->tr, t);
-
-                               for (node *nn = t->columns.set->h; nn ; nn = 
nn->next) {
-                                       c = (sql_column*) nn->data;
+                       } else {
+                               for (n = t->columns.set->h; n ; n = n->next) {
+                                       c = (sql_column*) n->data;
 
                                        inserted = (lng) 
store_funcs.count_col(m->session->tr, c, 0);
                                        all = (lng) 
store_funcs.count_col(m->session->tr, c, 1);
                                        updates = (lng) 
store_funcs.count_col_upd(m->session->tr, c);
+                                       assert(all >= inserted);
                                        readonly = all - inserted;
 
                                        if (BUNappend(col1, &c->base.id, false) 
!= GDK_SUCCEED) {
@@ -1323,6 +1280,53 @@ mvc_delta_values(Client cntxt, MalBlkPtr
                                        }
                                }
                        }
+               } else if (s->tables.set) {
+                       for (n = s->tables.set->h; n ; n = n->next) {
+                               t = (sql_table *) n->data;
+                               if (!(isView(t) || isMergeTable(t) || 
isStream(t) || isRemote(t) || isReplicaTable(t))) {
+                                       cleared = (t->cleared != 0);
+                                       deletes = (lng) 
store_funcs.count_del(m->session->tr, t);
+
+                                       for (node *nn = t->columns.set->h; nn ; 
nn = nn->next) {
+                                               c = (sql_column*) nn->data;
+
+                                               inserted = (lng) 
store_funcs.count_col(m->session->tr, c, 0);
+                                               all = (lng) 
store_funcs.count_col(m->session->tr, c, 1);
+                                               updates = (lng) 
store_funcs.count_col_upd(m->session->tr, c);
+                                               assert(all >= inserted);
+                                               readonly = all - inserted;
+
+                                               if (BUNappend(col1, 
&c->base.id, false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                               if (BUNappend(col2, &cleared, 
false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                               if (BUNappend(col3, &readonly, 
false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                               if (BUNappend(col4, &inserted, 
false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                               if (BUNappend(col5, &updates, 
false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                               if (BUNappend(col6, &deletes, 
false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                               if (BUNappend(col7, &level, 
false) != GDK_SUCCEED) {
+                                                       msg = 
createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                                                       goto cleanup;
+                                               }
+                                       }
+                               }
+                       }
                }
        }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to