Skip to content
Snippets Groups Projects
  1. Oct 24, 2016
  2. Oct 23, 2016
  3. Oct 20, 2016
    • Vladimir Davydov's avatar
      vinyl: read iterator: do not update curr_stmt when jumping to next range · e790c9b5
      Vladimir Davydov authored
      vy_read_iterator->curr_stmt is supposed to store the last statement
      returned by vy_read_iterator_next() to be used for iterator restore.
      However, currently it is also updated in vy_read_iterator_next_range().
      If the iterator is restored after such an update it will skip the first
      statement in the range, which might result in invalid select result. For
      instance, if the first statement (the newest one) in a range is a delete
      followed by an upsert for the same key (which is older), we will skip
      the delete on restore, and return the deleted key, see
      
        vy_read_iterator_restore:
          vy_merge_iterator_restore:
            vy_run_iterator_restore:
      
              if (vy_stmt_compare(fnd, last_stmt->data, itr->index->key_def) == 0) {
                      position_changed = false;
                      if (next_stmt->lsn >= last_stmt->lsn) {
                              /* skip the same stmt to next stmt or older version */
      
      This results in occasional vinyl/options test failures.
      
      Closes #1853
      e790c9b5
    • Vladimir Davydov's avatar
      Merge branch '1.6' into 1.7 · 4e06b8e5
      Vladimir Davydov authored
      Conflicts:
      	test/unit/bps_tree.cc
      	test/unit/bps_tree_iterator.cc
      4e06b8e5
    • Vladimir Davydov's avatar
      Update src/lib/small · 4724bd24
      Vladimir Davydov authored
      Allow to specify allocator context in matras and matras-based data
      structures. After this change, the following salad data structures can
      be passed a custom allocator context: light, rtree, bps_tree.
      4724bd24
    • Roman Tsisyk's avatar
      07d6b4cd
    • Vladimir Davydov's avatar
      vinyl: eliminate reads on recovery · ecd8df95
      Vladimir Davydov authored
      Currently, we use a rather dumb way to determine if a statement from
      xlog should be committed or not on recovery - we lookup the statement in
      all on-disk runs and, if found, compare its lsn. Obviously, this slows
      down the recovery procedure significantly. Actually, we can avoid
      reading on-disk runs altogether. All we need to do is compare the xlog
      statement's lsn with the range's max lsn - we should only commit the
      statement if the former is greater.
      
      Closes #1697
      ecd8df95
    • Vladimir Davydov's avatar
      vinyl: handle eq order in range iterator · 04cb74d6
      Vladimir Davydov authored
      Whenever we need VINYL_EQ order in range iterator, we use VINYL_GE.
      This behavior exists solely due to historical reasons and needs to
      be fixed.
      04cb74d6
    • Vladimir Davydov's avatar
      vinyl: prune deletes on first dump · e4dabd53
      Vladimir Davydov authored
      Currently, we never remove delete statements on dump, even if creating
      the first run. However, there's no point in preserving deletes in case
      there's no on-disk data.
      
      Closes #1823
      e4dabd53
  4. Oct 19, 2016
  5. Oct 18, 2016
Loading