[ 
https://issues.apache.org/jira/browse/IGNITE-28907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18116588#comment-18116588
 ] 

Ignite TC Bot commented on IGNITE-28907:
----------------------------------------

{panel:title=Branch: [pull/13583/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/13583/head] Base: [master] : New Tests 
(693)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}Cache 18{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=9344098]]
* {color:#013220}IgniteCacheTestSuite16: 
IgniteExchangeLatchManagerDiscoHistoryTest.testProperException - PASSED{color}

{color:#00008b}Security{color} [[tests 
2|https://ci2.ignite.apache.org/viewLog.html?buildId=9344042]]
* {color:#013220}SecurityTestSuite: 
OperationContextAttributesTest.testSendAttributesByCommunication - PASSED{color}
* {color:#013220}SecurityTestSuite: 
OperationContextAttributesTest.testSendAttributesByDiscovery - PASSED{color}

{color:#00008b}SPI (Discovery) 2{color} [[tests 
7|https://ci2.ignite.apache.org/viewLog.html?buildId=9344092]]
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testNoLists - PASSED{color}
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testBlackListExcluded - PASSED{color}
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testWhiteListIncluded - PASSED{color}
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testBlackListIncluded - PASSED{color}
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testExploitDirectly - PASSED{color}
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testWhiteListExcluded - PASSED{color}
* {color:#013220}IgniteSpiDiscoverySelfTestSuite2: 
DiscoveryUnmarshalVulnerabilityTest.testBothListIncluded - PASSED{color}

{color:#00008b}Queries 6{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=9350274]]
* {color:#013220}IgniteBinaryCacheQueryTestSuite6: 
DuplicateKeyValueClassesSelfTest.testConflictingKeyTypesForSameValueClass - 
PASSED{color}

{color:#00008b}Basic 1{color} [[tests 
43|https://ci2.ignite.apache.org/viewLog.html?buildId=9343963]]
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testTestMarshalling - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testMarshallingSelfLink - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testInvalid - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testNested - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testMarshallingArrayOfPrimitives - 
PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testMarshallingAnonymousClassInstance - 
PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testMarshallingLocalClassInstance - 
PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testMarshalling - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testNamedCache - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testMessaging - PASSED{color}
* {color:#013220}IgniteBasicTestSuite: 
OptimizedMarshallerPooledSelfTest.testSubgridMarshalling - PASSED{color}
... and 32 new tests

{color:#00008b}PDS 4{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=9344024]]
* {color:#013220}IgnitePdsTestSuite4: FileDownloaderTest.test - PASSED{color}

{color:#00008b}Cache 14{color} [[tests 
35|https://ci2.ignite.apache.org/viewLog.html?buildId=9344067]]
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testAnnotationAndConfiguredIndexesAreCreated
 - PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testKeyFieldNameIsFilledFromSecondEntity 
- PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testDifferentPrecisionDefinitionsFail - 
PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testTableNameIsFilledFromSecondEntity - 
PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testIndexesWithoutExplicitNamesAreMerged 
- PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testSameNotNullFieldsAreMerged - 
PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testPrecisionIsMerged - PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testCompositeIndexIsCreatedWithIndexedTypes
 - PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testDifferentValueTypesAreNotMerged - 
PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testSameValueFieldNameIsMerged - 
PASSED{color}
* {color:#013220}IgniteCacheWithIndexingTestSuite: 
CacheConfigurationQueryEntityMergeTest.testScaleDefinitionsForDifferentFieldsAreMerged
 - PASSED{color}
... and 24 new tests

{color:#00008b}Cache 13{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=9343972]]
* {color:#013220}IgniteCacheTestSuite13: 
SystemViewCacheExpiryPolicyTest.testCacheViewExpiryPolicy[factory=javax.cache.configuration.FactoryBuilder$SingletonFactory@2fd39436,
 actual=SingletonFactory [expiryPlc=EternalExpiryPolicy [create=ETERNAL]]] - 
PASSED{color}

{color:#00008b}Control Utility 1{color} [[tests 
6|https://ci2.ignite.apache.org/viewLog.html?buildId=9344003]]
* {color:#013220}IgniteControlUtilityTestSuite: 
GridCommandHandlerTest.testIdleVerifyCancelBeforeCalcPartitionHashStarted[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite: 
GridCommandHandlerTest.testIdleVerifyCancelBeforeCalcPartitionHashStarted[cmdHnd=jmx]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite: 
GridCommandHandlerWithSslTest.testIdleVerifyCancelBeforeCalcPartitionHashStarted[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite: 
GridCommandHandlerWithSslFactoryTest.testIdleVerifyCancelBeforeCalcPartitionHashStarted[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite: 
CommandHandlerParsingTest.testTracingConfigurationArgumentsValidationMandatoryArgumentSet
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite: 
CommandHandlerParsingTest.testTracingConfigurationArgumentsValidation - 
PASSED{color}

{color:#00008b}Continuous Query 3{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=9344001]]
* {color:#013220}IgniteCacheQuerySelfTestSuite5: 
ContinuousQueryRemoteFilterMissingInClassPathSelfTest.testClientJoinsMissingClassWarning
 - PASSED{color}

{color:#00008b}Java Client{color} [[tests 
6|https://ci2.ignite.apache.org/viewLog.html?buildId=9344014]]
* {color:#013220}IgniteClientTestSuite: 
TcpRestUnmarshalVulnerabilityTest.testBothListIncluded - PASSED{color}
* {color:#013220}IgniteClientTestSuite: 
TcpRestUnmarshalVulnerabilityTest.testWhiteListExcluded - PASSED{color}
* {color:#013220}IgniteClientTestSuite: 
TcpRestUnmarshalVulnerabilityTest.testBlackListIncluded - PASSED{color}
* {color:#013220}IgniteClientTestSuite: 
TcpRestUnmarshalVulnerabilityTest.testWhiteListIncluded - PASSED{color}
* {color:#013220}IgniteClientTestSuite: 
TcpRestUnmarshalVulnerabilityTest.testBlackListExcluded - PASSED{color}
* {color:#013220}IgniteClientTestSuite: 
TcpRestUnmarshalVulnerabilityTest.testNoLists - PASSED{color}

{color:#00008b}JCache TCK 1.1{color} [[tests 
480|https://ci2.ignite.apache.org/viewLog.html?buildId=9344013]]
* 
{color:#013220}javax.cache.event.CacheEntryListenerExceptionTest.testConstructors
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldCompareSemanticallyEquivalentDurationsWithDifferentDurations
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldCreateDurationWithRangeOfCorrectSize
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldHaveDifferentValuesForStaticallyDeclaredDurations
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldNotBeEqualWithDifferentTimeUnitAndAmount
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldCreateEternalDurationWithNullTimeUnitAndAmount
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldCreateEternalDurationUsingDefaultConstructor
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldNotBeEqualWithSameTimeUnitAndDifferentAmount
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldCreateZeroDurationWithNoRange
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldNotCreateDurationWithNullTimeUnit
 - PASSED{color}
* 
{color:#013220}javax.cache.expiry.DurationTest.shouldBeEqualWithSameTimeUnitAndAmount
 - PASSED{color}
... and 469 new tests

{color:#00008b}Control Utility 2{color} [[tests 
22|https://ci2.ignite.apache.org/viewLog.html?buildId=9344060]]
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testGetAllWithScopeReturnsOnlySpecifiedScopeSpecificConfiguratoin[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testSetWithScopeAndLabelSetsLabelSpecificConfiguratoinAndReturnsScopeBasedConfiguration[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testResetAllWithScopeResetsScopeBasedConfigurationAndReturnsIt[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testGetAllWithoutScopeReturnsTracingConfigurationsForAllScopes[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testSetWithScopeSetsScopeSpecificConfiguratoinAndReturnesScopeBasedConfiguration[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testResetWithScopeAndLabelResetsLabelSpecificConfiguratoinAndReturnesScopeBasedConfiguration[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testTracingConfigurationWithoutSubCommandsReturnsTracingConfiguratoinForAllScopes[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testResetWithScopeResetsScopeSpecificConfiguratoinAndReturnesScopeBasedConfiguration[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testResetAllWithoutScopeResetsTracingConfigurationForAllScopesAndReturnsIt[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testGetWithScopeAndLabelReturnsLabelSpecificConfigurationIfSuchOneExists[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}IgniteControlUtilityTestSuite2: 
GridCommandHandlerTracingConfigurationTest.testGetWithScopeReturnsScopeSpecificConfiguratoin[cmdHnd=cli]
 - PASSED{color}
... and 11 new tests

{color:#00008b}Control Utility (Zookeeper){color} [[tests 
2|https://ci2.ignite.apache.org/viewLog.html?buildId=9344004]]
* {color:#013220}ZookeeperIgniteControlUtilityTestSuite: 
GridCommandHandlerTest.testIdleVerifyCancelBeforeCalcPartitionHashStarted[cmdHnd=cli]
 - PASSED{color}
* {color:#013220}ZookeeperIgniteControlUtilityTestSuite: 
GridCommandHandlerTest.testIdleVerifyCancelBeforeCalcPartitionHashStarted[cmdHnd=jmx]
 - PASSED{color}

{color:#00008b}Open Census{color} [[tests 
79|https://ci2.ignite.apache.org/viewLog.html?buildId=9344020]]
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testDistributedJoin - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testNextPageRequestFailure - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testMultipleInsert - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testUpdateWithReducerSkipped - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testMultipleMerge - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testDelete - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testSelectQueryUserThreadSpanNotAffected - 
PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testUpdate - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusSqlNativeTracingTest.testSingleMerge - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusTracingSpiTest.testCustomEventContainsMessageClassTag - PASSED{color}
* {color:#013220}IgniteOpenCensusSuite: 
OpenCensusTracingSpiTest.testNodeLeftTracing - PASSED{color}
... and 68 new tests

{color:#00008b}Streamers{color} [[tests 
6|https://ci2.ignite.apache.org/viewLog.html?buildId=9344050]]
* {color:#013220}IgniteStreamSelfTestSuite: 
SocketStreamerUnmarshalVulnerabilityTest.testNoLists - PASSED{color}
* {color:#013220}IgniteStreamSelfTestSuite: 
SocketStreamerUnmarshalVulnerabilityTest.testBothListIncluded - PASSED{color}
* {color:#013220}IgniteStreamSelfTestSuite: 
SocketStreamerUnmarshalVulnerabilityTest.testWhiteListExcluded - PASSED{color}
* {color:#013220}IgniteStreamSelfTestSuite: 
SocketStreamerUnmarshalVulnerabilityTest.testBlackListIncluded - PASSED{color}
* {color:#013220}IgniteStreamSelfTestSuite: 
SocketStreamerUnmarshalVulnerabilityTest.testWhiteListIncluded - PASSED{color}
* {color:#013220}IgniteStreamSelfTestSuite: 
SocketStreamerUnmarshalVulnerabilityTest.testBlackListExcluded - PASSED{color}

{panel}
[TeamCity *--> Run :: All* 
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=9344108&buildTypeId=IgniteTests24Java8_RunAll]
{color:#ffffff}tcbot-analysis-comment chainBuildId=9344108 
rerunBuildIds=9350614,9350616{color}

> Support merging QueryEntity metadata configured through setIndexedTypes and 
> setQueryEntities
> --------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-28907
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28907
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Oleg Valuyskiy
>            Assignee: Oleg Valuyskiy
>            Priority: Major
>              Labels: ise
>         Attachments: DuplicateKeyValueClassesSelfTest.patch, 
> IgnitePdsIndexingDefragmentationTest.patch, MixedIndexConfigurationTest.patch
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> h2. Problem
> {{CacheConfiguration.setIndexedTypes(...)}} and 
> {{CacheConfiguration.setQueryEntities(...)}} both populate the same internal 
> collection of {{QueryEntity}} definitions. When both methods configure the 
> same value type, the current implementation treats the second {{QueryEntity}} 
> as a duplicate based only on its value type and silently ignores it. As a 
> result, SQL metadata supplied by the second configuration method is lost.
> The issue is not specific to annotation-based indexes. 
> {{setIndexedTypes(...)}} creates a {{QueryEntity}} for every configured 
> key/value type pair even when the value class does not contain any 
> {{@QuerySqlField}} annotations. Therefore, merely configuring a value type 
> through {{setIndexedTypes(...)}} is enough to prevent a subsequent 
> {{QueryEntity}} for the same value type from being applied. Reproducer: 
> [^MixedIndexConfigurationTest.patch]
> h2. Root cause
> Both methods store query metadata in the same internal {{qryEntities}} 
> collection. If a {{QueryEntity}} with the same value type is already present:
>  * the entities are not merged;
>  * fields are not compared;
>  * indexes are not merged;
>  * aliases and constraints are not merged;
>  * conflicting metadata is not detected;
>  * the incoming entity is silently ignored.
> This makes the resulting SQL schema incomplete and dependent on the order in 
> which configuration methods are invoked.
> h2. Expected behavior
> When {{setIndexedTypes(...)}} and {{setQueryEntities(...)}} configure the 
> same value type, Ignite should attempt to merge the corresponding 
> {{QueryEntity}} definitions:
>  * compatible metadata should be combined;
>  * conflicting metadata should result in a {{CacheException}} instead of 
> silently selecting one definition;
>  * the merge should be incremental and operate on the effective, already 
> accumulated {{{}QueryEntity{}}}.
> h2. Merge rules
> h3. Scalar properties
> For properties such as:
>  * key type;
>  * value type;
>  * table name;
>  * key field name;
>  * value field name;
> the rules are:
> {noformat}
> null + X -> X
> X + null -> X
> X + X -> X
> X + Y -> CacheException
> {noformat}
> h3. Fields
> Field definitions should be merged while preserving the order of the existing 
> entity. Fields present only in the incoming entity should be appended. For 
> the same field:
>  * equal field types are compatible;
>  * different field types must cause a {{{}CacheException{}}}.
> Example:
> {noformat}
> existing:
> name : String
> age : Integer
> incoming:
> age : Integer
> city : String
> result:
> name : String
> age : Integer
> city : String
> {noformat}
> h3. Indexes
> Indexes with different names should be combined.
> For indexes with the same name:
>  * identical definitions should be deduplicated;
>  * different definitions must cause a {{{}CacheException{}}}.
> The comparison must take the complete index definition into account, 
> including:
>  * indexed fields;
>  * field order;
>  * ascending/descending order;
>  * index type;
>  * inline size where applicable.
> h3. Map-based metadata
> Metadata such as:
>  * aliases;
>  * default field values;
>  * field precision;
>  * field scale;
> should be merged by key.
> For the same key:
>  * equal values are compatible;
>  * different values must cause a {{{}CacheException{}}}.
> h3. Set-based metadata
> Metadata such as:
>  * key fields;
>  * not-null fields;
> should be merged using set union.
> h2. Duplicate value class handling
> The existing {{DuplicateKeyValueClassesSelfTest#testDuplicateValueClass}} 
> covered the following configuration:
> {code:java}
> setIndexedTypes(
>   UUID.class, Clazz1.class,
>   String.class, Clazz1.class
> );
> {code}
> The test expected the cache to start successfully. However, the previous 
> implementation did not actually preserve both key-value mappings.
> {{CacheConfiguration#setIndexedTypes(...)}} creates a {{QueryEntity}} for 
> each key-value pair and identifies duplicates by value type. When the second 
> pair with the same value type was encountered, its {{QueryEntity}} was 
> silently discarded. As a result, the test effectively verified the same 
> silent metadata loss that this change is intended to eliminate. Reproducer: 
> [^DuplicateKeyValueClassesSelfTest.patch]
> The test is therefore changed to expect a {{CacheException}} for the 
> conflicting key types instead of successful cache startup.
> This does not affect the supported case where the same key class is used with 
> different value classes. For example:
> {code:java}
> setIndexedTypes(
>   UUID.class, Clazz1.class,
>   UUID.class, Clazz2.class
> );
> {code}
> still produces two independent query entities because their value types are 
> different.
> h2. IgnitePdsCorruptedIndexTest adjustment
> {{IgnitePdsCorruptedIndexTest#testCorruption}} previously configured indexed 
> types as follows:
> {code:java}
> .setIndexedTypes(
>   Integer.class, IndexedObject.class,
>   Long.class, IndexedObject.class
> )
> {code}
> Both pairs use the same value type but different key types. With the previous 
> {{setIndexedTypes(...)}} implementation, the second {{QueryEntity}} was 
> detected as a duplicate by value type and silently discarded. Therefore, the 
> effective cache configuration contained only:
> {code:java}
> Integer -> IndexedObject
> {code}
> The {{Long -> IndexedObject}} mapping never participated in the actual test 
> scenario.
> h2. IgnitePdsIndexingDefragmentationTest adjustment
> {{IgnitePdsIndexingDefragmentationTest}} previously configured both caches 
> with two indexed type pairs sharing the same value type:
> {code:java}
> .setIndexedTypes(
>   IgniteCacheUpdateSqlQuerySelfTest.AllTypes.class, byte[].class,
>   Integer.class, byte[].class
> )
> {code}
> However, the previous {{setIndexedTypes(...)}} implementation identified 
> duplicate {{QueryEntity}} instances by value type and silently discarded the 
> second one. As a result, despite two key-value pairs being specified, the 
> effective cache configuration contained only one {{{}QueryEntity{}}}:
> {code:java}
> AllTypes -> byte[]
> {code}
> The {{Integer -> byte[]}} configuration was never actually preserved. 
> Reproducer: [^IgnitePdsIndexingDefragmentationTest.patch]
> This is especially relevant because the test class contains separate 
> scenarios intended to exercise indexing with a simple {{Integer}} key and 
> with a complex {{AllTypes}} key. Previously, those scenarios used different 
> key objects when populating the cache, but the configured {{QueryEntity}} key 
> type was not verified. Therefore, the test could pass even though both 
> scenarios effectively used SQL metadata configured for {{{}AllTypes{}}}.
> The test setup is changed so that each scenario configures exactly the key 
> type that it actually uses:
> {code:java}
> testIndexingWithIntegerKey:
> Integer -> byte[]
> testIndexingWithComplexKey:
> AllTypes -> byte[]
> {code}
> Additional assertions verify both the configured {{QueryEntity}} key type and 
> the actual class of the keys stored in the cache. This change does not alter 
> the defragmentation scenario itself.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to