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