You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sql>create table foo (a smallint);
operation successful (18.292ms)
sql>select count(y),sum(z) from (select '',false,a=200 from foo union all select '',null,a=200 from foo) as t(x,y,z) group by x;
b and g must be aligned
sql>plan select count(y),sum(z) from (select '',false,a=200 from foo union all select '',null,a=200 from foo) as t(x,y,z) group by x;
+-----------------------------------------------------------------------------+
| rel |
+=============================================================================+
| project ( |
| | group by ( |
| | | union ( |
| | | | group by ( |
| | | | | project ( |
| | | | | | project ( |
| | | | | | | table(sys.foo) [ foo.a ] COUNT |
| | | | | | ) [ char "" as L1.L1, boolean "false" as L2.L2, sys.=(foo.a, smal |
: lint "200") as L5.L5 ] :
| | | | | ) [ L1.L1 as t.x, L2.L2 as t.y, L5.L5 as t.z ] |
| | | | ) [ t.x ] [ t.x, sys.count no nil (t.y) as L7.L7, sys.sum no nil (tin |
: yint[t.z] as t.z) as L10.L10 ], :
| | | | group by ( |
| | | | | project ( |
| | | | | | project ( |
| | | | | | | table(sys.foo) [ foo.a ] COUNT |
| | | | | | ) [ char "" as L3.L3, any "NULL" as L4.L4, sys.=(foo.a, smallint |
: "200") as L6.L6 ] :
| | | | | ) [ L3.L3 as t.x, boolean[L4.L4] as t.y, L6.L6 as t.z ] |
| | | | ) [ t.x ] [ t.x, sys.count no nil (t.y) as L7.L7, sys.sum no nil (tin |
: yint[t.z] as t.z) as L10.L10 ] :
| | | ) [ t.x, L7.L7, L10.L10 ] |
| | ) [ t.x ] [ t.x, sys.sum no nil (L7.L7) as L7.L7, sys.sum no nil (L10.L10 |
: ) as L10.L10 ] :
| ) [ L7 as L7.L7, L10 as L10.L10 ] |
+-----------------------------------------------------------------------------+
20 tuples (1.286ms)
Date: 2015-08-12 17:44:10 +0200
From: Richard Hughes <<richard.monetdb>>
To: SQL devs <>
Version: 11.21.1 (Jul2015)
CC: @njnes
Last updated: 2015-08-28 13:41:23 +0200
Comment 21132
Date: 2015-08-12 17:44:10 +0200
From: Richard Hughes <<richard.monetdb>>
Build is Jul2015 8b38c01061c5
sql>create table foo (a smallint);
operation successful (18.292ms)
sql>select count(y),sum(z) from (select '',false,a=200 from foo union all select '',null,a=200 from foo) as t(x,y,z) group by x;
b and g must be aligned
sql>plan select count(y),sum(z) from (select '',false,a=200 from foo union all select '',null,a=200 from foo) as t(x,y,z) group by x;
+-----------------------------------------------------------------------------+
| rel |
+=============================================================================+
| project ( |
| | group by ( |
| | | union ( |
| | | | group by ( |
| | | | | project ( |
| | | | | | project ( |
| | | | | | | table(sys.foo) [ foo.a ] COUNT |
| | | | | | ) [ char "" as L1.L1, boolean "false" as L2.L2, sys.=(foo.a, smal |
: lint "200") as L5.L5 ] :
| | | | | ) [ L1.L1 as t.x, L2.L2 as t.y, L5.L5 as t.z ] |
| | | | ) [ t.x ] [ t.x, sys.count no nil (t.y) as L7.L7, sys.sum no nil (tin |
: yint[t.z] as t.z) as L10.L10 ], :
| | | | group by ( |
| | | | | project ( |
| | | | | | project ( |
| | | | | | | table(sys.foo) [ foo.a ] COUNT |
| | | | | | ) [ char "" as L3.L3, any "NULL" as L4.L4, sys.=(foo.a, smallint |
: "200") as L6.L6 ] :
| | | | | ) [ L3.L3 as t.x, boolean[L4.L4] as t.y, L6.L6 as t.z ] |
| | | | ) [ t.x ] [ t.x, sys.count no nil (t.y) as L7.L7, sys.sum no nil (tin |
: yint[t.z] as t.z) as L10.L10 ] :
| | | ) [ t.x, L7.L7, L10.L10 ] |
| | ) [ t.x ] [ t.x, sys.sum no nil (L7.L7) as L7.L7, sys.sum no nil (L10.L10 |
: ) as L10.L10 ] :
| ) [ L7 as L7.L7, L10 as L10.L10 ] |
+-----------------------------------------------------------------------------+
20 tuples (1.286ms)
sql>explain select count(y),sum(z) from (select '',false,a=200 from foo union all select '',null,a=200 from foo) as t(x,y,z) group by x;
+-----------------------------------------------------------------------------+
| mal |
+=============================================================================+
| function user.s15_1{autoCommit=true}(A0:str,A1:bit,A2:sht,A3:str,A4:void,A5 |
: :sht):void; :
| X_90:void := querylog.define("explain select count(y),sum(z) from (sele |
: ct \'\',false,a=200 from foo union all select \'\',null,a=200 from foo) :
: as t(x,y,z) group by x;","default_pipe",66); :
| barrier X_110 := language.dataflow(); |
| X_65 := bat.new(nil:oid,nil:str); |
| X_71 := bat.append(X_65,".L7"); |
| X_81 := bat.append(X_71,".L10"); |
| X_66 := bat.new(nil:oid,nil:str); |
| X_73 := bat.append(X_66,"L7"); |
| X_83 := bat.append(X_73,"L10"); |
| X_67 := bat.new(nil:oid,nil:str); |
| X_75 := bat.append(X_67,"wrd"); |
| X_85 := bat.append(X_75,"hugeint"); |
| X_68 := bat.new(nil:oid,nil:int); |
| X_77 := bat.append(X_68,64); |
| X_87 := bat.append(X_77,128); |
| X_70 := bat.new(nil:oid,nil:int); |
| X_79 := bat.append(X_70,0); |
| X_89 := bat.append(X_79,0); |
| X_9:bat[:oid,:wrd] := bat.new(nil:oid,nil:wrd); |
| X_8 := sql.mvc(); |
| X_12:bat[:oid,:oid] := sql.tid(X_8,"sys","foo"); |
| X_15:bat[:oid,:sht] := sql.bind(X_8,"sys","foo","a",0); |
| (X_18,r1_18) := sql.bind(X_8,"sys","foo","a",2); |
| X_21:bat[:oid,:sht] := sql.bind(X_8,"sys","foo","a",1); |
| X_23 := sql.delta(X_15,X_18,r1_18,X_21); |
| X_24 := algebra.leftfetchjoin(X_12,X_23); |
| X_25 := algebra.project(X_24,A1); |
| X_26 := algebra.project(X_24,A0); |
| (X_27,r1_29,r2_29) := group.subgroupdone(X_26); |
| X_30:bat[:oid,:wrd] := aggr.subcount(X_25,X_27,r1_29,true); |
| X_45 := algebra.leftfetchjoin(r1_29,X_26); |
| X_55:bat[:oid,:bit] := batcalc.==(X_24,A2); |
| X_56 := batcalc.bte(X_55); |
| X_57:bat[:oid,:hge] := aggr.subsum(X_56,X_27,r1_29,true,true); |
| X_31 := bat.append(X_9,X_30,true); |
| X_33 := sql.single(nil:bit); |
| X_34 := batcalc.bit(X_33); |
| X_35 := algebra.project(X_24,A3); |
| (X_36,r1_47,r2_47) := group.subgroupdone(X_35); |
| X_39:bat[:oid,:wrd] := aggr.subcount(X_34,X_36,r1_47,true); |
| X_47 := algebra.leftfetchjoin(r1_47,X_35); |
| X_59:bat[:oid,:bit] := batcalc.==(X_24,A5); |
| X_60 := batcalc.bte(X_59); |
| X_61:bat[:oid,:hge] := aggr.subsum(X_60,X_36,r1_47,true,true); |
| X_41 := bat.append(X_31,X_39,true); |
| X_42:bat[:oid,:str] := bat.new(nil:oid,nil:str); |
| X_46 := bat.append(X_42,X_45,true); |
| X_48 := bat.append(X_46,X_47,true); |
| (X_49,r1_60,r2_60) := group.subgroupdone(X_48); |
| X_52:bat[:oid,:wrd] := aggr.subsum(X_41,X_49,r1_60,true,true); |
| X_53:bat[:oid,:hge] := bat.new(nil:oid,nil:hge); |
| X_58 := bat.append(X_53,X_57,true); |
| X_62 := bat.append(X_58,X_61,true); |
| X_63:bat[:oid,:hge] := aggr.subsum(X_62,X_49,r1_60,true,true); |
| language.pass(X_26); |
| language.pass(X_27); |
| language.pass(r1_29); |
| language.pass(X_35); |
| language.pass(X_24); |
| language.pass(X_36); |
| language.pass(r1_47); |
| language.pass(X_49); |
| language.pass(r1_60); |
| exit X_110; |
| sql.resultSet(X_81,X_83,X_85,X_87,X_89,X_52,X_63); |
| end user.s15_1; |
+-----------------------------------------------------------------------------+
66 tuples (6.596ms)
Bizarrely, that's the simplest I can get the query; all further reductions I've tried from there make the problem go away.
I think that formally I should have used "cast(null as boolean)" instead of just plain "null", but this query works on Oct2014-SP4.
Comment 21145
Date: 2015-08-14 12:39:13 +0200
From: @njnes
fixed handling of the auto-coersion of the NULL value into a boolean.
Comment 21146
Date: 2015-08-14 12:42:22 +0200
From: MonetDB Mercurial Repository <>
Changeset bc6870273af0 made by Niels Nes niels@cwi.nl in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=bc6870273af0
Changeset description:
Comment 21147
Date: 2015-08-14 12:42:36 +0200
From: MonetDB Mercurial Repository <>
Changeset 67ad185c24a5 made by Niels Nes niels@cwi.nl in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=67ad185c24a5
Changeset description:
Comment 21176
Date: 2015-08-28 13:41:23 +0200
From: @sjoerdmullender
Jul2015 has been released.
The text was updated successfully, but these errors were encountered: