Changeset: 4de67c46e4c5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4de67c46e4c5
Modified Files:
clients/Tests/exports.stable.out
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
sql/backends/monet5/vaults/monetdb/monetdb.c
sql/backends/monet5/vaults/odbc/odbc_loader.c
sql/include/sql_relation.h
sql/server/rel_distribute.c
sql/server/rel_dump.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_unnest.c
Branch: nested
Log Message:
merged with default
diffs (truncated from 2228 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1647,6 +1647,7 @@ sql_part *partition_find_part(sql_trans
int pl_register(const char *name, pl_add_types_fptr add_types, pl_load_fptr
pl_load);
void pl_unregister(const char *name);
prop *prop_create(allocator *sa, rel_prop kind, prop *pre);
+InstrPtr pushPtr(MalBlkPtr mb, InstrPtr q, ptr val);
void qc_delete(qc *cache, cq *q);
cq *qc_find(qc *cache, int id);
cq *qc_insert(qc *cache, allocator *sa, sql_rel *r, symbol *s, list *params,
mapi_query_t type, char *codedstr, int no_mitosis);
@@ -1686,7 +1687,9 @@ void sql_register(const char *name, cons
int sql_trans_add_dependency_change(sql_trans *tr, sqlid id,
sql_dependency_change_type tp);
int sql_trans_create_table(sql_table **tres, sql_trans *tr, sql_schema *s,
const char *name, const char *sql, int tt, bit system, int persistence, int
commit_action, int sz, bte properties);
stmt *stmt_alias(backend *be, stmt *op1, int label, sql_alias *tname, const
char *name);
+stmt *stmt_blackbox_result(backend *be, InstrPtr q, int retnr, sql_subtype *t);
stmt *stmt_func(backend *be, stmt *ops, const char *name, sql_rel *imp, int
f_union);
+stmt *stmt_list(backend *be, list *l);
stmt *stmt_none(backend *be);
# stream
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1382,7 +1382,8 @@ SQLrenderer(MapiHdl hdl)
strcmp(s, "clob") != 0 &&
strcmp(s, "char") != 0 &&
strcmp(s, "str") != 0 &&
- strcmp(s, "json") != 0)) {
+ strcmp(s, "json") != 0 &&
+ strcmp(s, "uuid") != 0)) {
/* no table width known, use maximum,
* rely on squeezing later on to fix
* it to whatever is available; note
diff --git a/gdk/CMakeLists.txt b/gdk/CMakeLists.txt
--- a/gdk/CMakeLists.txt
+++ b/gdk/CMakeLists.txt
@@ -16,7 +16,6 @@ set(gdk_public_headers
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_posix.h>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_atoms.h>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_tracer.h>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_delta.h>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_hash.h>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_bbp.h>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gdk_utils.h>
@@ -28,7 +27,6 @@ set(gdk_public_headers
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_posix.h>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_atoms.h>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_tracer.h>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_delta.h>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_hash.h>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_bbp.h>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/gdk_utils.h>
@@ -71,7 +69,7 @@ target_sources(bat
gdk_rsort.c
gdk_storage.c
gdk_bat.c
- gdk_delta.c gdk_delta.h
+ gdk_delta.c
gdk_cross.c
gdk_system.c
gdk_value.c
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1890,7 +1890,8 @@ gdk_export gdk_return BATorderidx(BAT *b
gdk_export gdk_return GDKmergeidx(BAT *b, BAT**a, int n_ar);
gdk_export bool BATcheckorderidx(BAT *b);
-#include "gdk_delta.h"
+#define DELTAdirty(b) ((b)->batInserted < BATcount(b))
+
#include "gdk_hash.h"
#include "gdk_bbp.h"
#include "gdk_utils.h"
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -276,7 +276,6 @@ COLnew2(oid hseq, int tt, BUN cap, role_
HEAPfree(bn->theap, true);
goto bailout;
}
- DELTAinit(bn);
if (BBPcacheit(bn, true) != GDK_SUCCEED) {
/* cannot happen, function always returns success */
goto bailout;
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2995,19 +2995,6 @@ decref(bat i, bool logical, bool lock, c
MT_lock_set(&b->theaplock);
locked = true;
}
-#if 0
- if (b->batCount > b->batInserted && !isVIEW(b)) {
- /* if batCount is larger than batInserted and
- * the dirty bits are off, it may be that a
- * (sub)commit happened in parallel to an
- * update; we must undo the turning off of the
- * dirty bits */
- if (b->theap && b->theap->parentid == i)
- b->theap->dirty = true;
- if (b->tvheap && b->tvheap->parentid == i)
- b->tvheap->dirty = true;
- }
-#endif
if (b->theap)
farmid = b->theap->farmid;
}
@@ -3077,8 +3064,10 @@ decref(bat i, bool logical, bool lock, c
BATdelete(BBP_desc(i));
BBPclear(i);
} else {
+ MT_lock_set(&GDKswapLock(i));
BBP_status_off(i, BBPUNLOADING);
MT_cond_broadcast(&GDKswapCond(i));
+ MT_lock_unset(&GDKswapLock(i));
}
}
return refs;
@@ -3254,9 +3243,12 @@ BBPsave(BAT *b)
if (ret == GDK_SUCCEED) {
ret = BATsave(b);
}
- /* clearing bits can be done without the lock */
+ if (lock)
+ MT_lock_set(&GDKswapLock(bid));
BBP_status_off(bid, BBPSAVING);
MT_cond_broadcast(&GDKswapCond(bid));
+ if (lock)
+ MT_lock_unset(&GDKswapLock(bid));
}
return ret;
}
@@ -3313,8 +3305,10 @@ BBPfree(BAT *b)
BBPuncacheit(bid, false);
}
TRC_DEBUG(BAT_, "turn off unloading %d\n", bid);
+ MT_lock_set(&GDKswapLock(bid));
BBP_status_off(bid, BBPUNLOADING);
MT_cond_broadcast(&GDKswapCond(bid));
+ MT_lock_unset(&GDKswapLock(bid));
BBP_unload_dec();
return ret;
}
@@ -3927,8 +3921,12 @@ BBPsync(int cnt, bat *restrict subcommit
if (lock)
MT_lock_unset(&GDKswapLock(i));
ret = BATsave_iter(b, &bi, size);
+ if (lock)
+ MT_lock_set(&GDKswapLock(i));
BBP_status_off(i, BBPSAVING);
MT_cond_broadcast(&GDKswapCond(i));
+ if (lock)
+ MT_lock_unset(&GDKswapLock(i));
}
bip = &bi;
} else {
@@ -4009,8 +4007,12 @@ BBPsync(int cnt, bat *restrict subcommit
* GDK_SUCCEED) */
for (int idx = 1; idx < cnt; idx++) {
bat i = subcommit ? subcommit[idx] : idx;
+ if (lock)
+ MT_lock_set(&GDKswapLock(i));
BBP_status_off(i, BBPSYNCING);
MT_cond_broadcast(&GDKswapCond(i));
+ if (lock)
+ MT_lock_unset(&GDKswapLock(i));
}
return ret;
diff --git a/gdk/gdk_delta.h b/gdk/gdk_delta.h
deleted file mode 100644
--- a/gdk/gdk_delta.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * SPDX-License-Identifier: MPL-2.0
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * Copyright 2024, 2025 MonetDB Foundation;
- * Copyright August 2008 - 2023 MonetDB B.V.;
- * Copyright 1997 - July 2008 CWI.
- */
-
-#ifndef _GDK_DELTA_H_
-#define _GDK_DELTA_H_
-
-/*
- * We make sure here that the BUNs section of a BAT at least starts 4
- * bytes from the BUN start. This ensures that the first data item of
- * e.g. a BAT[void,bit] is (at least) integer aligned. This optimizes
- * processing on such BATs (DDBENCH).
- */
-static inline void
-DELTAinit(BAT *b)
-{
- BATsetcount(b, 0);
- b->theap->free = 0;
- b->batInserted = 0;
- b->tshift = ATOMelmshift(b->twidth);
- TRC_DEBUG(DELTA,
- "%s free %zu ins " BUNFMT " base %p\n",
- BBP_logical(b->batCacheid),
- b->theap->free,
- b->batInserted,
- b->theap->base);
-}
-
-/*
- * Upon saving a BAT, we should convert the delta marker BUN pointers
- * into indexes and convert them back into pointers upon reload.
- *
- * The BATdirty(b) tells you whether a BAT's main memory
- * representation differs from its saved image on stable storage. But
- * *not* whether it has changed since last transaction commit (it can
- * be storage-clean, but transaction-dirty). For this we have
- * DELTAdirty(b).
- */
-#define DELTAdirty(b) ((b)->batInserted < BATcount(b))
-
-#endif /* _GDK_DELTA_H_ */
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2976,9 +2976,8 @@ hashjoin(BAT **r1p, BAT **r2p, BAT **r3p
b = BATdescriptor(VIEWtparent(r));
if (b == NULL)
goto bailout;
- TRC_DEBUG(ALGO, "%s(%s): using "
+ TRC_DEBUG(ALGO, "%s: using "
"parent(" ALGOBATFMT ") for hash%s\n",
- __func__,
BATgetId(r), ALGOBATPAR(b),
swapped ? " (swapped)" : "");
roff = r->tbaseoff - b->tbaseoff;
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -776,6 +776,10 @@ la_bat_updates(logger *lg, logaction *la
b->tnokey[0] = 0;
b->tnokey[1] = 0;
}
+ if (b->tminpos == q)
+ b->tminpos = BUN_NONE;
+ if (b->tmaxpos == q)
+ b->tmaxpos = BUN_NONE;
b->tkey = false;
b->tsorted = false;
b->tkey = false;
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1016,6 +1016,7 @@ GDKinit(opt *set, int setlen, bool embed
char name[MT_NAME_LEN];
snprintf(name, sizeof(name), "GDKswapLock%d", i);
MT_lock_init(&GDKbatLock[i].swap, name);
+ snprintf(name, sizeof(name), "GDKswapCond%d", i);
MT_cond_init(&GDKbatLock[i].cond, name);
}
if (mnstr_init() < 0) {
diff --git a/sql/backends/monet5/sql_statement.c
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -86,7 +86,7 @@ dump_2(MalBlkPtr mb, const char *mod, co
return q;
}
-static InstrPtr
+InstrPtr
pushPtr(MalBlkPtr mb, InstrPtr q, ptr val)
{
int _t;
@@ -4636,6 +4636,7 @@ stmt_func(backend *be, stmt *ops, const
if ((p = find_prop(rel->p, PROP_REMOTE)))
rel->p = prop_remove(rel->p, p);
/* sql_processrelation may split projections, so make sure the topmost
relation only contains references */
+ int opt = rel->opt;
rel = rel_project(be->mvc->sa, rel, rel_projections(be->mvc, rel, NULL,
1, 1));
if (!(rel = sql_processrelation(be->mvc, rel, 0, 0, 1, 1)))
goto bailout;
@@ -4643,6 +4644,7 @@ stmt_func(backend *be, stmt *ops, const
p->p = rel->p;
rel->p = p;
}
+ rel->opt = opt;
if (monet5_create_relational_function(be->mvc, sql_private_module_name,
name, rel, ops, NULL, 1) < 0)
goto bailout;
diff --git a/sql/backends/monet5/sql_statement.h
b/sql/backends/monet5/sql_statement.h
--- a/sql/backends/monet5/sql_statement.h
+++ b/sql/backends/monet5/sql_statement.h
@@ -228,7 +228,7 @@ extern stmt *stmt_left_project(backend *
extern stmt *stmt_dict(backend *be, stmt *op1, stmt *op2);
extern stmt *stmt_for(backend *be, stmt *op1, stmt *minval);
-extern stmt *stmt_list(backend *be, list *l);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]