Search before asking
Paimon version
master (1.5-SNAPSHOT)
Compute Engine
Flink and Spark (the create_global_index procedure).
Minimal reproduce step
- Build a global index over a primary-key column, e.g. a single-column index on
vec, via sys.create_global_index.
- Build a second global index over
vec plus another column (vec, txt) — same primary column, different column set.
- Run any index-backed read.
What doesn't meet your expectations?
The second create succeeds and commits index files, but any later index-backed read builds DataEvolutionGlobalIndexScanner, whose groupIndexFiles throws Primary field %s owns multiple indexes with different columns .... So an accepted DDL leaves the table in a state where the index-backed queries the index exists to serve are broken until the extra index is dropped by hand. The conflicting create should be rejected at DDL time instead.
Anything else?
A second create with the same column set is the refresh flow and must stay allowed. The rejection has to be type-agnostic, matching the read-side grouping by indexFieldId, so a conflicting index of a different type over the same primary column is caught too.
Are you willing to submit a PR?
Search before asking
Paimon version
master (1.5-SNAPSHOT)
Compute Engine
Flink and Spark (the
create_global_indexprocedure).Minimal reproduce step
vec, viasys.create_global_index.vecplus another column (vec,txt) — same primary column, different column set.What doesn't meet your expectations?
The second create succeeds and commits index files, but any later index-backed read builds
DataEvolutionGlobalIndexScanner, whosegroupIndexFilesthrowsPrimary field %s owns multiple indexes with different columns .... So an accepted DDL leaves the table in a state where the index-backed queries the index exists to serve are broken until the extra index is dropped by hand. The conflicting create should be rejected at DDL time instead.Anything else?
A second create with the same column set is the refresh flow and must stay allowed. The rejection has to be type-agnostic, matching the read-side grouping by
indexFieldId, so a conflicting index of a different type over the same primary column is caught too.Are you willing to submit a PR?