Github user vvysotskyi commented on a diff in the pull request:
https://github.com/apache/drill/pull/1230#discussion_r184138785
--- Diff:
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
---
@@ -132,4 +148,200 @@ public void testIsNumeric() throws Throwable{
final Object [] expected = new Object[] {1, 1, 1, 0};
runTest(expected, "functions/testIsNumericFunction.json");
}
+
+ @Test
+ public void testLog10WithDouble() throws Throwable {
+ String json = "{" +
+ "\"positive_infinity\" : Infinity," +
+ "\"negative_infinity\" : -Infinity," +
+ "\"nan\" : NaN," +
+ "\"num1\": 0.0," +
+ "\"num2\": 0.1," +
+ "\"num3\": 1.0," +
+ "\"num4\": 1.5," +
+ "\"num5\": -1.5," +
+ "\"num6\": 10.0" +
+ "}";
+ String query = "select " +
+ "log10(positive_infinity) as pos_inf, " +
+ "log10(negative_infinity) as neg_inf, " +
+ "log10(nan) as nan, " +
+ "log10(num1) as num1, " +
+ "log10(num2) as num2, " +
+ "log10(num3) as num3, " +
+ "log10(num4) as num4, " +
+ "log10(num5) as num5, " +
+ "log10(num6) as num6 " +
+ "" +
+ "from dfs.`data.json`";
+ File file = new File(dirTestWatcher.getRootDir(), "data.json");
+ try {
+ FileUtils.writeStringToFile(file, json);
+ test("alter session set `%s` = true",
ExecConstants.JSON_READ_NUMBERS_AS_DOUBLE);
+ test("alter session set `%s` = true",
ExecConstants.JSON_READER_NAN_INF_NUMBERS);
+ testBuilder()
+ .sqlQuery(query)
+ .ordered()
+ .baselineColumns("pos_inf", "neg_inf", "nan", "num1",
"num2", "num3", "num4", "num5", "num6")
+ .baselineValues(Double.POSITIVE_INFINITY, Double.NaN,
Double.NaN, Double.NEGATIVE_INFINITY,
+ -1.0d, 0d, 0.17609125905568124d, Double.NaN, 1.0d)
+ .build()
+ .run();
+ } finally {
+ test("alter session set `%s` = false",
ExecConstants.JSON_READ_NUMBERS_AS_DOUBLE);
+ test("alter session set `%s` = false",
ExecConstants.JSON_READER_NAN_INF_NUMBERS);
+ FileUtils.deleteQuietly(file);
+ }
+ }
+
+ @Test
+ public void testLog10WithFloat() throws Throwable {
+ String json = "{" +
+ "\"positive_infinity\" : Infinity," +
+ "\"negative_infinity\" : -Infinity," +
+ "\"nan\" : NaN," +
+ "\"num1\": 0.0," +
+ "\"num2\": 0.1," +
+ "\"num3\": 1.0," +
+ "\"num4\": 1.5," +
+ "\"num5\": -1.5," +
+ "\"num6\": 10.0" +
+ "}";
+ String query = "select " +
+ "log10(cast(positive_infinity as float)) as pos_inf, " +
+ "log10(cast(negative_infinity as float)) as neg_inf, " +
+ "log10(cast(nan as float)) as nan, " +
+ "log10(cast(num1 as float)) as num1, " +
+ "log10(cast(num2 as float)) as num2, " +
+ "log10(cast(num3 as float)) as num3, " +
+ "log10(cast(num4 as float)) as num4, " +
+ "log10(cast(num5 as float)) as num5, " +
+ "log10(cast(num6 as float)) as num6 " +
+ "" +
+ "from dfs.`data.json`";
+ File file = new File(dirTestWatcher.getRootDir(), "data.json");
+ try {
+ FileUtils.writeStringToFile(file, json);
+ test("alter session set `%s` = true",
ExecConstants.JSON_READER_NAN_INF_NUMBERS);
+ testBuilder()
+ .sqlQuery(query)
+ .ordered()
+ .baselineColumns("pos_inf", "neg_inf", "nan", "num1",
"num2", "num3", "num4", "num5", "num6")
+ .baselineValues(Double.POSITIVE_INFINITY, Double.NaN,
Double.NaN, Double.NEGATIVE_INFINITY,
+ -0.999999993528508d, 0d, 0.17609125905568124d,
Double.NaN, 1.0d)
+ .build()
+ .run();
+ } finally {
+ test("alter session set `%s` = false",
ExecConstants.JSON_READER_NAN_INF_NUMBERS);
+ FileUtils.deleteQuietly(file);
+ }
+ }
+
+ @Test
+ public void testLog10WithInt() throws Throwable {
+ String json = "{" +
+ "\"num1\": 0.0," +
+ "\"num3\": 1.0," +
+ "\"num5\": -1.0," +
+ "\"num6\": 10.0" +
+ "}";
+ String query = "select " +
+ "log10(cast(num1 as int)) as num1, " +
+ "log10(cast(num3 as int)) as num3, " +
+ "log10(cast(num5 as int)) as num5, " +
+ "log10(cast(num6 as int)) as num6 " +
+ "" +
+ "from dfs.`data.json`";
+ File file = new File(dirTestWatcher.getRootDir(), "data.json");
+ try {
+ FileUtils.writeStringToFile(file, json);
+ test("alter session set `%s` = true",
ExecConstants.JSON_READER_NAN_INF_NUMBERS);
+ testBuilder()
+ .sqlQuery(query)
+ .ordered()
+ .baselineColumns("num1", "num3", "num5", "num6")
+ .baselineValues(Double.NEGATIVE_INFINITY, 0d, Double.NaN,
1.0d)
+ .build()
+ .run();
+ } finally {
+ test("alter session set `%s` = false",
ExecConstants.JSON_READER_NAN_INF_NUMBERS);
+ FileUtils.deleteQuietly(file);
+ }
+ }
+
+ @Test
+ public void testLog10WithBigInt() throws Throwable {
+ String json = "{" +
+ "\"num1\": 0," +
+ "\"num3\": 1," +
+ "\"num5\": -1," +
+ "\"num6\": 10" +
+ "}";
+ String query = "select " +
+ "log10(num1) as num1, " +
+ "log10( num3) as num3, " +
--- End diff --
please remove space before `num3`
---