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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list