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