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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list