github.com/cockroachdb/pebble@v1.1.1-0.20240513155919-3622ade60459/testdata/format_major_version_pebblev1_migration (about)

     1  # Open the DB at one version prior to the version that enforces Pebblev1 tables.
     2  open version=8
     3  ----
     4  
     5  format-major-version
     6  ----
     7  008
     8  
     9  # Confirm the allowable range of table formats.
    10  
    11  min-table-format
    12  ----
    13  (LevelDB)
    14  
    15  max-table-format
    16  ----
    17  (Pebble,v2)
    18  
    19  # Disable automatic compactions while we create the tables.
    20  
    21  disable-automatic-compactions true
    22  ----
    23  
    24  # Create and flush a table. The table is created at the max format version for
    25  # this DB version (i.e. Pebblev2).
    26  
    27  batch
    28  set a a
    29  ----
    30  
    31  flush
    32  ----
    33  
    34  # Ingest an external table written at the max table format for the current
    35  # version (i.e. Pebblev2).
    36  
    37  ingest a format=pebblev2
    38  set pebblev2 pebblev2
    39  ----
    40  
    41  # Ingest some external table written at earlier versions (i.e. Pebblev1,
    42  # RocksDBv2, LevelDB).
    43  
    44  ingest b format=pebblev1
    45  set pebblev1 pebblev1
    46  ----
    47  
    48  ingest c format=rocksdbv2
    49  set rocksdbv2 rockdbv2
    50  ----
    51  
    52  ingest d format=leveldb
    53  set leveldb leveldb
    54  ----
    55  
    56  lsm
    57  ----
    58  0.0:
    59    000005:[a#10,SET-a#10,SET]
    60  6:
    61    000009:[leveldb#14,SET-leveldb#14,SET]
    62    000007:[pebblev1#12,SET-pebblev1#12,SET]
    63    000006:[pebblev2#11,SET-pebblev2#11,SET]
    64    000008:[rocksdbv2#13,SET-rocksdbv2#13,SET]
    65  
    66  tally-table-formats
    67  ----
    68  (LevelDB): 1
    69  (RocksDB,v2): 1
    70  (Pebble,v1): 1
    71  (Pebble,v2): 2
    72  (Pebble,v3): 0
    73  (Pebble,v4): 0
    74  
    75  # Upgrade the DB to FormatMinTableFormatPebblev1.
    76  
    77  ratchet-format-major-version 009
    78  ----
    79  
    80  format-major-version
    81  ----
    82  009
    83  
    84  # The min table format version has been raised to Pebblev1.
    85  
    86  min-table-format
    87  ----
    88  (Pebble,v1)
    89  
    90  max-table-format
    91  ----
    92  (Pebble,v2)
    93  
    94  # Ingesting a table with a format prior to this version fails.
    95  
    96  ingest e format=rocksdbv2
    97  set rocksdbv2 rockdbv2
    98  ----
    99  pebble: table format (RocksDB,v2) is not within range supported at DB format major version 9, ((Pebble,v1),(Pebble,v2))
   100  
   101  # Upgrade the DB to FormatPrePebblev1Marked. The marked count increases to the
   102  # count of tables at versions pre-Pebblev1 (i.e. two tables).
   103  
   104  ratchet-format-major-version 010
   105  ----
   106  
   107  format-major-version
   108  ----
   109  010
   110  
   111  min-table-format
   112  ----
   113  (Pebble,v1)
   114  
   115  max-table-format
   116  ----
   117  (Pebble,v2)
   118  
   119  marked-file-count
   120  ----
   121  2 files marked for compaction
   122  
   123  # Upgrade the DB to FormatPrePebblev1MarkedCompacted. The marked count returns
   124  # to zero.
   125  
   126  disable-automatic-compactions false
   127  ----
   128  
   129  ratchet-format-major-version 014
   130  ----
   131  
   132  format-major-version
   133  ----
   134  014
   135  
   136  min-table-format
   137  ----
   138  (Pebble,v1)
   139  
   140  max-table-format
   141  ----
   142  (Pebble,v3)
   143  
   144  marked-file-count
   145  ----
   146  0 files marked for compaction
   147  
   148  # The two tables with older table formats were rewritten with newer table format
   149  # versions (note updated table numbers for the leveldb and rocksdb2 tables).
   150  
   151  lsm
   152  ----
   153  0.0:
   154    000005:[a#10,SET-a#10,SET]
   155  6:
   156    000013:[leveldb#0,SET-leveldb#0,SET]
   157    000007:[pebblev1#12,SET-pebblev1#12,SET]
   158    000006:[pebblev2#11,SET-pebblev2#11,SET]
   159    000012:[rocksdbv2#0,SET-rocksdbv2#0,SET]
   160  
   161  # Confirm all tables are at least the minimum supported table format version.
   162  
   163  tally-table-formats
   164  ----
   165  (LevelDB): 0
   166  (RocksDB,v2): 0
   167  (Pebble,v1): 1
   168  (Pebble,v2): 4
   169  (Pebble,v3): 0
   170  (Pebble,v4): 0