Conversation
|
Ignite PR Checker verdict · RunAll build 9344108 · 147 suites ran, 0 reused
Everything below is what it did manage to say.
🔍 1 suite(s) ran fewer tests than on master (tests that never ran can't fail):
❌ 8 blocker(s) in 5 suite(s):
|
c4ff85d to
2527db4
Compare
There was a problem hiding this comment.
🟡 Changes recommended
One or more issues must be addressed before approval.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds QueryEntity metadata merging across CacheConfiguration calls, including fields, indexes, and type conflicts.
Changes:
- Introduces
QueryEntityMerger. - Updates configuration merging behavior and conflict validation.
- Adds comprehensive tests and adjusts indexing tests.
File summaries
| File | Description |
|---|---|
| modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java | Updated as part of this pull request. |
| modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsIndexingDefragmentationTest.java | Updated as part of this pull request. |
| modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DuplicateKeyValueClassesSelfTest.java | Updated as part of this pull request. |
| modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationQueryEntityMergeTest.java | Updated as part of this pull request. |
| modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCorruptedIndexTest.java | Updated as part of this pull request. |
| modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityMerger.java | Updated as part of this pull request. |
| modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java | Updated as part of this pull request. |
Review details
Suppressed comments (3)
modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityMerger.java:73
- With the default
sqlEscapeAll=false,QueryUtils.normalizeObjectNameuppercases table names before schema creation. Comparing the raw values here makes otherwise compatible fragments usingPersonandPERSONconflict even though they resolve to the same SQL table, so configuration fails before normalization; use the cache's SQL escaping/normalization policy when comparing this property.
res.setTableName(mergeProperty("tableName", ex.getTableName(), in.getTableName()));
modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityMerger.java:245
- The map is keyed by the effective name from
QueryUtils.indexName, butQueryIndex.equalsalso compares the rawnamefield. Consequently, an unnamed index and an explicitly named index whose name equals the generated name hit the same map entry and are always reported as conflicting, although normalization produces the same index. Compare canonical index definitions rather than the raw object equality here.
if (!existingIdx.equals(incomingIdx))
throw mergeConflict("index[" + idxName + ']', existingIdx, incomingIdx);
modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityMerger.java:97
- This compares raw key type names, so a supported primitive declaration such as
QueryEntity.setKeyType("int")conflicts withsetIndexedTypes(Integer.class, ...), even thoughsetIndexedTypesboxes primitive classes andQueryUtilsexplicitly resolves/boxes primitive key types. Canonicalize resolved key types before deciding they conflict, while retaining support for non-loadable binary type names.
if (exKeyType != null && inKeyType != null && !Objects.equals(exKeyType, inKeyType)) {
- Files reviewed: 7/7 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| ); | ||
| } | ||
|
|
||
| QueryEntity res = new QueryEntity(ex); |
Thank you for submitting the pull request to the Apache Ignite.
In order to streamline the review of the contribution
we ask you to ensure the following steps have been taken:
The Contribution Checklist
The description explains WHAT and WHY was made instead of HOW.
The following pattern must be used:
IGNITE-XXXX Change summarywhereXXXX- number of JIRA issue.(see the Maintainers list)
the
green visaattached to the JIRA ticket (see tabPR Checkat TC.Bot - Instance 1 or TC.Bot - Instance 2)Notes
If you need any help, please email dev@ignite.apache.org or ask anу advice on http://asf.slack.com #ignite channel.