Changeset: 9a60c2693323 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9a60c2693323
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:
Upgrade: add new generate_series functions.
diffs (truncated from 610 to 300 lines):
diff --git a/sql/backends/monet5/sql_upgrades.c
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -327,7 +327,7 @@ static str
sql_create_shp(Client c)
{
//Create the new SHPload procedures
- const char *query = "create procedure SHPLoad(fname string, schemaname
string, tablename string) external name shp.load;\n"
+ const char query[] = "create procedure SHPLoad(fname string, schemaname
string, tablename string) external name shp.load;\n"
"create procedure SHPLoad(fname string, tablename string)
external name shp.load;\n"
"update sys.functions set system = true where schema_id = 2000
and name in ('shpload');";
printf("Running database upgrade commands:\n%s\n", query);
@@ -340,7 +340,7 @@ static str
sql_drop_shp(Client c)
{
//Drop the old SHP procedures (upgrade from version before shpload
upgrade)
- const char *query = "drop procedure if exists SHPattach(string)
cascade;\n"
+ const char query[] = "drop procedure if exists SHPattach(string)
cascade;\n"
"drop procedure if exists SHPload(integer) cascade;\n"
"drop procedure if exists SHPload(integer, geometry)
cascade;\n";
printf("Running database upgrade commands:\n%s\n", query);
@@ -351,7 +351,7 @@ sql_drop_shp(Client c)
static str
sql_update_generator(Client c)
{
- const char *query = "update sys.args set name = 'limit' where name =
'last' and func_id in (select id from sys.functions where schema_id = 2000 and
name = 'generate_series' and func like '% last %');\n"
+ const char query[] = "update sys.args set name = 'limit' where name =
'last' and func_id in (select id from sys.functions where schema_id = 2000 and
name = 'generate_series' and func like '% last %');\n"
"update sys.functions set func = replace(func, ' last ', '
\"limit\" ') where schema_id = 2000 and name = 'generate_series' and func like
'% last %';\n";
return SQLstatementIntern(c, query, "update", true, false, NULL);
}
@@ -3287,7 +3287,7 @@ sql_update_jan2022(Client c, mvc *sql)
list_append(l, &tp);
if (sql_bind_func_(sql, s->base.name, "strimp_create",
l, F_PROC, true, true)) {
/* do the upgrade by removing the two functions
*/
- const char *query =
+ const char query[] =
"drop filter function
sys.strimp_filter(string, string) cascade;\n"
"drop procedure
sys.strimp_create(string, string, string) cascade;\n";
printf("Running database upgrade
commands:\n%s\n", query);
@@ -5198,7 +5198,7 @@ sql_update_jun2023(Client c, mvc *sql, s
if (wr)
wr->system = 0;
- const char *query =
+ const char query[] =
"drop procedure if exists wlc.master()
cascade;\n"
"drop procedure if exists wlc.master(string)
cascade;\n"
"drop procedure if exists wlc.stop() cascade;\n"
@@ -5555,7 +5555,7 @@ sql_update_jun2023(Client c, mvc *sql, s
if (!sql_bind_func(sql, "sys", "pause", &t1, &t2, F_PROC, true, true)) {
sql->session->status = 0; /* if the function was not found
clean the error */
sql->errstr[0] = '\0';
- const char *query =
+ const char query[] =
"create function sys.queue(username string) returns
table(\"tag\" bigint, \"sessionid\" int, \"username\" string, \"started\"
timestamp, \"status\" string, \"query\" string, \"finished\" timestamp,
\"maxworkers\" int, \"footprint\" int) external name sysmon.queue;\n"
"create procedure sys.pause(tag bigint, username
string) external name sysmon.pause;\n"
"create procedure sys.resume(tag bigint, username
string) external name sysmon.resume;\n"
@@ -5568,7 +5568,7 @@ sql_update_jun2023(Client c, mvc *sql, s
/* sys.settimeout and sys.setsession where removed */
if (sql_bind_func(sql, "sys", "settimeout", &t1, NULL, F_PROC, true,
true)) {
- const char *query =
+ const char query[] =
"drop procedure sys.settimeout(bigint) cascade;\n"
"drop procedure sys.settimeout(bigint, bigint)
cascade;\n"
"drop procedure sys.setsession(bigint) cascade;\n";
@@ -5852,7 +5852,7 @@ sql_update_dec2023_geom(Client c, mvc *s
sql_table *t;
if ((t = mvc_bind_table(sql, s, "geometry_columns")) !=
NULL)
t->system = 0;
- const char *query =
+ const char query[] =
"drop function if exists
sys.st_intersects(geometry, geometry) cascade;\n"
"drop function if exists
sys.st_dwithin(geometry, geometry, double) cascade;\n"
"drop view if exists sys.geometry_columns
cascade;\n"
@@ -5914,7 +5914,7 @@ sql_update_dec2023(Client c, mvc *sql, s
sql_find_subtype(&tp, "varchar", 0, 0);
if (sql_bind_func(sql, s->base.name, "similarity", &tp, &tp, F_FUNC,
true, true)) {
- const char *query = "drop function sys.similarity(string,
string) cascade;\n";
+ const char query[] = "drop function sys.similarity(string,
string) cascade;\n";
printf("Running database upgrade commands:\n%s\n", query);
fflush(stdout);
err = SQLstatementIntern(c, query, "update", true, false, NULL);
@@ -5926,7 +5926,7 @@ sql_update_dec2023(Client c, mvc *sql, s
if (mvc_bind_table(sql, s, "describe_accessible_tables") == NULL) {
sql->session->status = 0; /* if the view was not found clean
the error */
sql->errstr[0] = '\0';
- const char *query =
+ const char query[] =
"CREATE VIEW sys.describe_accessible_tables AS\n"
" SELECT\n"
" schemas.name AS schema,\n"
@@ -5955,10 +5955,10 @@ sql_update_dec2023(Client c, mvc *sql, s
fflush(stdout);
err = SQLstatementIntern(c, query, "update", true, false, NULL);
if (err == MAL_SUCCEED) {
- query = "alter table sys.function_languages set read
only;\n";
- printf("Running database upgrade commands:\n%s\n",
query);
+ const char query2[] = "alter table
sys.function_languages set read only;\n";
+ printf("Running database upgrade commands:\n%s\n",
query2);
fflush(stdout);
- err = SQLstatementIntern(c, query, "update", true,
false, NULL);
+ err = SQLstatementIntern(c, query2, "update", true,
false, NULL);
}
}
@@ -5973,7 +5973,7 @@ sql_update_dec2023(Client c, mvc *sql, s
if ((t = mvc_bind_table(sql, s, "dump_comments")) !=
NULL)
t->system = 0;
- const char *cmds =
+ const char cmds[] =
"DROP FUNCTION IF EXISTS sys.dump_database(BOOLEAN)
CASCADE;\n"
"DROP VIEW IF EXISTS sys.dump_comments CASCADE;\n"
"DROP VIEW IF EXISTS sys.describe_comments CASCADE;\n"
@@ -6061,7 +6061,7 @@ sql_update_dec2023(Client c, mvc *sql, s
list_append(l, &t2);
list_append(l, &t2);
if (!sql_bind_func_(sql, s->base.name, "sql_datatype",
l, F_FUNC, true, true)) {
- const char *cmds =
+ const char cmds[] =
"CREATE FUNCTION sys.sql_datatype(mtype
varchar(999), digits integer, tscale integer, nameonly boolean, shortname
boolean)\n"
" RETURNS varchar(1024)\n"
"BEGIN\n"
@@ -6139,7 +6139,7 @@ sql_update_dec2023(Client c, mvc *sql, s
if (info == NULL) {
sql->session->status = 0; /* if the schema was not found clean
the error */
sql->errstr[0] = '\0';
- const char *cmds =
+ const char cmds[] =
"CREATE SCHEMA INFORMATION_SCHEMA;\n"
"COMMENT ON SCHEMA INFORMATION_SCHEMA IS 'ISO/IEC 9075-11
SQL/Schemata';\n"
"update sys.schemas set system = true where name =
'information_schema';\n"
@@ -6547,7 +6547,7 @@ sql_update_dec2023(Client c, mvc *sql, s
if (!sql_bind_func(sql, s->base.name, "persist_unlogged", &tp, &tp,
F_UNION, true, true)) {
sql->session->status = 0;
sql->errstr[0] = '\0';
- const char *query =
+ const char query[] =
"CREATE FUNCTION sys.persist_unlogged(sname STRING,
tname STRING)\n"
"RETURNS TABLE(\"table\" STRING, \"table_id\" INT,
\"rowcount\" BIGINT)\n"
"EXTERNAL NAME sql.persist_unlogged;\n"
@@ -6579,7 +6579,7 @@ sql_update_dec2023_sp1(Client c, mvc *sq
b = BATdescriptor(output->cols[0].b);
if (b) {
if (BATcount(b) > 0) {
- const char *query = "drop function
json.isvalid(json);\n"
+ const char query[] = "drop function
json.isvalid(json);\n"
"create function json.isvalid(js json)\n"
"returns bool begin return case when js is NULL
then NULL else true end; end;\n"
"GRANT EXECUTE ON FUNCTION json.isvalid(json)
TO PUBLIC;\n"
@@ -6642,8 +6642,6 @@ sql_update_default(Client c, mvc *sql, s
res_table *output;
BAT *b;
- (void) sql;
- (void) s;
err = SQLstatementIntern(c, "SELECT id FROM sys.functions WHERE
schema_id = 2000 AND name = 'describe_type' AND func LIKE '%sql_datatype%';\n",
"update", true, false, &output);
if (err)
return err;
@@ -6652,7 +6650,7 @@ sql_update_default(Client c, mvc *sql, s
if (BATcount(b) == 0) {
/* do update */
sql_table *t;
- const char *query =
+ const char query[] =
"update sys._columns set type_digits = 7 where
type = 'tinyint' and type_digits <> 7;\n"
"update sys._columns set type_digits = 15 where
type = 'smallint' and type_digits <> 15;\n"
"update sys._columns set type_digits = 31 where
type = 'int' and type_digits <> 31;\n"
@@ -7063,6 +7061,34 @@ sql_update_default(Client c, mvc *sql, s
BBPunfix(b->batCacheid);
}
res_table_destroy(output);
+ allocator *old_sa = sql->sa;
+ if ((sql->sa = sa_create(sql->pa)) != NULL) {
+ list *l;
+ if ((l = sa_list(sql->sa)) != NULL) {
+ sql_subtype tp1, tp2;
+ sql_find_subtype(&tp1, "date", 0, 0);
+ list_append(l, &tp1);
+ list_append(l, &tp1);
+ sql_find_subtype(&tp2, "day_interval", 0, 0);
+ list_append(l, &tp2);
+ if (!sql_bind_func_(sql, s->base.name,
"generate_series", l, F_UNION, true, true)) {
+ const char query[] = "create function
sys.generate_series(first date, \"limit\" date, stepsize interval month)\n"
+ "returns table (value date)\n"
+ "external name generator.series;\n"
+ "create function
sys.generate_series(first date, \"limit\" date, stepsize interval day)\n"
+ "returns table (value date)\n"
+ "external name generator.series;\n"
+ "update sys.functions set system = true
where system <> true and name = 'generate_series' and schema_id = 2000;\n";
+ sql->session->status = 0;
+ sql->errstr[0] = '\0';
+ printf("Running database upgrade
commands:\n%s\n", query);
+ fflush(stdout);
+ err = SQLstatementIntern(c, query, "update",
true, false, NULL);
+ }
+ }
+ sa_destroy(sql->sa);
+ }
+ sql->sa = old_sa;
return err;
}
diff --git
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
---
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -993,3 +993,12 @@ GRANT SELECT ON sys.describe_functions T
update sys.functions set system = true where not system and schema_id = 2000
and name in ('dump_database', 'describe_columns', 'describe_type');
update sys._tables set system = true where not system and schema_id = 2000 and
name in ('dump_comments', 'dump_tables', 'dump_functions',
'dump_function_grants', 'describe_functions', 'describe_privileges',
'describe_comments', 'fully_qualified_functions', 'describe_tables');
+Running database upgrade commands:
+create function sys.generate_series(first date, "limit" date, stepsize
interval month)
+returns table (value date)
+external name generator.series;
+create function sys.generate_series(first date, "limit" date, stepsize
interval day)
+returns table (value date)
+external name generator.series;
+update sys.functions set system = true where system <> true and name =
'generate_series' and schema_id = 2000;
+
diff --git a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
@@ -981,3 +981,12 @@ GRANT SELECT ON sys.describe_functions T
update sys.functions set system = true where not system and schema_id = 2000
and name in ('dump_database', 'describe_columns', 'describe_type');
update sys._tables set system = true where not system and schema_id = 2000 and
name in ('dump_comments', 'dump_tables', 'dump_functions',
'dump_function_grants', 'describe_functions', 'describe_privileges',
'describe_comments', 'fully_qualified_functions', 'describe_tables');
+Running database upgrade commands:
+create function sys.generate_series(first date, "limit" date, stepsize
interval month)
+returns table (value date)
+external name generator.series;
+create function sys.generate_series(first date, "limit" date, stepsize
interval day)
+returns table (value date)
+external name generator.series;
+update sys.functions set system = true where system <> true and name =
'generate_series' and schema_id = 2000;
+
diff --git
a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
@@ -1062,3 +1062,12 @@ GRANT SELECT ON sys.describe_functions T
update sys.functions set system = true where not system and schema_id = 2000
and name in ('dump_database', 'describe_columns', 'describe_type');
update sys._tables set system = true where not system and schema_id = 2000 and
name in ('dump_comments', 'dump_tables', 'dump_functions',
'dump_function_grants', 'describe_functions', 'describe_privileges',
'describe_comments', 'fully_qualified_functions', 'describe_tables');
+Running database upgrade commands:
+create function sys.generate_series(first date, "limit" date, stepsize
interval month)
+returns table (value date)
+external name generator.series;
+create function sys.generate_series(first date, "limit" date, stepsize
interval day)
+returns table (value date)
+external name generator.series;
+update sys.functions set system = true where system <> true and name =
'generate_series' and schema_id = 2000;
+
diff --git
a/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
@@ -993,3 +993,12 @@ GRANT SELECT ON sys.describe_functions T
update sys.functions set system = true where not system and schema_id = 2000
and name in ('dump_database', 'describe_columns', 'describe_type');
update sys._tables set system = true where not system and schema_id = 2000 and
name in ('dump_comments', 'dump_tables', 'dump_functions',
'dump_function_grants', 'describe_functions', 'describe_privileges',
'describe_comments', 'fully_qualified_functions', 'describe_tables');
+Running database upgrade commands:
+create function sys.generate_series(first date, "limit" date, stepsize
interval month)
+returns table (value date)
+external name generator.series;
+create function sys.generate_series(first date, "limit" date, stepsize
interval day)
+returns table (value date)
+external name generator.series;
+update sys.functions set system = true where system <> true and name =
'generate_series' and schema_id = 2000;
+
diff --git a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
--- a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
@@ -981,3 +981,12 @@ GRANT SELECT ON sys.describe_functions T
update sys.functions set system = true where not system and schema_id = 2000
and name in ('dump_database', 'describe_columns', 'describe_type');
update sys._tables set system = true where not system and schema_id = 2000 and
name in ('dump_comments', 'dump_tables', 'dump_functions',
'dump_function_grants', 'describe_functions', 'describe_privileges',
'describe_comments', 'fully_qualified_functions', 'describe_tables');
+Running database upgrade commands:
+create function sys.generate_series(first date, "limit" date, stepsize
interval month)
+returns table (value date)
+external name generator.series;
+create function sys.generate_series(first date, "limit" date, stepsize
interval day)
+returns table (value date)
+external name generator.series;
+update sys.functions set system = true where system <> true and name =
'generate_series' and schema_id = 2000;
+
diff --git a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
@@ -1062,3 +1062,12 @@ GRANT SELECT ON sys.describe_functions T
update sys.functions set system = true where not system and schema_id = 2000
and name in ('dump_database', 'describe_columns', 'describe_type');
update sys._tables set system = true where not system and schema_id = 2000 and
name in ('dump_comments', 'dump_tables', 'dump_functions',
'dump_function_grants', 'describe_functions', 'describe_privileges',
'describe_comments', 'fully_qualified_functions', 'describe_tables');
+Running database upgrade commands:
+create function sys.generate_series(first date, "limit" date, stepsize
interval month)
+returns table (value date)
+external name generator.series;
+create function sys.generate_series(first date, "limit" date, stepsize
interval day)
+returns table (value date)
+external name generator.series;
+update sys.functions set system = true where system <> true and name =
'generate_series' and schema_id = 2000;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]