DB2 - Problem description
Problem IC64075 | Status: Closed |
UR SCAN MAY SKIP PSEUDO-DELETED KEYS AND RETURN INCORRECT RESULT | |
product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problem description: | |
During an uncommitted read (UR) index scan, and when dealing with sargable index predicates, DB2 index manager may skip some pseudo-deleted keys and return incorrect result. Namely, after a sargable index predicate is evaluated to TRUE, if the index key is marked pseudo-deleted and the scan is not locking, the predicate evaluation result is erroneously changed to FALSE. This will cause the UR scan to incorrectly skip the pseudo-deleted key. This contradicts the design since this type of scan is expected to return pseudo-deleted keys. Here is one scenario where this issue can cause unexpected result with two transactions, T1 and T2: 1. T1 pseudo-deletes an index key K1, but it does not commit. 2. T2 issues another delete statement which contains index predicates. To find the matching keys T2 performs a UR scan using concurrent access. The key K1 matches the predicate and should be included in the UR scan result set; therefore, the T2 delete statement should wait for T1 to either commit or roll back. 3. T1 rolls back. T2 carries on without deleting the key K1 because it was not returned by the UR scan. The expected result is that the T2 scan should return K1, T2 should wait for T1 to roll back, and finally delete K1. | |
Problem Summary: | |
An incorrect conditional statement permitted the error condition described above. | |
Local Fix: | |
n/a | |
available fix packs: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows | |
Solution | |
The code has been corrected such that the error condition is not longer allowed. | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 22.10.2009 28.10.2009 28.10.2009 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.1 |