Changeset: e01286a0b8f5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e01286a0b8f5
Modified Files:
sql/server/rel_propagate.c
sql/server/rel_schema.c
sql/server/rel_updates.c
sql/test/merge-partitions/Tests/mergepart15.stable.err
Branch: merge-partitions
Log Message:
As I don't know the transaction manager entirely :( I will simply check the
cached value of the upper merge table. If the bottom table could not be found,
then is no longer part of the merge table.
diffs (71 lines):
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -461,9 +461,14 @@ rel_propagate(mvc *sql, sql_rel *rel, in
} else {
assert(0);
}
- } else if(t->p && (isRangePartitionTable(t->p) ||
isListPartitionTable(t->p)) && !find_prop(l->p, PROP_USED)) {
- if(is_insert(rel->op)) { //insertion directly to
sub-table (must do validation)
- return rel_subtable_insert(sql, rel, t,
changes);
+ } else if(t->p) {
+ sql_part *pt = find_sql_part(t->p, t->base.name);
+ if(!pt) {
+ t->p = NULL;
+ } else if((isRangePartitionTable(t->p) ||
isListPartitionTable(t->p)) && !find_prop(l->p, PROP_USED)) {
+ if(is_insert(rel->op)) { //insertion directly
to sub-table (must do validation)
+ return rel_subtable_insert(sql, rel, t,
changes);
+ }
}
}
}
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -1060,7 +1060,8 @@ table_element(mvc *sql, symbol *s, sql_s
}
static int
-create_partition_column(mvc *sql, sql_table *t, int tt, symbol* partition_def)
{
+create_partition_column(mvc *sql, sql_table *t, int tt, symbol* partition_def)
+{
if((tt == tt_list_partition || tt == tt_range_partition) &&
partition_def) {
dlist* list = partition_def->data.lval;
str colname = list->h->next->data.sval;
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -904,10 +904,14 @@ update_table(mvc *sql, dlist *qname, dli
if(isRangePartitionTable(t) || isListPartitionTable(t)) {
partitioned_column = t->pcol->colnr;
- } else if(t->p && (isRangePartitionTable(t->p) ||
isListPartitionTable(t->p))) {
- partitioned_column = t->p->pcol->colnr;
+ } else if(t->p) {
+ sql_part *pt = find_sql_part(t->p, t->base.name);
+ if(!pt) {
+ t->p = NULL;
+ } else if(isRangePartitionTable(t->p) ||
isListPartitionTable(t->p)) {
+ partitioned_column = t->p->pcol->colnr;
+ }
}
-
res = bt;
#if 0
dlist *selection = dlist_create(sql->sa);
diff --git a/sql/test/merge-partitions/Tests/mergepart15.stable.err
b/sql/test/merge-partitions/Tests/mergepart15.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart15.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart15.stable.err
@@ -30,9 +30,9 @@ stderr of test 'mergepart15` in director
MAPI = (monetdb) /var/tmp/mtest-26053/.s.monetdb.37352
QUERY = ALTER TABLE testme ADD TABLE sublimits1 AS PARTITION WITH NULL; --error
-ERROR = !ALTER TABLE: there are non-null values in the column which is not
allowed for this partition
-CODE = 42000
-MAPI = (monetdb) /var/tmp/mtest-26053/.s.monetdb.37352
+ERROR = !ALTER TABLE: there are values in the column a, outside the partition
range
+CODE = M0M29
+MAPI = (monetdb) /var/tmp/mtest-18994/.s.monetdb.34581
QUERY = INSERT INTO testme VALUES (2, 'third'); --error
ERROR = !INSERT: the insert violates the partition range of values
CODE = M0M29
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list