LuciferYang opened a new pull request, #10286: URL: https://github.com/apache/paimon/pull/10286
### Purpose In `DataEvolutionFullTextScan`, the raw-data compensation split (for rows not covered by a full-text index) was gated on `if (!fullTextIndexFiles.isEmpty())`. So a full-text search in FULL or DETAIL mode over a data-evolution table whose full-text index has never been built (index building is a separate commit from the data writes) or has expired returns an empty plan — zero rows — instead of scanning the raw data. This removes the gate and always computes the compensation via `unindexedRanges(textColumnIds, null)`: FULL returns the whole row-id space, DETAIL returns the data-file ranges, and FAST correctly stays empty. It also fixes the read side, where `checkNotNull` on a now-reachable null index type would NPE, by resolving the raw fallback to the built-in `full-text` index type, and moves a `@Nullable` onto the helper that is actually nullable. This closes #10285. ### Tests - `FullTextSearchBuilderTest` gains cases pinning that a search with no full-text index files produces the raw-scan split in FULL and DETAIL mode (empty on the pre-fix gated code) and stays empty in FAST mode, plus a unit test on the raw fallback index-type resolution. Note: the zero-index read closure cannot be exercised end-to-end inside `paimon-core` — the native `full-text` implementation is registered only by the `paimon-full-text` module, which is not on core's test classpath — so the added tests pin the planning split and the fallback type here, with the end-to-end read covered by the Spark/Flink layers. ### API and Format No. ### Documentation No. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
