Changeset: f9cd477a422e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f9cd477a422e
Modified Files:
        sql/include/sql_catalog.h
        sql/server/rel_schema.c
        sql/storage/store.c
        sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err
        sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.out
Branch: default
Log Message:

merged with Dec2016


diffs (76 lines):

diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -478,6 +478,7 @@ typedef enum table_types {
 #define isRemote(x)      (x->type==tt_remote)
 #define isReplicaTable(x) (x->type==tt_replica_table)
 #define isKindOfTable(x)  (isTable(x) || isMergeTable(x) || isRemote(x) || 
isReplicaTable(x))
+#define isPartition(x)    (isTable(x) && x->p)
 
 #define TABLE_WRITABLE 0
 #define TABLE_READONLY 1
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
@@ -661,7 +661,11 @@ table_element(mvc *sql, symbol *s, sql_s
 {
        int res = SQL_OK;
 
-       if (alter && (isView(t) || ((isMergeTable(t) || isReplicaTable(t)) && 
(s->token != SQL_TABLE && s->token != SQL_DROP_TABLE && cs_size(&t->tables)>0)) 
|| (isTable(t) && (s->token == SQL_TABLE || s->token == SQL_DROP_TABLE)) )){
+       if (alter && 
+               (isView(t) || 
+               ((isMergeTable(t) || isReplicaTable(t)) && (s->token != 
SQL_TABLE && s->token != SQL_DROP_TABLE && cs_size(&t->tables)>0)) || 
+               (isTable(t) && (s->token == SQL_TABLE || s->token == 
SQL_DROP_TABLE)) ||
+               (isPartition(t) && (s->token == SQL_DROP_COLUMN || s->token == 
SQL_COLUMN || s->token == SQL_CONSTRAINT)))){
                char *msg = "";
 
                switch (s->token) {
@@ -698,6 +702,7 @@ table_element(mvc *sql, symbol *s, sql_s
                }
                sql_error(sql, 02, "42000!ALTER TABLE: cannot %s %s '%s'\n",
                                msg, 
+                               isPartition(t)?"a PARTITION of a MERGE or 
REPLICA TABLE":
                                isMergeTable(t)?"MERGE TABLE":
                                isReplicaTable(t)?"REPLICA TABLE":"VIEW",
                                t->base.name);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1305,6 +1305,8 @@ dup_sql_table(sql_allocator *sa, sql_tab
                        */
        nt->tables.dset = NULL;
        nt->tables.nelm = NULL;
+       /* record if table is a partition */
+       nt->p = t->p;
        return nt;
 }
 
diff --git 
a/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err 
b/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err
--- a/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err
+++ b/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err
@@ -1,4 +1,4 @@
-stderr of test 'merge-table-edit.Bug-4444` in directory 
'sql/test/BugTracker-2016` itself:
+stderr of test 'merge-table-edit.Bug-6084` in directory 
'sql/test/BugTracker-2016` itself:
 
 
 # 17:26:57 >  
@@ -29,8 +29,8 @@ stderr of test 'merge-table-edit.Bug-444
 
 MAPI  = (monetdb) /var/tmp/mtest-71697/.s.monetdb.32414
 QUERY = ALTER TABLE test_table ADD COLUMN u int;
-ERROR = !ALTER: cannot alter a table used in a merge table
-MAPI  = (monetdb) /var/tmp/mtest-71697/.s.monetdb.32414
+ERROR = !ALTER TABLE: cannot add column to a PARTITION of a MERGE or REPLICA 
TABLE 'test_table'
+MAPI  = (monetdb) /var/tmp/mtest-26091/.s.monetdb.34975
 QUERY = UPDATE test_table SET u = 2;
 ERROR = !current transaction is aborted (please ROLLBACK)
 MAPI  = (monetdb) /var/tmp/mtest-71697/.s.monetdb.32414
diff --git 
a/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.out 
b/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.out
--- a/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.out
+++ b/sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.out
@@ -1,4 +1,4 @@
-stdout of test 'merge-table-edit.Bug-4444` in directory 
'sql/test/BugTracker-2016` itself:
+stdout of test 'merge-table-edit.Bug-6084` in directory 
'sql/test/BugTracker-2016` itself:
 
 
 # 18:08:01 >  
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to