Changeset: 95c1c23d68fe for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=95c1c23d68fe
Added Files:
        sql/test/merge-partitions/Tests/mergepart10.sql
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/test/merge-partitions/Tests/All
Branch: merge-partitions
Log Message:

Simplify query plan intermediates


diffs (155 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -3342,7 +3342,7 @@ rel2bin_insert(backend *be, sql_rel *rel
        }
 
        if(find_prop(rel->p, PROP_DISTRIBUTE) && be->cur_append == 0) /* create 
BAT to hold the sum of affected rows */
-               create_append_bat(be, TYPE_lng);
+               create_merge_partitions_accumulator(be);
 
        if (tr->op == op_basetable) {
                t = tr->l;
@@ -3424,7 +3424,7 @@ rel2bin_insert(backend *be, sql_rel *rel
        }
 
        if(be->cur_append) //building the total number of rows affected across 
all tables
-               ret->nr = append_bat_value(be, TYPE_lng, ret->nr);
+               ret->nr = add_to_merge_partitions_accumulator(be, ret->nr);
 
        if (ddl)
                return stmt_list(be, l);
@@ -4581,7 +4581,7 @@ sql_delete(backend *be, sql_table *t, st
        if (rows)
                s = stmt_aggr(be, rows, NULL, NULL, sql_bind_aggr(sql->sa, 
sql->session->schema, "count", NULL), 1, 0, 1);
        if(be->cur_append) //building the total number of rows affected across 
all tables
-               s->nr = append_bat_value(be, TYPE_lng, s->nr);
+               s->nr = add_to_merge_partitions_accumulator(be, s->nr);
        return s;
 }
 
@@ -4599,7 +4599,7 @@ rel2bin_delete(backend *be, sql_rel *rel
                assert(0/*ddl statement*/);
 
        if(find_prop(rel->p, PROP_DISTRIBUTE) && be->cur_append == 0) /* create 
BAT to hold the sum of affected rows */
-               create_append_bat(be, TYPE_lng);
+               create_merge_partitions_accumulator(be);
 
        if (rel->r) { /* first construct the deletes relation */
                rows = subrel_bin(be, rel->r, refs);
@@ -4756,7 +4756,7 @@ sql_truncate(backend *be, sql_table *t, 
                        ret = other;
 
                if(be->cur_append) //building the total number of rows affected 
across all tables
-                       other->nr = append_bat_value(be, TYPE_lng, other->nr);
+                       other->nr = add_to_merge_partitions_accumulator(be, 
other->nr);
 
                /* after */
                if (!sql_delete_triggers(be, next, v, 1, 3, 4)) {
@@ -4797,7 +4797,7 @@ rel2bin_truncate(backend *be, sql_rel *r
                assert(0/*ddl statement*/);
 
        if(find_prop(rel->p, PROP_DISTRIBUTE) && be->cur_append == 0) /* create 
BAT to hold the sum of affected rows */
-               create_append_bat(be, TYPE_lng);
+               create_merge_partitions_accumulator(be);
 
        n = rel->exps->h;
        restart_sequences = E_ATOM_INT(n->data);
@@ -5193,7 +5193,6 @@ output_rel_bin(backend *be, sql_rel *rel
                s = stmt_output(be, s);
        if (sqltype == Q_UPDATE && s && (s->type != st_list || be->cur_append)) 
{
                if(be->cur_append) { /* finish the output bat */
-                       finish_append_bat(be, TYPE_lng);
                        s->nr = be->cur_append;
                        be->cur_append = 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
@@ -118,40 +118,27 @@ pushSchema(MalBlkPtr mb, InstrPtr q, sql
 }
 
 void
-create_append_bat(backend *be, int tt)
+create_merge_partitions_accumulator(backend *be)
 {
-       MalBlkPtr mb = be->mb;
-       InstrPtr q = newStmt(mb, batRef, newRef);
-       getArg(q, 0) = be->cur_append = newTmpVariable(mb, newBatType(tt));
-       q = pushLng(mb, q, tt);
+       sql_subtype tpe;
+
+       sql_find_subtype(&tpe, "bigint", 0, 0);
+       be->cur_append = constantAtom(be, be->mb, atom_int(be->mvc->sa, &tpe, 
0));
 }
 
 int
-append_bat_value(backend *be, int tt, int nr)
+add_to_merge_partitions_accumulator(backend *be, int nr)
 {
        MalBlkPtr mb = be->mb;
        int help = be->cur_append;
-       InstrPtr q = newStmt(mb, batRef, appendRef);
-
-       getArg(q, 0) = be->cur_append = newTmpVariable(mb, newBatType(tt));
+       InstrPtr q = newStmt(mb, calcRef, "+");
+
+       getArg(q, 0) = be->cur_append = newTmpVariable(mb, TYPE_lng);
        q = pushArgument(mb, q, help);
        q = pushArgument(mb, q, nr);
-       q = pushBit(mb, q, TRUE);
        return getDestVar(q);
 }
 
-void
-finish_append_bat(backend *be, int tt)
-{
-       MalBlkPtr mb = be->mb;
-       int help = be->cur_append;
-       InstrPtr q = newStmt(mb, aggrRef, sumRef);
-
-       getArg(q, 0) = be->cur_append = newTmpVariable(mb, TYPE_int);
-       q = pushArgument(mb, q, help);
-       setVarType(mb, getArg(q,0), tt);
-}
-
 int
 stmt_key(stmt *s)
 {
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
@@ -124,9 +124,8 @@ typedef struct stmt {
        InstrPtr q;
 } stmt;
 
-extern void create_append_bat(backend *be, int tt);
-extern int append_bat_value(backend *be, int tt, int nr);
-extern void finish_append_bat(backend *be, int tt);
+extern void create_merge_partitions_accumulator(backend *be);
+extern int add_to_merge_partitions_accumulator(backend *be, int nr);
 
 extern int stmt_key(stmt *s);
 
diff --git a/sql/test/merge-partitions/Tests/All 
b/sql/test/merge-partitions/Tests/All
--- a/sql/test/merge-partitions/Tests/All
+++ b/sql/test/merge-partitions/Tests/All
@@ -8,3 +8,4 @@ mergepart06
 mergepart07
 mergepart08
 mergepart09
+mergepart10
diff --git a/sql/test/merge-partitions/Tests/mergepart10.sql 
b/sql/test/merge-partitions/Tests/mergepart10.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/merge-partitions/Tests/mergepart10.sql
@@ -0,0 +1,9 @@
+CREATE MERGE TABLE ihavenopartitions (a int, b varchar(32)) PARTITION BY 
VALUES (a);
+
+INSERT INTO ihavenopartitions VALUES (1, 'fail'); --error
+DELETE FROM ihavenopartitions;
+DELETE FROM ihavenopartitions WHERE a < 1;
+TRUNCATE ihavenopartitions;
+UPDATE ihavenopartitions SET a = 3;
+
+DROP TABLE ihavenopartitions;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to