gianm commented on a change in pull request #10605:
URL: https://github.com/apache/druid/pull/10605#discussion_r554224182
##########
File path: docs/misc/math-expr.md
##########
@@ -119,6 +119,13 @@ See javadoc of java.lang.Math for detailed explanation for
each function.
|acos|acos(x) would return the arc cosine of x|
|asin|asin(x) would return the arc sine of x|
|atan|atan(x) would return the arc tangent of x|
+|bitwiseAnd|bitwiseAnd(x,y) would return the result of x & y. Double values
will be converted to their bit representation|
+|bitwiseComplement|bitwiseComplement(x) would return the result of ~x. Double
values will be converted to their bit representation|
+|bitwiseConvertDouble|bitwiseConvertDouble(x) would convert the IEEE 754
floating-point "double" bits stored in a long into a double value if the input
is a long, or the copy bits of a double value into a long if the input is a
double.|
Review comment:
It should implicitly cast, I think.
Generally I think function behavior is easier to understand if the function
implicitly casts its inputs to the type that it expects, vs. changing behavior
based on its input type.
##########
File path: core/src/test/java/org/apache/druid/math/expr/FunctionTest.java
##########
@@ -519,6 +519,31 @@ public void testLeast()
assertExpr("least(1, null, 'A')", "1");
}
+ @Test
+ public void testBitwise()
+ {
+ assertExpr("bitwiseAnd(3, 1)", 1L);
+ assertExpr("bitwiseAnd(2, 1)", 0L);
+ assertExpr("bitwiseOr(3, 1)", 3L);
+ assertExpr("bitwiseOr(2, 1)", 3L);
+ assertExpr("bitwiseXor(3, 1)", 2L);
+ assertExpr("bitwiseXor(2, 1)", 3L);
+ assertExpr("bitwiseShiftLeft(2, 1)", 4L);
+ assertExpr("bitwiseShiftRight(2, 1)", 1L);
+ assertExpr("bitwiseAnd(bitwiseComplement(1), 7)", 6L);
+ assertExpr("bitwiseAnd('2', '1')", null);
+ assertExpr("bitwiseAnd(2, '1')", 0L);
+
+ assertExpr("bitwiseOr(2.345, 1)", 4612462889363109315L);
Review comment:
I see, I missed that test. Sounds good.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]