Changeset: aa390d7a8c9d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aa390d7a8c9d
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/97_comments.sql
Branch: comment-on
Log Message:

Create function sys.comment_on


diffs (73 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -806,16 +806,40 @@ sql_update_jul2017(Client c, mvc *sql)
 static str
 sql_create_comments_table(Client c)
 {
-       char *err, *q1, *q2;
+       char *err, *q1, *q2, *q3;
 
-       q1 = "CREATE TABLE sys.comments (id INTEGER, remark CLOB);\n";
+       q1 = ""
+               "CREATE TABLE sys.comments (\n"
+               "       id INTEGER NOT NULL PRIMARY KEY,\n"
+               "       remark VARCHAR(65000) NOT NULL\n"
+               ");";
        err = SQLstatementIntern(c, &q1, "update", 1, 0, NULL);
        if (err)
                return err;
 
-       q2 = "UPDATE sys._tables SET system = true WHERE name = 'comments' AND 
schema_id = (SELECT id FROM sys.schemas WHERE name = 'sys');\n";
-       return SQLstatementIntern(c, &q2, "update", 1, 0, NULL);
-}
+       q2 = ""
+               "UPDATE sys._tables\n"
+               "SET system = true\n"
+               "WHERE name = 'comments'\n"
+               "AND schema_id = (SELECT id FROM sys.schemas WHERE name = 
'sys');\n";
+       err =  SQLstatementIntern(c, &q2, "update", 1, 0, NULL);
+       if (err)
+               return err;
+
+       q3 = ""
+               "CREATE PROCEDURE sys.comment_on(obj_id OID, obj_remark 
VARCHAR(65000))\n"
+               "BEGIN\n"
+               "        IF obj_remark IS NULL OR obj_remark = '' THEN\n"
+               "                DELETE FROM sys.comments WHERE id = obj_id;\n"
+               "--         ELSEIF EXISTS (SELECT id FROM sys.comments WHERE id 
= obj_id) THEN\n"
+               "        ELSEIF 0 < (SELECT COUNT(id) FROM sys.comments WHERE 
id = obj_id) THEN\n"
+               "                UPDATE sys.comments SET remark = obj_remark 
WHERE id = obj_id;\n"
+               "        ELSE\n"
+               "                INSERT INTO sys.comments VALUES (obj_id, 
obj_remark);\n"
+               "        END IF;\n"
+               "END;\n";
+               return SQLstatementIntern(c, &q3, "update", 1, 0, NULL);
+       }
 
 void
 SQLupgrades(Client c, mvc *m)
diff --git a/sql/scripts/97_comments.sql b/sql/scripts/97_comments.sql
--- a/sql/scripts/97_comments.sql
+++ b/sql/scripts/97_comments.sql
@@ -5,6 +5,18 @@
 -- Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
 
 CREATE TABLE sys.comments (
-        id INTEGER,
-        remark CLOB
+        id INTEGER NOT NULL PRIMARY KEY,
+        remark VARCHAR(65000) NOT NULL
 );
+
+CREATE PROCEDURE sys.comment_on(obj_id OID, obj_remark VARCHAR(65000))
+BEGIN
+        IF obj_remark IS NULL OR obj_remark = '' THEN
+                DELETE FROM sys.comments WHERE id = obj_id;
+--         ELSEIF EXISTS (SELECT id FROM sys.comments WHERE id = obj_id) THEN
+        ELSEIF 0 < (SELECT COUNT(id) FROM sys.comments WHERE id = obj_id) THEN
+                UPDATE sys.comments SET remark = obj_remark WHERE id = obj_id;
+        ELSE
+                INSERT INTO sys.comments VALUES (obj_id, obj_remark);
+        END IF;
+END;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to