Changeset: 605aa8ed2bab for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=605aa8ed2bab Modified Files: sql/server/rel_select.c sql/test/SQLancer/Tests/sqlancer09.stable.err sql/test/SQLancer/Tests/sqlancer09.stable.out Branch: Oct2020 Log Message:
Set the underlying group by relation as processed when the parsing of a single query finishes diffs (85 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -5322,21 +5322,18 @@ static sql_rel* rel_having_limits_nodes(sql_query *query, sql_rel *rel, SelectNode *sn, exp_kind ek, int group_totals) { mvc *sql = query->sql; + sql_rel *inner = NULL; + int single_value = 1; + + if (is_project(rel->op) && rel->l) { + inner = rel->l; + single_value = 0; + } if (sn->having) { - sql_rel *inner = NULL; - int single_value = 1; - - if (is_project(rel->op) && rel->l) { - inner = rel->l; - single_value = 0; - } - if (inner && is_groupby(inner->op)) set_processed(inner); - inner = rel_logical_exp(query, inner, sn->having, sql_having | group_totals); - - if (!inner) + if (!(inner = rel_logical_exp(query, inner, sn->having, sql_having | group_totals))) return NULL; if (inner->exps && exps_card(inner->exps) > CARD_AGGR) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: cannot compare sets with values, probably an aggregate function missing"); @@ -5419,6 +5416,9 @@ rel_having_limits_nodes(sql_query *query rel = rel_sample(sql->sa, rel, exps); } + /* after parsing the current query, set the group by relation as processed */ + if (!sn->having && inner && is_groupby(inner->op)) + set_processed(inner); if (rel) set_processed(rel); return rel; diff --git a/sql/test/SQLancer/Tests/sqlancer09.stable.err b/sql/test/SQLancer/Tests/sqlancer09.stable.err --- a/sql/test/SQLancer/Tests/sqlancer09.stable.err +++ b/sql/test/SQLancer/Tests/sqlancer09.stable.err @@ -48,6 +48,14 @@ QUERY = update t2 set c1 = 0.01242740338 (coalesce(-1053775800, 991217471)) and (((0.6974006550632457)+(1832026960))); ERROR = !division by zero. CODE = 22012 +MAPI = (monetdb) /var/tmp/mtest-125379/.s.monetdb.32501 +QUERY = select all v0.vc2, greatest(min(all least(-266013300, 864326131)), -1183805674), greatest(-544857133, + (v0.vc2)) from v0, v1 + inner join (values (+ (88)), (greatest(0.8732546822607857, greatest(1933292715, -525885982))), (case when (-1466474216) in + (-1504372996, 417052418, 94) then least(28288, 1447812316) when cast(r'' as boolean) then "second"(time '14:18:59') else + ((-730700220)-(929722313)) end)) as sub0 on true natural join (select distinct v0.vc0 from v1, v0 where ((((v0.vc1)and(v0.vc1))) + or(v0.vc1)) group by v0.vc1) as sub1 where (v0.vc0) in (0.06683239) group by least(-1913343924, 10622), +ERROR = !overflow in conversion of 220424338 to sht. +CODE = 22003 # 14:35:03 > # 14:35:03 > "Done." diff --git a/sql/test/SQLancer/Tests/sqlancer09.stable.out b/sql/test/SQLancer/Tests/sqlancer09.stable.out --- a/sql/test/SQLancer/Tests/sqlancer09.stable.out +++ b/sql/test/SQLancer/Tests/sqlancer09.stable.out @@ -391,6 +391,20 @@ stdout of test 'sqlancer09` in directory % %3 # name % tinyint # type % 1 # length +#START TRANSACTION; +#create or replace view v0(vc0, vc1, vc2) as (values (3, true, 0.3)); +#create or replace view v1(vc0, vc1) as (select 0.80, 'a'); +#select 1 from v0, v1 +#inner join (values (88), (3), (59)) as sub0 on true natural join +#(select distinct v0.vc0 from v1, v0 group by v0.vc1) as sub1 +#where v0.vc0 = 0.06683239; +% .%23 # table_name +% %23 # name +% tinyint # type +% 1 # length +#create or replace view v0(vc0, vc1, vc2) as (values (nullif(cast(220424338 as smallint), case 0.04487378302689426501359548637992702424526214599609375 when 126710153 then 0.6929207132873739 when 26968 then 26968.0 when 1679982115 then 29 else 0.8204445662571608 end), cast(sql_min(r'', r'#Ts9.H') as boolean), 0.45182237213592768565462165497592650353908538818359375)); +#create or replace view v1(vc0, vc1) as (select round(0.80863825841427316998277774473535828292369842529296875, 0.6571010204254646), r'䝀i8jPo' where not (false)); +#ROLLBACK; # 14:35:03 > # 14:35:03 > "Done." _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list