Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Fully Compatible
-
ALL
-
-
QE 2021-10-04
Description
When we generate the sub-tree for the _id expression of $bucket we end up with a giant plan that has s6 as an undefined slot accessor,
3] mkbson s30 [_id = s27, count = s29] true false
|
[3] project [s29 = if (! exists (s28) || typeMatch (s28, 0x00000440), 0, doubleDoubleSumFinalize (s28))]
|
[3] group [s27] [s28 = aggDoubleDoubleSum (1)] s2
|
[3] project [s27 = fillEmpty (s26, null)]
|
[3] nlj [] []
|
left
|
[2] mkbson s6 s4 [num] keep [] true false
|
[1] scan s4 s5 none none none none [] @"e7d535a3-511e-4d2e-b17a-7c62e468b67f" true false
|
right
|
[3] limit 1
|
[3] union [s26] [
|
[s24] [3] nlj [s11] [s11]
|
left
|
[3] filter {let [l15.0 = s11] exists (l15.0) && ! typeMatch (l15.0, 0x00000440) && l15.0 <=> false != 0 && l15.0 <=> 0 != 0}
|
[3] limit 1
|
[3] union [s11] [
|
[s9] [3] project [s9 = false]
|
[3] filter {! let [l4.0 = let [l1.0 = s7, l1.1 = "1"] fillEmpty (l1.0 <=>[s2] l1.1 >= 0, exists (l1.0) && typeMatch (l1.0, 0xFFFFFFBF) >= exists (l1.1) && typeMatch (l1.1, 0xFFFFFFBF))] exists (l4.0) && ! typeMatch (l4.0, 0x00000440) && l4.0 <=> false != 0 && l4.0 <=> 0 != 0}
|
[3] project [s7 = getField (s6, "num")]
|
[3] limit 1
|
[3] coscan ,
|
[s10] [3] project [s10 = let [l3.0 = let [l2.0 = s8, l2.1 = "10"] fillEmpty (l2.0 <=>[s2] l2.1 < 0, exists (l2.0) && typeMatch (l2.0, 0xFFFFFFBF) < exists (l2.1) && typeMatch (l2.1, 0xFFFFFFBF))] exists (l3.0) && ! typeMatch (l3.0, 0x00000440) && l3.0 <=> false != 0 && l3.0 <=> 0 != 0]
|
[3] project [s8 = getField (s6, "num")]
|
[3] limit 1
|
[3] coscan
|
]
|
right
|
[3] project [s24 = "1"]
|
[3] limit 1
|
[3] coscan
|
|
|
,
|
[s23] [3] nlj [s16] [s16]
|
left
|
[3] filter {let [l14.0 = s16] exists (l14.0) && ! typeMatch (l14.0, 0x00000440) && l14.0 <=> false != 0 && l14.0 <=> 0 != 0}
|
[3] limit 1
|
[3] union [s16] [
|
[s14] [3] project [s14 = false]
|
[3] filter {! let [l8.0 = let [l5.0 = s12, l5.1 = "10"] fillEmpty (l5.0 <=>[s2] l5.1 >= 0, exists (l5.0) && typeMatch (l5.0, 0xFFFFFFBF) >= exists (l5.1) && typeMatch (l5.1, 0xFFFFFFBF))] exists (l8.0) && ! typeMatch (l8.0, 0x00000440) && l8.0 <=> false != 0 && l8.0 <=> 0 != 0}
|
[3] project [s12 = getField (s6, "num")]
|
[3] limit 1
|
[3] coscan ,
|
[s15] [3] project [s15 = let [l7.0 = let [l6.0 = s13, l6.1 = "100"] fillEmpty (l6.0 <=>[s2] l6.1 < 0, exists (l6.0) && typeMatch (l6.0, 0xFFFFFFBF) < exists (l6.1) && typeMatch (l6.1, 0xFFFFFFBF))] exists (l7.0) && ! typeMatch (l7.0, 0x00000440) && l7.0 <=> false != 0 && l7.0 <=> 0 != 0]
|
[3] project [s13 = getField (s6, "num")]
|
[3] limit 1
|
[3] coscan
|
]
|
right
|
[3] project [s23 = "10"]
|
[3] limit 1
|
[3] coscan
|
|
|
,
|
[s22] [3] nlj [s21] [s21]
|
left
|
[3] filter {let [l13.0 = s21] exists (l13.0) && ! typeMatch (l13.0, 0x00000440) && l13.0 <=> false != 0 && l13.0 <=> 0 != 0}
|
[3] limit 1
|
[3] union [s21] [
|
[s19] [3] project [s19 = false]
|
[3] filter {! let [l12.0 = let [l9.0 = s17, l9.1 = "100"] fillEmpty (l9.0 <=>[s2] l9.1 >= 0, exists (l9.0) && typeMatch (l9.0, 0xFFFFFFBF) >= exists (l9.1) && typeMatch (l9.1, 0xFFFFFFBF))] exists (l12.0) && ! typeMatch (l12.0, 0x00000440) && l12.0 <=> false != 0 && l12.0 <=> 0 != 0}
|
[3] project [s17 = getField (s6, "num")]
|
[3] limit 1
|
[3] coscan ,
|
[s20] [3] project [s20 = let [l11.0 = let [l10.0 = s18, l10.1 = "1000"] fillEmpty (l10.0 <=>[s2] l10.1 < 0, exists (l10.0) && typeMatch (l10.0, 0xFFFFFFBF) < exists (l10.1) && typeMatch (l10.1, 0xFFFFFFBF))] exists (l11.0) && ! typeMatch (l11.0, 0x00000440) && l11.0 <=> false != 0 && l11.0 <=> 0 != 0]
|
[3] project [s18 = getField (s6, "num")]
|
[3] limit 1
|
[3] coscan
|
]
|
right
|
[3] project [s22 = "100"]
|
[3] limit 1
|
[3] coscan
|
|
|
,
|
[s25] [3] project [s25 = fail ( 4934200 ,$switch could not find a matching branch for an input, and no default was specified.)]
|
[3] limit 1
|
[3] coscan
|
]
|
Note: I believe there's another build failure due to the same issue, it might be nice to see if this fix also fixes this failure,