Changeset: 752ccffdb10c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/752ccffdb10c
Modified Files:
        gdk/ChangeLog.Jan2022
        monetdb5/modules/atoms/str.c
        sql/ChangeLog.Jan2022
        sql/storage/objectset.c
        sql/storage/store.c
        sql/test/BugTracker-2021/Tests/concurrent-add-column.Bug-7196.SQL.py
Branch: Jan2022
Log Message:

Merge with Jul2021 branch.


diffs (95 lines):

diff --git a/gdk/ChangeLog.Jan2022 b/gdk/ChangeLog.Jan2022
--- a/gdk/ChangeLog.Jan2022
+++ b/gdk/ChangeLog.Jan2022
@@ -1,6 +1,13 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Mon Feb 13 2023 Sjoerd Mullender <sjo...@acm.org>
+- When saving a bat failed for some reason during a low-level commit,
+  this was logged in the log file, but the error was then subsequently
+  ignored, possibly leading to files that are too short or even missing.
+- The write-ahead log (WAL) is now rotated a bit more efficiently by
+  doing multiple log files in one go (i.e. in one low-level transaction).
+
 * Mon Jan 16 2023 Sjoerd Mullender <sjo...@acm.org>
 - Fixed a race condition that could lead to a bat being added to the SQL
   catalog but nog being made persistent, causing a subsequent restart
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -3205,7 +3205,10 @@ str_case_hash_lock(bool upper)
        if (BAThash(b) != GDK_SUCCEED)
                throw(MAL, "str.str_case_hash_lock", GDK_EXCEPTION);
        MT_rwlock_rdlock(&b->thashlock);
-       return MAL_SUCCEED;
+       if (b->thash)
+               return MAL_SUCCEED;
+       MT_rwlock_rdunlock(&b->thashlock);
+       throw(MAL, "str.str_case_hash_lock", "Lost hash");
 }
 
 void
diff --git a/sql/ChangeLog.Jan2022 b/sql/ChangeLog.Jan2022
--- a/sql/ChangeLog.Jan2022
+++ b/sql/ChangeLog.Jan2022
@@ -1,6 +1,10 @@
 # ChangeLog file for sql
 # This file is updated with Maddlog
 
+* Mon Feb 13 2023 Sjoerd Mullender <sjo...@acm.org>
+- An insert into a table from which a column was dropped in a parallel
+  transaction was incorrectly not flagged as a transaction conflict.
+
 * Fri Dec 16 2022 Sjoerd Mullender <sjo...@acm.org>
 - Added some error checking to prevent crashes.  Errors would mainly
   occur under memory pressure.
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -135,9 +135,9 @@ find_id(objectset *os, sqlid id)
                                return n;
                        }
                }
+               unlock_reader(os);
        }
 
-       unlock_reader(os);
        return NULL;
 }
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -6073,6 +6073,8 @@ sql_trans_drop_column(sql_trans *tr, sql
 
        if (!isNew(col) && (res = sql_trans_add_dependency_change(tr, 
col->t->base.id, ddl)))
                return res;
+       if (!isNew(col) && isGlobal(col->t) && !isGlobalTemp(col->t) && (res = 
sql_trans_add_dependency(tr, col->t->base.id, dml)))
+               return res;
        if ((res = sys_drop_column(tr, col, drop_action)))
                return res;
 
@@ -6667,6 +6669,10 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc
                list_append(tr->dropped, local_id);
        }
 
+       if (!isNew(i) && (res = sql_trans_add_dependency_change(tr, 
i->t->base.id, ddl)))
+               return res;
+       if (!isNew(i) && isGlobal(i->t) && !isGlobalTemp(i->t) && (res = 
sql_trans_add_dependency(tr, i->t->base.id, dml)))
+               return res;
        if ((res = sys_drop_idx(tr, i, drop_action)))
                return res;
        if ((res = store_reset_sql_functions(tr, i->t->base.id))) /* reset sql 
functions depending on the table */
diff --git 
a/sql/test/BugTracker-2021/Tests/concurrent-add-column.Bug-7196.SQL.py 
b/sql/test/BugTracker-2021/Tests/concurrent-add-column.Bug-7196.SQL.py
--- a/sql/test/BugTracker-2021/Tests/concurrent-add-column.Bug-7196.SQL.py
+++ b/sql/test/BugTracker-2021/Tests/concurrent-add-column.Bug-7196.SQL.py
@@ -22,7 +22,7 @@ with SQLTestCase() as mdb1:
         mdb1.execute('alter table test drop column data;').assertSucceeded()
         mdb2.execute("insert into test values (3,4);").assertSucceeded()
         mdb1.execute('commit;').assertSucceeded()
-        mdb2.execute('commit;').assertSucceeded()
+        mdb2.execute('commit;').assertFailed(err_code="40001", 
err_message="COMMIT: transaction is aborted because of concurrency conflicts, 
will ROLLBACK instead")
 
         mdb1.execute('select * from 
test;').assertSucceeded().assertDataResultMatch([(1,),(3,)])
         mdb2.execute('select * from 
test;').assertSucceeded().assertDataResultMatch([(1,),(3,)])
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to