Changeset: 41f6cf73a38a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=41f6cf73a38a
Modified Files:
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_upgrades.c
Branch: unlock
Log Message:
merged
diffs (truncated from 3147 to 300 lines):
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1058,7 +1058,7 @@ GDKreset(int status)
for (Thread t = GDKthreads; t < GDKthreads + THREADS; t++) {
MT_Id victim;
if ((victim = (MT_Id) ATOMIC_GET(&t->pid)) != 0) {
- if (victim != pid) {
+ if (pid && victim != pid) {
int e;
killed = true;
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -613,8 +613,6 @@ bat_max_hgelength(BAT *b)
res += *s++ - '0';
\
scale--;
\
}
\
- while(*s && isdigit((unsigned char) *s))
\
- s++;
\
}
\
while(*s && isspace((unsigned char) *s))
\
s++;
\
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
@@ -1935,7 +1935,7 @@ sql_update_jun2020_sp1_hugeint(Client c,
#endif
static str
-sql_update_default_lidar(Client c)
+sql_update_oscar_lidar(Client c)
{
char *query =
"drop procedure sys.lidarattach(string);\n"
@@ -1946,7 +1946,7 @@ sql_update_default_lidar(Client c)
}
static str
-sql_update_default(Client c, mvc *sql, const char *prev_schema, bool
*systabfixed)
+sql_update_oscar(Client c, mvc *sql, const char *prev_schema, bool
*systabfixed)
{
size_t bufsize = 8192, pos = 0;
char *err = NULL, *buf = GDKmalloc(bufsize);
@@ -2047,13 +2047,20 @@ sql_update_default(Client c, mvc *sql, c
"external name
\"sql\".\"sql_variables\";\n"
"grant execute on function
\"sys\".\"var\" to public;\n");
+ pos += snprintf(buf + pos, bufsize - pos,
+ "create procedure
sys.hot_snapshot(tarfile string, onserver bool)\n"
+ "external name sql.hot_snapshot;\n"
+ "update sys.functions set system = true
where system <> true and schema_id = (select id from sys.schemas where name =
'sys')"
+ " and name in ('hot_snapshot') and type
= %d;\n",
+ (int) F_PROC);
/* .snapshot user */
pos += snprintf(buf + pos, bufsize - pos,
- "create user \".snapshot\""
- " with encrypted password
'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'"
- " name 'Snapshot User'"
+ "create user \".snapshot\"\n"
+ " with encrypted password
'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'\n"
+ " name 'Snapshot User'\n"
" schema sys;\n"
- "grant execute on procedure sys.hot_snapshot to
\".snapshot\";\n"
+ "grant execute on procedure
sys.hot_snapshot(string) to \".snapshot\";\n"
+ "grant execute on procedure
sys.hot_snapshot(string, bool) to \".snapshot\";\n"
);
/* additional snapshot function */
@@ -2085,13 +2092,6 @@ sql_update_default(Client c, mvc *sql, c
/* Move sys.degrees and sys.radians to sql_types.c
definitions (I did this at the bat_logger) Remove the obsolete entries at
privileges table */
pos += snprintf(buf + pos, bufsize - pos,
"delete from privileges where obj_id in
(select obj_id from privileges left join functions on privileges.obj_id =
functions.id where functions.id is null and privileges.obj_id not in ((SELECT
tables.id from tables), 0));\n");
- /* Remove sql_add and sql_sub between interval and
numeric types */
- pos += snprintf(buf + pos, bufsize - pos,
- "delete from functions where name in
('sql_sub','sql_add') and func in ('+','-') and id in (select func_id from args
where name = 'res_0' and type in ('sec_interval','month_interval'));\n");
- /* Remove arguments with no function correspondent */
- pos += snprintf(buf + pos, bufsize - pos,
- "delete from args where id in (select
args.id from args left join functions on args.func_id = functions.id where
functions.id is null);\n");
-
pos += snprintf(buf + pos, bufsize - pos,
"UPDATE sys.functions set semantics = false
WHERE (name, func) IN (VALUES \n"
"('length', 'nitems'),\n"
@@ -2216,7 +2216,8 @@ sql_update_default(Client c, mvc *sql, c
"('octet_length', 'nbytes'),\n"
"('soundex', 'soundex'),\n"
"('qgramnormalize', 'qgramnormalize')\n"
- ");\n");
+ ") and type <> %d;\n",
+ F_ANALYTIC);
pos += snprintf(buf + pos, bufsize - pos, "set schema
\"%s\";\n", prev_schema);
assert(pos < bufsize);
@@ -2410,14 +2411,14 @@ SQLupgrades(Client c, mvc *m)
sql_find_subtype(&tp, "varchar", 0, 0);
if (sql_bind_func(m->sa, s, "lidarattach", &tp, NULL, F_PROC) &&
- (err = sql_update_default_lidar(c)) != NULL) {
+ (err = sql_update_oscar_lidar(c)) != NULL) {
TRC_CRITICAL(SQL_PARSER, "%s\n", err);
freeException(err);
GDKfree(prev_schema);
return -1;
}
- if ((err = sql_update_default(c, m, prev_schema, &systabfixed)) !=
NULL) {
+ if ((err = sql_update_oscar(c, m, prev_schema, &systabfixed)) != NULL) {
TRC_CRITICAL(SQL_PARSER, "%s\n", err);
freeException(err);
GDKfree(prev_schema);
diff --git
a/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.sql
b/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.sql
--- a/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.sql
+++ b/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.sql
@@ -1,6 +1,6 @@
start transaction;
create table tmpcopy(i integer, d decimal(8,3));
-copy 10 records into tmpcopy from stdin delimiters ',','\n' best effort;
+copy 10 records into tmpcopy from stdin delimiters ',','\n';
0,1.2
0,2.34
0,3.456
@@ -12,4 +12,7 @@ 0,5
0,67
0,890
select * from tmpcopy;
+-- and too many digits (should fail)
+copy 1 records into tmpcopy from stdin delimiters ',','\n';
+0,12.3456
rollback;
diff --git
a/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.stable.err
b/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.stable.err
--- a/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.stable.err
+++ b/sql/test/BugTracker-2020/Tests/copy-decimal-with-space.Bug-6917.stable.err
@@ -5,6 +5,11 @@ stderr of test 'copy-decimal-with-space.
# 09:14:25 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-97497" "--port=32609"
# 09:14:25 >
+MAPI = (monetdb) /var/tmp/mtest-1786006/.s.monetdb.39956
+QUERY = copy 1 records into tmpcopy from stdin delimiters ',','\n';
+ 0,12.3456
+ERROR = !Failed to import table 'tmpcopy', line 1 field d 'decimal(8,3)'
expected in '12.3456'
+CODE = 42000
# 09:14:25 >
# 09:14:25 > "Done."
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -5769,20 +5769,145 @@ update sys._tables set system = true whe
drop function "sys"."var"();
create function "sys"."var"() returns table("schema" string, "name" string,
"type" string, "value" string) external name "sql"."sql_variables";
grant execute on function "sys"."var" to public;
-create user ".snapshot" with encrypted password
'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
name 'Snapshot User' schema sys;grant execute on procedure sys.hot_snapshot to
".snapshot";update sys.functions set system = true, language = 2, side_effect =
false where name = 'var' and schema_id = (select id from sys.schemas where name
= 'sys') and type = 5;
+create procedure sys.hot_snapshot(tarfile string, onserver bool)
+external name sql.hot_snapshot;
+update sys.functions set system = true where system <> true and schema_id =
(select id from sys.schemas where name = 'sys') and name in ('hot_snapshot')
and type = 2;
+create user ".snapshot"
+ with encrypted password
'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ name 'Snapshot User'
+ schema sys;
+grant execute on procedure sys.hot_snapshot(string) to ".snapshot";
+grant execute on procedure sys.hot_snapshot(string, bool) to ".snapshot";
+update sys.functions set system = true, language = 2, side_effect = false
where name = 'var' and schema_id = (select id from sys.schemas where name =
'sys') and type = 5;
update sys.args set type = 'char' where func_id = (select id from
sys.functions where name = 'var' and schema_id = (select id from sys.schemas
where name = 'sys') and type = 5) and type = 'clob';
update sys.privileges set grantor = 0 where obj_id = (select id from
sys.functions where name = 'var' and schema_id = (select id from sys.schemas
where name = 'sys') and type = 5);
DROP FUNCTION "sys"."getcontent"(url);
DROP AGGREGATE "json"."output"(json);
delete from privileges where obj_id in (select obj_id from privileges left
join functions on privileges.obj_id = functions.id where functions.id is null
and privileges.obj_id not in ((SELECT tables.id from tables), 0));
-delete from functions where name in ('sql_sub','sql_add') and func in
('+','-') and id in (select func_id from args where name = 'res_0' and type in
('sec_interval','month_interval'));
-delete from args where id in (select args.id from args left join functions on
args.func_id = functions.id where functions.id is null);
-update sys.functions set semantics = false where type <> 6 and ((func not
ilike '%CREATE FUNCTION%' and name in
('length','octet_length','>','>=','<','<=','min','max','sql_min','sql_max','least','greatest','sum','prod','mod','and',
-'xor','not','sql_mul','sql_div','sql_sub','sql_add','bit_and','bit_or','bit_xor','bit_not','left_shift','right_shift','abs','sign','scale_up','scale_down','round','power','floor','ceil','ceiling','sin','cos','tan','asin',
-'acos','atan','sinh','cot','cosh','tanh','sqrt','exp','log','ln','log10','log2','pi','curdate','current_date','curtime','current_time','current_timestamp','localtime','localtimestamp','local_timezone','century','decade','year',
-'quarter','month','day','dayofyear','weekofyear','dayofweek','dayofmonth','week','hour','minute','second','strings','locate','charindex','splitpart','substring','substr','truncate','concat','ascii','code','right','left','upper',
-'ucase','lower','lcase','trim','ltrim','rtrim','lpad','rpad','insert','replace','repeat','space','char_length','character_length','soundex','qgramnormalize','degrees','radians'))
or
-(system = true and name in
('like','ilike','str_to_date','date_to_str','str_to_time','time_to_str','str_to_timestamp','timestamp_to_str','date_trunc','epoch','reverse')));
+UPDATE sys.functions set semantics = false WHERE (name, func) IN (VALUES
+('length', 'nitems'),
+('octet_length', 'nitems'),
+('>', '>'),
+('>=', '>='),
+('<', '<'),
+('<=', '<='),
+('min', 'min'),
+('max', 'max'),
+('sql_min', 'min'),
+('sql_max', 'max'),
+('least', 'min_no_nil'),
+('greatest', 'max_no_nil'),
+('sum', 'sum'),
+('prod', 'prod'),
+('mod', '%'),
+('and', 'and'),
+('xor', 'xor'),
+('not', 'not'),
+('sql_mul', '*'),
+('sql_div', '/'),
+('sql_sub', '-'),
+('sql_add', '+'),
+('bit_and', 'and'),
+('bit_or', 'or'),
+('bit_xor', 'xor'),
+('bit_not', 'not'),
+('left_shift', '<<'),
+('right_shift', '>>'),
+('abs', 'abs'),
+('sign', 'sign'),
+('scale_up', '*'),
+('scale_down', 'dec_round'),
+('round', 'round'),
+('power', 'pow'),
+('floor', 'floor'),
+('ceil', 'ceil'),
+('ceiling', 'ceil'),
+('sin', 'sin'),
+('cos', 'cos'),
+('tan', 'tan'),
+('asin', 'asin'),
+('acos', 'acos'),
+('atan', 'atan'),
+('atan', 'atan2'),
+('sinh', 'sinh'),
+('cot', 'cot'),
+('cosh', 'cosh'),
+('tanh', 'tanh'),
+('sqrt', 'sqrt'),
+('exp', 'exp'),
+('log', 'log'),
+('ln', 'log'),
+('log10', 'log10'),
+('log2', 'log2'),
+('degrees', 'degrees'),
+('radians', 'radians'),
+('pi', 'pi'),
+('curdate', 'current_date'),
+('current_date', 'current_date'),
+('curtime', 'current_time'),
+('current_time', 'current_time'),
+('current_timestamp', 'current_timestamp'),
+('localtime', 'current_time'),
+('localtimestamp', 'current_timestamp'),
+('sql_sub', 'diff'),
+('sql_sub', 'date_sub_msec_interval'),
+('sql_sub', 'date_sub_month_interval'),
+('sql_sub', 'time_sub_msec_interval'),
+('sql_sub', 'timestamp_sub_msec_interval'),
+('sql_sub', 'timestamp_sub_month_interval'),
+('sql_add', 'date_add_msec_interval'),
+('sql_add', 'addmonths'),
+('sql_add', 'timestamp_add_msec_interval'),
+('sql_add', 'timestamp_add_month_interval'),
+('sql_add', 'time_add_msec_interval'),
+('local_timezone', 'local_timezone'),
+('century', 'century'),
+('decade', 'decade'),
+('year', 'year'),
+('quarter', 'quarter'),
+('month', 'month'),
+('day', 'day'),
+('dayofyear', 'dayofyear'),
+('weekofyear', 'weekofyear'),
+('dayofweek', 'dayofweek'),
+('dayofmonth', 'day'),
+('week', 'weekofyear'),
+('hour', 'hours'),
+('minute', 'minutes'),
+('second', 'sql_seconds'),
+('second', 'seconds'),
+('strings', 'strings'),
+('locate', 'locate'),
+('charindex', 'locate'),
+('splitpart', 'splitpart'),
+('substring', 'substring'),
+('substr', 'substring'),
+('truncate', 'stringleft'),
+('concat', '+'),
+('ascii', 'ascii'),
+('code', 'unicode'),
+('length', 'length'),
+('right', 'stringright'),
+('left', 'stringleft'),
+('upper', 'toUpper'),
+('ucase', 'toUpper'),
+('lower', 'toLower'),
+('lcase', 'toLower'),
+('trim', 'trim'),
+('ltrim', 'ltrim'),
+('rtrim', 'rtrim'),
+('lpad', 'lpad'),
+('rpad', 'rpad'),
+('insert', 'insert'),
+('replace', 'replace'),
+('repeat', 'repeat'),
+('space', 'space'),
+('char_length', 'length'),
+('character_length', 'length'),
+('octet_length', 'nbytes'),
+('soundex', 'soundex'),
+('qgramnormalize', 'qgramnormalize')
+) and type <> 6;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list