- * Another fix for column stores, plus some tidyup.
There was a missing call to __wt_txn_update_check on one branch of
__wt_col_modify. This allowed e.g. removal of values from the past
without causing a conflict and rollback, which creates an extra
inconsistent tombstone that provokes an assertion failure during
Accompanying tidyup, mostly from Keith Bostic:
- rename __wt_txn_update_check to __wt_txn_modify_check, for accuracy;
- unify the __wt_col/row_modify error paths to rectify some things that
were missed/mishandled in the column code;
- in __wt_col/row_modify lay down more comments and improve existing
- Add new Python test that explicitly exercises the bug.
To see the problem you need a value multiple generations in the past.
(The issue was originally found by test_checkpoint, and this test was
only written after it had been understood and fixed.)
- Fixes and improvements to the C tests.
- Fix test/checkpoint to not try to rewind time while the database is
running. That doesn't work.
- In test/checkpoint close a race between worker threads sampling the
time to choose the commit timestamp, and actually committing, by not
unlocking the clock_lock until after commit. Otherwise occasionally
the clock thread increments the stable timestamp in this window and
things go south.
- The latter also fixes a problem where transactions can apparently
commit out of order, resulting in assertions about invalid time
windows while handling the history store. I'm not sure if that's
expected (that is, without this change the test is wrong) or if it
reflects an actual problem that this change masks.
(To reproduce it reliably, one can revert the clock_lock change and
then also change the worker thread call to __wt_random_init_seed to
just __wt_random_init; this makes every thread use the same random
seed, so they pound on the same keys at once and readily conflict
with one another.)
- Re-enable disabled test_checkpoint cases and add some more for
- Add column-store (both fixed and variable) cases in make check for
- Re-enable columns in test/csuite/random_abort; they work now.
- Add column-store cases to more of the Python tests.
- Fix whitespace via s_all. (oops)
- Fix comment, per request.
- Don't use 'int' and 'string' (as opposed to 'column') as scenario names.
Change these all to use 'integer-row', 'string-row', and use 'column'
rather than 'col'.
(most of this piece was in a previous ticket; the tests here got
missed then because it was sitting on a different git branch at the
- Avoid undefined behavior calling memcpy in __wt_rec_col_fix. | 12 Aug 21 06:36 UTC
Evergreen Subscription: ; Evergreen Event: