Changeset: 3d6efd7ac670 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3d6efd7ac670
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/mapiclient/mclient.c
configure.ag
gdk/gdk.h
gdk/gdk_bat.c
gdk/gdk_join.c
gdk/gdk_logger.c
gdk/gdk_private.h
gdk/gdk_storage.c
monetdb5/modules/atoms/batxml.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/mal/mal_io.c
monetdb5/modules/mal/mal_io.h
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/tablet.c
monetdb5/optimizer/opt_costModel.c
monetdb5/optimizer/opt_mergetable.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_pushselect.c
sql/backends/monet5/Makefile.ag
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
sql/backends/monet5/vaults/bam/bam_export.c
sql/backends/monet5/vaults/fits/fits.c
sql/backends/monet5/vaults/fits/fits.h
sql/backends/monet5/vaults/miniseed/71_registrar.mal
sql/backends/monet5/vaults/miniseed/71_registrar.sql
sql/backends/monet5/vaults/miniseed/72_miniseed.mal
sql/backends/monet5/vaults/miniseed/72_miniseed.sql
sql/backends/monet5/vaults/miniseed/Makefile.ag
sql/backends/monet5/vaults/miniseed/Tests/All
sql/backends/monet5/vaults/miniseed/Tests/file_list_example.txt
sql/backends/monet5/vaults/miniseed/Tests/mount.mal
sql/backends/monet5/vaults/miniseed/Tests/mount.stable.err
sql/backends/monet5/vaults/miniseed/Tests/mount.stable.out
sql/backends/monet5/vaults/miniseed/Tests/registrar.sql.in
sql/backends/monet5/vaults/miniseed/Tests/registrar.stable.err
sql/backends/monet5/vaults/miniseed/Tests/registrar.stable.out
sql/backends/monet5/vaults/miniseed/miniseed.c
sql/backends/monet5/vaults/miniseed/miniseed.h
sql/backends/monet5/vaults/miniseed/miniseed.mal
sql/backends/monet5/vaults/miniseed/mseed_clear.sql
sql/backends/monet5/vaults/miniseed/mseed_schema.sql
sql/backends/monet5/vaults/miniseed/registrar.c
sql/backends/monet5/vaults/miniseed/registrar.h
sql/backends/monet5/vaults/miniseed/registrar.mal
sql/server/rel_optimizer.c
sql/server/sql_mvc.c
sql/storage/bat/bat_table.c
sql/storage/bat/bat_utils.c
sql/storage/bat/bat_utils.h
sql/test/Tests/systemfunctions.stable.out
sql/test/leaks/Tests/check0.stable.out
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/drop3.stable.out
sql/test/leaks/Tests/select1.stable.out
sql/test/leaks/Tests/select2.stable.out
sql/test/leaks/Tests/temp1.stable.out
sql/test/leaks/Tests/temp2.stable.out
sql/test/leaks/Tests/temp3.stable.out
Branch: DataVaults
Log Message:
Merge with the DVframework branch
Resolve a few merge conflicts related to moving files around (mostly)
diffs (234 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -40640,12 +40640,6 @@ pattern sql.mvc():int
address SQLmvc;
comment Get the multiversion catalog context. Needed for correct statement
dependencies(ie sql.update, should be after sql.bind in concurrent execution)
-command sql.not_uniques(b:bat[:oid,:wrd]):bat[:oid,:oid]
-address not_unique_oids;
-command sql.not_uniques(b:bat[:oid,:oid]):bat[:oid,:oid]
-address not_unique_oids;
-comment return not unique oids
-
command sql.not_unique(b:bat[:oid,:oid]):bit
address not_unique;
comment check if the tail sorted bat b doesn't have unique tail values
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -51575,12 +51575,6 @@ pattern sql.mvc():int
address SQLmvc;
comment Get the multiversion catalog context. Needed for correct statement
dependencies(ie sql.update, should be after sql.bind in concurrent execution)
-command sql.not_uniques(b:bat[:oid,:wrd]):bat[:oid,:oid]
-address not_unique_oids;
-command sql.not_uniques(b:bat[:oid,:oid]):bat[:oid,:oid]
-address not_unique_oids;
-comment return not unique oids
-
command sql.not_unique(b:bat[:oid,:oid]):bit
address not_unique;
comment check if the tail sorted bat b doesn't have unique tail values
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
@@ -1789,7 +1789,7 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb
if ((msg = checkSQLContext(cntxt)) != NULL)
return msg;
b = mvc_bind(m, *sname, *tname, *cname, *access);
- if (b && b->ttype != coltype)
+ if (b && coltype != TYPE_any && b->T->type != coltype)
throw(SQL,"sql.bind","tail type mismatch");
if (b) {
if (pci->argc == (8 + upd) && getArgType(mb, pci, 6 + upd) ==
TYPE_int) {
@@ -1887,7 +1887,7 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl
if ((msg = checkSQLContext(cntxt)) != NULL)
return msg;
b = mvc_bind_idxbat(m, *sname, *tname, *iname, *access);
- if (b && b->ttype != coltype)
+ if (b && coltype != TYPE_any && b->T->type != coltype)
throw(SQL,"sql.bind","tail type mismatch");
if (b) {
if (pci->argc == (8 + upd) && getArgType(mb, pci, 6 + upd) ==
TYPE_int) {
@@ -3594,109 +3594,6 @@ not_unique(bit *ret, const bat *bid)
return MAL_SUCCEED;
}
-/* later we could optimize this to start from current BUN
- And only search the from the first if second is not found.
- */
-static inline int
-HASHfndTwice(BAT *b, ptr v)
-{
- BATiter bi = bat_iterator(b);
- BUN i = BUN_NONE;
- int first = 1;
-
- HASHloop(bi, b->T->hash, i, v) {
- if (!first)
- return 1;
- first = 0;
- }
- return 0;
-}
-
-str
-not_unique_oids(bat *ret, const bat *bid)
-{
- BAT *b, *bn = NULL;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "not_uniques", "Cannot access descriptor");
- }
- if (b->ttype != TYPE_oid && b->ttype != TYPE_wrd) {
- throw(SQL, "not_uniques", "Wrong types");
- }
-
- assert(b->htype == TYPE_oid);
- if (BATtkey(b) || BATtdense(b) || BATcount(b) <= 1) {
- bn = BATnew(TYPE_void, TYPE_void, 0, TRANSIENT);
- if (bn == NULL) {
- BBPunfix(b->batCacheid);
- throw(SQL, "sql.not_uniques", MAL_MALLOC_FAIL);
- }
- BATseqbase(bn, 0);
- BATseqbase(BATmirror(bn), 0);
- } else if (b->tsorted) { /* ugh handle both wrd and oid types */
- oid c = *(oid *) Tloc(b, BUNfirst(b)), *rf, *rh, *rt;
- oid *h = (oid *) Hloc(b, 0), *vp, *ve;
- int first = 1;
-
- bn = BATnew(TYPE_oid, TYPE_oid, BATcount(b), TRANSIENT);
- if (bn == NULL) {
- BBPunfix(b->batCacheid);
- throw(SQL, "sql.not_uniques", MAL_MALLOC_FAIL);
- }
- vp = (oid *) Tloc(b, BUNfirst(b));
- ve = vp + BATcount(b);
- rf = rh = (oid *) Hloc(bn, BUNfirst(bn));
- rt = (oid *) Tloc(bn, BUNfirst(bn));
- *rh++ = *h++;
- *rt++ = *vp;
- for (vp++; vp < ve; vp++, h++) {
- oid v = *vp;
- if (v == c) {
- first = 0;
- *rh++ = *h;
- *rt++ = v;
- } else if (!first) {
- first = 1;
- *rh++ = *h;
- *rt++ = v;
- } else {
- *rh = *h;
- *rt = v;
- }
- c = v;
- }
- if (first)
- rh--;
- BATsetcount(bn, (BUN) (rh - rf));
- } else {
- oid *rf, *rh, *rt;
- oid *h = (oid *) Hloc(b, 0), *vp, *ve;
-
- if (BAThash(b, 0) != GDK_SUCCEED)
- throw(SQL, "not_uniques", "hash creation failed");
- bn = BATnew(TYPE_oid, TYPE_oid, BATcount(b), TRANSIENT);
- if (bn == NULL) {
- BBPunfix(b->batCacheid);
- throw(SQL, "sql.unique_oids", MAL_MALLOC_FAIL);
- }
- vp = (oid *) Tloc(b, BUNfirst(b));
- ve = vp + BATcount(b);
- rf = rh = (oid *) Hloc(bn, BUNfirst(bn));
- rt = (oid *) Tloc(bn, BUNfirst(bn));
- for (; vp < ve; vp++, h++) {
- /* try to find value twice */
- if (HASHfndTwice(b, vp)) {
- *rh++ = *h;
- *rt++ = *vp;
- }
- }
- BATsetcount(bn, (BUN) (rh - rf));
- }
- BBPunfix(b->batCacheid);
- BBPkeepref(*ret = bn->batCacheid);
- return MAL_SUCCEED;
-}
-
/* row case */
str
SQLidentity(oid *ret, const void *i)
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -125,7 +125,6 @@ sql5_export str mvc_getVersion(lng *r, c
sql5_export str mvc_restart_seq(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str zero_or_one(ptr ret, const bat *bid);
sql5_export str not_unique(bit *ret, const bat *bid);
-sql5_export str not_unique_oids(bat *ret, const bat *bid);
sql5_export str SQLshrink(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str SQLreuse(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str SQLvacuum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -395,13 +395,6 @@ command not_unique( b:bat[:oid,:oid]) :b
address not_unique
comment "check if the tail sorted bat b doesn't have unique tail values" ;
-command not_uniques( b:bat[:oid,:oid]) :bat[:oid,:oid]
-address not_unique_oids
-comment "return not unique oids" ;
-
-command not_uniques( b:bat[:oid,:wrd]) :bat[:oid,:oid]
-address not_unique_oids ;
-
command optimizers()(:bat[:oid,:str],:bat[:oid,:str],:bat[:oid,:str])
address getPipeCatalog;
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -617,6 +617,19 @@ int is_table_in_list_table_pkeys(list *l
return FALSE;
}
+static int
+exps_count(list *exps)
+{
+ node *n;
+ int cnt = 0;
+
+ if (!exps)
+ return 0;
+ for (n = exps->h; n; n=n->next)
+ exp_count(&cnt, n->data);
+ return cnt;
+}
+
int is_column_in_list_columns(list *l, sql_column* c)
{
node *n = NULL;
@@ -2177,19 +2190,6 @@ has_actual_data_table(sql_rel *rel)
return FALSE;
}
-static int
-exps_count(list *exps)
-{
- node *n;
- int cnt = 0;
-
- if (!exps)
- return 0;
- for (n = exps->h; n; n=n->next)
- exp_count(&cnt, n->data);
- return cnt;
-}
-
static list *
order_join_expressions(mvc *sql, list *dje, list *rels)
{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list