This is an automated email from the ASF dual-hosted git repository. xiangfu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push: new 008be2d Make Literal transformer return string literals (#5453) 008be2d is described below commit 008be2db874dd1c0d7877ce712842abd818d89d1 Author: Xiang Fu <fx19880...@gmail.com> AuthorDate: Wed May 27 02:47:03 2020 -0700 Make Literal transformer return string literals (#5453) --- .../pql/parsers/PinotQuery2BrokerRequestConverter.java | 2 +- .../apache/pinot/sql/parsers/CalciteSqlCompilerTest.java | 13 +++++++++++++ .../transform/function/LiteralTransformFunction.java | 12 +++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pinot-common/src/main/java/org/apache/pinot/pql/parsers/PinotQuery2BrokerRequestConverter.java b/pinot-common/src/main/java/org/apache/pinot/pql/parsers/PinotQuery2BrokerRequestConverter.java index 1ce9a06..f4a9639 100644 --- a/pinot-common/src/main/java/org/apache/pinot/pql/parsers/PinotQuery2BrokerRequestConverter.java +++ b/pinot-common/src/main/java/org/apache/pinot/pql/parsers/PinotQuery2BrokerRequestConverter.java @@ -128,7 +128,7 @@ public class PinotQuery2BrokerRequestConverter { if (selection == null) { selection = new Selection(); } - selection.addToSelectionColumns(expression.getLiteral().getStringValue()); + selection.addToSelectionColumns(expression.getLiteral().getFieldValue().toString()); break; case IDENTIFIER: if (selection == null) { diff --git a/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java b/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java index a037b3f..ac0a5cf 100644 --- a/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java +++ b/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java @@ -36,6 +36,7 @@ import org.apache.pinot.common.request.ExpressionType; import org.apache.pinot.common.request.FilterOperator; import org.apache.pinot.common.request.Function; import org.apache.pinot.common.request.Identifier; +import org.apache.pinot.common.request.Literal; import org.apache.pinot.common.request.PinotQuery; import org.apache.pinot.pql.parsers.PinotQuery2BrokerRequestConverter; import org.apache.pinot.pql.parsers.Pql2Compiler; @@ -293,6 +294,18 @@ public class CalciteSqlCompilerTest { } @Test + public void testBrokerConverterWithLiteral() { + PinotQuery pinotQuery = CalciteSqlParser.compileToPinotQuery("select now() from mytable"); + Literal literal = pinotQuery.getSelectList().get(0).getLiteral(); + Assert.assertNotNull(literal); + PinotQuery2BrokerRequestConverter converter = new PinotQuery2BrokerRequestConverter(); + BrokerRequest tempBrokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(tempBrokerRequest.getQuerySource().getTableName(), "mytable"); + Assert.assertEquals(tempBrokerRequest.getSelections().getSelectionColumns().get(0), + literal.getFieldValue().toString()); + } + + @Test public void testSelectAs() { PinotQuery pinotQuery = CalciteSqlParser.compileToPinotQuery( "select sum(A) as sum_A, count(B) as count_B from vegetables where g IN (12, 13, 15.2, 17)"); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LiteralTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LiteralTransformFunction.java index 24a2374..4317a2b 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LiteralTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LiteralTransformFunction.java @@ -18,11 +18,13 @@ */ package org.apache.pinot.core.operator.transform.function; +import java.util.Arrays; import java.util.List; import java.util.Map; import org.apache.pinot.core.common.DataSource; import org.apache.pinot.core.operator.blocks.ProjectionBlock; import org.apache.pinot.core.operator.transform.TransformResultMetadata; +import org.apache.pinot.core.plan.DocIdSetPlanNode; import org.apache.pinot.core.segment.index.readers.Dictionary; @@ -32,6 +34,7 @@ import org.apache.pinot.core.segment.index.readers.Dictionary; */ public class LiteralTransformFunction implements TransformFunction { private final String _literal; + private String[] _result; public LiteralTransformFunction(String literal) { _literal = literal; @@ -48,12 +51,11 @@ public class LiteralTransformFunction implements TransformFunction { @Override public void init(List<TransformFunction> arguments, Map<String, DataSource> dataSourceMap) { - throw new UnsupportedOperationException(); } @Override public TransformResultMetadata getResultMetadata() { - throw new UnsupportedOperationException(); + return BaseTransformFunction.STRING_SV_NO_DICTIONARY_METADATA; } @Override @@ -93,7 +95,11 @@ public class LiteralTransformFunction implements TransformFunction { @Override public String[] transformToStringValuesSV(ProjectionBlock projectionBlock) { - throw new UnsupportedOperationException(); + if (_result == null) { + _result = new String[DocIdSetPlanNode.MAX_DOC_PER_CALL]; + Arrays.fill(_result, _literal); + } + return _result; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org