From f87c887bbccef7e016d416a92cf2dfc0a62c0435 Mon Sep 17 00:00:00 2001 From: Simeon Widdis Date: Tue, 9 Jun 2026 18:37:19 +0000 Subject: [PATCH 1/3] fix: add scalars for is with bool Signed-off-by: Simeon Widdis --- .../java/org/opensearch/analytics/spi/ScalarFunction.java | 4 ++++ .../be/datafusion/DataFusionAnalyticsBackendPlugin.java | 4 ++++ 2 files changed, 8 insertions(+) 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 3d98caa9b31c5..3a6b1745ade97 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 6491a21ce29eb..207337b811f62 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, From 86e2c1d89b085ab8713489f2884035e239c03521 Mon Sep 17 00:00:00 2001 From: Simeon Widdis Date: Wed, 10 Jun 2026 23:49:43 +0000 Subject: [PATCH 2/3] add some test queries Signed-off-by: Simeon Widdis --- .../src/test/resources/datasets/functions/ppl/q19.ppl | 1 + .../src/test/resources/datasets/functions/ppl/q20.ppl | 1 + .../src/test/resources/datasets/functions/ppl/q21.ppl | 1 + .../src/test/resources/datasets/functions/ppl/q22.ppl | 1 + 4 files changed, 4 insertions(+) create mode 100644 sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q19.ppl create mode 100644 sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q20.ppl create mode 100644 sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q21.ppl create mode 100644 sandbox/qa/analytics-engine-rest/src/test/resources/datasets/functions/ppl/q22.ppl 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 From 50b9541aa72ca180a7e0c87e1a502928e9628004 Mon Sep 17 00:00:00 2001 From: Simeon Widdis Date: Thu, 11 Jun 2026 18:10:06 +0000 Subject: [PATCH 3/3] also add is_true/etc as project functions Signed-off-by: Simeon Widdis --- .../be/datafusion/DataFusionAnalyticsBackendPlugin.java | 4 ++++ 1 file changed, 4 insertions(+) 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 3429a5b78cbb7..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 @@ -150,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,