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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to