Changeset: 10e3349eca1e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/10e3349eca1e
Modified Files:
        sql/common/sql_types.c
        sql/scripts/76_dump.sql
        sql/server/sql_qc.c
        sql/storage/store.c
        sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
        sql/test/sys-schema/Tests/check_MaxStrLength_violations.test
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
        sql/test/sys-schema/Tests/utilities.test
Branch: mangled
Log Message:

And more fixes and adjustments...


diffs (184 lines):

diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -631,7 +631,7 @@ mangle_name(char *buf, const char *name,
        char* c = buf; // cursor
 
        int retc = res ? res->cnt : 0;
-       int argc = retc + ops->cnt;
+       int argc = retc + (ops ? ops->cnt : 0);
 
        switch (type) {
        case F_FUNC:
@@ -659,7 +659,7 @@ mangle_name(char *buf, const char *name,
                }
        }
 
-       for (node* n = ops->h; n; n = n->next) {
+       if (ops) for (node* n = ops->h; n; n = n->next) {
                sql_arg *a = n->data;
                if (a->type.type)
                        c += sprintf(c, "%%%s(%u,%u)", a->type.type->base.name, 
a->type.digits, a->type.scale);
diff --git a/sql/scripts/76_dump.sql b/sql/scripts/76_dump.sql
--- a/sql/scripts/76_dump.sql
+++ b/sql/scripts/76_dump.sql
@@ -111,11 +111,11 @@ CREATE VIEW sys.dump_function_grants AS
   (SELECT func_id, func_arg FROM func_args_all WHERE number = max_number)
   SELECT
     'GRANT ' || pc.privilege_code_name || ' ON ' || ft.function_type_keyword 
|| ' '
-      || sys.FQN(s.name, f.name) || '(' || coalesce(fa.func_arg, '') || ') TO '
+      || sys.FQN(s.name, f.sqlname) || '(' || coalesce(fa.func_arg, '') || ') 
TO '
       || ifthenelse(a.name = 'public', 'PUBLIC', sys.dq(a.name))
       || CASE WHEN p.grantable = 1 THEN ' WITH GRANT OPTION' ELSE '' END || 
';' stmt,
     s.name schema_name,
-    f.name function_name,
+    f.sqlname function_name,
     a.name grantee
     FROM sys.schemas s,
         sys.functions f LEFT OUTER JOIN func_args fa ON f.id = fa.func_id,
@@ -131,7 +131,7 @@ CREATE VIEW sys.dump_function_grants AS
      AND p.privileges = pc.privilege_code_id
      AND f.type = ft.function_type_id
      AND NOT f.system
-   ORDER BY s.name, f.name, a.name, g.name, p.grantable;
+   ORDER BY s.name, f.sqlname, a.name, g.name, p.grantable;
 
 CREATE VIEW sys.dump_indices AS
   SELECT
diff --git a/sql/server/sql_qc.c b/sql/server/sql_qc.c
--- a/sql/server/sql_qc.c
+++ b/sql/server/sql_qc.c
@@ -165,7 +165,7 @@ qc_insert(qc *cache, sql_allocator *sa, 
        f->imp = name;
 
        // extern char* mangle_name(char* buf, const char *name, sql_ftype 
type, list *res, list *ops);
-       char buf[1000];
+       char buf[10000]; // TODO can be unsafe when there are many parameters
        f->base.name = sa_strdup(sa, mangle_name(buf, name, f->type, f->res, 
f->ops));
        f->sql_name = name;
        f->instantiated = TRUE;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1846,7 +1846,7 @@ store_load(sqlstore *store, sql_allocato
 
        functions = t = bootstrap_create_table(tr, s, "functions", 2016);
        bootstrap_create_column(tr, t, "id", 2017, "int", 32);
-       bootstrap_create_column(tr, t, "name", 2018, "varchar", 256);
+       bootstrap_create_column(tr, t, "name", 2018, "varchar", 4098);
        bootstrap_create_column(tr, t, "sqlname", 2165, "varchar", 256);
        bootstrap_create_column(tr, t, "func", 2019, "varchar", 8196);
        bootstrap_create_column(tr, t, "mod", 2020, "varchar", 8196);
diff --git 
a/sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test 
b/sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
--- a/sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
+++ b/sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
@@ -54,19 +54,19 @@ query ITTIIITIIT rowsort
 SELECT * FROM tmp._columns WHERE type NOT IN (SELECT sqlname FROM sys.types)
 ----
 
-query ITTTIIIIIIII rowsort
+query ITTTTIIIIIIII rowsort
 SELECT * FROM sys.functions WHERE schema_id NOT IN (SELECT id FROM sys.schemas)
 ----
 
-query ITTTIIIIIIII rowsort
+query ITTTTIIIIIIII rowsort
 SELECT * FROM sys.functions WHERE type NOT IN (SELECT function_type_id FROM 
sys.function_types)
 ----
 
-query ITTTIIIIIIII rowsort
+query ITTTTIIIIIIII rowsort
 SELECT * FROM sys.functions WHERE language NOT IN (SELECT language_id FROM 
sys.function_languages)
 ----
 
-query ITTTIIIIIIII rowsort
+query ITTTTIIIIIIII rowsort
 SELECT * FROM sys.functions WHERE system AND schema_id NOT IN (SELECT id FROM 
sys.schemas WHERE system)
 ----
 
diff --git a/sql/test/sys-schema/Tests/check_MaxStrLength_violations.test 
b/sql/test/sys-schema/Tests/check_MaxStrLength_violations.test
--- a/sql/test/sys-schema/Tests/check_MaxStrLength_violations.test
+++ b/sql/test/sys-schema/Tests/check_MaxStrLength_violations.test
@@ -343,7 +343,7 @@ SELECT '"sys"."functions"."mod"' as full
 ----
 
 query TIIT rowsort
-SELECT '"sys"."functions"."name"' as full_col_nm, 256 as max_allowed_length, 
length("name") as data_length, t."name" as data_value FROM "sys"."functions" t 
WHERE "name" IS NOT NULL AND length("name") > (select type_digits from 
sys._columns where name = 'name' and table_id in (select id from tables where 
name = 'functions' and schema_id in (select id from sys.schemas where name = 
'sys')))
+SELECT '"sys"."functions"."name"' as full_col_nm, 4098 as max_allowed_length, 
length("name") as data_length, t."sqlname" as data_value FROM "sys"."functions" 
t WHERE "sqlname" IS NOT NULL AND length("sqlname") > (select type_digits from 
sys._columns where name = 'sqlname' and table_id in (select id from tables 
where name = 'functions' and schema_id in (select id from sys.schemas where 
name = 'sys')))
 ----
 
 query TIIT rowsort
diff --git a/sql/test/sys-schema/Tests/check_Not_Nullable_columns.test 
b/sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
--- a/sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
+++ b/sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
@@ -238,47 +238,47 @@ query IIII rowsort
 SELECT "depend_type", * FROM "sys"."dependencies" WHERE "depend_type" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "id", * FROM "sys"."functions" WHERE "id" IS NULL
 ----
 
-query TITTTIIIIIIII rowsort
+query TITTTTIIIIIIII rowsort
 SELECT "name", * FROM "sys"."functions" WHERE "name" IS NULL
 ----
 
-query TITTTIIIIIIII rowsort
+query TITTTTIIIIIIII rowsort
 SELECT "func", * FROM "sys"."functions" WHERE "func" IS NULL
 ----
 
-query TITTTIIIIIIII rowsort
+query TITTTTIIIIIIII rowsort
 SELECT "mod", * FROM "sys"."functions" WHERE "mod" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "language", * FROM "sys"."functions" WHERE "language" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "type", * FROM "sys"."functions" WHERE "type" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "side_effect", * FROM "sys"."functions" WHERE "side_effect" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "varres", * FROM "sys"."functions" WHERE "varres" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "vararg", * FROM "sys"."functions" WHERE "vararg" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "schema_id", * FROM "sys"."functions" WHERE "schema_id" IS NULL
 ----
 
-query IITTTIIIIIIII rowsort
+query IITTTTIIIIIIII rowsort
 SELECT "system", * FROM "sys"."functions" WHERE "system" IS NULL
 ----
 
diff --git a/sql/test/sys-schema/Tests/utilities.test 
b/sql/test/sys-schema/Tests/utilities.test
--- a/sql/test/sys-schema/Tests/utilities.test
+++ b/sql/test/sys-schema/Tests/utilities.test
@@ -183,7 +183,7 @@ SELECT table_id('hsfdjkhksf does not exi
 NULL
 
 query T rowsort
-select name from sys.functions where not system
+select sqlname from sys.functions where not system
 ----
 schema_id
 table_id
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to