mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 15:57:58 +00:00 
			
		
		
		
	
		
			
	
	
		
			344 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			344 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.SET.1:a
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [a#1,1-a#1,1]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-1]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a#1,1:a
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-key
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.SET.1:a
							 | 
						||
| 
								 | 
							
								b.DEL.2:
							 | 
						||
| 
								 | 
							
								c.MERGE.3:c
							 | 
						||
| 
								 | 
							
								d.RANGEDEL.4:e
							 | 
						||
| 
								 | 
							
								f.SET.5:f
							 | 
						||
| 
								 | 
							
								g.DEL.6:
							 | 
						||
| 
								 | 
							
								h.MERGE.7:h
							 | 
						||
| 
								 | 
							
								i.RANGEDEL.8:j
							 | 
						||
| 
								 | 
							
								rangekey: j-k:{(#9,RANGEKEYDEL)}
							 | 
						||
| 
								 | 
							
								rangekey: k-l:{(#10,RANGEKEYUNSET,@t5)}
							 | 
						||
| 
								 | 
							
								rangekey: l-m:{(#11,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [a#1,1-h#7,2]
							 | 
						||
| 
								 | 
							
								rangedel: [d#4,15-j#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								rangekey: [j#9,19-m#72057594037927935,21]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-11]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.SET.1:a
							 | 
						||
| 
								 | 
							
								b.DEL.2:
							 | 
						||
| 
								 | 
							
								c.MERGE.3:c
							 | 
						||
| 
								 | 
							
								d.RANGEDEL.4:e
							 | 
						||
| 
								 | 
							
								f.SET.5:f
							 | 
						||
| 
								 | 
							
								g.DEL.6:
							 | 
						||
| 
								 | 
							
								h.MERGE.7:h
							 | 
						||
| 
								 | 
							
								i.RANGEDEL.8:j
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [a#1,1-h#7,2]
							 | 
						||
| 
								 | 
							
								rangedel: [d#4,15-j#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-8]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a#1,1:a
							 | 
						||
| 
								 | 
							
								b#2,0:
							 | 
						||
| 
								 | 
							
								c#3,2:c
							 | 
						||
| 
								 | 
							
								f#5,1:f
							 | 
						||
| 
								 | 
							
								g#6,0:
							 | 
						||
| 
								 | 
							
								h#7,2:h
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								d-e:{(#4,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								i-j:{(#8,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 3: a-----------m
							 | 
						||
| 
								 | 
							
								# 2:      f------------s
							 | 
						||
| 
								 | 
							
								# 1:          j---------------z
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.3:m
							 | 
						||
| 
								 | 
							
								f.RANGEDEL.2:s
							 | 
						||
| 
								 | 
							
								j.RANGEDEL.1:z
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [a#3,15-z#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-3]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a-f:{(#3,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								f-j:{(#3,RANGEDEL) (#2,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								j-m:{(#3,RANGEDEL) (#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								m-s:{(#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								s-z:{(#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-key
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The range tombstone upper bound is exclusive, so a point operation
							 | 
						||
| 
								 | 
							
								# on that same key will be the actual boundary.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.3:b
							 | 
						||
| 
								 | 
							
								b.SET.4:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [b#4,1-b#4,1]
							 | 
						||
| 
								 | 
							
								rangedel: [a#3,15-b#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [3-4]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.3:b
							 | 
						||
| 
								 | 
							
								b.SET.2:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [b#2,1-b#2,1]
							 | 
						||
| 
								 | 
							
								rangedel: [a#3,15-b#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [2-3]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.3:c
							 | 
						||
| 
								 | 
							
								b.SET.2:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [b#2,1-b#2,1]
							 | 
						||
| 
								 | 
							
								rangedel: [a#3,15-c#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [2-3]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Keys must be added in order.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								a.SET.1:b
							 | 
						||
| 
								 | 
							
								a.SET.2:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: keys must be added in strictly increasing order: a#1,SET, a#2,SET
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								b.SET.1:a
							 | 
						||
| 
								 | 
							
								a.SET.2:b
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: keys must be added in strictly increasing order: b#1,SET, a#2,SET
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								b.RANGEDEL.1:c
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.2:b
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: keys must be added in order: b > a
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								.RANGEDEL.1:b
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [#1,15-b#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-1]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:c
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.2:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: keys must be added in strictly increasing order: a#1,RANGEDEL, a#2,RANGEDEL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:c
							 | 
						||
| 
								 | 
							
								b.RANGEDEL.2:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: overlapping tombstones must be fragmented: a-c:{(#1,RANGEDEL)} vs b-d:{(#2,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.2:c
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: overlapping tombstones must be fragmented: a-c:{(#2,RANGEDEL)} vs a-d:{(#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:c
							 | 
						||
| 
								 | 
							
								c.RANGEDEL.2:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [a#1,15-d#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								rangekey: a-b:{(#1,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								rangekey: a-b:{(#2,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangekey: [a#2,21-b#72057594037927935,21]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								rangekey: b-c:{(#2,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								rangekey: a-b:{(#1,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: spans must be added in order: b > a
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEKEYDEL.1:c
							 | 
						||
| 
								 | 
							
								b.RANGEKEYDEL.2:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: overlapping range keys must be fragmented: a#1,RANGEKEYDEL, b#2,RANGEKEYDEL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEKEYDEL.2:c
							 | 
						||
| 
								 | 
							
								a.RANGEKEYDEL.1:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: overlapping range keys must be fragmented: a#2,RANGEKEYDEL, a#1,RANGEKEYDEL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								rangekey: a-c:{(#1,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								rangekey: c-d:{(#2,RANGEKEYSET,@t10,foo)}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangekey: [a#1,21-d#72057594037927935,21]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Range keys may have perfectly aligned spans (including sequence numbers),
							 | 
						||
| 
								 | 
							
								# though the key kinds must be ordered (descending).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								a.RANGEKEYDEL.1:b
							 | 
						||
| 
								 | 
							
								a.RANGEKEYDEL.1:b
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								pebble: range keys starts must be added in increasing order: a#1,RANGEKEYDEL, a#1,RANGEKEYDEL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw
							 | 
						||
| 
								 | 
							
								rangekey: a-b:{(#1,RANGEKEYSET,@t10,foo) (#1,RANGEKEYUNSET,@t10) (#1,RANGEKEYDEL)}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangekey: [a#1,21-b#72057594037927935,19]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-1]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The range-del-v1 format supports unfragmented and unsorted range
							 | 
						||
| 
								 | 
							
								# tombstones.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw range-del-v1
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:c
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.2:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [a#2,15-c#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a-c:{(#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw range-del-v1
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:c
							 | 
						||
| 
								 | 
							
								b.RANGEDEL.2:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [a#1,15-d#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a-b:{(#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								b-c:{(#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								c-d:{(#2,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw range-del-v1
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.2:c
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.1:d
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [a#2,15-d#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a-c:{(#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								c-d:{(#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This matches an early test case, except we're passing overlapping
							 | 
						||
| 
								 | 
							
								# range tombstones to the sstable writer and requiring them to be
							 | 
						||
| 
								 | 
							
								# fragmented at read time.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build-raw range-del-v1
							 | 
						||
| 
								 | 
							
								j.RANGEDEL.1:z
							 | 
						||
| 
								 | 
							
								f.RANGEDEL.2:s
							 | 
						||
| 
								 | 
							
								a.RANGEDEL.3:m
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangedel: [a#3,15-z#72057594037927935,15]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-3]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan-range-del
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a-f:{(#3,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								f-j:{(#3,RANGEDEL) (#2,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								j-m:{(#3,RANGEDEL) (#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								m-s:{(#2,RANGEDEL) (#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								s-z:{(#1,RANGEDEL)}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Setting a very small index-block-size results in a two-level index.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build block-size=1 index-block-size=1
							 | 
						||
| 
								 | 
							
								a.SET.1:a
							 | 
						||
| 
								 | 
							
								b.SET.1:b
							 | 
						||
| 
								 | 
							
								c.SET.1:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [a#1,1-c#1,1]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-1]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								layout
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								         0  data (22)
							 | 
						||
| 
								 | 
							
								        27  data (22)
							 | 
						||
| 
								 | 
							
								        54  data (22)
							 | 
						||
| 
								 | 
							
								        81  index (22)
							 | 
						||
| 
								 | 
							
								       108  index (22)
							 | 
						||
| 
								 | 
							
								       135  index (22)
							 | 
						||
| 
								 | 
							
								       162  top-index (51)
							 | 
						||
| 
								 | 
							
								       218  properties (580)
							 | 
						||
| 
								 | 
							
								       803  meta-index (33)
							 | 
						||
| 
								 | 
							
								       841  footer (53)
							 | 
						||
| 
								 | 
							
								       894  EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scan
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								a#1,1:a
							 | 
						||
| 
								 | 
							
								b#1,1:b
							 | 
						||
| 
								 | 
							
								c#1,1:c
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Enabling leveldb format disables the creation of a two-level index
							 | 
						||
| 
								 | 
							
								# (the input data here mirrors the test case above).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build leveldb block-size=1 index-block-size=1
							 | 
						||
| 
								 | 
							
								a.SET.1:a
							 | 
						||
| 
								 | 
							
								b.SET.1:b
							 | 
						||
| 
								 | 
							
								c.SET.1:c
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								point:    [a#1,1-c#1,1]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-1]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								layout
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								         0  data (21)
							 | 
						||
| 
								 | 
							
								        26  data (21)
							 | 
						||
| 
								 | 
							
								        52  data (21)
							 | 
						||
| 
								 | 
							
								        78  index (47)
							 | 
						||
| 
								 | 
							
								       130  properties (678)
							 | 
						||
| 
								 | 
							
								       813  meta-index (33)
							 | 
						||
| 
								 | 
							
								       851  leveldb-footer (48)
							 | 
						||
| 
								 | 
							
								       899  EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Range keys, if present, are shown in the layout.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								build
							 | 
						||
| 
								 | 
							
								rangekey: a-b:{(#3,RANGEKEYSET,@t3,foo)}
							 | 
						||
| 
								 | 
							
								rangekey: b-c:{(#2,RANGEKEYSET,@t2,bar)}
							 | 
						||
| 
								 | 
							
								rangekey: c-d:{(#1,RANGEKEYSET,@t1,baz)}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								rangekey: [a#3,21-d#72057594037927935,21]
							 | 
						||
| 
								 | 
							
								seqnums:  [1-3]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								layout
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								         0  data (8)
							 | 
						||
| 
								 | 
							
								        13  index (21)
							 | 
						||
| 
								 | 
							
								        39  range-key (82)
							 | 
						||
| 
								 | 
							
								       126  properties (628)
							 | 
						||
| 
								 | 
							
								       759  meta-index (57)
							 | 
						||
| 
								 | 
							
								       821  footer (53)
							 | 
						||
| 
								 | 
							
								       874  EOF
							 |