• unknown's avatar
    BUG#27370: Potential inconsistent blob reads for ReadCommitted reads. · 2dedc1cd
    unknown authored
    The old blob implementation had code that attempted to upgrade the lock mode for
    LM_CommittedRead operations, but it did not work properly as it did not recompute
    the operation flags.
    
    As a consequence, reading a blob with LM_CommittedRead could return inconsistent
    data, with different part of the read data being from different commits done by
    other transactions.
    
    The fix is to correctly recompute all necessary flags when upgrading lock mode.
    
    
    ndb/include/kernel/signaldata/ScanTab.hpp:
      Remove assumption in setXXX() methods that old value is zero, needed to allow blob
      code to upgrade lock mode.
      Fix spelling and commments.
    ndb/include/ndbapi/NdbOperation.hpp:
      Add method to change lock mode, to allow blob code to upgrade lock mode.
    ndb/include/ndbapi/NdbScanOperation.hpp:
      Add method to change lock mode, to allow blob code to upgrade lock mode.
    ndb/src/ndbapi/NdbBlob.cpp:
      Fix upgrading lock mode (old code had no effect).
    ndb/src/ndbapi/NdbOperationDefine.cpp:
      Add method to change lock mode, to allow blob code to upgrade lock mode.
    ndb/src/ndbapi/NdbScanOperation.cpp:
      Add method to change lock mode, to allow blob code to upgrade lock mode.
    ndb/test/ndbapi/testBlobs.cpp:
      Add testcase.
    ndb/test/run-test/daily-basic-tests.txt:
      Enable bug tests for auto test.
    2dedc1cd
NdbOperationDefine.cpp 22.4 KB