|
5 | 5 |
|
6 | 6 | package org.opensearch.sql.expression.function; |
7 | 7 |
|
| 8 | +import static org.apache.calcite.sql.SqlJsonConstructorNullClause.NULL_ON_NULL; |
8 | 9 | import static org.apache.calcite.sql.type.SqlTypeFamily.IGNORE; |
9 | 10 | import static org.opensearch.sql.calcite.utils.CalciteToolsHelper.STDDEV_POP_NULLABLE; |
10 | 11 | import static org.opensearch.sql.calcite.utils.CalciteToolsHelper.STDDEV_SAMP_NULLABLE; |
|
80 | 81 | import static org.opensearch.sql.expression.function.BuiltinFunctionName.IS_NOT_NULL; |
81 | 82 | import static org.opensearch.sql.expression.function.BuiltinFunctionName.IS_NULL; |
82 | 83 | import static org.opensearch.sql.expression.function.BuiltinFunctionName.IS_PRESENT; |
| 84 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON; |
| 85 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_APPEND; |
| 86 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_ARRAY; |
| 87 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_ARRAY_LENGTH; |
| 88 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_DELETE; |
| 89 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_EXTEND; |
| 90 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_EXTRACT; |
| 91 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_KEYS; |
| 92 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_OBJECT; |
| 93 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_SET; |
| 94 | +import static org.opensearch.sql.expression.function.BuiltinFunctionName.JSON_VALID; |
83 | 95 | import static org.opensearch.sql.expression.function.BuiltinFunctionName.LAST_DAY; |
84 | 96 | import static org.opensearch.sql.expression.function.BuiltinFunctionName.LEFT; |
85 | 97 | import static org.opensearch.sql.expression.function.BuiltinFunctionName.LENGTH; |
|
194 | 206 | import java.util.concurrent.ConcurrentHashMap; |
195 | 207 | import java.util.function.BiFunction; |
196 | 208 | import java.util.stream.Collectors; |
| 209 | +import java.util.stream.Stream; |
197 | 210 | import org.apache.calcite.rel.type.RelDataType; |
198 | 211 | import org.apache.calcite.rex.RexBuilder; |
199 | 212 | import org.apache.calcite.rex.RexNode; |
@@ -735,6 +748,31 @@ void populate() { |
735 | 748 | registerOperator(WEEK_OF_YEAR, PPLBuiltinOperators.WEEK); |
736 | 749 | registerOperator(WEEKOFYEAR, PPLBuiltinOperators.WEEK); |
737 | 750 |
|
| 751 | + // Register Json function |
| 752 | + register( |
| 753 | + JSON_ARRAY, |
| 754 | + ((builder, args) -> |
| 755 | + builder.makeCall( |
| 756 | + SqlStdOperatorTable.JSON_ARRAY, |
| 757 | + Stream.concat(Stream.of(builder.makeFlag(NULL_ON_NULL)), Arrays.stream(args)) |
| 758 | + .toArray(RexNode[]::new)))); |
| 759 | + register( |
| 760 | + JSON_OBJECT, |
| 761 | + ((builder, args) -> |
| 762 | + builder.makeCall( |
| 763 | + SqlStdOperatorTable.JSON_OBJECT, |
| 764 | + Stream.concat(Stream.of(builder.makeFlag(NULL_ON_NULL)), Arrays.stream(args)) |
| 765 | + .toArray(RexNode[]::new)))); |
| 766 | + registerOperator(JSON, PPLBuiltinOperators.JSON); |
| 767 | + registerOperator(JSON_ARRAY_LENGTH, PPLBuiltinOperators.JSON_ARRAY_LENGTH); |
| 768 | + registerOperator(JSON_EXTRACT, PPLBuiltinOperators.JSON_EXTRACT); |
| 769 | + registerOperator(JSON_KEYS, PPLBuiltinOperators.JSON_KEYS); |
| 770 | + registerOperator(JSON_VALID, SqlStdOperatorTable.IS_JSON_VALUE); |
| 771 | + registerOperator(JSON_SET, PPLBuiltinOperators.JSON_SET); |
| 772 | + registerOperator(JSON_DELETE, PPLBuiltinOperators.JSON_DELETE); |
| 773 | + registerOperator(JSON_APPEND, PPLBuiltinOperators.JSON_APPEND); |
| 774 | + registerOperator(JSON_EXTEND, PPLBuiltinOperators.JSON_EXTEND); |
| 775 | + |
738 | 776 | // Register implementation. |
739 | 777 | // Note, make the implementation an individual class if too complex. |
740 | 778 | register( |
|
0 commit comments