…5546)
* Bring CalciteWhereCommandIT to parity on the analytics-engine route
Branch the tests that exercise analytics-route-incompatible behavior behind
isAnalyticsParquetIndicesEnabled():
- 6 nested-field tests (in the Calcite subclass): nested fields are stripped on
the parquet/composite route, which has no nested-document support.
- 2 _id metadata-field tests: the analytics route doesn't expose the _id
metadata field.
- testDoubleEqualWithSpecialCharacters: email is dynamically mapped to a text
field without a .keyword sub-field on the parquet route (the composite
dataformat's dynamic mapping omits the keyword sub-field standard OpenSearch
adds), so exact equality on the analyzed text field returns no rows on the
DataFusion scan. firstname (explicit text+keyword) still exercises == there.
Analytics-engine route: 9 failing -> 0 (32 pass, 9 documented skips).
v2 route: 41/41 pass.
Signed-off-by: Kai Huang <ahkcs@amazon.com>
* Centralize analytics-route skip reasons in AnalyticsRouteLimitation enum
Replace per-test assumeFalse(reason, isAnalyticsParquetIndicesEnabled())
calls with assumeNotAnalytics(LIMITATION), backed by a single
AnalyticsRouteLimitation enum that holds every known analytics-engine
route divergence and its skip reason.
This gives one greppable registry of route gaps (addressing review
feedback to make the skips trackable in one place) and removes the
PUT+DELETE skip reason that was copy-pasted across four IT classes.
Signed-off-by: Kai Huang <ahkcs@amazon.com>
* Track CalciteWhereCommandIT AE-route skips in the gradle exclude list
Add the 9 analytics-route skips from this PR to the analyticsEnabled
excludeTestsMatching block in integ-test/build.gradle, following the
#5527 / #5541 precedent, so the full set of tests skipped on the
analytics-engine route is countable in one place.
These complement the in-test assumeNotAnalytics(...) calls (which record
the per-test reason via AnalyticsRouteLimitation); the gradle list is the
single tracking surface for how many tests the route skips.
Signed-off-by: Kai Huang <ahkcs@amazon.com>
---------
Signed-off-by: Kai Huang <ahkcs@amazon.com>
Description
The 7 comparison-operator tests in
OperatorIT/CalciteOperatorIT(testEqualOperator,testNotEqualOperator,testLessOperator,testLteOperator,testGreaterOperator,testGteOperator,testNotOperator) fail on the analytics-engine route (-Dtests.analytics.parquet_indices=true).Root cause. They use the implicit search-filter syntax (
source=idx age = 32), which the PPLsearchcommand lowers to a Lucenequery_stringpredicate:Executing that on the analytics route fails with:
query_stringis full-text search — it needs an inverted-indexLuceneReader/searcher. A parquet-backed analytics index (composite.primary_data_format=parquet, no Lucene secondary) has no Lucene reader, and DataFusion is a columnar engine, not a full-text engine. So full-text search is genuinely unsupported on the analytics route, not a bug.Fix. Exclude these tests on the analytics route, gated on
tests.analytics.parquet_indices, following the existinginteg-test/build.gradleexclusion pattern — recording that full-text search isn't supported there rather than changing what the tests assert. The v2 / Calcite (Lucene-backed) path is unaffected; the tests run and pass there.Testing
CalciteOperatorIT(21 tests):Check List
--signoff.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.