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