Changeset: e901f1e4d8cf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e901f1e4d8cf
Modified Files:
        gdk/ChangeLog.Sep2022
        gdk/gdk_heap.c
Branch: Sep2022
Log Message:

Do not remove tail file if the oldtail pointer exists and uses the same file.


diffs (30 lines):

diff --git a/gdk/ChangeLog.Sep2022 b/gdk/ChangeLog.Sep2022
--- a/gdk/ChangeLog.Sep2022
+++ b/gdk/ChangeLog.Sep2022
@@ -1,6 +1,13 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Thu Apr 20 2023 Sjoerd Mullender <[email protected]>
+- Fixed yet another occurrence of a missing .tailN file.  This one could
+  happen if a string bat was appended to in stages so that between appends
+  the column was committed.  If an append caused both a realloc of the
+  tail heap because it was getting longer and a realloc because it got
+  wider, the file might get removed before the GDK level commit happened.
+
 * Fri Mar 24 2023 Sjoerd Mullender <[email protected]>
 - When processing the WAL, if a to-be-destroyed object cannot be found,
   don't stop, but keep processing the rest of the WAL.
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -533,7 +533,8 @@ GDKupgradevarheap(BAT *b, var_t v, BUN c
                b->oldtail = old;
                ATOMIC_OR(&old->refs, DELAYEDREMOVE);
        } else {
-               HEAPdecref(old, true);
+               ValPtr p = BATgetprop_nolock(b, (enum prop_t) 20);
+               HEAPdecref(old, p == NULL || strcmp(((Heap*) 
p->val.pval)->filename, old->filename) != 0);
        }
        MT_lock_unset(&b->theaplock);
        return GDK_SUCCEED;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to