lkm commented on code in PR #15926:
URL: https://github.com/apache/druid/pull/15926#discussion_r1495329077
##########
processing/src/main/java/org/apache/druid/query/expression/NestedDataExpressions.java:
##########
@@ -99,6 +100,117 @@ public ExpressionType getOutputType(InputBindingInspector
inspector)
}
}
+ public static class JsonMergeExprMacro implements ExprMacroTable.ExprMacro
+ {
+ public static final String NAME = "json_merge";
+
+ private final ObjectMapper jsonMapper;
+
+ @Inject
+ public JsonMergeExprMacro(
+ @Json ObjectMapper jsonMapper
+ )
+ {
+ this.jsonMapper = jsonMapper;
+ }
+
+ @Override
+ public String name()
+ {
+ return NAME;
+ }
+
+ @Override
+ public Expr apply(List<Expr> args)
+ {
+ if (args.size() < 2) {
+ throw validationFailed("must have at least two arguments");
+ }
+
+ final class ParseJsonExpr extends
ExprMacroTable.BaseScalarMacroFunctionExpr
+ {
+ public ParseJsonExpr(List<Expr> args)
+ {
+ super(JsonMergeExprMacro.this, args);
+ }
+
+ @Override
+ public ExprEval eval(ObjectBinding bindings)
+ {
+ ExprEval arg = args.get(0).eval(bindings);
+ Object obj;
+
+ if (arg.value() == null) {
+ throw JsonMergeExprMacro.this.validationFailed(
+ "invalid input expected %s but got %s instead",
+ ExpressionType.STRING,
+ arg.type()
Review Comment:
I could tolerate null in the first argument, so essentially just return the
2nd argument unmodified.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]