From 56a5c962bba8e862ea006c9092c28cd707feba0b Mon Sep 17 00:00:00 2001 From: Kai Huang Date: Mon, 8 Jun 2026 15:15:29 -0700 Subject: [PATCH] Exclude full-text search-filter operator tests on the analytics-engine route The 7 comparison-operator tests in OperatorIT / CalciteOperatorIT use the search-filter syntax (source=idx age = 32), which lowers to a Lucene query_string predicate. Executing it on the analytics-engine route fails with a null LuceneReader: query_string needs an inverted-index searcher, which parquet-backed analytics indices don't have (DataFusion is not a full-text engine). Full-text search is genuinely unsupported there. Exclude these tests only when the analytics route is actually enabled (Boolean.parseBoolean(tests.analytics.parquet_indices), matching AnalyticsIndexConfig.isEnabled) so the v2 path still runs them, following the established build.gradle exclusion pattern. Signed-off-by: Kai Huang --- integ-test/build.gradle | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/integ-test/build.gradle b/integ-test/build.gradle index 21741bffff..6554b7c849 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -1035,13 +1035,30 @@ task integTestRemote(type: RestIntegTestTask) { systemProperty 'tests.analytics.parquet_indices', System.getProperty("tests.analytics.parquet_indices") } + // True only when the analytics-engine route is active (every test index parquet-backed). Matches + // AnalyticsIndexConfig.isEnabled, which parses the value rather than checking mere presence, so a + // `-Dtests.analytics.parquet_indices=false` run stays on the v2 path. + def analyticsEnabled = Boolean.parseBoolean(System.getProperty("tests.analytics.parquet_indices", "false")) + // Set default query size limit systemProperty 'defaultQuerySizeLimit', '10000' - if (System.getProperty("tests.rest.bwcsuite") == null) { - filter { + filter { + if (System.getProperty("tests.rest.bwcsuite") == null) { excludeTestsMatching "org.opensearch.sql.bwc.*IT" } + + if (analyticsEnabled) { + // Full-text search (search-filter syntax -> Lucene query_string) needs an inverted-index + // reader that parquet-backed analytics indices lack, so it's unsupported on this route. + excludeTestsMatching '*OperatorIT.testEqualOperator' + excludeTestsMatching '*OperatorIT.testNotEqualOperator' + excludeTestsMatching '*OperatorIT.testLessOperator' + excludeTestsMatching '*OperatorIT.testLteOperator' + excludeTestsMatching '*OperatorIT.testGreaterOperator' + excludeTestsMatching '*OperatorIT.testGteOperator' + excludeTestsMatching '*OperatorIT.testNotOperator' + } } // Exclude the same tests that are excluded for integTest