Changeset: 4c3e8ad24a82 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4c3e8ad24a82
Modified Files:
        sql/test/Tests/comment-on.sql
        sql/test/Tests/comment-on.stable.err
        sql/test/Tests/comment-on.stable.out
Branch: Mar2018
Log Message:

Extended COMMENT ON tests with
- COMMENT ON VIEW COLUMNS
- COMMENT ON all supported db-object types for which the object name does not 
exist (to test the error reporting)
- COMMENT ON not supported db-object types, such as TYPE, TRIGGER, DATABASE, 
etc. (to test syntax error reporting)

I found that dumping a view with comments on view columns does not dumps those 
viewq column comments. It will be fixed separately.


diffs (206 lines):

diff --git a/sql/test/Tests/comment-on.sql b/sql/test/Tests/comment-on.sql
--- a/sql/test/Tests/comment-on.sql
+++ b/sql/test/Tests/comment-on.sql
@@ -87,6 +87,10 @@ COMMENT ON COLUMN tab.j IS 'jj';
 COMMENT ON COLUMN foo.tab.i IS 'ii';
 \d tab
 
+COMMENT ON COLUMN vivi.j IS 'vjj';
+COMMENT ON COLUMN foo.vivi.i IS 'vii';
+\d vivi
+
 /* comment on index works */
 CREATE INDEX idx ON tab(j,i);
 COMMENT ON INDEX idx IS 'index on j';
@@ -134,6 +138,36 @@ COMMENT ON PROCEDURE g IS 'proc!';
 -- if there is ambiguity we can't
 COMMENT ON FUNCTION f IS 'ambiguous';
 
+
+-- test all COMMENT ON <db-objecttype> variations with an object name which 
does not exist, so should report a "no such <db-objecttype>: abc" error
+COMMENT ON SCHEMA "abc" IS 'schema abc';
+COMMENT ON TABLE "abc" IS 'table abc';
+COMMENT ON VIEW "abc" IS 'view abc';
+COMMENT ON COLUMN "abc".abc IS 'column abc';
+COMMENT ON INDEX "abc" IS 'index abc';
+COMMENT ON SEQUENCE "abc" IS 'seq abc';
+COMMENT ON FUNCTION "abc" IS 'function abc';
+COMMENT ON PROCEDURE "abc" IS 'procedure abc';
+COMMENT ON AGGREGATE "abc" IS 'aggregate abc';
+COMMENT ON FILTER FUNCTION "abc" IS 'filter function abc';
+COMMENT ON LOADER "abc" IS 'loader abc';
+
+-- test COMMENT ON <db-objecttype> for db-objecttypes for which we do NOT 
support comments to be set, so should report a syntax error
+COMMENT ON TYPE "int" IS 'signed integer number 32 bits';
+COMMENT ON TRIGGER "abc" IS 'trigger abc';
+COMMENT ON PRIMARY KEY "abc" IS 'primary key abc';
+COMMENT ON FOREIGN KEY "abc" IS 'foreign key abc';
+COMMENT ON UNIQUE KEY "abc" IS 'unique key abc';
+COMMENT ON KEY "abc" IS 'key abc';
+COMMENT ON FUNCTION ARGUMENT abc.i IS 'function argument abc.i';
+COMMENT ON PROCEDURE ARGUMENT abc.i IS 'procedure argument abc.i';
+COMMENT ON DATABASE "abc" IS 'database abc';
+
+
+-- before cleanup show the created comments
+SELECT remark FROM sys.comments order by remark;
+
+-- cleanup
 DROP FUNCTION f();
 DROP FUNCTION f(INT);
 DROP FUNCTION f(INT,INT);
@@ -147,3 +181,7 @@ DROP TABLE tab;
 
 SET SCHEMA sys;
 DROP SCHEMA foo;
+
+-- after dropping all the created objects, the comments should be removed also
+SELECT remark FROM sys.comments order by remark;
+
diff --git a/sql/test/Tests/comment-on.stable.err 
b/sql/test/Tests/comment-on.stable.err
--- a/sql/test/Tests/comment-on.stable.err
+++ b/sql/test/Tests/comment-on.stable.err
@@ -48,6 +48,86 @@ MAPI  = (monetdb) /var/tmp/mtest-69226/.
 QUERY = COMMENT ON FUNCTION f IS 'ambiguous';
 ERROR = !COMMENT FUNCTION: there are more than one function called 'f', please 
use the full signature
 CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON SCHEMA "abc" IS 'schema abc';
