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