Changeset: 42937c39d53e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/42937c39d53e
Modified Files:
        sql/server/rel_distribute.c
        sql/server/rel_optimizer.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/test/merge-partitions/Tests/mergepart16.test
        sql/test/mergetables/Tests/alter.test
        sql/test/mergetables/Tests/emptymergequery.test
        sql/test/mergetables/Tests/merge-tables-limitations.test
        sql/test/mergetables/Tests/mergemergeload.test
        sql/test/mergetables/Tests/mergetabledependencies.test
        sql/test/mergetables/Tests/replicas.test
        sql/test/mergetables/Tests/replicatabledependencies.test
        sql/test/mergetables/Tests/types.test
Branch: default
Log Message:

Improve and harmonize error messages containing: ' should have at least one 
table associated'.
They now show the table type (no more: MERGE or REPLICA TABLE) and which table 
exactly is missing an associated table.
So less guessing/analysing for an SQL developer.


diffs (277 lines):

diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ b/sql/server/rel_distribute.c
@@ -150,8 +150,8 @@ replica_rewrite(visitor *v, sql_table *t
                }
 
                if ((isMergeTable(pt) || isReplicaTable(pt)) && 
list_empty(pt->members))
-                       return sql_error(v->sql, 02, SQLSTATE(42000) "The %s 
'%s.%s' should have at least one table associated",
-                                                               
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), pt->s->base.name, 
pt->base.name);
+                       return sql_error(v->sql, 02, SQLSTATE(42000) "%s 
'%s'.'%s' should have at least one table associated",
+                                                       
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), pt->s->base.name, 
pt->base.name);
                res = isReplicaTable(pt) ? replica_rewrite(v, pt, exps) : 
rewrite_replica(v->sql, exps, t, pt, remote);
        }
        return res;
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -86,8 +86,8 @@ merge_table_prune_and_unionize(visitor *
 
                /* At the moment we throw an error in the optimizer, but later 
this rewriter should move out from the optimizers */
                if ((isMergeTable(pt) || isReplicaTable(pt)) && 
list_empty(pt->members))
-                       return sql_error(v->sql, 02, SQLSTATE(42000) "The %s 
'%s.%s' should have at least one table associated",
-                                                        
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), pt->s->base.name, 
pt->base.name);
+                       return sql_error(v->sql, 02, SQLSTATE(42000) "%s 
'%s'.'%s' should have at least one table associated",
+                                                       
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), pt->s->base.name, 
pt->base.name);
                /* Do not include empty partitions */
                if (isTable(pt) && pt->access == TABLE_READONLY && 
!store->storage_api.count_col(v->sql->session->tr, 
ol_first_node(pt->columns)->data, 10)) /* count active rows only */
                        continue;
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
@@ -1794,37 +1794,37 @@ sql_alter_table(sql_query *query, dlist 
                        return NULL;
                if (isView(pt))
                        return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: 
can't add/drop a view into a %s",
-                                                               
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                       
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                if (isDeclaredTable(pt))
                        return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: 
can't add/drop a declared table into a %s",
-                                                               
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                       
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                if (isTempSchema(pt->s))
                        return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: 
can't add/drop a temporary table into a %s",
-                                                               
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                       
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                if (isReplicaTable(t) && isMergeTable(pt))
                        return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: 
can't add/drop a %s table into a %s",
-                                                        
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), 
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                       
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), 
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                nsname = pt->s->base.name;
                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);
+                       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 (te->token == SQL_TABLE) {
                        symbol *extra = dl->h->next->next->next->data.sym;
 
                        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));
