Changeset: 92770d95add3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=92770d95add3
Added Files:
sql/test/merge-partitions/Tests/mergepart30.sql
sql/test/merge-partitions/Tests/mergepart30.stable.err
sql/test/merge-partitions/Tests/mergepart30.stable.out
Modified Files:
sql/server/rel_schema.c
sql/test/merge-partitions/Tests/All
Branch: Nov2019
Log Message:
Adding a table under a range/list merge table requires a partitioning clause
diffs (99 lines):
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
@@ -1504,12 +1504,22 @@ sql_alter_table(sql_query *query, dlist
if (isView(pt))
return sql_error(sql, 02,
SQLSTATE(42000) "ALTER TABLE: can't add a view into a %s",
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+ if (isDeclaredTable(pt))
+ return sql_error(sql, 02,
SQLSTATE(42000) "ALTER TABLE: can't add a declared table into a %s",
+
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
if (strcmp(sname, nsname) != 0)
return sql_error(sql, 02,
SQLSTATE(42000) "ALTER TABLE: all children tables of '%s.%s' must be "
"part
of schema '%s'", sname, tname, sname);
- if (!extra)
+ if (!extra) {
+ if (isRangePartitionTable(t)) {
+ return sql_error(sql,
02,SQLSTATE(42000) "ALTER TABLE: a range partition is required while adding
under a %s",
+
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+ } else if (isListPartitionTable(t)) {
+ return sql_error(sql,
02,SQLSTATE(42000) "ALTER TABLE: a value partition is required while adding
under a %s",
+
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+ }
return rel_alter_table(sql->sa,
ddl_alter_table_add_table, sname, tname, nsname, ntname, 0);
-
+ }
if ((isMergeTable(pt) || isReplicaTable(pt)) &&
list_empty(pt->members.set))
return sql_error(sql, 02,
SQLSTATE(42000) "The %s %s.%s should have at least one table associated",
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), spt->base.name,
pt->base.name);
diff --git a/sql/test/merge-partitions/Tests/All
b/sql/test/merge-partitions/Tests/All
--- a/sql/test/merge-partitions/Tests/All
+++ b/sql/test/merge-partitions/Tests/All
@@ -28,3 +28,4 @@ mergepart26
mergepart27
HAVE_DATA_PATH&HAVE_LIBPY2?mergepart28
HAVE_PYMONETDB?mergepart29
+mergepart30
diff --git a/sql/test/merge-partitions/Tests/mergepart30.sql
b/sql/test/merge-partitions/Tests/mergepart30.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/merge-partitions/Tests/mergepart30.sql
@@ -0,0 +1,10 @@
+CREATE MERGE TABLE table1 (b varchar(32)) PARTITION BY RANGE ON (b);
+CREATE MERGE TABLE table2 (b varchar(32)) PARTITION BY VALUES ON (b);
+CREATE TABLE another (b varchar(32));
+
+ALTER TABLE table1 ADD TABLE another; --error, a paritioning clause is required
+ALTER TABLE table2 ADD TABLE another; --error, a paritioning clause is required
+
+DROP TABLE another;
+DROP TABLE table1;
+DROP TABLE table2;
diff --git a/sql/test/merge-partitions/Tests/mergepart30.stable.err
b/sql/test/merge-partitions/Tests/mergepart30.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/merge-partitions/Tests/mergepart30.stable.err
@@ -0,0 +1,20 @@
+stderr of test 'mergepart30` in directory 'sql/test/merge-partitions` itself:
+
+
+# 09:24:49 >
+# 09:24:49 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-32190" "--port=38020"
+# 09:24:49 >
+
+MAPI = (monetdb) /var/tmp/mtest-32190/.s.monetdb.38020
+QUERY = ALTER TABLE table1 ADD TABLE another; --error, a paritioning clause is
required
+ERROR = !ALTER TABLE: a range partition is required while adding under a RANGE
PARTITION TABLE
+CODE = 42000
+MAPI = (monetdb) /var/tmp/mtest-32190/.s.monetdb.38020
+QUERY = ALTER TABLE table2 ADD TABLE another; --error, a paritioning clause is
required
+ERROR = !ALTER TABLE: a value partition is required while adding for a under a
LIST PARTITION TABLE
+CODE = 42000
+
+# 09:24:49 >
+# 09:24:49 > "Done."
+# 09:24:49 >
+
diff --git a/sql/test/merge-partitions/Tests/mergepart30.stable.out
b/sql/test/merge-partitions/Tests/mergepart30.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/merge-partitions/Tests/mergepart30.stable.out
@@ -0,0 +1,18 @@
+stdout of test 'mergepart30` in directory 'sql/test/merge-partitions` itself:
+
+
+# 09:24:49 >
+# 09:24:49 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-32190" "--port=38020"
+# 09:24:49 >
+
+#CREATE MERGE TABLE table1 (b varchar(32)) PARTITION BY RANGE ON (b);
+#CREATE MERGE TABLE table2 (b varchar(32)) PARTITION BY VALUES ON (b);
+#CREATE TABLE another (b varchar(32));
+#DROP TABLE another;
+#DROP TABLE table1;
+#DROP TABLE table2;
+
+# 09:24:49 >
+# 09:24:49 > "Done."
+# 09:24:49 >
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list