Changeset: 37cd06388c46 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/37cd06388c46
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
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
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:
Implemented upgrade code for recent changes.
diffs (truncated from 3145 to 300 lines):
diff --git a/clients/Tests/MAL-signatures-hge.test
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -50965,7 +50965,7 @@ TXTSIMmaxlevenshtein;
Levenshtein distance with variable costs but up to a MAX
txtsim
maxlevenshteinjoin
-command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit, X_7:any) (X_8:bat[:oid],
X_9:bat[:oid])
+command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:int],
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid],
X_9:bat[:oid])
TXTSIMmaxlevenshteinjoin;
(empty)
txtsim
diff --git a/clients/Tests/MAL-signatures.test
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -39290,7 +39290,7 @@ TXTSIMmaxlevenshtein;
Levenshtein distance with variable costs but up to a MAX
txtsim
maxlevenshteinjoin
-command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit, X_7:any) (X_8:bat[:oid],
X_9:bat[:oid])
+command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:int],
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid],
X_9:bat[:oid])
TXTSIMmaxlevenshteinjoin;
(empty)
txtsim
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
@@ -5485,16 +5485,117 @@ sql_update_default(Client c, mvc *sql, s
the query in bound to. */
sql_subtype t1, t2;
sql_find_subtype(&t1, "bigint", 64, 0);
- sql_find_subtype(&t2, "clob", 0, 0);
+ sql_find_subtype(&t2, "varchar", 0, 0);
if (!sql_bind_func(sql, "sys", "pause", &t1, &t2, F_PROC, true)) {
sql->session->status = 0; /* if the function was not found
clean the error */
sql->errstr[0] = '\0';
+ 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"
+ "create procedure sys.stop(tag bigint, username string)
external name sysmon.stop;\n"
+ "update sys.functions set system = true where system <>
true and mod = 'sysmon' and name in ('stop', 'pause', 'resume', 'queue');\n";
+ printf("Running database upgrade commands:\n%s\n", query);
+ err = SQLstatementIntern(c, query, "update", true, false, NULL);
+ }
+
+ /* sys.settimeout and sys.setsession where removed */
+ if (sql_bind_func(sql, "sys", "settimeout", &t1, NULL, F_PROC, true)) {
+ 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";
+ printf("Running database upgrade commands:\n%s\n", query);
+ err = SQLstatementIntern(c, query, "update", true, false, NULL);
+ }
+ sql->session->status = 0; /* if the function was not found clean the
error */
+ sql->errstr[0] = '\0';
+
+ if (!sql_bind_func(sql, "sys", "levenshtein", &t2, &t2, F_FUNC, true)) {
+ sql->session->status = 0; /* if the function was not found
clean the error */
+ sql->errstr[0] = '\0';
pos = snprintf(buf, bufsize,
- "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"
- "create procedure sys.stop(tag
bigint, username string) external name sysmon.stop;\n"
- "update sys.functions set system =
true where system <> true and mod = 'sysmon' and name in ('stop', 'pause',
'resume', 'queue');\n");
+ "create function sys.levenshtein(x
string, y string)\n"
+ "returns int external name
txtsim.levenshtein;\n"
+ "grant execute on function
levenshtein(string, string) to public;\n"
+ "create function sys.levenshtein(x
string, y string, insdel int, rep int)\n"
+ "returns int external name
txtsim.levenshtein;\n"
+ "grant execute on function
levenshtein(string, string, int, int) to public;\n"
+ "create function sys.levenshtein(x
string, y string, insdel int, rep int, trans int)\n"
+ "returns int external name
txtsim.levenshtein;\n"
+ "grant execute on function
levenshtein(string, string, int, int, int) to public;\n"
+ "create filter function
sys.maxlevenshtein(x string, y string, k int)\n"
+ "external name
txtsim.\"maxlevenshtein\";\n"
+ "create filter function
sys.maxlevenshtein(x string, y string, k int, insdel int, rep int)\n"
+ "external name
txtsim.\"maxlevenshtein\";\n"
+ "create filter function
minjarowinkler(x string, y string, threshold double)\n"
+ "external name
txtsim.\"minjarowinkler\";\n"
+ "create function
sys.dameraulevenshtein(x string, y string)\n"
+ "returns int external name
txtsim.dameraulevenshtein;\n"
+ "grant execute on function
dameraulevenshtein(string, string) to public;\n"
+ "create function
sys.dameraulevenshtein(x string, y string, insdel int, rep int, trans int)\n"
+ "returns int external name
txtsim.dameraulevenshtein;\n"
+ "grant execute on function
dameraulevenshtein(string, string, int, int, int) to public;\n"
+ "create function sys.editdistance(x
string, y string)\n"
+ "returns int external name
txtsim.editdistance;\n"
+ "grant execute on function
editdistance(string, string) to public;\n"
+ "create function sys.editdistance2(x
string, y string)\n"
+ "returns int external name
txtsim.editdistance2;\n"
+ "grant execute on function
editdistance2(string, string) to public;\n"
+ "create function sys.soundex(x
string)\n"
+ "returns string external name
txtsim.soundex;\n"
+ "grant execute on function
soundex(string) to public;\n"
+ "create function sys.difference(x
string, y string)\n"
+ "returns int external name
txtsim.stringdiff;\n"
+ "grant execute on function
difference(string, string) to public;\n"
+ "create function
sys.qgramnormalize(x string)\n"
+ "returns string external name
txtsim.qgramnormalize;\n"
+ "grant execute on function
qgramnormalize(string) to public;\n"
+ "create function sys.similarity(x
string, y string)\n"
+ "returns double external name
txtsim.similarity;\n"
+ "grant execute on function
similarity(string, string) to public;\n"
+
+ "create function asciify(x string)\n"
+ "returns string external name
str.\"asciify\";\n"
+ "create function sys.startswith(x
string, y string)\n"
+ "returns boolean external name
str.\"startsWith\";\n"
+ "grant execute on function
startswith(string, string) to public;\n"
+ "create function sys.startswith(x
string, y string, icase boolean)\n"
+ "returns boolean external name
str.\"startsWith\";\n"
+ "grant execute on function
startswith(string, string, boolean) to public;\n"
+ "create filter function
sys.startswith(x string, y string)\n"
+ "external name str.\"startsWith\";\n"
+ "create filter function
sys.startswith(x string, y string, icase boolean)\n"
+ "external name str.\"startsWith\";\n"
+ "create function sys.endswith(x
string, y string)\n"
+ "returns boolean external name
str.\"endsWith\";\n"
+ "grant execute on function
endswith(string, string) to public;\n"
+ "create function sys.endswith(x
string, y string, icase boolean)\n"
+ "returns boolean external name
str.\"endsWith\";\n"
+ "grant execute on function
endswith(string, string, boolean) to public;\n"
+ "create filter function
sys.endswith(s1 string, s2 string)\n"
+ "external name str.\"endsWith\";\n"
+ "create filter function
sys.endswith(s1 string, s2 string, icase boolean)\n"
+ "external name str.\"endsWith\";\n"
+ "create function sys.contains(x
string, y string)\n"
+ "returns boolean external name
str.\"contains\";\n"
+ "grant execute on function
contains(string, string) to public;\n"
+ "create function sys.contains(x
string, y string, icase boolean)\n"
+ "returns boolean external name
str.\"contains\";\n"
+ "grant execute on function
contains(string, string, boolean) to public;\n"
+ "create filter function
sys.contains(x string, y string)\n"
+ "external name str.\"contains\";\n"
+ "create filter function
sys.contains(x string, y string, icase boolean)\n"
+ "external name str.\"contains\";\n"
+
+ "update sys.functions set system =
true where system <> true and name in ('levenshtein', 'dameraulevenshtein',
'editdistance', 'editdistance2', 'soundex', 'difference', 'qgramnormalize',
'similarity') and schema_id = 2000 and type = %d;\n"
+ "update sys.functions set system =
true where system <> true and name in ('maxlevenshtein', 'minjarowinkler') and
schema_id = 2000 and type = %d;\n"
+ "update sys.functions set system =
true where system <> true and name in ('asciify', 'startswith', 'endswith',
'contains') and schema_id = 2000 and type = %d;\n"
+ "update sys.functions set system =
true where system <> true and name in ('startswith', 'endswith', 'contains')
and schema_id = 2000 and type = %d;\n"
+
+ "delete from sys.triggers where name
= 'system_update_tables' and table_id = 2067;\n",
+ F_FUNC, F_FILT, F_FUNC, F_FILT);
+ assert(pos < bufsize);
printf("Running database upgrade commands:\n%s\n", buf);
err = SQLstatementIntern(c, buf, "update", true, false, NULL);
}
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
@@ -600,3 +600,86 @@ create procedure sys.resume(tag bigint,
create procedure sys.stop(tag bigint, username string) external name
sysmon.stop;
update sys.functions set system = true where system <> true and mod = 'sysmon'
and name in ('stop', 'pause', 'resume', 'queue');
+Running database upgrade commands:
+drop procedure sys.settimeout(bigint) cascade;
+drop procedure sys.settimeout(bigint, bigint) cascade;
+drop procedure sys.setsession(bigint) cascade;
+
+Running database upgrade commands:
+create function sys.levenshtein(x string, y string)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int, trans
int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int, int) to public;
+create filter function sys.maxlevenshtein(x string, y string, k int)
+external name txtsim."maxlevenshtein";
+create filter function sys.maxlevenshtein(x string, y string, k int, insdel
int, rep int)
+external name txtsim."maxlevenshtein";
+create filter function minjarowinkler(x string, y string, threshold double)
+external name txtsim."minjarowinkler";
+create function sys.dameraulevenshtein(x string, y string)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string) to public;
+create function sys.dameraulevenshtein(x string, y string, insdel int, rep
int, trans int)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string, int, int, int) to
public;
+create function sys.editdistance(x string, y string)
+returns int external name txtsim.editdistance;
+grant execute on function editdistance(string, string) to public;
+create function sys.editdistance2(x string, y string)
+returns int external name txtsim.editdistance2;
+grant execute on function editdistance2(string, string) to public;
+create function sys.soundex(x string)
+returns string external name txtsim.soundex;
+grant execute on function soundex(string) to public;
+create function sys.difference(x string, y string)
+returns int external name txtsim.stringdiff;
+grant execute on function difference(string, string) to public;
+create function sys.qgramnormalize(x string)
+returns string external name txtsim.qgramnormalize;
+grant execute on function qgramnormalize(string) to public;
+create function sys.similarity(x string, y string)
+returns double external name txtsim.similarity;
+grant execute on function similarity(string, string) to public;
+create function asciify(x string)
+returns string external name str."asciify";
+create function sys.startswith(x string, y string)
+returns boolean external name str."startsWith";
+grant execute on function startswith(string, string) to public;
+create function sys.startswith(x string, y string, icase boolean)
+returns boolean external name str."startsWith";
+grant execute on function startswith(string, string, boolean) to public;
+create filter function sys.startswith(x string, y string)
+external name str."startsWith";
+create filter function sys.startswith(x string, y string, icase boolean)
+external name str."startsWith";
+create function sys.endswith(x string, y string)
+returns boolean external name str."endsWith";
+grant execute on function endswith(string, string) to public;
+create function sys.endswith(x string, y string, icase boolean)
+returns boolean external name str."endsWith";
+grant execute on function endswith(string, string, boolean) to public;
+create filter function sys.endswith(s1 string, s2 string)
+external name str."endsWith";
+create filter function sys.endswith(s1 string, s2 string, icase boolean)
+external name str."endsWith";
+create function sys.contains(x string, y string)
+returns boolean external name str."contains";
+grant execute on function contains(string, string) to public;
+create function sys.contains(x string, y string, icase boolean)
+returns boolean external name str."contains";
+grant execute on function contains(string, string, boolean) to public;
+create filter function sys.contains(x string, y string)
+external name str."contains";
+create filter function sys.contains(x string, y string, icase boolean)
+external name str."contains";
+update sys.functions set system = true where system <> true and name in
('levenshtein', 'dameraulevenshtein', 'editdistance', 'editdistance2',
'soundex', 'difference', 'qgramnormalize', 'similarity') and schema_id = 2000
and type = 1;
+update sys.functions set system = true where system <> true and name in
('maxlevenshtein', 'minjarowinkler') and schema_id = 2000 and type = 4;
+update sys.functions set system = true where system <> true and name in
('asciify', 'startswith', 'endswith', 'contains') and schema_id = 2000 and type
= 1;
+update sys.functions set system = true where system <> true and name in
('startswith', 'endswith', 'contains') and schema_id = 2000 and type = 4;
+delete from sys.triggers where name = 'system_update_tables' and table_id =
2067;
+
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
@@ -600,3 +600,86 @@ create procedure sys.resume(tag bigint,
create procedure sys.stop(tag bigint, username string) external name
sysmon.stop;
update sys.functions set system = true where system <> true and mod = 'sysmon'
and name in ('stop', 'pause', 'resume', 'queue');
+Running database upgrade commands:
+drop procedure sys.settimeout(bigint) cascade;
+drop procedure sys.settimeout(bigint, bigint) cascade;
+drop procedure sys.setsession(bigint) cascade;
+
+Running database upgrade commands:
+create function sys.levenshtein(x string, y string)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int, trans
int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int, int) to public;
+create filter function sys.maxlevenshtein(x string, y string, k int)
+external name txtsim."maxlevenshtein";
+create filter function sys.maxlevenshtein(x string, y string, k int, insdel
int, rep int)
+external name txtsim."maxlevenshtein";
+create filter function minjarowinkler(x string, y string, threshold double)
+external name txtsim."minjarowinkler";
+create function sys.dameraulevenshtein(x string, y string)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string) to public;
+create function sys.dameraulevenshtein(x string, y string, insdel int, rep
int, trans int)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string, int, int, int) to
public;
+create function sys.editdistance(x string, y string)
+returns int external name txtsim.editdistance;
+grant execute on function editdistance(string, string) to public;
+create function sys.editdistance2(x string, y string)
+returns int external name txtsim.editdistance2;
+grant execute on function editdistance2(string, string) to public;
+create function sys.soundex(x string)
+returns string external name txtsim.soundex;
+grant execute on function soundex(string) to public;
+create function sys.difference(x string, y string)
+returns int external name txtsim.stringdiff;
+grant execute on function difference(string, string) to public;
+create function sys.qgramnormalize(x string)
+returns string external name txtsim.qgramnormalize;
+grant execute on function qgramnormalize(string) to public;
+create function sys.similarity(x string, y string)
+returns double external name txtsim.similarity;
+grant execute on function similarity(string, string) to public;
+create function asciify(x string)
+returns string external name str."asciify";
+create function sys.startswith(x string, y string)
+returns boolean external name str."startsWith";
+grant execute on function startswith(string, string) to public;
+create function sys.startswith(x string, y string, icase boolean)
+returns boolean external name str."startsWith";
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]