Changeset: 747d7df5aa7a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=747d7df5aa7a
Modified Files:
        clients/mapiclient/mclient.c
        sql/scripts/97_comments.sql
        sql/server/rel_schema.c
        sql/test/Tests/comment-auth.stable.err
        sql/test/Tests/comment-auth.stable.out
        sql/test/Tests/comment-on.stable.out
Branch: comment-on
Log Message:

Some minor fixes


diffs (175 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1986,7 +1986,8 @@ doRequest(Mapi mid, const char *buf)
        if (mode == SQL)
                SQLsetSpecial(buf);
 
-       if ((hdl = mapi_query(mid, buf)) == NULL) {
+       hdl = mapi_query(mid, buf);
+       if (hdl == NULL) {
                if (formatter == TABLEformatter ) {
                        mapi_noexplain(mid, "");
                } else {
@@ -2533,6 +2534,7 @@ doFile(Mapi mid, stream *fp, int useinse
                                                if (*line) {
                                                        q += snprintf(q, endq - 
q, "AND (%s LIKE '%s')\n", name_column, line);
                                                }
+                                               q += snprintf(q, endq - q, 
"ORDER BY fullname, type, remark\n");
                                                q += snprintf(q, endq - q, 
";\n");
 
                                                hdl = mapi_query(mid, query);
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
@@ -4,6 +4,10 @@
 --
 -- Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
 
+ALTER TABLE sys.keywords SET READ WRITE;
+INSERT INTO sys.keywords VALUES ('COMMENT');
+ALTER TABLE sys.keywords SET READ ONLY;
+
 CREATE TABLE sys.comments (
         id INTEGER NOT NULL PRIMARY KEY,
         remark VARCHAR(65000) NOT NULL
@@ -28,6 +32,20 @@ END;
 CREATE TABLE systemfunctions (function_id INTEGER NOT NULL);
 GRANT SELECT ON systemfunctions TO PUBLIC;
 
+CREATE FUNCTION sys.function_type_keyword(ftype INT) 
+RETURNS VARCHAR(20)
+BEGIN
+       RETURN CASE ftype
+                WHEN 1 THEN 'FUNCTION'
+                WHEN 2 THEN 'PROCEDURE'
+                WHEN 3 THEN 'AGGREGATE'
+                WHEN 4 THEN 'FILTER FUNCTION'
+                WHEN 7 THEN 'LOADER'
+                ELSE 'ROUTINE'
+        END;
+END;
+GRANT EXECUTE ON FUNCTION sys.function_type_keyword(INT) TO PUBLIC;
+
 CREATE FUNCTION sys.describe_all_objects()
 RETURNS TABLE (
        sname VARCHAR(1024),
@@ -69,7 +87,7 @@ BEGIN
                            name,
                            EXISTS (SELECT function_id FROM sys.systemfunctions 
WHERE function_id = id) AS system,
                            8 AS ntype,
-                           'FUNCTION' AS type
+                           sys.function_type_keyword(type) AS type
                    FROM sys.functions
            ),
            schema_data AS (
@@ -133,14 +151,7 @@ commented_function_params AS (
 SELECT  fid,
         schema,
         fname,
-        CASE ftype
-                WHEN 1 THEN 'FUNCTION'
-                WHEN 2 THEN 'PROCEDURE'
-                WHEN 3 THEN 'AGGREGATE'
-                WHEN 4 THEN 'FILTER FUNCTION'
-                WHEN 7 THEN 'LOADER'
-                ELSE 'ROUTINE'
-        END AS category,
+        sys.function_type_keyword(ftype) AS category,
         EXISTS (SELECT function_id FROM sys.systemfunctions WHERE fid = 
function_id) AS system,
         CASE WHEN asc_rank = 1 THEN fname ELSE NULL END AS name,
         CASE WHEN desc_rank = 1 THEN remark ELSE NULL END AS remark,
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
@@ -2184,11 +2184,8 @@ rel_find_designated_object(mvc *sql, sym
 
 static sql_rel *
 rel_comment_on(mvc *sql, sqlid obj_id, sql_schema *schema, char *remark) {
-       // Impersonate CALL sys.comment_on(obj_id, remark);
-
        buffer *buf = NULL;
        stream *s = NULL;
-       char *escaped = NULL;
        char *query = NULL;
        sql_schema *sys;
        sql_rel *rel = NULL;
@@ -2210,25 +2207,24 @@ rel_comment_on(mvc *sql, sqlid obj_id, s
        if (!remark) {
                mnstr_printf(s, "NULL");
        } else {
-               escaped = sql_escape_str(remark);
+               char *escaped = sql_escape_str(remark);
                if (!escaped)
                        goto wrap_up;
                mnstr_printf(s, "'%s'", escaped);
+               GDKfree(escaped);
        }
        mnstr_printf(s, ");");
        query = buffer_get_buf(buf);
        sys = mvc_bind_schema(sql, "sys");
-       rel = rel_parse(sql, sys, query, m_execute); // correct mode?
+       rel = rel_parse(sql, sys, query, m_normal); // correct mode?
 
 wrap_up:
-       // if (query)
-       //      free(query);
-       // if (escaped)
-       //      free(escaped);
-       // if (s)
-       //      mnstr_destroy(s);
-       // if (buf)
-       //      buffer_destroy(buf);
+       if (query)
+               free(query);
+       if (s)
+               mnstr_destroy(s);
+       if (buf)
+               buffer_destroy(buf);
        return rel;
 }
 
diff --git a/sql/test/Tests/comment-auth.stable.err 
b/sql/test/Tests/comment-auth.stable.err
--- a/sql/test/Tests/comment-auth.stable.err
+++ b/sql/test/Tests/comment-auth.stable.err
@@ -44,6 +44,10 @@ MAPI  = (user_a) /var/tmp/mtest-36372/.s
 QUERY = COMMENT ON SCHEMA schema_b IS 'set by user_a';
 ERROR = !COMMENT ON: insufficient privileges for user 'user_a' in schema 
'schema_b'
 CODE  = 42000
+MAPI  = (user_a) /var/tmp/mtest-89089/.s.monetdb.33054
+QUERY = COMMENT ON SCHEMA schema_a IS 'set by user_a';
+
+CODE  = 42000
 
 # 14:17:02 >  
 # 14:17:02 >  "Done."
diff --git a/sql/test/Tests/comment-auth.stable.out 
b/sql/test/Tests/comment-auth.stable.out
--- a/sql/test/Tests/comment-auth.stable.out
+++ b/sql/test/Tests/comment-auth.stable.out
@@ -82,7 +82,7 @@ Ready.
 
 SCHEMA  schema_a  'set by super user'
 SCHEMA  schema_b  'set by super user'
-SCHEMA  schema_a  'set by user_a'
+SCHEMA  schema_a  'set by super user'
 SCHEMA  schema_b  'set by super user'
 
 # 14:17:02 >  
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
@@ -144,11 +144,11 @@ SEQUENCE  foo.counter  'still counting'
 #CREATE FUNCTION f(i INT) RETURNS INT BEGIN RETURN 43; END;
 #CREATE FUNCTION f(i INT, j INT) RETURNS INT BEGIN RETURN 44; END;
 #CREATE PROCEDURE g() BEGIN DELETE FROM tab WHERE FALSE; END;
-FUNCTION  foo.f  '1 parm'
-FUNCTION  foo.f  '2 parms'
 FUNCTION  foo.f
 FUNCTION  foo.f  '0 parms'
-FUNCTION  foo.g  'proc'
+FUNCTION   foo.f  '1 parm'
+FUNCTION   foo.f  '2 parms'
+PROCEDURE  foo.g  'proc'
 create function f() returns int begin return 42; end;
 COMMENT ON FUNCTION "foo"."f"() IS '0 parms';
 create function f(i int) returns int begin return 43; end;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to