Skip to content
  • Annamalai Gurusami's avatar
    6a301754
    Bug #27624990 ASSERTION `FALSE' FAILED AT BOOL WRAPPER_TO_STRING() IN SQL/JSON_DOM.CC · 6a301754
    Annamalai Gurusami authored
    Problem:
    
    The following problems have been identified:
    
    1. If the row format is REDUNDANT or COMPACT (both of them have blob
       prefix) and transaction isolation level is READ UNCOMMITTED, then it
       is possible to return only the local prefix of the LOB.  In the case
       of JSON documents, this will be seen as a corrupted document.
    
    2. If the row format is REDUNDANT or COMPACT (both of them have blob
       prefix) and transaction isolation level is READ UNCOMMITTED, then it
       is possible to return the local prefix of the new LOB + external
       part of the old blob.  In the case of JSON documents, this will be
       seen as a corrupted document.
    
    3. If the row format is DYNAMIC (no blob prefix) and transaction isolation
       level is READ UNCOMMITTED, then it is possible to return old LOB
       with new value of other fields. While no JSON document will be
       considered corrupted, it will be inconsistent to return old value
       for blob column and new value for another column.
    
    Solution:
    
    The solution consists of 2 parts:
    
    1. Either send the full document or none.  Don't send only the local
       prefix.
    
    2. Before releasing latches, mark the blobs as 'being modified' in the
       blob reference object stored in the clust_rec.
    
    rb#19446 approved by Bin Su.
    6a301754
    Bug #27624990 ASSERTION `FALSE' FAILED AT BOOL WRAPPER_TO_STRING() IN SQL/JSON_DOM.CC
    Annamalai Gurusami authored
    Problem:
    
    The following problems have been identified:
    
    1. If the row format is REDUNDANT or COMPACT (both of them have blob
       prefix) and transaction isolation level is READ UNCOMMITTED, then it
       is possible to return only the local prefix of the LOB.  In the case
       of JSON documents, this will be seen as a corrupted document.
    
    2. If the row format is REDUNDANT or COMPACT (both of them have blob
       prefix) and transaction isolation level is READ UNCOMMITTED, then it
       is possible to return the local prefix of the new LOB + external
       part of the old blob.  In the case of JSON documents, this will be
       seen as a corrupted document.
    
    3. If the row format is DYNAMIC (no blob prefix) and transaction isolation
       level is READ UNCOMMITTED, then it is possible to return old LOB
       with new value of other fields. While no JSON document will be
       considered corrupted, it will be inconsistent to return old value
       for blob column and new value for another column.
    
    Solution:
    
    The solution consists of 2 parts:
    
    1. Either send the full document or none.  Don't send only the local
       prefix.
    
    2. Before releasing latches, mark the blobs as 'being modified' in the
       blob reference object stored in the clust_rec.
    
    rb#19446 approved by Bin Su.
Loading