From 76cdf460c44dedff2380d30f2088a3d1f0efdcce Mon Sep 17 00:00:00 2001 From: Rong Rong Date: Mon, 8 Jan 2024 10:09:08 -0800 Subject: [PATCH] [bugfix] fix literal query return multiple duplicate results --- .../test/resources/queries/LiteralEvaluationPlans.json | 9 +++++++++ .../query/runtime/operator/LiteralValueOperator.java | 3 ++- .../src/test/resources/queries/BasicQuery.json | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pinot-query-planner/src/test/resources/queries/LiteralEvaluationPlans.json b/pinot-query-planner/src/test/resources/queries/LiteralEvaluationPlans.json index 71793c78237a..902648f1cce2 100644 --- a/pinot-query-planner/src/test/resources/queries/LiteralEvaluationPlans.json +++ b/pinot-query-planner/src/test/resources/queries/LiteralEvaluationPlans.json @@ -1,6 +1,15 @@ { "literal_evaluation_tests": { "queries": [ + { + "description": "Select without from", + "sql": "EXPLAIN PLAN FOR SELECT 1", + "output": [ + "Execution Plan", + "\nLogicalValues(tuples=[[{ 1 }]])", + "\n" + ] + }, { "description": "Select arithmetic expression", "sql": "EXPLAIN PLAN FOR SELECT 5*6,5+6 FROM d", diff --git a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/LiteralValueOperator.java b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/LiteralValueOperator.java index 59aeec3e7574..ad0cf2a129c8 100644 --- a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/LiteralValueOperator.java +++ b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/LiteralValueOperator.java @@ -45,7 +45,8 @@ public LiteralValueOperator(OpChainExecutionContext context, DataSchema dataSche super(context); _dataSchema = dataSchema; _rexLiteralBlock = constructBlock(rexLiteralRows); - _isLiteralBlockReturned = false; + // only return a single literal block when it is the 1st virtual server. otherwise, result will be duplicated. + _isLiteralBlockReturned = context.getId().getVirtualServerId() != 0; } @Override diff --git a/pinot-query-runtime/src/test/resources/queries/BasicQuery.json b/pinot-query-runtime/src/test/resources/queries/BasicQuery.json index 3348a7a8561c..eb8e8d53d6ab 100644 --- a/pinot-query-runtime/src/test/resources/queries/BasicQuery.json +++ b/pinot-query-runtime/src/test/resources/queries/BasicQuery.json @@ -16,6 +16,10 @@ { "description": "basic test case example", "sql": "SELECT * FROM {tbl}" + }, + { + "description": "basic test with literal", + "sql": "SELECT 1 AS int, CAST(2 AS DOUBLE) AS double" } ] },