+ERROR = !COMMENT ON:no such schema: abc
+CODE  = 3F000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON TABLE "abc" IS 'table abc';
+ERROR = !COMMENT ON:no such table: foo.abc
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON VIEW "abc" IS 'view abc';
+ERROR = !COMMENT ON:no such view: foo.abc
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON COLUMN "abc".abc IS 'column abc';
+ERROR = !COMMENT ON:no such table: foo.abc
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON INDEX "abc" IS 'index abc';
+ERROR = !COMMENT ON:no such index: foo.abc
+CODE  = 42S12
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON SEQUENCE "abc" IS 'seq abc';
+ERROR = !COMMENT ON:no such sequence: foo.abc
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON FUNCTION "abc" IS 'function abc';
+ERROR = !COMMENT FUNCTION: no such function 'abc'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON PROCEDURE "abc" IS 'procedure abc';
+ERROR = !COMMENT PROCEDURE: no such procedure 'abc'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON AGGREGATE "abc" IS 'aggregate abc';
+ERROR = !COMMENT AGGREGATE: no such aggregate 'abc'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON FILTER FUNCTION "abc" IS 'filter function abc';
+ERROR = !COMMENT FILTER FUNCTION: no such filter function 'abc'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON LOADER "abc" IS 'loader abc';
+ERROR = !COMMENT PROCEDURE: no such procedure 'abc'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON TYPE "int" IS 'signed integer number 32 bits';
+ERROR = !syntax error, unexpected TYPE in: "comment on type"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON TRIGGER "abc" IS 'trigger abc';
+ERROR = !syntax error, unexpected TRIGGER in: "comment on trigger"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON PRIMARY KEY "abc" IS 'primary key abc';
+ERROR = !syntax error, unexpected PRIMARY in: "comment on primary"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON FOREIGN KEY "abc" IS 'foreign key abc';
+ERROR = !syntax error, unexpected FOREIGN in: "comment on foreign"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON UNIQUE KEY "abc" IS 'unique key abc';
+ERROR = !syntax error, unexpected UNIQUE in: "comment on unique"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON KEY "abc" IS 'key abc';
+ERROR = !syntax error, unexpected KEY in: "comment on key"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON FUNCTION ARGUMENT abc.i IS 'function argument abc.i';
+ERROR = !syntax error, unexpected IDENT, expecting IS in: "comment on function 
argument abc"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON PROCEDURE ARGUMENT abc.i IS 'procedure argument abc.i';
+ERROR = !syntax error, unexpected IDENT, expecting IS in: "comment on 
procedure argument abc"
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-19692/.s.monetdb.35755
+QUERY = COMMENT ON DATABASE "abc" IS 'database abc';
+ERROR = !syntax error, unexpected IDENT in: "comment on database"
+CODE  = 42000
 
 # 15:45:23 >  
 # 15:45:23 >  "Done."
diff --git a/sql/test/Tests/comment-on.stable.out 
b/sql/test/Tests/comment-on.stable.out
--- a/sql/test/Tests/comment-on.stable.out
+++ b/sql/test/Tests/comment-on.stable.out
@@ -122,6 +122,12 @@ CREATE TABLE "foo"."tab" (
 COMMENT ON TABLE "foo"."tab" IS 'table';
 COMMENT ON COLUMN "foo"."tab"."i" IS 'ii';
 COMMENT ON COLUMN "foo"."tab"."j" IS 'jj';
+#COMMENT ON COLUMN vivi.j IS 'vjj';
+#COMMENT ON COLUMN foo.vivi.i IS 'vii';
+create view vivi as select * from tab;
+COMMENT ON VIEW "foo"."vivi" IS 'phew';
+COMMENT ON COLUMN "foo"."vivi"."i" IS 'vii';
+COMMENT ON COLUMN "foo"."vivi"."j" IS 'vjj';
 #CREATE INDEX idx ON tab(j,i);
 CREATE TABLE "foo"."tab" (
        "i" INTEGER,
@@ -163,6 +169,40 @@ create procedure g() begin delete from t
 COMMENT ON PROCEDURE "foo"."g"() IS 'proc';
 create procedure g() begin delete from tab where false; end;
 COMMENT ON PROCEDURE "foo"."g"() IS 'proc!';
+#SELECT remark FROM sys.comments order by remark;
+% sys.comments # table_name
+% remark # name
+% varchar # type
+% 17 # length
+[ "0 parms"    ]
+[ "1 parm"     ]
+[ "2 parms"    ]
+[ "ii" ]
+[ "index on j" ]
+[ "jj" ]
+[ "one final comment"  ]
+[ "phew"       ]
+[ "proc!"      ]
+[ "still counting"     ]
+[ "table"      ]
+[ "vii"        ]
+[ "vjj"        ]
+#DROP FUNCTION f();
+#DROP FUNCTION f(INT);
+#DROP FUNCTION f(INT,INT);
+#DROP FUNCTION f(INT,INT,INT);
+#DROP FUNCTION f(INT,INT,INT,INT);
+#DROP PROCEDURE g();
+#DROP SEQUENCE counter;
+#DROP VIEW vivi;
+#DROP TABLE tab;
+#SET SCHEMA sys;
+#DROP SCHEMA foo;
+#SELECT remark FROM sys.comments order by remark;
+% sys.comments # table_name
+% remark # name
+% varchar # type
+% 0 # length
 
 # 12:35:23 >  
 # 12:35:23 >  "Done."
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to