Changeset: 2d2fd4a7ddf4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2d2fd4a7ddf4
Modified Files:
gdk/gdk_bat.c
monetdb5/modules/kernel/bat5.c
sql/backends/monet5/sql.c
Branch: Jul2021
Log Message:
Don't use BATsetaccess just to make sure a bat is not a view.
diffs (63 lines):
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -93,6 +93,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
.batRole = role,
.batTransient = true,
+ .batRestricted = BAT_WRITE,
};
if (heapnames && (bn->theap = GDKmalloc(sizeof(Heap))) == NULL) {
GDKfree(bn);
diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -188,8 +188,13 @@ BKCappend_cand_force_wrap(bat *r, const
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "bat.append", SQLSTATE(HY002)
RUNTIME_OBJECT_MISSING);
- if ((b = BATsetaccess(b, BAT_WRITE)) == NULL)
- throw(MAL, "bat.append", OPERATION_FAILED);
+ if (isVIEW(b)) {
+ BAT *bn = COLcopy(b, b->ttype, true, TRANSIENT);
+ restrict_t mode = (restrict_t) b->batRestricted;
+ BBPunfix(b->batCacheid);
+ if (bn == NULL || (b = BATsetaccess(bn, mode)) == NULL)
+ throw(MAL, "bat.append", GDK_EXCEPTION);
+ }
if ((u = BATdescriptor(*uid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "bat.append", SQLSTATE(HY002)
RUNTIME_OBJECT_MISSING);
@@ -250,8 +255,13 @@ BKCappend_val_force_wrap(bat *r, const b
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "bat.append", SQLSTATE(HY002)
RUNTIME_OBJECT_MISSING);
- if ((b = BATsetaccess(b, BAT_WRITE)) == NULL)
- throw(MAL, "bat.append", OPERATION_FAILED);
+ if (isVIEW(b)) {
+ BAT *bn = COLcopy(b, b->ttype, true, TRANSIENT);
+ restrict_t mode = (restrict_t) b->batRestricted;
+ BBPunfix(b->batCacheid);
+ if (bn == NULL || (b = BATsetaccess(bn, mode)) == NULL)
+ throw(MAL, "bat.append", GDK_EXCEPTION);
+ }
derefStr(b, u);
if (BUNappend(b, u, force ? *force : false) != GDK_SUCCEED) {
BBPunfix(b->batCacheid);
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2058,7 +2058,12 @@ mvc_delete_wrap(Client cntxt, MalBlkPtr
static inline BAT *
setwritable(BAT *b)
{
- return BATsetaccess(b, BAT_WRITE);
+ if (isVIEW(b)) {
+ BAT *bn = COLcopy(b, b->ttype, true, TRANSIENT);
+ BBPunfix(b->batCacheid);
+ b = bn;
+ }
+ return b;
}
str
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list