Changeset: 3698ac290bd0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3698ac290bd0 Modified Files: sql/backends/monet5/sql.c Branch: Sep2022 Log Message:
Don't keep bat iterator across calls to bind_col.
diffs (230 lines):
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
@@ -4012,86 +4012,86 @@ sql_storage(Client cntxt, MalBlkPtr mb,
goto bailout;
}
- bat_iterator_end(&bsi);
bsi = bat_iterator(bs);
/*printf("schema
%s.%s.%s" , b->name, bt->name, bc->name); */
if (BUNappend(sch,
b->name, false) != GDK_SUCCEED ||
BUNappend(tab,
bt->name, false) != GDK_SUCCEED ||
BUNappend(col,
bc->name, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
if (c->t->access ==
TABLE_WRITABLE) {
if
(BUNappend(mode, "writable", false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
} else if (c->t->access
== TABLE_APPENDONLY) {
if
(BUNappend(mode, "appendonly", false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
} else if (c->t->access
== TABLE_READONLY) {
if
(BUNappend(mode, "readonly", false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
} else {
if
(BUNappend(mode, str_nil, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
}
if (BUNappend(type,
c->type.type->base.name, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
/*printf(" cnt "BUNFMT,
bsi.count); */
sz = bsi.count;
if (BUNappend(cnt, &sz,
false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
/*printf(" loc %s",
BBP_physical(bs->batCacheid)); */
if (BUNappend(loc,
BBP_physical(bs->batCacheid), false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
/*printf(" width %d",
bsi.width); */
w = bsi.width;
if (BUNappend(atom, &w,
false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
sz = bsi.count <<
bsi.shift;
if (BUNappend(size,
&sz, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
sz =
heapinfo(bs->tvheap, bs->batCacheid);
if (BUNappend(heap,
&sz, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
MT_rwlock_rdlock(&bs->thashlock);
sz =
hashinfo(bs->thash, bs->batCacheid);
MT_rwlock_rdunlock(&bs->thashlock);
if (BUNappend(indices,
&sz, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
bitval = 0; /*
HASHispersistent(bs); */
if (BUNappend(phash,
&bitval, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
sz =
IMPSimprintsize(bs);
if (BUNappend(imprints,
&sz, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
/*printf(" indices
"BUNFMT, bs->thash?bs->thash->heap.size:0); */
/*printf("\n"); */
bitval = bsi.sorted;
if (!bitval &&
bsi.nosorted == 0)
bitval =
bit_nil;
if (BUNappend(sort,
&bitval, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
bitval = bsi.revsorted;
if (!bitval &&
bsi.norevsorted == 0)
bitval =
bit_nil;
if (BUNappend(revsort,
&bitval, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
bitval = BATtkey(bs);
if (!bitval &&
bsi.nokey[0] == 0 && bsi.nokey[1] == 0)
bitval =
bit_nil;
if (BUNappend(key,
&bitval, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
sz = bs->torderidx &&
bs->torderidx != (Heap *) 1 ? bs->torderidx->free : 0;
if (BUNappend(oidx,
&sz, false) != GDK_SUCCEED)
- goto bailout;
+ goto bailout1;
+ bat_iterator_end(&bsi);
}
}
@@ -4109,82 +4109,82 @@ sql_storage(Client cntxt, MalBlkPtr mb,
}
if( cname &&
strcmp(bc->name, cname) )
continue;
-
bat_iterator_end(&bsi);
bsi =
bat_iterator(bs);
/*printf("schema %s.%s.%s" , b->name, bt->name, bc->name); */
if
(BUNappend(sch, b->name, false) != GDK_SUCCEED ||
BUNappend(tab, bt->name, false) != GDK_SUCCEED ||
BUNappend(col, bc->name, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
if
(c->t->access == TABLE_WRITABLE) {
if
(BUNappend(mode, "writable", false) != GDK_SUCCEED)
-
goto bailout;
+
goto bailout1;
} else if
(c->t->access == TABLE_APPENDONLY) {
if
(BUNappend(mode, "appendonly", false) != GDK_SUCCEED)
-
goto bailout;
+
goto bailout1;
} else if
(c->t->access == TABLE_READONLY) {
if
(BUNappend(mode, "readonly", false) != GDK_SUCCEED)
-
goto bailout;
+
goto bailout1;
} else {
if
(BUNappend(mode, str_nil, false) != GDK_SUCCEED)
-
goto bailout;
+
goto bailout1;
}
if
(BUNappend(type, "oid", false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
/*printf(" cnt
"BUNFMT, bsi.count); */
sz = bsi.count;
if
(BUNappend(cnt, &sz, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
/*printf(" loc
%s", BBP_physical(bs->batCacheid)); */
if
(BUNappend(loc, BBP_physical(bs->batCacheid), false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
/*printf("
width %d", bsi.width); */
w = bsi.width;
if
(BUNappend(atom, &w, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
/*printf(" size
"BUNFMT, tailsize(bs,bsi.count) + (bs->tvheap? bs->tvheap->size:0)); */
sz =
tailsize(bs, bsi.count);
if
(BUNappend(size, &sz, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
sz = bs->tvheap
? bs->tvheap->size : 0;
if
(BUNappend(heap, &sz, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
MT_rwlock_rdlock(&bs->thashlock);
sz = bs->thash
&& bs->thash != (Hash *) 1 ? bs->thash->heaplink.size +
bs->thash->heapbckt.size : 0; /* HASHsize() */
MT_rwlock_rdunlock(&bs->thashlock);
if
(BUNappend(indices, &sz, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
bitval = 0; /*
HASHispersistent(bs); */
if
(BUNappend(phash, &bitval, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
sz =
IMPSimprintsize(bs);
if
(BUNappend(imprints, &sz, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
/*printf("
indices "BUNFMT,
bs->thash?bs->thash->heaplink.size+bs->thash->heapbckt.size:0); */
/*printf("\n");
*/
bitval =
bsi.sorted;
if (!bitval &&
bsi.nosorted == 0)
bitval
= bit_nil;
if
(BUNappend(sort, &bitval, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
bitval =
bsi.revsorted;
if (!bitval &&
bsi.norevsorted == 0)
bitval
= bit_nil;
if
(BUNappend(revsort, &bitval, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
bitval =
BATtkey(bs);
if (!bitval &&
bsi.nokey[0] == 0 && bsi.nokey[1] == 0)
bitval
= bit_nil;
if
(BUNappend(key, &bitval, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
sz =
bs->torderidx && bs->torderidx != (Heap *) 1 ? bs->torderidx->free : 0;
if
(BUNappend(oidx, &sz, false) != GDK_SUCCEED)
- goto
bailout;
+ goto
bailout1;
+
bat_iterator_end(&bsi);
}
}
}
@@ -4193,7 +4193,6 @@ sql_storage(Client cntxt, MalBlkPtr mb,
}
}
- bat_iterator_end(&bsi);
*rsch = sch->batCacheid;
BBPkeepref(sch);
*rtab = tab->batCacheid;
@@ -4230,8 +4229,9 @@ sql_storage(Client cntxt, MalBlkPtr mb,
BBPkeepref(oidx);
return MAL_SUCCEED;
+ bailout1:
+ bat_iterator_end(&bsi);
bailout:
- bat_iterator_end(&bsi);
if (sch)
BBPunfix(sch->batCacheid);
if (tab)
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]
