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