From 205d103fe7c55ec5dbe4fb110cb85dc8f146e7a9 Mon Sep 17 00:00:00 2001 From: pierrecouch Date: Fri, 25 Mar 2022 15:20:38 -0700 Subject: [PATCH] MB-51590: add test case for multiple query statement (inner) Change-Id: I27ccc9264a4f6633ec4f4dcac4c441e638d98a33 Reviewed-on: https://review.couchbase.org/c/testrunner/+/172863 Reviewed-by: Ajay Bhullar Tested-by: Pierre Regazzoni --- conf/tuq/py-tuq-udf-n1ql.conf | 3 ++- pytests/tuqquery/tuq_UDF_N1QL.py | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/conf/tuq/py-tuq-udf-n1ql.conf b/conf/tuq/py-tuq-udf-n1ql.conf index 74465da1bc..bbed209b87 100644 --- a/conf/tuq/py-tuq-udf-n1ql.conf +++ b/conf/tuq/py-tuq-udf-n1ql.conf @@ -89,4 +89,5 @@ tuqquery.tuq_UDF_N1QL.QueryUDFN1QLTests: test_flush_collection,statement=TRUNCATE test_dml_consume test_dml_consume,explicit_close=True - test_error_handling \ No newline at end of file + test_error_handling + test_multiple_inner \ No newline at end of file diff --git a/pytests/tuqquery/tuq_UDF_N1QL.py b/pytests/tuqquery/tuq_UDF_N1QL.py index 6e53bb070b..a05e6dbaa8 100644 --- a/pytests/tuqquery/tuq_UDF_N1QL.py +++ b/pytests/tuqquery/tuq_UDF_N1QL.py @@ -1462,6 +1462,28 @@ def test_iterator(self): actual_result = function_result['results'][0] self.assertEqual(actual_result, expected_result) + def test_multiple_inner(self): + function_name = 'multiple_inner' + functions = f'function {function_name}() {{\ + var res=[];\ + var q1 = SELECT * FROM [1,2,3,4,5] AS t ORDER BY t;\ + for (const doc of q1) {{\ + res.push(doc);\ + var q2 = SELECT COUNT(*) FROM [1,2,3] AS s;\ + q2.close();\ + }}\ + q1.close();\ + return res;\ + }}' + self.create_library(self.library_name, functions, [function_name]) + self.run_cbq_query(f'CREATE OR REPLACE FUNCTION {function_name}() LANGUAGE JAVASCRIPT AS "{function_name}" AT "{self.library_name}"') + + # Execute function + function_result = self.run_cbq_query(f'EXECUTE FUNCTION {function_name}()') + expected_result = [{"t": 1}, {"t": 2}, {"t": 3}, {"t": 4}, {"t": 5}] + actual_result = function_result['results'][0] + self.assertEqual(actual_result, expected_result) + def test_multiple_iterator(self): function_name = 'param_from_var_default' functions = f'function {function_name}(j, y, m) {{\