diff --git a/sandbox/libs/analytics-framework/src/main/java/org/opensearch/analytics/spi/ScalarFunction.java b/sandbox/libs/analytics-framework/src/main/java/org/opensearch/analytics/spi/ScalarFunction.java index 6b6f27440a470..6fbacfa86e8b9 100644 --- a/sandbox/libs/analytics-framework/src/main/java/org/opensearch/analytics/spi/ScalarFunction.java +++ b/sandbox/libs/analytics-framework/src/main/java/org/opensearch/analytics/spi/ScalarFunction.java @@ -38,6 +38,10 @@ public enum ScalarFunction { LESS_THAN_OR_EQUAL(Category.COMPARISON, SqlKind.LESS_THAN_OR_EQUAL), IS_NULL(Category.COMPARISON, SqlKind.IS_NULL), IS_NOT_NULL(Category.COMPARISON, SqlKind.IS_NOT_NULL), + IS_TRUE(Category.COMPARISON, SqlKind.IS_TRUE), + IS_FALSE(Category.COMPARISON, SqlKind.IS_FALSE), + IS_NOT_TRUE(Category.COMPARISON, SqlKind.IS_NOT_TRUE), + IS_NOT_FALSE(Category.COMPARISON, SqlKind.IS_NOT_FALSE), IN(Category.COMPARISON, SqlKind.IN), LIKE(Category.COMPARISON, SqlKind.LIKE), PREFIX(Category.COMPARISON, SqlKind.OTHER_FUNCTION), diff --git a/sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/DataFusionAnalyticsBackendPlugin.java b/sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/DataFusionAnalyticsBackendPlugin.java index b2df66c2526d8..8dff5eb1bb331 100644 --- a/sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/DataFusionAnalyticsBackendPlugin.java +++ b/sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/DataFusionAnalyticsBackendPlugin.java @@ -101,6 +101,10 @@ public class DataFusionAnalyticsBackendPlugin implements AnalyticsSearchBackendP ScalarFunction.LESS_THAN_OR_EQUAL, ScalarFunction.IS_NULL, ScalarFunction.IS_NOT_NULL, + ScalarFunction.IS_TRUE, + ScalarFunction.IS_FALSE, + ScalarFunction.IS_NOT_TRUE, + ScalarFunction.IS_NOT_FALSE, ScalarFunction.IN, ScalarFunction.LIKE, ScalarFunction.REGEXP_CONTAINS, @@ -146,6 +150,10 @@ public class DataFusionAnalyticsBackendPlugin implements AnalyticsSearchBackendP ScalarFunction.IS_NULL, ScalarFunction.IS_NOT_NULL, ScalarFunction.NULLIF, + ScalarFunction.IS_TRUE, + ScalarFunction.IS_FALSE, + ScalarFunction.IS_NOT_TRUE, + ScalarFunction.IS_NOT_FALSE, // ABS / SUBSTRING — PPL sort-pushdown moves these into the project tree; DataFusion has // both natively and isthmus's default catalog binds them, so no adapter needed. ScalarFunction.ABS, diff --git a/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q19.ppl b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q19.ppl new file mode 100644 index 0000000000000..6ec9a7a8eb1f0 --- /dev/null +++ b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q19.ppl @@ -0,0 +1 @@ +source=function_tests | where not true = case(amount > 0, true, amount < 0, false else false) | fields user, amount, status | head 10 diff --git a/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q20.ppl b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q20.ppl new file mode 100644 index 0000000000000..47089ef801a3e --- /dev/null +++ b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q20.ppl @@ -0,0 +1 @@ +source=function_tests | where true = case(amount > 0, true else false) | fields user, amount | head 10 diff --git a/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q21.ppl b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q21.ppl new file mode 100644 index 0000000000000..c3f6843cd849d --- /dev/null +++ b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q21.ppl @@ -0,0 +1 @@ +source=function_tests | where false = case(amount > 0, true else false) | fields user, amount | head 10 diff --git a/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q22.ppl b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q22.ppl new file mode 100644 index 0000000000000..dd18eaceb1247 --- /dev/null +++ b/sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q22.ppl @@ -0,0 +1 @@ +source=function_tests | eval is_positive = case(amount > 0, true else false) | where not false = is_positive | fields user, amount, is_positive | head 10