rohangarg commented on code in PR #12542:
URL: https://github.com/apache/druid/pull/12542#discussion_r885408538
##########
processing/src/main/java/org/apache/druid/query/expression/IPv4AddressMatchExprMacro.java:
##########
@@ -71,71 +73,75 @@ public Expr apply(final List<Expr> args)
throw new IAE(ExprUtils.createErrMsg(name(), "must have 2 arguments"));
}
- IPAddressString subnetInfo = getSubnetInfo(args);
- Expr arg = args.get(0);
+ try {
+ final Expr arg = args.get(0);
+ final IPAddressString blockString = getSubnetInfo(args);
+ final IPAddress block = blockString.toAddress().toPrefixBlock();
- class IPv4AddressMatchExpr extends
ExprMacroTable.BaseScalarUnivariateMacroFunctionExpr
- {
- private final IPAddressString subnetString;
-
- private IPv4AddressMatchExpr(Expr arg, IPAddressString subnetString)
+ class IPv4AddressMatchExpr extends
ExprMacroTable.BaseScalarUnivariateMacroFunctionExpr
{
- super(FN_NAME, arg);
- this.subnetString = subnetString;
- }
+ private IPv4AddressMatchExpr(Expr arg)
+ {
+ super(FN_NAME, arg);
+ }
- @Nonnull
- @Override
- public ExprEval eval(final ObjectBinding bindings)
- {
- ExprEval eval = arg.eval(bindings);
- boolean match;
- switch (eval.type().getType()) {
- case STRING:
- match = isStringMatch(eval.asString());
- break;
- case LONG:
- match = !eval.isNumericNull() && isLongMatch(eval.asLong());
- break;
- default:
- match = false;
+ @Nonnull
+ @Override
+ public ExprEval eval(final ObjectBinding bindings)
+ {
+ ExprEval eval = arg.eval(bindings);
+ boolean match;
+ switch (eval.type().getType()) {
+ case STRING:
+ match = isStringMatch(eval.asString());
+ break;
+ case LONG:
+ match = !eval.isNumericNull() && isLongMatch(eval.asLong());
+ break;
+ default:
+ match = false;
+ }
+ return ExprEval.ofLongBoolean(match);
}
- return ExprEval.ofLongBoolean(match);
- }
- private boolean isStringMatch(String stringValue)
- {
- IPv4Address iPv4Address = IPv4AddressExprUtils.parse(stringValue);
- return iPv4Address != null &&
subnetString.contains(iPv4Address.toAddressString());
- }
+ private boolean isStringMatch(String stringValue)
+ {
+ IPAddressString iPv4Address =
IPv4AddressExprUtils.parseString(stringValue);
Review Comment:
s/iPv4Address/iPv4AddressString
##########
processing/src/main/java/org/apache/druid/query/expression/IPv4AddressMatchExprMacro.java:
##########
@@ -71,71 +73,75 @@ public Expr apply(final List<Expr> args)
throw new IAE(ExprUtils.createErrMsg(name(), "must have 2 arguments"));
}
- IPAddressString subnetInfo = getSubnetInfo(args);
- Expr arg = args.get(0);
+ try {
+ final Expr arg = args.get(0);
+ final IPAddressString blockString = getSubnetInfo(args);
+ final IPAddress block = blockString.toAddress().toPrefixBlock();
Review Comment:
maybe a comment could be useful to tell about the different ways to match a
CIDR prefix being used (one with prefixBlock address and one directly with
blockString#prefixContains)
--
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]