This is an automated email from the ASF dual-hosted git repository.
jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new e61d503a1e Add all supported types to return type inference from
string literal for JSON extract functions in the multi-stage query engine
(#14289)
e61d503a1e is described below
commit e61d503a1e0013b75edeb12dd55954f5ef3ae62d
Author: Yash Mayya <[email protected]>
AuthorDate: Thu Oct 31 11:28:51 2024 +0530
Add all supported types to return type inference from string literal for
JSON extract functions in the multi-stage query engine (#14289)
---
.../pinot/common/function/TransformFunctionType.java | 14 ++++++++++++++
.../org/apache/pinot/query/QueryEnvironmentTestBase.java | 15 ++++++++++++++-
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
index ce731a4947..c9be27d66b 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
@@ -315,12 +315,26 @@ public enum TransformFunctionType {
switch (operandTypeStr) {
case "INT":
return typeFactory.createSqlType(SqlTypeName.INTEGER);
+ case "INT_ARRAY":
+ return
typeFactory.createArrayType(typeFactory.createSqlType(SqlTypeName.INTEGER), -1);
case "LONG":
return typeFactory.createSqlType(SqlTypeName.BIGINT);
+ case "LONG_ARRAY":
+ return
typeFactory.createArrayType(typeFactory.createSqlType(SqlTypeName.BIGINT), -1);
+ case "FLOAT":
+ return typeFactory.createSqlType(SqlTypeName.REAL);
+ case "FLOAT_ARRAY":
+ return
typeFactory.createArrayType(typeFactory.createSqlType(SqlTypeName.REAL), -1);
+ case "DOUBLE_ARRAY":
+ return
typeFactory.createArrayType(typeFactory.createSqlType(SqlTypeName.DOUBLE), -1);
case "STRING":
return typeFactory.createSqlType(SqlTypeName.VARCHAR);
+ case "STRING_ARRAY":
+ return
typeFactory.createArrayType(typeFactory.createSqlType(SqlTypeName.VARCHAR), -1);
case "BYTES":
return typeFactory.createSqlType(SqlTypeName.VARBINARY);
+ case "BIG_DECIMAL":
+ return typeFactory.createSqlType(SqlTypeName.DECIMAL);
default:
SqlTypeName sqlTypeName = SqlTypeName.get(operandTypeStr);
if (sqlTypeName == null) {
diff --git
a/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryEnvironmentTestBase.java
b/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryEnvironmentTestBase.java
index 28aab9446b..3b0b811928 100644
---
a/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryEnvironmentTestBase.java
+++
b/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryEnvironmentTestBase.java
@@ -236,7 +236,20 @@ public class QueryEnvironmentTestBase {
"SELECT /*+ aggOptions(is_skip_leaf_stage_group_by='true') */
a.col2, a.col3 FROM a JOIN b "
+ "ON a.col1 = b.col1 WHERE a.col3 >= 0 GROUP BY a.col2,
a.col3"
},
- new Object[]{"SELECT ROUND(ts_timestamp, 10000) FROM a"}
+ new Object[]{"SELECT ROUND(ts_timestamp, 10000) FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'INT') FROM
a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'LONG') FROM
a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'FLOAT') FROM
a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'DOUBLE') FROM
a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'BOOLEAN')
FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'BIG_DECIMAL')
FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'TIMESTAMP')
FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'STRING') FROM
a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'INT_ARRAY')
FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'LONG_ARRAY')
FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo', 'FLOAT_ARRAY')
FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo',
'DOUBLE_ARRAY') FROM a"},
+ new Object[]{"SELECT JSON_EXTRACT_SCALAR(col1, '$.foo',
'STRING_ARRAY') FROM a"},
};
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]