This is an automated email from the ASF dual-hosted git repository. rongr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push: new e98fa6e47f [multistage] add comparison tests (#9821) e98fa6e47f is described below commit e98fa6e47f7534cd8ce6242f59247814f4dd2814 Author: Almog Gavra <almog.ga...@gmail.com> AuthorDate: Thu Nov 17 19:36:43 2022 -0800 [multistage] add comparison tests (#9821) --- .../pinot/query/runtime/QueryRunnerTestBase.java | 3 + .../runtime/queries/ResourceBasedQueriesTest.java | 3 +- .../testutils/MockInstanceDataManagerFactory.java | 4 +- .../src/test/resources/queries/Comparisons.json | 516 +++++++++++++++++++++ 4 files changed, 522 insertions(+), 4 deletions(-) diff --git a/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java b/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java index 80fd4a98cb..7e6e783c3c 100644 --- a/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java +++ b/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java @@ -271,6 +271,9 @@ public abstract class QueryRunnerTestBase extends QueryTestSet { case BIG_DECIMAL: fieldType = "NUMERIC"; break; + case BOOLEAN: + fieldType = "BOOLEAN"; + break; default: throw new UnsupportedOperationException("Unsupported type conversion to h2 type: " + dataType); } diff --git a/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/queries/ResourceBasedQueriesTest.java b/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/queries/ResourceBasedQueriesTest.java index 690406025b..1d1d932796 100644 --- a/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/queries/ResourceBasedQueriesTest.java +++ b/pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/queries/ResourceBasedQueriesTest.java @@ -64,7 +64,8 @@ public class ResourceBasedQueriesTest extends QueryRunnerTestBase { "LexicalStructure.json", "SelectExpressions.json", "ValueExpressions.json", - "NumericTypes.json" + "NumericTypes.json", + "Comparisons.json" ); @BeforeClass diff --git a/pinot-query-runtime/src/test/java/org/apache/pinot/query/testutils/MockInstanceDataManagerFactory.java b/pinot-query-runtime/src/test/java/org/apache/pinot/query/testutils/MockInstanceDataManagerFactory.java index 396b2e65ab..1b27d24c53 100644 --- a/pinot-query-runtime/src/test/java/org/apache/pinot/query/testutils/MockInstanceDataManagerFactory.java +++ b/pinot-query-runtime/src/test/java/org/apache/pinot/query/testutils/MockInstanceDataManagerFactory.java @@ -45,7 +45,6 @@ import org.apache.pinot.spi.utils.builder.TableConfigBuilder; import org.apache.pinot.spi.utils.builder.TableNameBuilder; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.matches; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -108,8 +107,7 @@ public class MockInstanceDataManagerFactory { tableDataManagers.put(e.getKey(), tableDataManager); } for (Map.Entry<String, TableDataManager> e : tableDataManagers.entrySet()) { - when(instanceDataManager.getTableDataManager(matches(String.format("%s.*", e.getKey())))).thenReturn( - e.getValue()); + when(instanceDataManager.getTableDataManager(e.getKey())).thenAnswer(inv -> e.getValue()); } return instanceDataManager; } diff --git a/pinot-query-runtime/src/test/resources/queries/Comparisons.json b/pinot-query-runtime/src/test/resources/queries/Comparisons.json new file mode 100644 index 0000000000..d87ed6a634 --- /dev/null +++ b/pinot-query-runtime/src/test/resources/queries/Comparisons.json @@ -0,0 +1,516 @@ +{ + "ints_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "INT"}, + {"name": "i2", "type": "INT"} + ], + "inputs": [ + [1, 2], [1, 1], [-1, -2], [0, 0], [2147483647, -2147483648] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" } + ] + }, + "boolean_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "BOOLEAN"}, + {"name": "i2", "type": "BOOLEAN"} + ], + "inputs": [ + [true, true], [true, false], [false, true], [false, false] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" } + ] + }, + "floats_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "FLOAT"}, + {"name": "i2", "type": "FLOAT"} + ], + "inputs": [ + [1.1, 1.2], [1.01, 1.1], [1.1, 1.1], [-1.1, -1.2], [0.0, 0.0], [1E-37, 1E+37] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" } + ] + }, + "doubles_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "DOUBLE"}, + {"name": "i2", "type": "DOUBLE"} + ], + "inputs": [ + [1.1, 1.2], [1.01, 1.1], [1.1, 1.1], [-1.1, -1.2], [0.0, 0.0], [1E-307, 1E+307] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" } + ] + }, + "numerics_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "BIG_DECIMAL"}, + {"name": "i2", "type": "BIG_DECIMAL"} + ], + "inputs": [ + ["1.1", "1.2"], ["1.01", "1.1"], ["1.1", "1.1"], ["-1.1", "-1.2"], ["0.0", "0.0"], ["1E-307", "1E+307"] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { + "ignored": true, + "comment": "fails with IllegalStateException... not sure why!", + "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" + } + ] + }, + "strings_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "STRING"}, + {"name": "i2", "type": "STRING"} + ], + "inputs": [ + ["foo", "foo"], ["foo", "bar"], + ["123", "123"], ["123", "321"], + ["alpha123", "alpha321"], + ["beta123", "gamma123"], + ["Οὐχὶ (greek)", "แสน (thai)"], + ["", ""], + ["", "foo"] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" } + ] + }, + "timestamps_comp": { + "ignored": true, + "comment": "we don't support timestamp comparisons", + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "TIMESTAMP"}, + {"name": "i2", "type": "TIMESTAMP"} + ], + "inputs": [ + ["2020-01-01 03:32:12", "2020-01-01 03:32:12"], + ["2020-01-01 03:32:12", "2020-02-01 03:32:12"] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { "sql": "SELECT * FROM {tbl} WHERE i1 >= i2" } + ] + }, + "int_x_bigint_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "INT"}, + {"name": "i2", "type": "LONG"} + ], + "inputs": [ + [1, 2], [1, 1], [-1, -2], [0, 0], [2147483647, -2147483648] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" } + ] + }, + "int_x_float_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "INT"}, + {"name": "i2", "type": "FLOAT"} + ], + "inputs": [ + [1, 2.0], [1, 0.9], [-1, -2.0], [0, 0.0], [2147483647, -2147483648.001] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" } + ] + }, + "int_x_double_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "INT"}, + {"name": "i2", "type": "DOUBLE"} + ], + "inputs": [ + [1, 2.0], [1, 0.9], [-1, -2.0], [0, 0.0], [2147483647, -2147483648.001] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" } + ] + }, + "int_x_numeric_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "INT"}, + {"name": "i2", "type": "BIG_DECIMAL"} + ], + "inputs": [ + [1, "2.0"], [1, "0.9"], [-1, "-2.0"], [0, "0.0"], [2147483647, "-2147483648"] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" } + ] + }, + "float_x_bigint_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "FLOAT"}, + {"name": "i2", "type": "LONG"} + ], + "inputs": [ + [1.1, 1], [0.01, 1], [1.1, 1], [-1.1, -1], [0.0, 0], [1E-37, 137] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" } + ] + }, + "float_x_double_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "FLOAT"}, + {"name": "i2", "type": "DOUBLE"} + ], + "inputs": [ + [1.1, 1.2], + [1.01, 1.1], + [1.1, 1.1], + [-1.1, -1.2], + [0.0, 0.0], + [1E-37, 1E+37] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" }, + { + "ignored": true, + "comment": "we don't handle equality checks correctly for float/double", + "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" + }, + { + "ignored": true, + "comment": "we don't handle equality checks correctly for float/double", + "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" + }, + { + "ignored": true, + "comment": "we don't handle equality checks correctly for float/double", + "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" + } + ] + }, + "float_x_numeric_comp": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "i1", "type": "FLOAT"}, + {"name": "i2", "type": "BIG_DECIMAL"} + ], + "inputs": [ + [1.1, "2.0"], [1.1, "0.9"], [-1.1, "-2.0"], [0.0, "0.0"], [2147.483647, "-2147483648"] + ] + } + }, + "queries": [ + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 < i2, i2 < i1 FROM {tbl}" }, + { "sql": "SELECT i1 <= i2, i2 <= i1 FROM {tbl}" }, + { "sql": "SELECT i1 > i2, i2 > i1 FROM {tbl}" }, + { "sql": "SELECT i1 >= i2, i2 >= i1 FROM {tbl}" }, + { "sql": "SELECT i1 != i2, i2 != i1 FROM {tbl}" }, + { "sql": "SELECT i1 <> i2, i2 <> i1 FROM {tbl}" }, + { "sql": "SELECT i1 = i2, i2 = i1 FROM {tbl}" }, + { "sql": "SELECT i1 IS DISTINCT FROM i2, i2 IS DISTINCT FROM i1 FROM {tbl}" } + ] + }, + "between_ints": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "val", "type": "INT"}, + {"name": "small", "type": "INT"}, + {"name": "big", "type": "INT"} + ], + "inputs": [ + [1, 2, 3], [1, 1, 1], [-1, -3, -2], [0, -1, 1], [0, 2147483647, -2147483648] + ] + } + }, + "queries": [ + { "sql": "SELECT val BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val BETWEEN big AND small FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN big AND small FROM {tbl}" }, + { + "ignored": true, + "comment": "SYMMETRIC not supported", + "sql": "SELECT val BETWEEN SYMMETRIC small AND big FROM {tbl}" + }, + { + "ignored": true, + "comment": "SYMMETRIC not supported", + "sql": "SELECT val BETWEEN SYMMETRIC big AND small FROM {tbl}" + } + ] + }, + "between_bigints": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "val", "type": "LONG"}, + {"name": "small", "type": "LONG"}, + {"name": "big", "type": "LONG"} + ], + "inputs": [ + [1, 2, 3], [1, 1, 1], [-1, -3, -2], [0, -1, 1], [0, 2147483647, -2147483648] + ] + } + }, + "queries": [ + { "sql": "SELECT * FROM {tbl}"}, + { "sql": "SELECT val BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val BETWEEN big AND small FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN big AND small FROM {tbl}" } + ] + }, + "between_floats": { + "psql": "9.2", + "comment": "floats silently fail (don't return any rows)", + "tables": { + "tbl": { + "schema": [ + {"name": "val", "type": "FLOAT"}, + {"name": "small", "type": "FLOAT"}, + {"name": "big", "type": "FLOAT"} + ], + "inputs": [ + [1.5, 1.1, 2.1], [1.1, 1.1, 1.1], [-1.1, -3.1, -2.1], [0.0, -1.0, 1.0], [0.0, 2147483647.0, -2147483648.0] + ] + } + }, + "queries": [ + { "sql": "SELECT val BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val BETWEEN big AND small FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN big AND small FROM {tbl}" } + ] + }, + "between_doubles": { + "comment": "doubles silently fail (don't return any rows)", + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "val", "type": "DOUBLE"}, + {"name": "small", "type": "DOUBLE"}, + {"name": "big", "type": "DOUBLE"} + ], + "inputs": [ + [1.5, 1.1, 2.1], [1.1, 1.1, 1.1], [-1.1, -3.1, -2.1], [0.0, -1.0, 1.0], [0.0, 2147483647.0, -2147483648.0] + ] + } + }, + "queries": [ + { "sql": "SELECT val BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val BETWEEN big AND small FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN big AND small FROM {tbl}" } + ] + }, + "between_numerics": { + "comment": "big decimal silently fails (doesn't throw exception, but returns no rows)", + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "val", "type": "BIG_DECIMAL"}, + {"name": "small", "type": "BIG_DECIMAL"}, + {"name": "big", "type": "BIG_DECIMAL"} + ], + "inputs": [ + ["1.5", "1.1", "2.1"], ["1.1", "1.1", "1.1"], ["-1.1", "-3.1", "-2.1"], + ["0.0", "-1.0", "1.0"], ["0.0", "2147483647.0", "-2147483648.0"] + ] + } + }, + "queries": [ + { "sql": "SELECT val BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val BETWEEN big AND small FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN small AND big FROM {tbl}" }, + { "sql": "SELECT val NOT BETWEEN big AND small FROM {tbl}" } + ] + }, + "between_different_types": { + "psql": "9.2", + "tables": { + "tbl": { + "schema": [ + {"name": "a", "type": "INT"}, + {"name": "b", "type": "FLOAT"}, + {"name": "c", "type": "DOUBLE"} + ], + "inputs": [ + [1, 2.0, 3.0], [2, 3.0, 1.0], [3, 1.0, 2] + ] + } + }, + "queries": [ + { "sql": "SELECT a BETWEEN b AND c FROM {tbl}" }, + { "sql": "SELECT b BETWEEN c AND a FROM {tbl}" }, + { "sql": "SELECT c BETWEEN a AND b FROM {tbl}" } + ] + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org