+                                       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 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_length(pt->members)==0)
-                               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), pt->s->base.name, 
pt->base.name);
+                               return sql_error(sql, 02, SQLSTATE(42000) "%s 
'%s'.'%s' should have at least one table associated",
+                                                               
TABLE_TYPE_DESCRIPTION(pt->type, pt->properties), pt->s->base.name, 
pt->base.name);
 
                        if (extra->token == SQL_MERGE_PARTITION) { /* partition 
to hold null values only */
                                dlist* ll = extra->data.lval;
@@ -1836,7 +1836,7 @@ sql_alter_table(sql_query *query, dlist 
                                        return 
rel_alter_table_add_partition_list(query, t, pt, sname, tname, nsname, ntname, 
NULL, true, update);
                                } else {
                                        return sql_error(sql, 02, 
SQLSTATE(42000) "ALTER TABLE: cannot add a partition into a %s",
-                                                                        
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                               
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                                }
                        } else if (extra->token == SQL_PARTITION_RANGE) {
                                dlist* ll = extra->data.lval;
@@ -1845,7 +1845,7 @@ sql_alter_table(sql_query *query, dlist 
 
                                if (!isRangePartitionTable(t)) {
                                        return sql_error(sql, 
02,SQLSTATE(42000) "ALTER TABLE: cannot add a range partition into a %s",
-                                                                        
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                               
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                                }
 
                                assert(nills == 0 || nills == 1);
@@ -1856,7 +1856,7 @@ sql_alter_table(sql_query *query, dlist 
 
                                if (!isListPartitionTable(t)) {
                                        return sql_error(sql, 
02,SQLSTATE(42000) "ALTER TABLE: cannot add a value partition into a %s",
-                                                                        
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
+                                                               
TABLE_TYPE_DESCRIPTION(t->type, t->properties));
                                }
 
                                assert(nills == 0 || nills == 1);
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -1015,7 +1015,8 @@ table_ref(sql_query *query, symbol *tabl
                        return rel;
                }
                if ((isMergeTable(t) || isReplicaTable(t)) && 
list_length(t->members)==0)
-                       return sql_error(sql, 02, SQLSTATE(42000) "MERGE or 
REPLICA TABLE should have at least one table associated");
+                       return sql_error(sql, 02, SQLSTATE(42000) "%s '%s'.'%s' 
should have at least one table associated",
+                                                       
TABLE_TYPE_DESCRIPTION(t->type, t->properties), t->s->base.name, tname);
                res = rel_basetable(sql, t, tname);
                if (!allowed) {
                        rel_base_disallow(res);
diff --git a/sql/test/merge-partitions/Tests/mergepart16.test 
b/sql/test/merge-partitions/Tests/mergepart16.test
--- a/sql/test/merge-partitions/Tests/mergepart16.test
+++ b/sql/test/merge-partitions/Tests/mergepart16.test
@@ -22,7 +22,7 @@ CREATE TABLE subt4 (a int, b varchar(32)
 statement error 42000!INSERT INTO: list partitioned table 
'testnestedpartitions' has no partitions set
 INSERT INTO testnestedpartitions VALUES (1, 'ups')
 
-statement error 42000!The RANGE PARTITION TABLE sys.subnested1 should have at 
least one table associated
+statement error 42000!RANGE PARTITION TABLE 'sys'.'subnested1' should have at 
least one table associated
 ALTER TABLE testnestedpartitions ADD TABLE subnested1 AS PARTITION IN ('1', 
'2', '3')
 
 statement ok
@@ -82,7 +82,7 @@ ok
 1
 ok
 
-statement error 42000!The RANGE PARTITION TABLE sys.subnested2 should have at 
least one table associated
+statement error 42000!RANGE PARTITION TABLE 'sys'.'subnested2' should have at 
least one table associated
 ALTER TABLE testnestedpartitions ADD TABLE subnested2 AS PARTITION IN ('3', 
'4', '5')
 
 statement ok
diff --git a/sql/test/mergetables/Tests/alter.test 
b/sql/test/mergetables/Tests/alter.test
--- a/sql/test/mergetables/Tests/alter.test
+++ b/sql/test/mergetables/Tests/alter.test
@@ -28,7 +28,7 @@ alter table mys.smalltable add table par
 statement error 42S02!ALTER TABLE: no such table 'mys'.'part1'
 alter table mys.smalltable add table mys.part1
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!MERGE TABLE 'mys'.'smalltable' should have at least one 
table associated
 select * from mys.smalltable
 
 statement ok
diff --git a/sql/test/mergetables/Tests/emptymergequery.test 
b/sql/test/mergetables/Tests/emptymergequery.test
--- a/sql/test/mergetables/Tests/emptymergequery.test
+++ b/sql/test/mergetables/Tests/emptymergequery.test
@@ -1,7 +1,7 @@
 statement ok
 create merge table emptym(i integer, j integer)
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!MERGE TABLE 'sys'.'emptym' should have at least one 
table associated
 select * from emptym
 
 statement ok
diff --git a/sql/test/mergetables/Tests/merge-tables-limitations.test 
b/sql/test/mergetables/Tests/merge-tables-limitations.test
--- a/sql/test/mergetables/Tests/merge-tables-limitations.test
+++ b/sql/test/mergetables/Tests/merge-tables-limitations.test
@@ -45,7 +45,7 @@ 0
 0
 0
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!MERGE TABLE 'tst'.'mtbl' should have at least one table 
associated
 select * from tst.mtbl
 ----
 
@@ -87,14 +87,14 @@ 0
 0
 0
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!REPLICA TABLE 'tst'.'rtbl' should have at least one 
table associated
 select * from tst.rtbl
 ----
 
 statement ok
 ALTER TABLE tst.mtbl ADD TABLE tst.rtbl
 
-statement error 42000!The REPLICA TABLE 'tst.rtbl' should have at least one 
table associated
+statement error 42000!REPLICA TABLE 'tst'.'rtbl' should have at least one 
table associated
 select * from tst.mtbl
 ----
 
diff --git a/sql/test/mergetables/Tests/mergemergeload.test 
b/sql/test/mergetables/Tests/mergemergeload.test
--- a/sql/test/mergetables/Tests/mergemergeload.test
+++ b/sql/test/mergetables/Tests/mergemergeload.test
@@ -29,7 +29,7 @@ 3.0 0.0 0.0
 2.0 1.0 0.0
 3.0 1.0 0.0
 
-statement error 42000!The MERGE TABLE 'sys.part1' should have at least one 
table associated
+statement error 42000!MERGE TABLE 'sys'.'part1' should have at least one table 
associated
 SELECT * FROM COMPLETE
 
 statement ok
diff --git a/sql/test/mergetables/Tests/mergetabledependencies.test 
b/sql/test/mergetables/Tests/mergetabledependencies.test
--- a/sql/test/mergetables/Tests/mergetabledependencies.test
+++ b/sql/test/mergetables/Tests/mergetabledependencies.test
@@ -118,7 +118,7 @@ alter table parent drop table child4
 statement ok
 savepoint sp1
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!MERGE TABLE 'sys'.'parent' should have at least one 
table associated
 SELECT a from myfunc()
 
 statement ok
@@ -173,7 +173,7 @@ select count(*) - (select "a" from "depe
 ----
 0
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!MERGE TABLE 'sys'.'parent' should have at least one 
table associated
 SELECT a from myview
 
 statement ok
diff --git a/sql/test/mergetables/Tests/replicas.test 
b/sql/test/mergetables/Tests/replicas.test
--- a/sql/test/mergetables/Tests/replicas.test
+++ b/sql/test/mergetables/Tests/replicas.test
@@ -13,10 +13,10 @@ insert into t3 values (1), (2), (3)
 statement ok
 alter table t1 add table t2
 
-statement error 42000!The REPLICA TABLE 'sys.t2' should have at least one 
table associated
+statement error 42000!REPLICA TABLE 'sys'.'t2' should have at least one table 
associated
 select a from t1
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!REPLICA TABLE 'sys'.'t2' should have at least one table 
associated
 select a from t2
 
 statement ok
diff --git a/sql/test/mergetables/Tests/replicatabledependencies.test 
b/sql/test/mergetables/Tests/replicatabledependencies.test
--- a/sql/test/mergetables/Tests/replicatabledependencies.test
+++ b/sql/test/mergetables/Tests/replicatabledependencies.test
@@ -82,7 +82,7 @@ alter table parent drop table child3
 statement ok
 savepoint sp1
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!REPLICA TABLE 'sys'.'parent' should have at least one 
table associated
 SELECT a from myfunc()
 
 statement ok
@@ -112,7 +112,7 @@ alter table parent drop table child3
 statement ok
 savepoint sp2
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!REPLICA TABLE 'sys'.'parent' should have at least one 
table associated
 SELECT a from myview
 
 statement ok
diff --git a/sql/test/mergetables/Tests/types.test 
b/sql/test/mergetables/Tests/types.test
--- a/sql/test/mergetables/Tests/types.test
+++ b/sql/test/mergetables/Tests/types.test
@@ -13,7 +13,7 @@ ALTER TABLE complete ADD TABLE part1
 statement error 3F000!ALTER MERGE TABLE: to be added table column type doesn't 
match MERGE TABLE definition
 ALTER TABLE complete ADD TABLE part2
 
-statement error 42000!MERGE or REPLICA TABLE should have at least one table 
associated
+statement error 42000!MERGE TABLE 'sys'.'complete' should have at least one 
table associated
 SELECT * FROM COMPLETE
 
 statement ok
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to