From e08ad015985d4b1d6adcf7ff0c62d3f1fe1b245c Mon Sep 17 00:00:00 2001 From: Alan Cai Date: Fri, 9 Aug 2024 13:56:37 -0700 Subject: [PATCH] Add some more bag op coercion tests --- .../primitives/operators/bag-operators.ion | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) diff --git a/partiql-tests-data/eval/primitives/operators/bag-operators.ion b/partiql-tests-data/eval/primitives/operators/bag-operators.ion index cc7f672..8bdc517 100644 --- a/partiql-tests-data/eval/primitives/operators/bag-operators.ion +++ b/partiql-tests-data/eval/primitives/operators/bag-operators.ion @@ -143,6 +143,7 @@ bagOperators::[ ] } }, + // outer union coercion { name:"outerUnionCoerceScalar", statement:"1 OUTER UNION 2", @@ -214,6 +215,135 @@ bagOperators::[ ] } }, + // outer intersect coercion + { + name:"outerIntersectCoerceScalar", + statement:"1 OUTER INTERSECT 1", + assert:[ + { + evalMode:EvalModeCoerce, + result:EvaluationSuccess, + output:$bag::[ + 1 + ] + }, + { + evalMode:EvalModeError, + result:EvaluationFail + }, + ] + }, + { + name:"outerIntersectCoerceStruct", + statement:"{'a': 1} OUTER INTERSECT {'a': 1}", + assert:[ + { + evalMode:EvalModeCoerce, + result:EvaluationSuccess, + output:$bag::[ + { + a:1 + } + ] + }, + { + evalMode:EvalModeError, + result:EvaluationFail + }, + ] + }, + { + name:"outerIntersectCoerceNullMissing", + statement:"NULL OUTER INTERSECT MISSING", + assert:[ + { + evalMode:EvalModeCoerce, + result:EvaluationSuccess, + output:$bag::[ + ] + }, + { + evalMode: EvalModeError, + result:EvaluationFail + }, + ] + }, + { + name:"outerIntersectCoerceList", + statement:"[ 1, 1, 1 ] OUTER INTERSECT ALL [ 1, 2 ]", + assert:{ + evalMode:[EvalModeCoerce, EvalModeError], + result:EvaluationSuccess, + output:$bag::[ + 1 + ] + } + }, + // outer except coercion + { + name:"outerExceptCoerceScalar", + statement:"1 OUTER EXCEPT 2", + assert:[ + { + evalMode:EvalModeCoerce, + result:EvaluationSuccess, + output:$bag::[ + 1 + ] + }, + { + evalMode:EvalModeError, + result:EvaluationFail + }, + ] + }, + { + name:"outerExceptCoerceStruct", + statement:"{'a': 1} OUTER EXCEPT {'b': 2}", + assert:[ + { + evalMode:EvalModeCoerce, + result:EvaluationSuccess, + output:$bag::[ + { + a:1 + } + ] + }, + { + evalMode:EvalModeError, + result:EvaluationFail + }, + ] + }, + { + name:"outerExceptCoerceNullMissing", + statement:"NULL OUTER EXCEPT MISSING", + assert:[ + { + evalMode:EvalModeCoerce, + result:EvaluationSuccess, + output:$bag::[ + ] + }, + { + evalMode: EvalModeError, + result:EvaluationFail + }, + ] + }, + { + name:"outerExceptCoerceList", + statement:"[ 1, 1, 1 ] OUTER EXCEPT ALL [ 1, 2 ]", + assert:{ + evalMode:[EvalModeCoerce, EvalModeError], + result:EvaluationSuccess, + output:$bag::[ + 1, + 1 + ] + } + }, { name:"OUTER UNION with ORDER BY LIMIT OFFSET on children", statement:"(SELECT a, tbl FROM t1 ORDER BY a LIMIT 1 OFFSET 1) OUTER UNION ALL (SELECT a, tbl FROM t2 ORDER BY a LIMIT 1 OFFSET 1)",