Changeset: 2a90add101fb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2a90add101fb
Branch: select-window-pushdown
Log Message:

Merge


diffs (159 lines):

diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -140,6 +140,7 @@ VIEWcreate(oid seq, BAT *b)
                }
                if (bn->tvheap) {
                        BBPunshare(bn->tvheap->parentid);
+                       BBPunfix(bn->tvheap->parentid);
                        HEAPdecref(bn->tvheap, false);
                }
                HEAPdecref(bn->theap, false);
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -91,8 +91,10 @@ insert_string_bat(BAT *b, BAT *n, struct
                /* we can share the vheaps, so we then only need to
                 * append the offsets */
                MT_lock_set(&b->theaplock);
-               if (b->tvheap->parentid != b->batCacheid)
+               if (b->tvheap->parentid != b->batCacheid) {
                        BBPunshare(b->tvheap->parentid);
+                       BBPunfix(b->tvheap->parentid);
+               }
                HEAPdecref(b->tvheap, b->tvheap->parentid == b->batCacheid);
                HEAPincref(ni.vh);
                b->tvheap = ni.vh;
@@ -374,8 +376,10 @@ append_varsized_bat(BAT *b, BAT *n, stru
                 * is read-only, we replace b's vheap with a reference
                 * to n's */
                MT_lock_set(&b->theaplock);
-               if (b->tvheap->parentid != b->batCacheid)
+               if (b->tvheap->parentid != b->batCacheid) {
                        BBPunshare(b->tvheap->parentid);
+                       BBPunfix(b->tvheap->parentid);
+               }
                BBPshare(ni.vh->parentid);
                HEAPdecref(b->tvheap, true);
                HEAPincref(ni.vh);
@@ -433,12 +437,14 @@ append_varsized_bat(BAT *b, BAT *n, stru
                        GDKfree(h);
                        return GDK_FAIL;
                }
-               BBPunshare(b->tvheap->parentid);
+               bat parid = b->tvheap->parentid;
+               BBPunshare(parid);
                MT_lock_set(&b->theaplock);
                HEAPdecref(b->tvheap, false);
                ATOMIC_INIT(&h->refs, 1);
                b->tvheap = h;
                MT_lock_unset(&b->theaplock);
+               BBPunfix(parid);
        }
        if (BATcount(b) == 0 && BATatoms[b->ttype].atomFix == NULL &&
            ci->tpe == cand_dense && ci->ncand == ni.count) {
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2236,7 +2236,7 @@ logger_next_logfile(logger *lg, ulng ts)
 {
        if (!lg->pending || !lg->pending->next)
                return 0;
-       if (lg->pending->last_ts < ts)
+       if (lg->pending->last_ts <= ts)
                return lg->pending->id;
        return 0;
 }
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -766,6 +766,7 @@ os_add_name_based(objectset *os, struct 
                objectversion *co = name_based_node->ov;
                objectversion *oo = get_valid_object_name(tr, co);
                if (co != oo) { /* conflict ? */
+                       TRC_WARNING(SQL_STORE, "%s" "if (co != oo) { /* 
conflict ? */", __func__);
                        return -3;
                }
 
@@ -780,6 +781,7 @@ os_add_name_based(objectset *os, struct 
                        */
                        ATOMIC_BASE_TYPE expected_deleted = deleted;
                        if (!ATOMIC_CAS(&oo->state, &expected_deleted, 
block_destruction)) {
+                               TRC_WARNING(SQL_STORE, "%s: " "if 
(!ATOMIC_CAS(&oo->state, &expected_deleted, block_destruction)) { /*conflict 
with cleaner or write-write conflict*/ ", __func__);
                                return -3; /*conflict with cleaner or 
write-write conflict*/
                        }
                }
@@ -816,6 +818,7 @@ os_add_id_based(objectset *os, struct sq
                objectversion *co = id_based_node->ov;
                objectversion *oo = get_valid_object_id(tr, co);
                if (co != oo) { /* conflict ? */
+                       TRC_WARNING(SQL_STORE, "%s" "if (co != oo) { /* 
conflict ? */", __func__);
                        return -3;
                }
 
@@ -830,6 +833,7 @@ os_add_id_based(objectset *os, struct sq
                        */
                        ATOMIC_BASE_TYPE expected_deleted = deleted;
                        if (!ATOMIC_CAS(&oo->state, &expected_deleted, 
block_destruction)) {
+                               TRC_WARNING(SQL_STORE, "%s" "if 
(!ATOMIC_CAS(&oo->state, &expected_deleted, block_destruction)) { /*conflict 
with cleaner or write-write conflict*/", __func__);
                                return -3; /*conflict with cleaner or 
write-write conflict*/
                        }
                }
@@ -870,6 +874,7 @@ os_add_(objectset *os, struct sql_trans 
                if (os->destroy)
                        os->destroy(os->store, ov->b);
                _DELETE(ov);
+               TRC_WARNING(SQL_STORE, "%s" "if (!os->concurrent && 
os_has_changes(os, tr)) { /* for object sets without concurrent support, 
conflict if concurrent changes are there */", __func__);
                return -3; /* conflict */
        }
 
@@ -912,6 +917,7 @@ os_del_name_based(objectset *os, struct 
                objectversion *oo = get_valid_object_name(tr, co);
                ov->name_based_head = oo->name_based_head;
                if (co != oo) { /* conflict ? */
+                       TRC_WARNING(SQL_STORE, "%s: " "if (co != oo) { /* 
conflict ? */", __func__);
                        return -3;
                }
                ov->name_based_older = oo;
@@ -943,6 +949,7 @@ os_del_id_based(objectset *os, struct sq
                objectversion *oo = get_valid_object_id(tr, co);
                ov->id_based_head = oo->id_based_head;
                if (co != oo) { /* conflict ? */
+                       TRC_WARNING(SQL_STORE, "%s" "if (co != oo) { /* 
conflict ? */", __func__);
                        return -3;
                }
                ov->id_based_older = oo;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5829,6 +5829,12 @@ int
 sql_trans_drop_table(sql_trans *tr, sql_schema *s, const char *name, int 
drop_action)
 {
        sql_table *t = find_sql_table(tr, s, name), *gt = NULL;
+
+       if (!t) {
+               TRC_ERROR(SQL_STORE, "sql_trans_drop_table: Table %s.%s does 
not exist\n", s->base.name, name);
+               return -1;
+       }
+
        if (t && isTempTable(t)) {
                gt = find_sql_table_id(tr, s, t->base.id);
                if (gt)
diff --git 
a/sql/test/BugTracker-2018/Tests/truncate_geom_tables.Bug-6543.reqtests 
b/sql/test/BugTracker-2018/Tests/truncate_geom_tables.Bug-6543.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2018/Tests/truncate_geom_tables.Bug-6543.reqtests
@@ -0,0 +1,1 @@
+truncate_add_user
diff --git a/sql/test/rename/Tests/rename00.SQL.py 
b/sql/test/rename/Tests/rename00.SQL.py
--- a/sql/test/rename/Tests/rename00.SQL.py
+++ b/sql/test/rename/Tests/rename00.SQL.py
@@ -21,7 +21,7 @@ with tempfile.TemporaryDirectory() as fa
             tc.execute('insert into "newname" values 
(1);').assertSucceeded().assertRowCount(1)
             tc.execute('select "a" from 
"newname";').assertSucceeded().assertDataResultMatch([(1,)])
         s.communicate()
-    with process.server(mapiport=s.dbport, dbname='db1',
+    with process.server(mapiport='0', dbname='db1',
                         dbfarm=os.path.join(farm_dir, 'db1'),
                         stdin=process.PIPE,
                         stdout=process.PIPE, stderr=process.PIPE) as s:
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to