Changeset: 1a053f9bf3f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1a053f9bf3f8
Modified Files:
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
Branch: manti
Log Message:
added a stmt_tdiff4() that takes a candidate list for both left and right hand
side
diffs (65 lines):
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
@@ -2530,6 +2530,50 @@ stmt_tdiff2(backend *be, stmt *op1, stmt
}
stmt *
+stmt_tdiff4(backend *be, stmt *op1, stmt *op2, stmt *lcand, stmt *rcand)
+{
+ InstrPtr q = NULL;
+ MalBlkPtr mb = be->mb;
+
+ if (op1 == NULL || op2 == NULL || op1->nr < 0 || op2->nr < 0 || lcand
== NULL || rcand == NULL)
+ goto bailout;
+ q = newStmt(mb, algebraRef, differenceRef);
+ if (q == NULL)
+ goto bailout;
+ q = pushArgument(mb, q, op1->nr); /* left */
+ q = pushArgument(mb, q, op2->nr); /* right */
+ q = pushArgument(mb, q, lcand->nr); /* left candicate */
+ q = pushArgument(mb, q, rcand->nr); /* right candicate */
+ q = pushBit(mb, q, FALSE); /* nil matches */
+ q = pushBit(mb, q, FALSE); /* do not clear nils */
+ q = pushNil(mb, q, TYPE_lng); /* estimate */
+
+ bool enabled = ma_get_eb(be->mvc->sa)->enabled;
+ ma_get_eb(be->mvc->sa)->enabled = false;
+ stmt *s = stmt_create(be->mvc->sa, st_tdiff);
+ ma_get_eb(be->mvc->sa)->enabled = enabled;
+ if (s == NULL) {
+ freeInstruction(be->mb, q);
+ goto bailout;
+ }
+
+ s->op1 = op1;
+ s->op2 = op2;
+ s->nrcols = op1->nrcols;
+ s->key = op1->key;
+ s->aggr = op1->aggr;
+ s->nr = getDestVar(q);
+ s->q = q;
+ pushInstruction(mb, q);
+ return s;
+
+ bailout:
+ if (ma_get_eb(be->mvc->sa)->enabled)
+ eb_error(ma_get_eb(be->mvc->sa), be->mvc->errstr[0] ?
be->mvc->errstr : mb->errors ? mb->errors : *GDKerrbuf ? GDKerrbuf : "out of
memory", 1000);
+ return NULL;
+}
+
+stmt *
stmt_tinter(backend *be, stmt *op1, stmt *op2, bool single)
{
InstrPtr q = NULL;
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
@@ -213,6 +213,7 @@ extern stmt *stmt_selectNotFalse(backend
extern stmt *stmt_tunion(backend *be, stmt *op1, stmt *op2);
extern stmt *stmt_tdiff(backend *be, stmt *op1, stmt *op2, stmt *lcand);
extern stmt *stmt_tdiff2(backend *be, stmt *op1, stmt *op2, stmt *lcand, bool
is_semantics, bool any);
+extern stmt *stmt_tdiff4(backend *be, stmt *op1, stmt *op2, stmt *lcand, stmt
*rcand);
extern stmt *stmt_tinter(backend *be, stmt *op1, stmt *op2, bool single);
extern stmt *stmt_join(backend *be, stmt *op1, stmt *op2, int anti, comp_type
cmptype, int need_left, int is_semantics, bool single);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]