Changeset: 24e55641e367 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/24e55641e367
Modified Files:
sql/storage/bat/bat_logger.c
Branch: default
Log Message:
Merge with Aug2024 branch.
diffs (118 lines):
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -106,7 +106,7 @@ log_temp_descriptor(log_bid b)
#if defined CATALOG_JAN2022 || defined CATALOG_SEP2022
static gdk_return
-tabins(logger *lg, bool first, int tt, int nid, ...)
+tabins(logger *lg, ...)
{
va_list va;
int cid;
@@ -114,48 +114,33 @@ tabins(logger *lg, bool first, int tt, i
gdk_return rc;
BAT *b;
- va_start(va, nid);
+ va_start(va, lg);
+ BATiter cni = bat_iterator(lg->catalog_id);
while ((cid = va_arg(va, int)) != 0) {
cval = va_arg(va, void *);
if ((b = log_temp_descriptor(log_find_bat(lg, cid))) == NULL) {
- va_end(va);
- return GDK_FAIL;
- }
- if (first) {
- BAT *bn = COLcopy(b, b->ttype, true, PERSISTENT);
- if (bn == NULL) {
- va_end(va);
- bat_destroy(b);
- return GDK_FAIL;
- }
- if (replace_bat(lg, cid, bn) != GDK_SUCCEED) {
- va_end(va);
- bat_destroy(b);
- bat_destroy(bn);
- return GDK_FAIL;
- }
- /* logical refs of b stay the same: it is moved from
catalog_bid to del */
- bat_destroy(b);
- b = bn;
+ rc = GDK_FAIL;
+ break;
}
rc = BUNappend(b, cval, true);
- bat_destroy(b);
- if (rc != GDK_SUCCEED) {
- va_end(va);
- return rc;
+ if (rc == GDK_SUCCEED) {
+ BUN p;
+ MT_rwlock_rdlock(&cni.b->thashlock);
+ HASHloop_int(cni, cni.b->thash, p, &cid) {
+ if (BUNfnd(lg->dcatalog, &(oid){p}) ==
BUN_NONE) {
+ rc = BUNreplace(lg->catalog_cnt, p,
&(lng){BATcount(b)}, false);
+ break;
+ }
+ }
+ MT_rwlock_rdunlock(&cni.b->thashlock);
}
- }
- va_end(va);
-
- if (tt >= 0) {
- if ((b = COLnew(0, tt, 0, PERSISTENT)) == NULL)
- return GDK_FAIL;
- rc = log_bat_persists(lg, b, nid);
bat_destroy(b);
if (rc != GDK_SUCCEED)
- return rc;
+ break;
}
- return GDK_SUCCEED;
+ bat_iterator_end(&cni);
+ va_end(va);
+ return rc;
}
#endif
@@ -164,7 +149,6 @@ bl_postversion(void *Store, logger *lg)
{
sqlstore *store = Store;
gdk_return rc;
- bool tabins_first = true;
#ifdef CATALOG_JUL2021
if (store->catalog_version <= CATALOG_JUL2021) {
@@ -686,7 +670,7 @@ bl_postversion(void *Store, logger *lg)
bat_destroy(b1);
bat_destroy(colnr);
bat_destroy(colid);
- rc = tabins(lg, true, -1, 0,
+ rc = tabins(lg,
prid, &(msk) {false}, /* sys.privileges
*/
privids[0], &dbid, /*
sys.privileges.obj_id */
privids[1], &(int) {USER_MONETDB}, /*
sys.privileges.auth_id */
@@ -722,7 +706,7 @@ bl_postversion(void *Store, logger *lg)
BBPretain(check->batCacheid);
bat_destroy(check);
- if (tabins(lg, tabins_first, -1, 0,
+ if (tabins(lg,
2076, &(msk) {false}, /*
sys._columns */
/* 2165 is sys.keys.check */
2077, &(int) {2165}, /*
sys._columns.id */
@@ -738,10 +722,9 @@ bl_postversion(void *Store, logger *lg)
2086, str_nil,
/* sys._columns.storage */
0) != GDK_SUCCEED)
return GDK_FAIL;
- tabins_first = false;
- if (tabins(lg, tabins_first, -1, 0,
+ if (tabins(lg,
2076, &(msk) {false}, /*
sys._columns */
- /* 2165 is tmp.keys.check */
+ /* 2166 is tmp.keys.check */
2077, &(int) {2166}, /*
sys._columns.id */
2078, "check",
/* sys._columns.name */
2079, "varchar",
/* sys._columns.type */
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]