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