From 0600d7dc03bcf3ce1d881d608afeaa29066fd052 Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Fri, 11 Sep 2015 10:49:56 +0200 Subject: [PATCH] CFS.loadNewSSTables() broken for pre-3.0 sstables patch by Robert Stupp; reviewed by Blake Eggleston for CASSANDRA-10237 --- .../cassandra/db/ColumnFamilyStore.java | 7 +- .../org/apache/cassandra/db/Directories.java | 18 ++ .../cassandra/db/SerializationHeader.java | 4 +- .../cassandra/db/compaction/Verifier.java | 5 +- .../cassandra/io/sstable/Component.java | 37 ++- .../cassandra/io/sstable/Descriptor.java | 44 +-- .../apache/cassandra/io/sstable/SSTable.java | 15 +- .../io/sstable/format/SSTableWriter.java | 3 +- .../io/sstable/format/big/BigFormat.java | 4 +- .../io/sstable/format/big/BigTableWriter.java | 2 +- .../sstable/metadata/CompactionMetadata.java | 4 +- .../IMetadataComponentSerializer.java | 9 +- .../sstable/metadata/IMetadataSerializer.java | 4 +- .../metadata/LegacyMetadataSerializer.java | 3 +- .../sstable/metadata/MetadataSerializer.java | 14 +- .../io/sstable/metadata/StatsMetadata.java | 29 +- .../sstable/metadata/ValidationMetadata.java | 4 +- .../io/util/DataIntegrityMetadata.java | 6 +- .../streaming/messages/FileMessageHeader.java | 5 +- ...es-legacy_jb_clust-jb-1-CompressionInfo.db | Bin 0 -> 115 bytes ...legacy_tables-legacy_jb_clust-jb-1-Data.db | Bin 0 -> 12006 bytes ...gacy_tables-legacy_jb_clust-jb-1-Filter.db | Bin 0 -> 24 bytes ...egacy_tables-legacy_jb_clust-jb-1-Index.db | Bin 0 -> 1219455 bytes ..._tables-legacy_jb_clust-jb-1-Statistics.db | Bin 0 -> 6798 bytes ...acy_tables-legacy_jb_clust-jb-1-Summary.db | Bin 0 -> 71 bytes ...legacy_tables-legacy_jb_clust-jb-1-TOC.txt | 7 + ...y_jb_clust_counter-jb-1-CompressionInfo.db | Bin 0 -> 75 bytes ...ables-legacy_jb_clust_counter-jb-1-Data.db | Bin 0 -> 4276 bytes ...les-legacy_jb_clust_counter-jb-1-Filter.db | Bin 0 -> 24 bytes ...bles-legacy_jb_clust_counter-jb-1-Index.db | Bin 0 -> 610555 bytes ...legacy_jb_clust_counter-jb-1-Statistics.db | Bin 0 -> 6801 bytes ...es-legacy_jb_clust_counter-jb-1-Summary.db | Bin 0 -> 71 bytes ...ables-legacy_jb_clust_counter-jb-1-TOC.txt | 7 + ...s-legacy_jb_simple-jb-1-CompressionInfo.db | Bin 0 -> 43 bytes ...egacy_tables-legacy_jb_simple-jb-1-Data.db | Bin 0 -> 134 bytes ...acy_tables-legacy_jb_simple-jb-1-Filter.db | Bin 0 -> 24 bytes ...gacy_tables-legacy_jb_simple-jb-1-Index.db | Bin 0 -> 75 bytes ...tables-legacy_jb_simple-jb-1-Statistics.db | Bin 0 -> 4392 bytes ...cy_tables-legacy_jb_simple-jb-1-Summary.db | Bin 0 -> 71 bytes ...egacy_tables-legacy_jb_simple-jb-1-TOC.txt | 7 + ..._jb_simple_counter-jb-1-CompressionInfo.db | Bin 0 -> 43 bytes ...bles-legacy_jb_simple_counter-jb-1-Data.db | Bin 0 -> 118 bytes ...es-legacy_jb_simple_counter-jb-1-Filter.db | Bin 0 -> 24 bytes ...les-legacy_jb_simple_counter-jb-1-Index.db | Bin 0 -> 75 bytes ...egacy_jb_simple_counter-jb-1-Statistics.db | Bin 0 -> 4395 bytes ...s-legacy_jb_simple_counter-jb-1-Summary.db | Bin 0 -> 71 bytes ...bles-legacy_jb_simple_counter-jb-1-TOC.txt | 7 + ...es-legacy_ka_clust-ka-1-CompressionInfo.db | Bin 0 -> 115 bytes ...legacy_tables-legacy_ka_clust-ka-1-Data.db | Bin 0 -> 12144 bytes ...cy_tables-legacy_ka_clust-ka-1-Digest.sha1 | 1 + ...gacy_tables-legacy_ka_clust-ka-1-Filter.db | Bin 0 -> 24 bytes ...egacy_tables-legacy_ka_clust-ka-1-Index.db | Bin 0 -> 1219455 bytes ..._tables-legacy_ka_clust-ka-1-Statistics.db | Bin 0 -> 6859 bytes ...acy_tables-legacy_ka_clust-ka-1-Summary.db | Bin 0 -> 71 bytes ...legacy_tables-legacy_ka_clust-ka-1-TOC.txt | 8 + ...y_ka_clust_counter-ka-1-CompressionInfo.db | Bin 0 -> 75 bytes ...ables-legacy_ka_clust_counter-ka-1-Data.db | Bin 0 -> 4635 bytes ...s-legacy_ka_clust_counter-ka-1-Digest.sha1 | 1 + ...les-legacy_ka_clust_counter-ka-1-Filter.db | Bin 0 -> 24 bytes ...bles-legacy_ka_clust_counter-ka-1-Index.db | Bin 0 -> 610555 bytes ...legacy_ka_clust_counter-ka-1-Statistics.db | Bin 0 -> 6859 bytes ...es-legacy_ka_clust_counter-ka-1-Summary.db | Bin 0 -> 71 bytes ...ables-legacy_ka_clust_counter-ka-1-TOC.txt | 8 + ...s-legacy_ka_simple-ka-1-CompressionInfo.db | Bin 0 -> 43 bytes ...egacy_tables-legacy_ka_simple-ka-1-Data.db | Bin 0 -> 134 bytes ...y_tables-legacy_ka_simple-ka-1-Digest.sha1 | 1 + ...acy_tables-legacy_ka_simple-ka-1-Filter.db | Bin 0 -> 24 bytes ...gacy_tables-legacy_ka_simple-ka-1-Index.db | Bin 0 -> 75 bytes ...tables-legacy_ka_simple-ka-1-Statistics.db | Bin 0 -> 4453 bytes ...cy_tables-legacy_ka_simple-ka-1-Summary.db | Bin 0 -> 71 bytes ...egacy_tables-legacy_ka_simple-ka-1-TOC.txt | 8 + ..._ka_simple_counter-ka-1-CompressionInfo.db | Bin 0 -> 43 bytes ...bles-legacy_ka_simple_counter-ka-1-Data.db | Bin 0 -> 125 bytes ...-legacy_ka_simple_counter-ka-1-Digest.sha1 | 1 + ...es-legacy_ka_simple_counter-ka-1-Filter.db | Bin 0 -> 24 bytes ...les-legacy_ka_simple_counter-ka-1-Index.db | Bin 0 -> 75 bytes ...egacy_ka_simple_counter-ka-1-Statistics.db | Bin 0 -> 4453 bytes ...s-legacy_ka_simple_counter-ka-1-Summary.db | Bin 0 -> 71 bytes ...bles-legacy_ka_simple_counter-ka-1-TOC.txt | 8 + .../la-1-big-CompressionInfo.db | Bin 0 -> 115 bytes .../legacy_la_clust/la-1-big-Data.db | Bin 0 -> 12082 bytes .../legacy_la_clust/la-1-big-Digest.adler32 | 1 + .../legacy_la_clust/la-1-big-Filter.db | Bin 0 -> 24 bytes .../legacy_la_clust/la-1-big-Index.db | Bin 0 -> 1219455 bytes .../legacy_la_clust/la-1-big-Statistics.db | Bin 0 -> 6859 bytes .../legacy_la_clust/la-1-big-Summary.db | Bin 0 -> 71 bytes .../legacy_la_clust/la-1-big-TOC.txt | 8 + .../la-1-big-CompressionInfo.db | Bin 0 -> 75 bytes .../legacy_la_clust_counter/la-1-big-Data.db | Bin 0 -> 4623 bytes .../la-1-big-Digest.adler32 | 1 + .../la-1-big-Filter.db | Bin 0 -> 24 bytes .../legacy_la_clust_counter/la-1-big-Index.db | Bin 0 -> 610555 bytes .../la-1-big-Statistics.db | Bin 0 -> 6859 bytes .../la-1-big-Summary.db | Bin 0 -> 71 bytes .../legacy_la_clust_counter/la-1-big-TOC.txt | 8 + .../la-1-big-CompressionInfo.db | Bin 0 -> 43 bytes .../legacy_la_simple/la-1-big-Data.db | Bin 0 -> 139 bytes .../legacy_la_simple/la-1-big-Digest.adler32 | 1 + .../legacy_la_simple/la-1-big-Filter.db | Bin 0 -> 24 bytes .../legacy_la_simple/la-1-big-Index.db | Bin 0 -> 75 bytes .../legacy_la_simple/la-1-big-Statistics.db | Bin 0 -> 4453 bytes .../legacy_la_simple/la-1-big-Summary.db | Bin 0 -> 71 bytes .../legacy_la_simple/la-1-big-TOC.txt | 8 + .../la-1-big-CompressionInfo.db | Bin 0 -> 43 bytes .../legacy_la_simple_counter/la-1-big-Data.db | Bin 0 -> 123 bytes .../la-1-big-Digest.adler32 | 1 + .../la-1-big-Filter.db | Bin 0 -> 24 bytes .../la-1-big-Index.db | Bin 0 -> 75 bytes .../la-1-big-Statistics.db | Bin 0 -> 4453 bytes .../la-1-big-Summary.db | Bin 0 -> 71 bytes .../legacy_la_simple_counter/la-1-big-TOC.txt | 8 + .../ma-1-big-CompressionInfo.db | Bin 0 -> 83 bytes .../legacy_ma_clust/ma-1-big-Data.db | Bin 0 -> 5032 bytes .../legacy_ma_clust/ma-1-big-Digest.crc32 | 1 + .../legacy_ma_clust/ma-1-big-Filter.db | Bin 0 -> 24 bytes .../legacy_ma_clust/ma-1-big-Index.db | Bin 0 -> 157123 bytes .../legacy_ma_clust/ma-1-big-Statistics.db | Bin 0 -> 7045 bytes .../legacy_ma_clust/ma-1-big-Summary.db | Bin 0 -> 47 bytes .../legacy_ma_clust/ma-1-big-TOC.txt | 8 + .../ma-1-big-CompressionInfo.db | Bin 0 -> 75 bytes .../legacy_ma_clust_counter/ma-1-big-Data.db | Bin 0 -> 4427 bytes .../ma-1-big-Digest.crc32 | 1 + .../ma-1-big-Filter.db | Bin 0 -> 24 bytes .../legacy_ma_clust_counter/ma-1-big-Index.db | Bin 0 -> 157123 bytes .../ma-1-big-Statistics.db | Bin 0 -> 7054 bytes .../ma-1-big-Summary.db | Bin 0 -> 47 bytes .../legacy_ma_clust_counter/ma-1-big-TOC.txt | 8 + .../ma-1-big-CompressionInfo.db | Bin 0 -> 43 bytes .../legacy_ma_simple/ma-1-big-Data.db | Bin 0 -> 85 bytes .../legacy_ma_simple/ma-1-big-Digest.crc32 | 1 + .../legacy_ma_simple/ma-1-big-Filter.db | Bin 0 -> 24 bytes .../legacy_ma_simple/ma-1-big-Index.db | Bin 0 -> 26 bytes .../legacy_ma_simple/ma-1-big-Statistics.db | Bin 0 -> 4598 bytes .../legacy_ma_simple/ma-1-big-Summary.db | Bin 0 -> 47 bytes .../legacy_ma_simple/ma-1-big-TOC.txt | 8 + .../ma-1-big-CompressionInfo.db | Bin 0 -> 43 bytes .../legacy_ma_simple_counter/ma-1-big-Data.db | Bin 0 -> 106 bytes .../ma-1-big-Digest.crc32 | 1 + .../ma-1-big-Filter.db | Bin 0 -> 24 bytes .../ma-1-big-Index.db | Bin 0 -> 27 bytes .../ma-1-big-Statistics.db | Bin 0 -> 4607 bytes .../ma-1-big-Summary.db | Bin 0 -> 47 bytes .../legacy_ma_simple_counter/ma-1-big-TOC.txt | 8 + .../org/apache/cassandra/db/VerifyTest.java | 6 +- .../io/sstable/LegacySSTableTest.java | 250 ++++++++++++++++-- .../cassandra/io/sstable/SSTableUtils.java | 2 +- .../metadata/MetadataSerializerTest.java | 6 +- 147 files changed, 526 insertions(+), 91 deletions(-) create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Data.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Filter.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Index.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Statistics.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Summary.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-TOC.txt create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Data.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Filter.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Index.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Statistics.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Summary.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-TOC.txt create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Data.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Filter.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Index.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Statistics.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Summary.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-TOC.txt create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Data.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Filter.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Index.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Statistics.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Summary.db create mode 100644 test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-TOC.txt create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Data.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Filter.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Index.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Statistics.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Summary.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-TOC.txt create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Data.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Filter.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Index.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Statistics.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Summary.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-TOC.txt create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Data.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Digest.sha1 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Filter.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Index.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Statistics.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Summary.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-TOC.txt create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Data.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Filter.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Index.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Statistics.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Summary.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-TOC.txt create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Data.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Filter.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Index.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Summary.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Data.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Digest.adler32 create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Filter.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Index.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Summary.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Data.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Filter.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Index.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Summary.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Data.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Filter.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Index.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Summary.db create mode 100644 test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Data.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Digest.crc32 create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Filter.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Index.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Summary.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Data.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Filter.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Index.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Summary.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Data.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Digest.crc32 create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Filter.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Index.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Summary.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-TOC.txt create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Data.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Digest.crc32 create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Filter.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Index.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Statistics.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Summary.db create mode 100644 test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-TOC.txt diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 979e8ba66a..c7d8926c2e 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -64,6 +64,7 @@ import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.SSTableMultiWriter; import org.apache.cassandra.io.sstable.format.*; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.metrics.TableMetrics; @@ -724,7 +725,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean descriptor.ksname, descriptor.cfname, fileIndexGenerator.incrementAndGet(), - descriptor.formatType); + descriptor.formatType, + descriptor.digestComponent); } while (new File(newDescriptor.filenameFor(Component.DATA)).exists()); @@ -808,7 +810,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean keyspace.getName(), name, fileIndexGenerator.incrementAndGet(), - format); + format, + Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType())); return desc.filenameFor(Component.DATA); } diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java index c801952ae5..8aa94943f8 100644 --- a/src/java/org/apache/cassandra/db/Directories.java +++ b/src/java/org/apache/cassandra/db/Directories.java @@ -695,6 +695,24 @@ public class Directories previous = new HashSet<>(); components.put(pair.left, previous); } + else if (pair.right.type == Component.Type.DIGEST) + { + if (pair.right != pair.left.digestComponent) + { + // Need to update the DIGEST component as it might be set to another + // digest type as a guess. This may happen if the first component is + // not the DIGEST (but the Data component for example), so the digest + // type is _guessed_ from the Version. + // Although the Version explicitly defines the digest type, it doesn't + // seem to be true under all circumstances. Generated sstables from a + // post 2.1.8 snapshot produced Digest.sha1 files although Version + // defines Adler32. + // TL;DR this piece of code updates the digest component to be "correct". + components.remove(pair.left); + Descriptor updated = pair.left.withDigestComponent(pair.right); + components.put(updated, previous); + } + } previous.add(pair.right); nbFiles++; return false; diff --git a/src/java/org/apache/cassandra/db/SerializationHeader.java b/src/java/org/apache/cassandra/db/SerializationHeader.java index 582a6af4f2..70c5401b8a 100644 --- a/src/java/org/apache/cassandra/db/SerializationHeader.java +++ b/src/java/org/apache/cassandra/db/SerializationHeader.java @@ -413,7 +413,7 @@ public class SerializationHeader } // For SSTables - public void serialize(Component header, DataOutputPlus out) throws IOException + public void serialize(Version version, Component header, DataOutputPlus out) throws IOException { EncodingStats.serializer.serialize(header.stats, out); @@ -447,7 +447,7 @@ public class SerializationHeader } // For SSTables - public int serializedSize(Component header) + public int serializedSize(Version version, Component header) { int size = EncodingStats.serializer.serializedSize(header.stats); diff --git a/src/java/org/apache/cassandra/db/compaction/Verifier.java b/src/java/org/apache/cassandra/db/compaction/Verifier.java index ae4e96678f..ce04ad3f23 100644 --- a/src/java/org/apache/cassandra/db/compaction/Verifier.java +++ b/src/java/org/apache/cassandra/db/compaction/Verifier.java @@ -91,12 +91,13 @@ public class Verifier implements Closeable outputHandler.output(String.format("Checking computed hash of %s ", sstable)); - // Verify will use the adler32 Digest files, which works for both compressed and uncompressed sstables + // Verify will use the Digest files, which works for both compressed and uncompressed sstables try { validator = null; - if (new File(sstable.descriptor.filenameFor(Component.DIGEST)).exists()) + if (sstable.descriptor.digestComponent != null && + new File(sstable.descriptor.filenameFor(sstable.descriptor.digestComponent)).exists()) { validator = DataIntegrityMetadata.fileDigestValidator(sstable.descriptor); validator.validate(); diff --git a/src/java/org/apache/cassandra/io/sstable/Component.java b/src/java/org/apache/cassandra/io/sstable/Component.java index 54dd35b799..9454882aaf 100644 --- a/src/java/org/apache/cassandra/io/sstable/Component.java +++ b/src/java/org/apache/cassandra/io/sstable/Component.java @@ -22,6 +22,7 @@ import java.util.EnumSet; import com.google.common.base.Objects; +import org.apache.cassandra.utils.ChecksumType; import org.apache.cassandra.utils.Pair; /** @@ -34,6 +35,7 @@ public class Component public static final char separator = '-'; final static EnumSet TYPES = EnumSet.allOf(Type.class); + public enum Type { // the base data for an sstable: the remaining components can be regenerated @@ -48,7 +50,7 @@ public class Component // statistical metadata about the content of the sstable STATS("Statistics.db"), // holds adler32 checksum of the data file - DIGEST(new String[] { "Digest.crc32", "Digest.adler32" }), + DIGEST("Digest.crc32", "Digest.adler32", "Digest.sha1"), // holds the CRC32 for chunks in an a uncompressed file. CRC("CRC.db"), // holds SSTable Index Summary (sampling of Index component) @@ -57,14 +59,14 @@ public class Component TOC("TOC.txt"), // custom component, used by e.g. custom compaction strategy CUSTOM(new String[] { null }); - + final String[] repr; Type(String repr) { this(new String[] { repr }); } - Type(String[] repr) + Type(String... repr) { this.repr = repr; } @@ -85,11 +87,28 @@ public class Component public final static Component FILTER = new Component(Type.FILTER); public final static Component COMPRESSION_INFO = new Component(Type.COMPRESSION_INFO); public final static Component STATS = new Component(Type.STATS); - public final static Component DIGEST = new Component(Type.DIGEST); + private static final String digestCrc32 = "Digest.crc32"; + private static final String digestAdler32 = "Digest.adler32"; + private static final String digestSha1 = "Digest.sha1"; + public final static Component DIGEST_CRC32 = new Component(Type.DIGEST, digestCrc32); + public final static Component DIGEST_ADLER32 = new Component(Type.DIGEST, digestAdler32); + public final static Component DIGEST_SHA1 = new Component(Type.DIGEST, digestSha1); public final static Component CRC = new Component(Type.CRC); public final static Component SUMMARY = new Component(Type.SUMMARY); public final static Component TOC = new Component(Type.TOC); + public static Component digestFor(ChecksumType checksumType) + { + switch (checksumType) + { + case Adler32: + return DIGEST_ADLER32; + case CRC32: + return DIGEST_CRC32; + } + throw new AssertionError(); + } + public final Type type; public final String name; public final int hashCode; @@ -97,6 +116,7 @@ public class Component public Component(Type type) { this(type, type.repr[0]); + assert type.repr.length == 1; assert type != Type.CUSTOM; } @@ -138,7 +158,14 @@ public class Component case FILTER: component = Component.FILTER; break; case COMPRESSION_INFO: component = Component.COMPRESSION_INFO; break; case STATS: component = Component.STATS; break; - case DIGEST: component = Component.DIGEST; break; + case DIGEST: switch (path.right) + { + case digestCrc32: component = Component.DIGEST_CRC32; break; + case digestAdler32: component = Component.DIGEST_ADLER32; break; + case digestSha1: component = Component.DIGEST_SHA1; break; + default: throw new IllegalArgumentException("Invalid digest component " + path.right); + } + break; case CRC: component = Component.CRC; break; case SUMMARY: component = Component.SUMMARY; break; case TOC: component = Component.TOC; break; diff --git a/src/java/org/apache/cassandra/io/sstable/Descriptor.java b/src/java/org/apache/cassandra/io/sstable/Descriptor.java index 38829df7da..dbce56cbbc 100644 --- a/src/java/org/apache/cassandra/io/sstable/Descriptor.java +++ b/src/java/org/apache/cassandra/io/sstable/Descriptor.java @@ -21,6 +21,7 @@ import java.io.File; import java.util.*; import java.util.regex.Pattern; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.CharMatcher; import com.google.common.base.Objects; @@ -28,6 +29,7 @@ import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.Directories; import org.apache.cassandra.io.sstable.format.SSTableFormat; import org.apache.cassandra.io.sstable.format.Version; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.sstable.metadata.IMetadataSerializer; import org.apache.cassandra.io.sstable.metadata.LegacyMetadataSerializer; import org.apache.cassandra.io.sstable.metadata.MetadataSerializer; @@ -52,27 +54,34 @@ public class Descriptor public final String cfname; public final int generation; public final SSTableFormat.Type formatType; + /** digest component - might be {@code null} for old, legacy sstables */ + public final Component digestComponent; private final int hashCode; /** * A descriptor that assumes CURRENT_VERSION. */ + @VisibleForTesting public Descriptor(File directory, String ksname, String cfname, int generation) { - this(DatabaseDescriptor.getSSTableFormat().info.getLatestVersion(), directory, ksname, cfname, generation, DatabaseDescriptor.getSSTableFormat()); + this(DatabaseDescriptor.getSSTableFormat().info.getLatestVersion(), directory, ksname, cfname, generation, DatabaseDescriptor.getSSTableFormat(), null); } + /** + * Constructor for sstable writers only. + */ public Descriptor(File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType) { - this(formatType.info.getLatestVersion(), directory, ksname, cfname, generation, formatType); + this(formatType.info.getLatestVersion(), directory, ksname, cfname, generation, formatType, Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType())); } + @VisibleForTesting public Descriptor(String version, File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType) { - this(formatType.info.getVersion(version), directory, ksname, cfname, generation, formatType); + this(formatType.info.getVersion(version), directory, ksname, cfname, generation, formatType, Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType())); } - public Descriptor(Version version, File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType) + public Descriptor(Version version, File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType, Component digestComponent) { assert version != null && directory != null && ksname != null && cfname != null && formatType.info.getLatestVersion().getClass().equals(version.getClass()); this.version = version; @@ -81,18 +90,24 @@ public class Descriptor this.cfname = cfname; this.generation = generation; this.formatType = formatType; + this.digestComponent = digestComponent; hashCode = Objects.hashCode(version, directory, generation, ksname, cfname, formatType); } public Descriptor withGeneration(int newGeneration) { - return new Descriptor(version, directory, ksname, cfname, newGeneration, formatType); + return new Descriptor(version, directory, ksname, cfname, newGeneration, formatType, digestComponent); } public Descriptor withFormatType(SSTableFormat.Type newType) { - return new Descriptor(newType.info.getLatestVersion(), directory, ksname, cfname, generation, newType); + return new Descriptor(newType.info.getLatestVersion(), directory, ksname, cfname, generation, newType, digestComponent); + } + + public Descriptor withDigestComponent(Component newDigestComponent) + { + return new Descriptor(version, directory, ksname, cfname, generation, formatType, newDigestComponent); } public String tmpFilenameFor(Component component) @@ -102,7 +117,7 @@ public class Descriptor public String filenameFor(Component component) { - return filenameFor(component.name()); + return baseFilename() + separator + component.name(); } public String baseFilename() @@ -139,16 +154,6 @@ public class Descriptor return formatType.info; } - /** - * @param suffix A component suffix, such as 'Data.db'/'Index.db'/etc - * @return A filename for this descriptor with the given suffix. - */ - public String filenameFor(String suffix) - { - return baseFilename() + separator + suffix; - } - - /** Return any temporary files found in the directory */ public List getTemporaryFiles() { @@ -299,7 +304,10 @@ public class Descriptor } assert tokenStack.isEmpty() : "Invalid file name " + name + " in " + directory; - return Pair.create(new Descriptor(version, parentDirectory, ksname, cfname, generation, fmt), component); + return Pair.create(new Descriptor(version, parentDirectory, ksname, cfname, generation, fmt, + // _assume_ version from version + Component.digestFor(version.uncompressedChecksumType())), + component); } public IMetadataSerializer getMetadataSerializer() diff --git a/src/java/org/apache/cassandra/io/sstable/SSTable.java b/src/java/org/apache/cassandra/io/sstable/SSTable.java index 811f4ef370..d66638e372 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTable.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTable.java @@ -23,7 +23,6 @@ import java.nio.charset.Charset; import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Predicates; import com.google.common.collect.Collections2; import com.google.common.collect.Sets; @@ -220,9 +219,17 @@ public abstract class SSTable Set components = Sets.newHashSetWithExpectedSize(knownTypes.size()); for (Component.Type componentType : knownTypes) { - Component component = new Component(componentType); - if (new File(desc.filenameFor(component)).exists()) - components.add(component); + if (componentType == Component.Type.DIGEST) + { + if (desc.digestComponent != null && new File(desc.filenameFor(desc.digestComponent)).exists()) + components.add(desc.digestComponent); + } + else + { + Component component = new Component(componentType); + if (new File(desc.filenameFor(component)).exists()) + components.add(component); + } } return components; } diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java index 1a3f796976..4cbbd70a30 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java @@ -35,6 +35,7 @@ import org.apache.cassandra.db.rows.UnfilteredRowIterator; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.SSTable; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; import org.apache.cassandra.io.sstable.metadata.MetadataComponent; import org.apache.cassandra.io.sstable.metadata.MetadataType; @@ -131,7 +132,7 @@ public abstract class SSTableWriter extends SSTable implements Transactional Component.STATS, Component.SUMMARY, Component.TOC, - Component.DIGEST)); + Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType()))); if (metadata.params.bloomFilterFpChance < 1.0) components.add(Component.FILTER); diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java index cbc2c39d7d..1f2a98f2e5 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java @@ -40,7 +40,7 @@ import org.apache.cassandra.utils.ChecksumType; public class BigFormat implements SSTableFormat { public static final BigFormat instance = new BigFormat(); - public static final BigVersion latestVersion = new BigVersion(BigVersion.current_version); + public static final Version latestVersion = new BigVersion(BigVersion.current_version); private static final SSTableReader.Factory readerFactory = new ReaderFactory(); private static final SSTableWriter.Factory writerFactory = new WriterFactory(); @@ -123,6 +123,8 @@ public class BigFormat implements SSTableFormat // la (2.2.0): new file name format // ma (3.0.0): swap bf hash order // store rows natively + // + // NOTE: when adding a new version, please add that to LegacySSTableTest, too. private final boolean isLatestVersion; private final boolean hasSamplingLevel; diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java index 38dab9a63b..089ae6fcf6 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java @@ -341,7 +341,7 @@ public class BigTableWriter extends SSTableWriter File file = new File(desc.filenameFor(Component.STATS)); try (SequentialWriter out = SequentialWriter.open(file)) { - desc.getMetadataSerializer().serialize(components, out); + desc.getMetadataSerializer().serialize(components, out, desc.version); out.setDescriptor(desc).finish(); } catch (IOException e) diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java b/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java index fa94eadb13..4f4c04b0a1 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java @@ -72,13 +72,13 @@ public class CompactionMetadata extends MetadataComponent public static class CompactionMetadataSerializer implements IMetadataComponentSerializer { - public int serializedSize(CompactionMetadata component) throws IOException + public int serializedSize(Version version, CompactionMetadata component) throws IOException { byte[] serializedCardinality = component.cardinalityEstimator.getBytes(); return TypeSizes.sizeof(serializedCardinality.length) + serializedCardinality.length; } - public void serialize(CompactionMetadata component, DataOutputPlus out) throws IOException + public void serialize(Version version, CompactionMetadata component, DataOutputPlus out) throws IOException { ByteBufferUtil.writeWithLength(component.cardinalityEstimator.getBytes(), out); } diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java index 046e290a16..7c03f54edd 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java @@ -31,21 +31,26 @@ public interface IMetadataComponentSerializer /** * Calculate and return serialized size. * + * + * + * @param version * @param component MetadataComponent to calculate serialized size * @return serialized size of this component * @throws IOException */ - int serializedSize(T component) throws IOException; + int serializedSize(Version version, T component) throws IOException; /** * Serialize metadata component to given output. * * + * + * @param version * @param component MetadataComponent to serialize * @param out serialize destination * @throws IOException */ - void serialize(T component, DataOutputPlus out) throws IOException; + void serialize(Version version, T component, DataOutputPlus out) throws IOException; /** * Deserialize metadata component from given input. diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java index df577df1bb..100cfdb7a2 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java @@ -22,6 +22,7 @@ import java.util.EnumSet; import java.util.Map; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.Version; import org.apache.cassandra.io.util.DataOutputPlus; /** @@ -35,9 +36,10 @@ public interface IMetadataSerializer * * @param components Metadata components to serialize * @param out + * @param version * @throws IOException */ - void serialize(Map components, DataOutputPlus out) throws IOException; + void serialize(Map components, DataOutputPlus out, Version version) throws IOException; /** * Deserialize specified metadata components from given descriptor. diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java index 53ba922862..2ed845cdf6 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java @@ -27,6 +27,7 @@ import org.apache.cassandra.db.TypeSizes; import org.apache.cassandra.db.commitlog.ReplayPosition; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.Version; import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.service.ActiveRepairService; @@ -44,7 +45,7 @@ public class LegacyMetadataSerializer extends MetadataSerializer * Legacy serialization is only used for SSTable level reset. */ @Override - public void serialize(Map components, DataOutputPlus out) throws IOException + public void serialize(Map components, DataOutputPlus out, Version version) throws IOException { ValidationMetadata validation = (ValidationMetadata) components.get(MetadataType.VALIDATION); StatsMetadata stats = (StatsMetadata) components.get(MetadataType.STATS); diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java index 9a5eae833e..9197b7a03f 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.Version; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.io.util.DataOutputStreamPlus; import org.apache.cassandra.io.util.FileDataInput; @@ -49,7 +50,7 @@ public class MetadataSerializer implements IMetadataSerializer { private static final Logger logger = LoggerFactory.getLogger(MetadataSerializer.class); - public void serialize(Map components, DataOutputPlus out) throws IOException + public void serialize(Map components, DataOutputPlus out, Version version) throws IOException { // sort components by type List sortedComponents = Lists.newArrayList(components.values()); @@ -66,12 +67,12 @@ public class MetadataSerializer implements IMetadataSerializer out.writeInt(type.ordinal()); // serialize position out.writeInt(lastPosition); - lastPosition += type.serializer.serializedSize(component); + lastPosition += type.serializer.serializedSize(version, component); } // serialize components for (MetadataComponent component : sortedComponents) { - component.getType().serializer.serialize(component, out); + component.getType().serializer.serialize(version, component, out); } } @@ -115,14 +116,13 @@ public class MetadataSerializer implements IMetadataSerializer } for (MetadataType type : types) { - MetadataComponent component = null; Integer offset = toc.get(type); if (offset != null) { in.seek(offset); - component = type.serializer.deserialize(descriptor.version, in); + MetadataComponent component = type.serializer.deserialize(descriptor.version, in); + components.put(type, component); } - components.put(type, component); } return components; } @@ -152,7 +152,7 @@ public class MetadataSerializer implements IMetadataSerializer String filePath = descriptor.tmpFilenameFor(Component.STATS); try (DataOutputStreamPlus out = new BufferedDataOutputStreamPlus(new FileOutputStream(filePath))) { - serialize(currentComponents, out); + serialize(currentComponents, out, descriptor.version); out.flush(); } // we cant move a file on top of another file in windows: diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java b/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java index 8153533453..824bf8b5bf 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java @@ -227,13 +227,16 @@ public class StatsMetadata extends MetadataComponent public static class StatsMetadataSerializer implements IMetadataComponentSerializer { - public int serializedSize(StatsMetadata component) throws IOException + public int serializedSize(Version version, StatsMetadata component) throws IOException { int size = 0; size += EstimatedHistogram.serializer.serializedSize(component.estimatedPartitionSize); size += EstimatedHistogram.serializer.serializedSize(component.estimatedColumnCount); size += ReplayPosition.serializer.serializedSize(component.replayPosition); - size += 8 + 8 + 4 + 4 + 4 + 4 + 8 + 8; // mix/max timestamp(long), min/maxLocalDeletionTime(int), min/max TTL, compressionRatio(double), repairedAt (long) + if (version.storeRows()) + size += 8 + 8 + 4 + 4 + 4 + 4 + 8 + 8; // mix/max timestamp(long), min/maxLocalDeletionTime(int), min/max TTL, compressionRatio(double), repairedAt (long) + else + size += 8 + 8 + 4 + 8 + 8; // mix/max timestamp(long), maxLocalDeletionTime(int), compressionRatio(double), repairedAt (long) size += StreamingHistogram.serializer.serializedSize(component.estimatedTombstoneDropTime); size += TypeSizes.sizeof(component.sstableLevel); // min column names @@ -245,21 +248,26 @@ public class StatsMetadata extends MetadataComponent for (ByteBuffer value : component.maxClusteringValues) size += 2 + value.remaining(); // with short length size += TypeSizes.sizeof(component.hasLegacyCounterShards); - size += 8 + 8; // totalColumnsSet, totalRows + if (version.storeRows()) + size += 8 + 8; // totalColumnsSet, totalRows return size; } - public void serialize(StatsMetadata component, DataOutputPlus out) throws IOException + public void serialize(Version version, StatsMetadata component, DataOutputPlus out) throws IOException { EstimatedHistogram.serializer.serialize(component.estimatedPartitionSize, out); EstimatedHistogram.serializer.serialize(component.estimatedColumnCount, out); ReplayPosition.serializer.serialize(component.replayPosition, out); out.writeLong(component.minTimestamp); out.writeLong(component.maxTimestamp); - out.writeInt(component.minLocalDeletionTime); + if (version.storeRows()) + out.writeInt(component.minLocalDeletionTime); out.writeInt(component.maxLocalDeletionTime); - out.writeInt(component.minTTL); - out.writeInt(component.maxTTL); + if (version.storeRows()) + { + out.writeInt(component.minTTL); + out.writeInt(component.maxTTL); + } out.writeDouble(component.compressionRatio); StreamingHistogram.serializer.serialize(component.estimatedTombstoneDropTime, out); out.writeInt(component.sstableLevel); @@ -272,8 +280,11 @@ public class StatsMetadata extends MetadataComponent ByteBufferUtil.writeWithShortLength(value, out); out.writeBoolean(component.hasLegacyCounterShards); - out.writeLong(component.totalColumnsSet); - out.writeLong(component.totalRows); + if (version.storeRows()) + { + out.writeLong(component.totalColumnsSet); + out.writeLong(component.totalRows); + } } public StatsMetadata deserialize(Version version, DataInputPlus in) throws IOException diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java b/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java index 72bfdcb9a5..0eda8eb775 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java @@ -71,12 +71,12 @@ public class ValidationMetadata extends MetadataComponent public static class ValidationMetadataSerializer implements IMetadataComponentSerializer { - public int serializedSize(ValidationMetadata component) throws IOException + public int serializedSize(Version version, ValidationMetadata component) throws IOException { return TypeSizes.sizeof(component.partitioner) + 8; } - public void serialize(ValidationMetadata component, DataOutputPlus out) throws IOException + public void serialize(Version version, ValidationMetadata component, DataOutputPlus out) throws IOException { out.writeUTF(component.partitioner); out.writeDouble(component.bloomFilterFPChance); diff --git a/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java b/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java index 01c004911b..0a89d74b6f 100644 --- a/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java +++ b/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java @@ -110,7 +110,7 @@ public class DataIntegrityMetadata { this.descriptor = descriptor; checksum = descriptor.version.uncompressedChecksumType().newInstance(); - digestReader = RandomAccessReader.open(new File(descriptor.filenameFor(Component.DIGEST))); + digestReader = RandomAccessReader.open(new File(descriptor.filenameFor(Component.digestFor(descriptor.version.uncompressedChecksumType())))); dataReader = RandomAccessReader.open(new File(descriptor.filenameFor(Component.DATA))); try { @@ -206,7 +206,9 @@ public class DataIntegrityMetadata public void writeFullChecksum(Descriptor descriptor) { - File outFile = new File(descriptor.filenameFor(Component.DIGEST)); + if (descriptor.digestComponent == null) + throw new NullPointerException("Null digest component for " + descriptor.ksname + '.' + descriptor.cfname + " file " + descriptor.baseFilename()); + File outFile = new File(descriptor.filenameFor(descriptor.digestComponent)); try (BufferedWriter out =Files.newBufferedWriter(outFile.toPath(), Charsets.UTF_8)) { out.write(String.valueOf(fullChecksum.getValue())); diff --git a/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java b/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java index 04d65d7207..123b983c9d 100644 --- a/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java +++ b/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.UUID; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.SerializationHeader; import org.apache.cassandra.db.TypeSizes; import org.apache.cassandra.io.IVersionedSerializer; @@ -162,7 +161,7 @@ public class FileMessageHeader out.writeInt(header.sstableLevel); if (version >= StreamMessage.VERSION_30) - SerializationHeader.serializer.serialize(header.header, out); + SerializationHeader.serializer.serialize(header.version, header.header, out); } public FileMessageHeader deserialize(DataInputPlus in, int version) throws IOException @@ -211,7 +210,7 @@ public class FileMessageHeader size += TypeSizes.sizeof(header.sstableLevel); if (version >= StreamMessage.VERSION_30) - size += SerializationHeader.serializer.serializedSize(header.header); + size += SerializationHeader.serializer.serializedSize(header.version, header.header); return size; } diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-CompressionInfo.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..6d49922f920ea4cd9d8c53ead07d86b79eb36a45 GIT binary patch literal 115 zcmZSJ^@%cZ&d)6iW8lx_EnhbxlK4L(|&k=B7j<9&d=pxVob~nd+!-YpPk5 zXj)s-TAy0Kp(e3z&DwR%Yt|=f)+Fky)SRY8*3WZ$5VB+YpQEoQ}vCliAKi( z$9}(?$5HL|_vO3Yym0WS9ON%%SP5Espg!GGQmolN*IaB;#9Kw)jx5dS|DW(mj)E}u=X2n^*Ior#yL3@vjk zSNBZ!Fbf>Q%<8mN@YWs{IBaI#-oyfznwcM2$pS~r%#Rkcz)>^v&)f_!x@Ot!AnSNR zDvKVU)OCT>YV)Fy&oFwSSA6me)R?|e4E6ZzwU`eJzHR6((S9I@I__MEw<$*h7LgFO z=iR)x`xt~tjt1s_d1j0?9f}W%VBZi6x3n0CI9jy7%VNrDssNMyRV~oylO;=&hJ)c= zj~MbcUor{hq@UzexeLK1WPHVR37`YkG8+nJQ^eTJEx^0mYP$(x6YmwQ9WIobc&}vb zav@^k4dShA8AH^>`yJ*s_126lqIs%liD<#ryeQyH9~x9-DeO|FWKzcKc*@szsu!@V zBi!J;`YX=CoUD?Y?z}v={_%keJD}V50NI7L&U5F|Vlo-3Mhq_Qu2e>J;;KqUUJQJ7 z^D@J&Kbsk@^`te9IIqh$59=8=oO9{EtM9|ADUuc>M*s)=w*USf0PCCVDatNm$M=3r zzCGsdI($YJG<=Oz3>w^zp3(hT|F)HyKMS0)Nn_}UO_KgR?d(}_!3>BEUjt98?raB~ z3)b5(bejvNfIhQJW2)a8nq*9SL`_yNBG~A1gm;Wmd zrbQ2CN%PgSr2n;Z5V@t0P{oT+h&RVsQzSr0ulNoY6Fpj5B^3X)H{Ab0mF3?l9+1w{ zSRF1bO5!J(se}8UJZHbqun_*2Ct2ZB;Q{XJ1J*c$|AKul_I&|Y>OIw(A=1xlqXnDv z<(myrGa?p@Lm(pDFjPanx$V-7(ruWl32=zlMrGQtS@(Tn9#yenflerwEiZGsN^qY* zb7ALuC>JJ;xJ239i+tm~ax;nU{CJB7{1t~}2eLXQ>sj*1o6pGVrgzGGxcieY{W#6A z4ftcz!m#1S*KxZf3FzO@6cdooUWSF(R^b%0L54|3PhZ|7Wx_@a7K>Cvja+Snz+qH| zV)D&ezK<4o#WI(5K|$N=uzY!4j;b7Gsw9--U29d%Lg+bX8Z(q?C2QvjVKehG*7g-j z)0yXx;lUR@C`4#3BzN*+y%42o3m1A@glIY!c8V)fj47e`J(47%FLER)sZM`ol{FT7 zun%Vd4t3$Aspz{wNtpUcOc->%M7|uL#Dk@0RqLe{RQW8kN?R{TXf+ll{j{frFilC^ zwIEEUMat!k7tQ*!R*PxIwJ?Oq$hQ%6#Il48?rT#|X1Gq!n+*6o-OG=2Ju&T8qVEY} zzC2r>t~PsCSyzeqvcUp-+*2e=YoZlwPrnA~1E#G9u=P&@+Z_R|mr3CoE|xaLWGgnD zci?MTy_6!MCuD;u=HimtS1NEvLEXW>FiP+DtCEUATp zD#(poHM(SPT_vRk8%8zJ<)p3z+&AHZxxVwP77bshRo87z-RR zGcSs=z)>@E5H!y+3^cX^7NZkwo~4U@#AS`ecFW9sHRxCdc8hzu+Bfj8ll0EiZ$`49 z2K?u-psHz6TAzd8oq$k?qUv?uf(qpK>Am5>>&A&QC5lT)8yCp;4OZ*{q6}=;O}*B0 zH)`drsmyS85OZ4V*gwIVL`tBo5zx(%W9* z;F^~{vRkGs%?EoD)~!l#U+_jL?twzP9yIgu`k$qlo&OAc<4wN3jJ!{=AN zFIcCWw88bmnn?@ols|SzqAd<#+L^TQY5C%p1eaEznzYs)>om3qr2|d@1>`HGc1>z; zVu2$XGfZ1myv-|F;Ha7T{&EHwEePOrHKBXvXv7Z{TVt^oGc#{<|-VR zoc)A39mXct|8fY((uqOOs&J5-Nlc4(7cU2GV z!=85?bx?gBgAG$Yl^QMhgJlcA;J$3-`QnS`bn}ICt;b1yCACfwu6yPjahindA|hHJ z%u_|n?_a{rMaA+~Z=Y_W&9tsXy;s_?^bynkZP3* zca|?LHaCAk&mVV_XHi)Yr|xo{NQvL;g~5pAsJS<9@X8b`D6-ke<`}V%l4VuEU?C+I zCTZ{}%uo9mOHYK+B)xep0qOE>Y*)Q=mF06Gc?HZNuYd53bvH^gM&fTPp@=?y*wCZO R_twYYvv7|4`SmR`{|{L#M8*IB literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..44b89c4a08416c0de0d09fe581a098ef4097bec7 GIT binary patch literal 1219455 zcmeI*U5I2?**EUBV>Pejz$k`bPKH2)1VNqY`Rc|X#Djs30fV4IM9hm3iM~X{@b?2X z5)lI$@B<8D5CT!bpk{M6*1fuSmt@FHy1Tk= z`|_andLBh5yVkn)Z~bajO&JcBjeou3^dt9PxNza~8~=AHcTP@CP98jXX!-DwqsNY~ ztQxro=7F`a*dA2Bz=dp&Ef4Hep=AtS<*FD@&Q8`PFxeC4Fi(VeDX;kd{_p=Q?6PjH z+eGVDzq7L1?dtjKw{cxso1C8f{IYq9G}N>OTmEA?V4AaYlI zz4AbeC%>4Sk->cUMDrJ0FaCdv`V`qH!{DV2(}rooQdKB3ZP=^+7)fmDmU_J6kVnp< zK61P>-WglU|K2K9yuc-d31LE5vJe)ztCXwX9HTfFCV{1T8>KR-Y=5V+jVf$y4k-ZMQwRd50E{tR(BN@pO zNfuv{tmneu1uuBPD;r*sz^-5FZP+dCyGF}C=<-3={{EoL3dpnqs$S&sy&9`F)2j7u z)gPZ+)EkxLt9g)Zs}_0GKbI}^F9zAoPp^GaNM8+KIdqxI4HEMDtlUB39bta`OJj9g-v7$$}# zieZtwN;z>~jCvbJGLn&uWQimj+c0>+3tsTbhF2u8x39&uw_(TZx?g%JNJg?ml8tQ`yx;{d zcxA&Y64?7c64%~_t=M(H_^#W1abL8Ai`NoXy;>VaE-_3D6T=e4ut;8|-1&HndK*SE zl97yLi6k4_FnGZWUhv9>S0u2zJ`>m8hOKISv_4v&#cO@6%NJjlRj<~DkxL8{!^E&e zF)Wf-DR-ZZQE$UYMlzC-ERkem8wM|U!3$p5@QMWX@dx4>ZP@ZbyY3g?b-OR_iJD?# zoV?hata_141YratE@s4H&W*@j_4OI?bkfqYOJUJ)RFQc)<%^ z+3<=4_O&PC+P@{~U>M9`2D3z%^)`%L%mvfv|%J88OcbNNV4%;lJJ5T zyx^4$uSj6uetM=2JG_{mqxw_%<60Umjh1HnEsb?FpLJCAYHb*~#4s^T3`-QlB6*ea)ca!8 z+c1)mjASHBB-z-8!3$pSf>$=YB7yz-^>OWO*os~Je0K5fv-_-d+TMXwNJcV}C6a7x!{7xkc)=?hUXj3lcQmfO4O`XHXlb-G+iz*C zqxr0(s#j~n$R&n}VPaUK7#7K^lympSsJCGxBN@p^mPoR(4TBfF;03R2ctryH!-=>? z8+Q1hUHp7@@$R$xtaaRe>sa-wZ5X-CrtQxrDpPr0>nL(peSP7pF^)EjWb=9ltahv2 zT-*Lrvy{y?3|=PG_9qmW!91^Z)bWZ0_Luj>b=roVnw&gr9-4>qnuq3^xwhT8R`CLt zkD}6i6a_u#RrDft)z|Y6$9QsfvMzx+R{(RECpuxZQH8Nf3$)BGcIC4x^4GsU6xXG- zcDmw_q%Ns%x1KPE%%OSBp{f_TL=fgMXI|#)%v_7yRbT(}Sd9C*Fd57jjTC}5)oC`> z8)ev;>G6Dc!3$pS%7#}p6%dj4DNO>*r`%-EbWw(8Z|Fmj1uVwf0~ zD27GyD#OxGW7OL)l97yLBugaO_$^6z!3$pS%7#}y4k-@I|%}g6cGLn&uWQimj+c0>+3tsTbhF2u9tG_kVh8=N6Cg&L$@0<5+ zKc2>`dbP7*+3tsTbhF42q!+{?} z66I!K!^kCuiD6<`q8Jv*s|?rwBSyUqBN@p^MzTbbjcpjb z-~}&uWy7l_u;Iotk;Hl%c1$afvlZ~ZdEfS9i&^z*Z5X-4FfmLFOBBN*d6nT!OEKzg z7|BRRGLj{dY;42e1uuBPD;r)dfep*QiX_(Cu;W@4t;&9ERm}UG^SmnR>i!}Iq$1ptqmiW7$$~^VToc`B(E~ux)P(_hLMb9BqLcO$;LJeUhsk! zyt3id64-Ftg-Bx2h8;Pm70B5Nc;CEl`?1BWdet_JT>J6eryljP&ilw+)7RnMYcY;C zjAU8gQ5w-`KhE7!Hrp_G?Z*iKKJaCo_Z_d6z=rp}I+ED54LdbC>F>wY>}&Ql`-z(U zX&DBtBNnYin`Y4p&nv5ux~8wg9k<7La(1#Vfq@KUAWL+@YNHBcmk_qhE_UU!tL3lZ zgV#k4TUu+UD-KDiD&DLWuerPb=5E!CTq20IzyH>L?)N-$*YtJx@Le(P=fY$#A4e(# zZK~63syE88Gt=Yw@PZe-;FS%pmcWLO9*iW`za_bxJ7N0M+Y{;X_R|McRj<~DkxL8{ z!^E&eF)Wf-8SeRXjCvbJGLn&uWQimjzan7im!ULHjG?im>4F8C5mB@yvp#oFUP32VI(6N$w-z+vat<=7rfvFuWWd=1U7u( zosq$=YS^^s${$eDt-i95|y*Ku!*X8N*_EVQv^=fSx zxx_FrObkmD!y+3tsTbhF42q z!{gtNB-Y!o)!chye|lY>E^j||c~!60hLKAQ6T`%?L@_LqR~gpN$EdeqBqJHgNR~*l zu?>S4yx;||YY+8naYd`g$KJoC0NB&PddJ|U4 z@bfEr7j|~CE`doO(np%~;Zd}*T1r%5>=MG3*~P9zeR#Jkny{yS*_*Jnx}o&@hng^1 zl;>$YuXusWgiSMHZJzXawa1IpHGLhPeoc%gtqGIBBrplg11-%1ZA%lzE_ShtUD@nv z`D=LQ*~no_tqJqnhb&_m%Mw`@O&GYq1uk%2PyRzBU^4IY9N#wAlwK5!v|JT3YQC@NSk$W#(xbXS- z_v-7Nb-#Jg#(jGmclXczQ{T<+r$wt=;PPxv^KABj@PL^48L?8Xs)$V)Yd<3W>?Q&zm4nk%af-kKRE<5n86HYi7=b)A<1RNrkSz2FkRSe z7k1@=p2dDKIU|G3?_(4z(Mt5O<@VRxMi~Y#F-#0|a57bevh}Z*EU)@wZ^Le>$14sA z2m*qDu>F8w9nEJQRlL9@gb86nSh5fnxvP|`XMRdd0!#Hadd|=1IqyC%>V4j*!q)8` z9U~A#1<^!7bfyV=-S|^t^>l?GCWrwY=xIQ2RT#O<*fcZNrfyL;b@P2^Hkz(VXlyGG0NO@#i}>$=YB7q&hA+Eg*JEEJ>&FE%cZZ~7~%zO1zy;>VaE-_3D6T=e4ut;8| z-1M;+^)`%TBqJHg5=l0;Veo<%yx^4$uSj4wuf(;tVMp!f=e?hI$K7%LS4yx;||YtoT`^TzRYs1JThKXTfSfUsf$*YvxABjX|62rtWF)UFGi{w?x zosY+;w_zkB8OcbNNV2gFgBQHu1+Q#)MFP9)GjZ*0*sA^fy!Z3&xI3Zy9wHjG?WtyQ}$h9!z&k-SRzBN@r^WXV!C+c0>+3tsR_ zhgT%9&weMa(>CnXcVbN% zBN@pONjA1&@PZe-;FS%pNMPT6F0TD-*bz;JCSzVrhPh_0ZFjC!y;>VaE-_3D6T=e4 zut;8|Jo<(h^)`%TBqJHg5=l0;Veo<%yx^4$uSj4&J|EZKh8@*VXehSZP?$sJ(7fhQ z)vL8(S4yx;||YE)oIGqTT8q}={MMrNw!QUM@dB5RqSAa6 zWx;Q6!T+z^zerv6_58yzo}8VmOJH*=BmY+>l79}M>}6u#sKVG~*RU*z3ZjWlht4!% z|N2nmu%)$jy5f)rs|V{|K3L5^^Y3!zU)76TA_zCQaXD`6{d|esRbT(}Sd9C*Fd57j zjTC}5)oC`>8)ev;>G6Dc!3$pS%7#}qIIiT(ukHM#aRX6)Y0*s51+ z!^kCuiD6<`q8Jv*s|-s&jZtsINJcV}kt~s9rk|mOCY{TFMFL=Q#8(xvbuKw0c8+ODw zm%TgZ;@-RWPQ_i`PcKxx+SxF2iD6=x7?vo8Me-`cwa>?>pA91!$w)@BM3Rkd7`)&G zFL-6ct0l1Ezz-sc^|N6|H8L6*jm+gWGS%JNJg?ml8tQ`yx;{dcxA(@C9vVfGm*r48+Odje(!en?!9}jiM+ffvg*~^Fmj1u zVwf0~D27GyD#M$WV$|C(l97yLBugaO*oMIiUhslfHoRH_84 zH8R%B-mRIcS8Kz_C5DM%VpyUW7Rjp&E7!!Rw_zkB8OcbNNV2gFgBQHu1+Q#)wFEZY zbS{!uZ^KsX?DuYG@7}xjn#jv*BCB4l4I`HrCWeV&iDFnJuQI&th8XoWjASGu8Oah! zHnw5#f)~8tl?|_!z=jilizL?DuvLwWMn)rZd5w%Uvv+Hz>ebpXa*1JLm>8BQhDGu! z!>ubZ>TMXwNJcV}C6a7x!{7xkc)=?hUM+zQw_S)N7H!y(gLd|Nx3hQe-Fr>sdy;>VaE-_3D6T=e4ut;8IxaZR`>TMXw zNJcV}C6a9XmL$C31uuAI!>c8*;Zrw966%JNJg?ml8tQ`yx;{dcxA&YlGpc8* z;lX<%iS@H#$Fv*TjlFC)%s=z*a^_#vtF>X|62rtWF)UFGi{w>?hn|R0Z^KANGLn%j zkz`{V1}}KQ3trjqY6)z3_=}OmdK-3J8=;N3oHoLIF<Md3#CjXH zs*TV_TuvKdzL+n2IbW(?tqmiW7$$~^VToc`B(E~8pN~;*!$?Lll94QtWMdl!FL=QV zUfJ+!32b=sbR@B98+K}P(r+NLjAblKWZAR~1J@CY)}l?bXnlgRvf7)lQih*j(Yvs- zlXVFUWFP}sqE4xlsKVGKge|j+UHR;aChVzS_9kqtZYcf!p(acg<#`&6azXTsRUE_Sgin_ZE^&iyHJ zSTtdN_mE{QV_720q6q^RxWEOjRB%NCd;ZN^n=p`p3}hfn1leX2#x8cTi(T35iX8UB zKeskviN53MYbL&CvX?*CZvHL8{Hu7?Z%2Yl2ou7DutXs&a#tDt`qmi5nJ|!n3}hfn z1leX2#x8cTi(T35YWZvU`y_JM(pnjo+wc{C`%Zbq=|}FpaN)w|#pLEHaD z*#3JLybDUeOZkD)Di^pso6|g-(T?_+pAjqNs*2c@vGy}!5}3`V&87!hng`mJpAlmh zyV%99Ya_gBi?VmI$-y9+F&UY?>LX3)6+oc41c@=vnL+lQS~d zrF;Nl4Ov4zDqNJ6vQdV?OAHgk9Gpy5p>(_=fxYUFy$!pi9Kg6K>W z_PX(>#Omn^K}-+>I?&UA-l{NinXzeRtgYey_SW!H-`|ZUtds*AKPDFE!elTROa}8r zOY=nAD8uTxFnGZWUhv9>SERA)m*To~OZ%?T@}*`u|2di70Wt^3miHL`%{Gi&Vwf1V z$E#5)xb##owqZBEBgT_x!$?Lll94RihO&Ld8(#2&7re6J6$$K(*Tl8AVTa|}OV6|J zm3yTT+}lR5>eYIDa*1JLm>8BQhDGu!W%-U6^)`%TBqJHg5=j<+(_}px1}}KQ3trjq ziUfB2hPd`N?1+X(!=vHZ+lI#)y!16#^=fSxxx_FrObkmD!yta`OJj9g-v7$$}#ieZtw zN;z>~jCvbJGLn&uWQimj+c0>+3tsTbhF2u8x39&uw_(RLJQ^Mi&)zmX*5IYD!Kznl z!^kCuiD6<`q8Jv*tCZWm5u@IQk&I*{BUvKJ#x@LI@PZe-vf&j8>|M9VwYOo%?ZhvA zC+=RkSDM4UZ4RqmtqmiW7$$~^VToc`B(G9#e%JNJg?ml8tQ`yx;{dcxA&Y z64?7c64%~_t!Q{OJQ|+8ZFsD~OJ9RkuhxcZP@Zb4UdLL!?U*yk2QGdYq087 z+c0ujwN~x27?vo8Me-`;lh4K|+AxxljASIslLAZGY{TFMFL=Q#9bS>ZKKq@xPTR0k zlatGN{we%PFTFBwuiUHu&8Kw53tT#oG#va`*VyZXD90tm~#a%hk2qC zRvT3qyR<-BAn`6!yz6#F{`%67;<~ifPFEcAR%UuDy<6U`|ILc)QfGG6i(DeerOp@s zIbtq`n322c>sS6A<9;qo2J=NDg`h$(O(D2ZhMk!n&xaSh;03R2ctryH+7of@-;#7N z3}!HcSt87O8%8d2k&9fZ+ z3tsTbhF2u8?>-mTem3lg4nha<(jA0ZVwNn%EU9|6HjG?im>4F8C5mB@yh?fW4KeC% z7|BRRGLj{dY;42e1uuBPD;r*sz5tqmiW7$$~^ zVToc`B(G8)e@l#d8%8pck&I-CBpcf>c)<%^@XCf)B(U`>;@aD=V>$>O#7lP&W{Fv{ z7_+46)!Hy}iD6=x7?vo8Me-`;$y;O8+c1)mjASHBB-z-8!3$pSf>$=YB7yzvwQ=oj z*l|6Fo?|h34l~hAeCe53^=fSxxx_FrObkmD!yS4yx;||YPS0u2%yeF>HHtf{oXu(1ei?ESkC zsjI%8e>ldIvy*iR>=J6ky?^uk2`pkMIa2aQ6~->RhGjui5KVMCbfyXW*M}m9Ev>cF z6^A_JJ>)&)J=C&1)T&GABYBnbpT}a<&xOfgzG$Qnw5d+Bsop5V z&P$=YS^^u&CnAaUZ%HoOuh_5HuV}-v^ea`b)`pQw3=_k|utYH|l2;j) zej20RhLMb9BqLcO$;NL$=YS^^ucyg!myZ^L{|5@s-iSt87O8%8d2k&9fZ zS7@hH1mn zwPEBE!^AK#EKv;GXv5yLG}DHWjASGuSt7~CHVj_yf)~89;T3Jz@~>vvu;bb=ZJ0Jp z8c)<%^@XCf)v|%@$n`y&Vv|-vX zZJ0JJT^mL&F-!~-!xF`?jW+CUH_WtQBqJHgNR~*lu?>S4yx;||YZpU7q+%x zM-FPkv|-vXZCJK8j9gZ&RhwniN*ODwy$dU4c=y`YHjHE>BN@r^7+K0@8wM|U!3$pL z@QOCFnDRPwb;HVoa!{uOdIymgOS9RZfSeU zWzV5Z&mr%YcPrN(aHnT%)r(yAPdh!Y{P&S{cV&&-HGLiK`E-nX8zzILiqoVZ#qLV6 z=re3<8wM|UIoqohP1B0bv|*pRIg(g!!wxUHy#9Q$$NtV9R>0O3Q1xnU7`enSF-#0g z6vHBUmEm(=j!|#JNJcV}kt~s9<8Ow+3tsSoS2ny_0vo>Y&PZat4fCU6FoPM)5@FWc zFmjQLT;xh6S7fmJADU^yNJcV}kt~s9V;cr9c)<%^+3<=a_P_^b+OVTeo@_mN;%>Mb zPNFUHFS%5`+SxF2iD6=x7?vo8Me-`c*MAtJem0C`BqJHg5=l0;Veo<%yx^4$ua>}u z2k(g_*3X6=)Bosy^goN-|5%}0S7_C%wPEBE!^AK#EKv-Lrk|mOCY{TFMFL=Q#8(uAe4Uc{^l2~uUR`fsmAN|iF_dizX))iXy zYHb*~#4s^T3`-QlB6*eJvFBpc+c1)mjASHBB-z-8!3$pSf>$=YS^^s$|9&K~-iEE( zYj53ayBqF?Zg7#i!Kznl!^kCuiD6<`q8Jv*s|@SsW7OL)l97yLBugaO*oMIiUhslf zHoRH_8=gEJNo?ANotm8V8;C4p8Ost`HZ8-zwa9&?PZWHj;1h-aUZK4SD`oik6}<~P zJ6V^&qz~yMP5SU?TUjk7sxWr_H}PhN;3N1f@~Y@|MHBYaFMAWVRyUM>|4YBa|ProL{lh%YuU=o-F=7E;xfwrXyV;8&F#jb32wfr?a z^K9g>rPhS`?L(HajAe-|izW$Pz)ec_xfq>|z(Y zve^|m?A)IsheZ?ScMn;{GL|K>ESfNIfeT#VN(EOWu;<^rwFv_m$Up|NM38MZVeDcT zyV#Y@uE=38{Bvs)<~I*n#xj;AvMib~aDfY4;7SEoB(T4}b!!s_GLV4`WQic#Y{J;Z zE_Sgin_ZE^{yy1g!pd;C4VV7-*Yb+fkKB9V!iCSrzgJ)HtiQ%{(65~Ml@mV#xX3>O zXoYTFp;az$c{ZncHe0@1m+$_)8x^kpudCu3U!Ih}Y&LB+JUMc$rN zyuc-d31LE5s?V_^b=B9aXMRdd0!#HaN{ABT{!WM+RoJ@Sqhkbus34jsh<3Xoi@k3A zDY1IGLJ$+gfDZIDpjXA(xiE5(i(KSNC0Asy0~Hyml+kc zZnzt|!A0%{t6r@QBbOK^hKXT`Vpt@vQf~TKjCvbJGLn&uWQimj+c0>+3tsTbhF2u8 zn^)r6+pwehAN`O1XOa6KD|G7$t$MXKj9g-v7$$}#ieZtwN;z>~jCvbJGLn&uWQimj z+c0>+3tsTbhF2u8x39&uw_(TZwYToI-3@m`H@L{%VAZR&VdN6S#4s@|Q4EXZRmyGO zh*59DNJcV}kt~s9V;cr9c)<%^+3<=4_O9FG+S{<>`XBv|{%4W4F8C5mB@yh^$Kkr?$hjASGu8Oah!Hnw5#f)~8tl?|^*VDJA(Tzea~Vz0e*ukCKQ z8@j%JNJg?ml8tQ`yx;{dcxA&Y64+gz ziED4eR`oynAN|iF_dizX))iXyYHb*~#4s^T3`-QlB6*c^_t_ZrHjHE>BN@pONjA1& z@PZe-;FS%pNMIj-AgC?6cpA>$D9!H95I# zwwNumv&D=sBNlf?RJ_3Dqo_0=Md1{umD5OF_4U3#$9QsfvMzx+R{(RECpuxZQH8Nf z3$)BGcIC4x^4FJs6xXG-cDmw_q%Ns1Zt-Dunw_(=v+6}I5rhn6n3ZACXGG+#`udfB z$GD#hlfit^NFiubon}+LQHGtF9?yptyx;||YN%spN|6_24UK+AxxljASHBB-!{aNqE5vUhv9>S0u1+KRwfi9bWWLRQ>s!0myX* zz>M9^8C&&gXT!)PhKXTfSfUsf$*YuyuZ>YZ8%8pck&I-CBpcf>c)<%^@XCf)B(U#3 z7uS9^?1;VlZtmUPU3XWPx064vQ1xnU7`enSF-#0g6vHBUmGbBtV$|C(l97yLBugaO z*oMIiUhslfHoPK%{rG%bdmDCCU!$+l*X(3pV@2)eimH0GHjG?im>4F8C5mB@yh?fe zEivkC7|BRRGLj{dY;42e1uuBPD;r*sz}BybYj4Aj*}L!N-re1GcXf?B*)>+ZS{p_# zF-!~-!xF`?NM5Bpd25V%8%8pck&I-CBpcf>c)<%^@XCf)B(R^oHmVaE-_3D6T=e4ut;8|JoUa9^)`%TBqJHg5=l0;Veo<%yx^4$uSj6O zetlef8@6KazMFe@ch}w3HST2BSoLac7`enSF-#0g6vHBUmGaEpG3sp?$w)>rk|mOC zY{TFMFL=Q#8(xvXes?sky$xH{*XV2XH9OhYSW&yVqN-l44I`HrCWeV&iDFnJuTsw4 z8>8Nak&I*{BUvKJ#x@LI@PZe-vf&j8><=g68g1C&gZA#bxp#MW-CbSdPIiq|uiA!@ z%e>mjc|~ec@9v6<+*My+_-c%!4I|m^-ghh8$~MDx@>yBRW*Y`CQ)?%u7OY{tyDO^W z6$$Jw?}_WQ4LdbCdD!eT`*wHsnPFzw&dsoj7r1;BmFA-;{Nb#d8ad<|315vT)PxAHq(r)dbKu;Tw<6QCWa-7VUfJbu=LXy^)`%TBqJHg5=l0G zOA=o2f)~89;nfn@aOM4x#CjX%YmzX78O#!4*4r?0k&9g9N+nlhu&aJE(}t0ZWF#Y5 zBFV-!3|{bp7re6J6-n&sZ_Tt}N1TkwbTY=f<=xufC-16W?Q9si#4s^T3`-QlB6*eJ z+UH}`&xVnVWF#Y5BFV-!3|{bp7re6J)e_in;0KY!`q{9f`W5}k{_a<-fJ`f(>ebpX za*1JLm>8BQhDGu!!}b4&QE$UYMlzC-ERkem8wM|U!3$p5@M;NcxbaLRvEGIq(*+3tsTbhF42q z!}6~piS;(@xPC>yvcLNkD+3tsTbhF42q!%gQRiS;&YMHi5%3-E4vxAu2;S@mjd7`enSF-#0g6vHBUmEmnS z#HhDnBqJHgNR~*lu?>S4yx;||Yvx!fT~w(!^kCu ziD6<`q8Jv*s|>fU#HhDnBqJHgNR~*lu?>S4yx;||YpmI=p)=#?gk6EZ6%;9`fw(8C%L`8wRiaJr!UG z!(1z%^u6%a2{55>=y2xQmYwdK!At_a{o2%G0WB2on zt$LA51fjrwRv_cMAGvG#I(+!98258wGMJAe6@oU^X*SgxW!RbN@qBo}3tsTbhF42q z!$%KB66@cRT+Wy){h95AG%JNJg?m zl8xVzgcrQv1+Q#)wFEYN>gGsdy$w68S<)y;>VaE-_3D6T=e4ut;8I z_}rIc)Y~wUk&I*{OC;IYhQSM7@Pb!1yjlVqzVOaSV!aLXqhTrk|mOCY{TFMFL=Q# z8(uAe4G(`Yl2~uUj%VBv`!j3sG4F8C5mB@yvp#sr(@LHFp`ms zWF$)@+1Q4`3tsSoS2ny_0vjIvW+buRhOKCpG)tPL{n;#KT>Dk8)`pQw3=_k|utYH| zl2;iXdoD)34I>%JNJg?ml8tQ`yx;{dcxA(@C9vV~??)2rZP;qY9kD;N22X>xKO4NN zS8Kz_C5DM%VpyUW7Rjp&>*r(C+c1)mjASHBB-z-8!3$pSf>$=YS^^uMJRM1F+J>E) zob(%rEMpnV5?MAa!@#van^2#E_!K1Try#uvD`oik6}<~PJ6V^&qz~yMP5STvT3Ib6 zsxWp5Vax1dSE4?=+Z9dNQ@`v@*jn9C`u#&qm@LZkG@e(yz-7XwnXoob+Pm7`Me3Tq z4o|-(#*@~BNnjF~1m=O3=7F}Q31b(#*u}1FcD4L9Jo9Yiu%*_7`RzlNv5aMjEQ=-# zT;Kv1xKhCt3GDaRMFNW^3}he!8ORbrws|IuUF>2PyRz98Iqck@B8Np2=64TS#xj;A zvMib~aDfY4;7SEoB(Ue-ytN4f8OT5evP6(=Heu{y7rWS%&92B{FZ^?B6PD;Zp1x+{ zYbIHLB*xs`skvM6s^5+Tmk=g|31NvsSmdrU{PnFdiZfv#0~yFbmI$)VCX8L|Vi&uz z+12vb@b^jNu%)#!9BISR?1Zsu_iO%p zah-m7^7P~#CWbjUnW{qB`qxXASN*ZKVYk%d6^BFxQ9)GL$*5pO?dFQAc!5g@6T*bB zWFahaS1DJ|{FImkmg;Tvbl=UVySuyicXy)-Teo|3j6e_-L=y$knI`OY<4=jz(-nf4 zAO>`xrvbfHVdOGn)67`gyT#w$&Eq}VXu?W4u<>JJaV|^-lfh&#PqZ{ow2d;Xo(qE) zyx;||Yc)<%^@XCf)B(S%y#kIF#$FwwB8ZFKCTN>+VKI^FJ)!Hy}iD6=x7?vo8 zMe-`;wr|9!w_zkB8OcbNNV2gFgBQHu1+Q#)MFM-*?Q!jG*m1k~`RwA|XZKm_xc%0# z>ebpXa*1JLm>8BQhDGu!<@QHn)Y~wUk&I*{OC;IYhQSM7@Pb!1ydr_U|08kjZP<#I zMoXim*?vo79nEJQRlQmpMlLZ-3=_i=#jr?TrQG>=jCvbJGLn&uWQimj+c0>+3tsTb zhF2u8yFL@w-iEE(#m{FK?>@WFTF33Tj#aPLhLKAQ6T`%?L@_LqS1EU&jZtsINJcV} zkt~s9V;cr9c)<%^+3<=4_VEYe8g1C}K`o7zMoY8(mc}}o&pN7l)i#V=R;^XLEQTeD zVUfH_`Q)=PiZ+a7BqJHg@+8PoHrp_G!3$pSN{3e@u+M%cuG2Q`)a2xHo_`8|()rX4 z?z8*6xKH?s7r1mFX*v*`;jMK;m7d zc-QTU{Pm?D#dT?|ovt|Kt<3aRdbhk=i(6C8V|G@($R&czW3Kt%pzY3S8@a2#e&ydW z?&rc}FkduM2r2~A6oMON*qQ0^e0aeNUhv9>S0u2nJrURbElCH%U~4QyhM8eIH^Zu4tqmiW7$$~^ zVToc`B(GAQyfsF>4I>%JNJg?ml8tQ`yx;{dcxA&Y64=jP8`s{39oJRpDt4}`Fq_P# z-JMNUuhxc+3tsTbhF2u8Kb(kbv|)!2>M!&cyW3xwVP@FQ&9JIhZNtd5bNAE= zwL;CNBfA{xBX`x;7rq+fXv0Wm?(O#6BRt`EZk3g?*@nSu=WeS-YLS{vyZtEactryH z%X{KFZNpAYP9C-btw1Yqw^yK5wo|LD;sq`rMWy*D%F^GdrJwswM(V1s=O2#o<#uhxcgIOZXdK*SAa*>N%spN_bcGYiY z+AxxljASHBB-z-8!3$pSf>$=YB8gr7t(i9Lh%+toIn&}kyU$L$ZU1K$s$T7E7`enS zF-#0g6vHBUmEqdwW7N-vk&I*{BUvKJ#x@LI@PZe-vf)`pQw3=_k|utYH|l2;ktv=pP>hLMb9BqLcO z$;LJeUhsk!yt3id64 z)`pQw3=_k|utYH|l2;ktc0-JM8%8pck&I-CBpcf>c)<%^@XCf)OJKu^zeN)3ZP==o zMoXim*?vo79nEJQRlQmpMlLZ-3=_i=#jr?TWw>=EM!gLq8OcaSvP6=NZ5X`Z1uuAI z!>c8*;kFBr#G(y5a?mb*KD&7L*?rbJZohS`det_JTxQeuXA_mFJg;>Wxoi45yn8Li z(T0(1Uhja_Znc|h+ka}7ve|~g%Y@qggaR{|=e3SHUM+zQ?|pS7v1uE2YI4%wkE_|& z>}&QDHT%;t3|s=pvPGL_(F(gOtC6~7Mj3WydOROq@PZe-vfVaE-_3D6T=e4ut;8IxaZR`>TMXwNJcV}C6a9XmL$C31uuAI!>c8*;Zrw9 z66H9bJCo=*qp3-wKj}gVwe~vh9!z&k-W0P!(aw8m?grjw_)TW7rDrlO0LLY_dhh#hLMb9BqLcO z$;LJeUhsk!yt3gHN$i0S%(P)gox^bs=VIq@%nfs6(dI_gtDOxaml!67iD8LiSR}79 zeEo+p>Sx19MlzC-ERkem8wM|U!3$p5@M;Ncc<`P`V*PB`F^z}DW6>H9bJCo=*qp3- zwKj}gVwe~vh9!z&k-W7kY(?Xt@mRFR!<;lHFE%HuUabuyml!67iD8LiSR}79Joa3SdK*SE zl97yLi6k4_FnGZWUhv9>S4&{S4F8 zC5mB@yvneCK1RI_BN@p^MzTbbjcpjb-~}&uWy7l_u;Izmk;JBL*r~}$zk$dyma#06 zWz#YYTt_Tgi#E-o^{L9rYHz|y8Ge36@50Vb)+I2Ifed7cI;B#g3S*ZLw#+Ve<+CfA zu%~|6o3ORIq4fKQnlM?E=V?5zc!A4=O*3J&K+e|Iv$c`Brmw@(uZi)bHDMB%1SWxb zprv`BZE3>T#V&TSE1O*{e+|z(8#!#LHDP}HkYy}mSt84#2?H0nzy+>Ua76<9{dJMR zq6q^T$Up|NM38Ns31b(#*u}1Fc0~?5_ov8V(S-TkLzc0OWr-|{CJbEQ0vEVa!4(PY z`8RKE!axQxkbx`_WSdPGyV%7pc4f0Ga@Y(1+}eaC`i`fsnfRK?qWy%sIXUk+S@Ejh zjs%wwCWHxLi9%T9t}^`ftucx-VITt;$Uv3|vdt!pUF>2PyRzBU^4IY9N#wAlwf`S} C1~SC} literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..a9a404adef415f1e8b34a261dbbb98ab3499d8b9 GIT binary patch literal 6798 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 literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..a5eff40419a2a69776e7e779836235d1f2a77108 GIT binary patch literal 6801 zcmeI!YfMvT7zglkX}MJBq@XB9;*BwhDF`Bxs8y^1%pwRf>(t1RHiA(gZNnI1G>VBq zgJ@J{0=mrv4H_9<0ge0M1}ba_!{DM34Uz9npiH5{v%uINE4IC)J@-uA(!?p>rpq9V^h43c8-H-*z+R?#L1Q z_K_I*H{_yaCAtpRr|A9}aw!}4vvdnBTYiN08V#<0O?M~c+8b41zrPy50ofjK;By;z z%=1vN-iqrn#C#v}u$J-Q3H=e^$-P9=vdV}@|P6RN+3_6r7n120>Q-?uu#1^K2w z4B#CZjo_oh^T5sD;rR45!+46iv5#nb(UiImynWg!aL4sHYAO0MoUhUm{ZBNPBT8X? z$SvyvX|5>^Tu7~5+Y9~mD=H|Zxqq|kF?FDM>A%!tB3ofU1zQYVG#@Lcw^4^CMZtOw z*AIU|^GT-=PL`2k#{_Uz4J`kym*zE-~0Dymrmy`x&+7Qfn@c(XN^n6anxWQQOv*Lkl=@B26Fe9xxx?H-TE zR8e*>^=#Ny(_Y6+%d+*sLTr(JqfseV^73uQJjLNq3axg literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..750a780e7e269c5814e2c82aa676252083fd9a56 GIT binary patch literal 71 wcmZQzU}#`qU|u}LiP>-&FUZS literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..f0717e01d51118149efdbabf74859338afed4c66 GIT binary patch literal 75 lcmZQzG+;mmjD}F2Gni&Hf^yp+Tw^HrB!p`M;WF}oXaHI50-pc? literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..a2bcfaf94c48371ad3d32134799f1632c913bbe9 GIT binary patch literal 4392 zcmeI!`%6<{7zglk*}N=WId5q+EVYZojLb|Zm%30R(zJ`+$demsl*$}tRupCs5@wN^ zpmqZb3$5&;7WRXsm6jJOEh-F_g;A^MVi_)~4WIA(9|YSk@A>e3&p7YxoQLDMa_--c zx3%_$wO|iyt;kr$SkBmqu`^>A#tO!6jFpT%7<)0E$apg2K*k}A=P+JivwfWLOumZo zX2!c1moaW&+=u3w_2B0*xruQLTJU9Dh!&au7b`KBtwhVi&`t}{&dhjSMle^jqung% z@%z!LlW3o{X#ZYxKqz|J3A82^9Z`jjxrt8lMyL6qbC;uwC3Fq5f7^AKThw4){Ry4A z0$qjsleav9Tu8z5EZj$nsSlyQOosbk*3${O{B8-@>0>R}CB+JM9W{W*je3HWdfbm5 zy0?&fHTi%izVruA?n?#-cHw%54C8u-mEMB>3kP0y>}Ox)kK;6-bpG%V z^_02sm#L@suUIdaThp4|@?OjaF&v4(=M4cWROV2-Fn{=I?f8KgjNzcDvFu%M(?iU6wL=_N=CfK@miQP7qe4yi3KJ^%)7~JuD&;@qU#m(IWD1?$HNpfx9o96ArODpRy z(C1lai43RvIV)LLQ%d?5ZE9>EAg+G?;${tT%jq-q^m)y#A-xe}Ij`E+`74GvVawN% z!ZCBXwrhL`bDZ6BTP~1${#-h0E}RfY%?0z}sJUP|I7iI|^Wmtu95ol&5dT-r#U~!< zJlnwu%M_ekUAM8cYR2F8=*56NR;yK8RPZXU&TFT(|MBp;hB6r!nr+;yk#eN;41*?J x%FUIs^hQae&oF6Xc9;x_M!msk&?iYoQ>H01JIi1%X7pr!{(X#jPRx_G{sy-mM$7;J literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..af5e7816e2580bebfb5228c8b3a3511bcf6274b1 GIT binary patch literal 71 ucmZQzU}#`qU|)IN-><*cx4c< zQ1I!@&79g#zD;X4XAo!PV9;kY3}O(JpB}^@DQ^T~Jpr+dgBS$#H_C&UCLqC(AO@iT M29PO|$E2?T0F2-rrT_o{ literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..932936cb5183da24521124b096abd409cfaf0fab GIT binary patch literal 75 lcmZQzG+;mmjD}EN5SV5(f^wHYxW-WKHwf1R!e#UT(Ew$o12q5u literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..6baf1de8c5c7f3ea2e37209adc47d3b6c4e288d3 GIT binary patch literal 4395 zcmeI#|4+qxQFh%(vMkxGk(i{d zFTQNCH2Lm|@dFCwOU;C-Wjis(VZP+c9M*l->-qi*{BZZn`~A4*yW8je?d}!FaaG*V zi+8kg!&;C7M=LT`Fjg{lVeHD-jj@WcCu22ZZ^pii{TYvE9K<-3@l3|^7{@y-&pVyT zvltgKu4H_kaSxhj_Jg0z|MH*Tej&_McyE5~2`-!=#9qnmD zkJyFQ96|f7KnHZACxoFV*Q2!==*U`h%vE&qDD>Jf==>$Yzd;InRs||P_ zz4fml_igb5`}YNa$M>XwgC5|1hYsR?hgV#O@lpLR!HX8)^DPgsLcac;2D~Gw8C?B+ z4%l)N*QeJ4>&dG|exc)eUECgU@uZXBjvF(mg(;We`&BrkenfLIpa9N?*s|K4=86LM zXlmuE9+&5O^Vt%UEx)$opg$wEZ=NpqR)BDfc531??7mU`vE9CEm{-)?cV$sZ7 z4-hMYA7~P&2M3Gj{wTjyRMOuM*J(Zj3&?o4s&6$Wt-^l!I+b}RxQZ`?+j?@eg%JuODH4x^fX%ttp_5)-?phquIqW#x`lXg zO>+}{o|U$_5%fIgrsx|g$oSHAmiB()y63%D8;GwRJKjv6*LowgJ90SZH9I?h#SkZ~ z|MIhB*j&D&FMkIs8OuWjx#MV^H5V?3Tyx3qrpp~i>#Vt8L7X)gEC=VTxnMnf5{KHeON;GxyRNkGMcirMZMv?Gz2hu@|5pjiGi7O| zO;TpIQJX2{=S#T;lcY6do3$}p&Bi2?!DuoXk|mQl$DEUwYm|!_1DQY1iJPSjf8QAD F`~knaNRj{m literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..af5e7816e2580bebfb5228c8b3a3511bcf6274b1 GIT binary patch literal 71 ucmZQzU}#`qU|%qJw9C7Xl| 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 D|L%yZ literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 new file mode 100644 index 0000000000..fef7106b82 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 @@ -0,0 +1 @@ +4293822635 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..44b89c4a08416c0de0d09fe581a098ef4097bec7 GIT binary patch literal 1219455 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 C1~SC} literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..5f07da5525a810865776c2589976e8230d720f99 GIT binary patch literal 6859 zcmeI$dq`7J7y$5l?>1lQ(rK2Kt2BE^Ov{!E=~5?Z1e#{97rC~f25HPuW=3HKAz|xb zCiv(9A}bWL@=@6zmG;oo6bDZs(qR9v`D9 zibvUwS?q;o&lL7#*fW<3%+{t$lslBF42?vk%*jz^skKUpIzuOk+O5+hXw@36MxChC z>N0hi*;yK`tT69IY^}#0_Garb(_*oVx_HroW1kMv`k~pM8w||F>m!1Jkv>;8Tsl_C z_M79yv5U10@UXT89uw`I_>4bM7{3Y#+Yz=W>_FIwurpyHVK>4agl7=;A?!yufbden zD+tFCUPm~ca6aJ@!VQFbv1#Ic(94Oqj&LhBGo5e&HjnszUOA5Qt>Y6Mf?xo)Xcvxc zPdu-~4;*)D$96VjPd$h&I*skQ0o&V%Jtq)*eigPvfgMtT9d!*maT<1-7k17X>>?$0 zH8FnMMEwI#672rx@Ap zg8|tg*@EmiszIJI>W(Z_2ASbqc64QCCq^$V;|%VG~B@AIuezJD_anpx0@ z)>r1F@DYsjymQg`;5Bb{gmHeZV+6EdQ!jd6yX?$d7`JaS4M97~V?IMq5x1cEB4WPV0`BJqi>++E{nSez2Hge3h2P@j9Tchw7r$k@@GM*&`DL> zrO+z>D=VRQes>v!F1~Gug+8BL<_q0fT6hF{=&~^em|p0zwHaC!9S!F{ZAff{^Pjey z5W@M-XiWWA!Trp@g@`<0o{lyh1Ln``62(Ig59h=8BlxN>f%}L3BKN^aP~V}nKJOB+ zQ^J`xEwJ;J;`i|Rg-_kyz~^`CiE9vn`qPv}JK%ocRU>PWfVlYXpa{ONd7onAi$HvF zirF9L1JdBPZ9)*2^}cG^1-!bv?gDJjMst`Hj_0f-d9@zYFWlPHJ^)<#yzg2yaO>G~ zb+Emrn*qj<$v7=K&@mDP9KY?$kAg{4Ipbx#2LGCaG2k9+k;}Pohx{(*vh8^k#pPV6 zzqp(WbqDp=axUA?a5)#3bAbWJR literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..35b5e2216af09ab8d409ea6dc6f61ce3acb35cef GIT binary patch literal 71 vcmZQzU}#`qU|_P02oK!ll@u8(OC2Twm~;nToZ% zl5l0HLqA?c%&0U$XWR|Lr)4Mpi64T?Y9u=ttdXk_Tb>r%szGchEw-%{Vk^>O+v^}U zoEG~^C9x_yL+}OdS-T)+QtUObudCjo;xZC_LJy1)QV_vL(k(a8z zWMQLaAHnTyKUhCDPn>ZO?;%QsgZ@_w=-LVpUY+M!PizGwUL?cGDWco+V4;og#fGUT_CDX6W@f&Y7u8G`Gp zso|_?P>1emy66rl158$hr{sWghJ~*=xyL63CQ*rZ24;K@>jy4-bELu>N<(cjsn<{x zqer8&5<#?kg-s`+qotXJk>~{PLj#~Jjx-e8P(`c9#FCJ6Ci??#!1m+wEnG%;d=)5$q3z2#CW|3P=s`^O(NA3WlsaG|MBB?w{eAvC! zW{t?oC+{VaacSH)>SeT%p%1lsy8^OvE+)k?LV5O8H0icgn z6Ge{BXR`a_sVl$|6i1ocZAt6VAVVJSrg_T(KZ|O zKv(Qj2ApwP=p#@gsI0ZcaK7|XRzXX`>lj6 zTCuSQnmzNQ`|~$)>H(@4tkJcCbG@LxFQ_I#HS-E@?$}>Mk1)0<-qs8`+I=nJ-$cus zbx-5f%12T_q1L;$(qqAn|D}Hu=YB!nMwA7r8r^;Rq@ey)Nus&*>n%Lo^jFxUE z^_DfCFj@`wSqAAl1X4%v8Yw{HCeTj(@GPC*^5b{A`U-r~qDed8-*-0xwj}sW4ZRSr z{%v%ck{hfZdt^5RAnn5u}V^0aJJzdD zedzRk!%rFhs?G{HbJ4^$+-$t()zbl|Un4uZH zJ{9r31nskIJE`og7kMr{7ZzSpzIrK#)EM!R_fp*bo%eY#(Z#>{=?TT|r8w@ZXv#$; za6N{{Wjr?$TjY}xE_z|6Q!M@x*qjN2n>=c*3p6|~wL7pI&#(C` z?3Vio9VZkcgR<+y%b?IvXesD1f`*Cia;SGykrrDHb&tYnu`6i(-|!`q{mPY0Yuc4v zCW~pY-)>+mE=Z*TEXMv}*enWTGSv7QN(y5!{#}9!X-;#=&EEQsgv*H<#@!21nK0Ce zn>x5^!cPdmY_22I*f-*qN?vU%DUj^L$E~v}!erGeGYupPIUvExb#x;D4?748ujZIFt1WaSIGZAWFn8uQ~ dO@oQ4hO(wjZ9=M{Ia3iYseFedJu~t={x6qf<{$t7 literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 new file mode 100644 index 0000000000..a679541d70 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 @@ -0,0 +1 @@ +2539906592 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..51ddf91fab2912183d34e88d0950bdfe9bbfbed2 GIT binary patch literal 610555 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 literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..36e9dc299cb0cbfedfc477a83654343b779969fd GIT binary patch literal 6859 zcmeI$dq`7J7y$5l?lzsTrBh3-R#|3AOw-haYNZo30!=H|i<)kzK^k+EnNgHMNSQ@u zL23^Wu~5<;YG!{}+QYK!VMU6;vNCEFXQ0s?u!-ceDAJXfm0Goji%?$d`SjpnuBOnhLi1+K{MwsMDDX7mZZ1 z{HC=yaxu379_F^dW3;`ap9x0`)~krJ4P{%(V#@ZE9VtsFyHIwc>_K@l<>{3DCUqUKaNNEH+tG+UZXdSv6!!Qv*k0|}Q~j}LmSW3Q*rCPP;SJbv?${eWu``!r=c%#F zsPWsP#Brm{YRfz#vd<_^R4cHH@%SXhrzp-Q;Q7qn!4|0QqxwQ29{<9Jttc+Km5*%m zsRCJ?U_!PV)*?F$yCO?8cs#l&-=er%-FRe=E-&QC9r4K1+wlAL8^G^7sNg!Pzp(o? z^3o-^eXG3;D8A`~6nS@S74nI}`N*|5aQ}4HqW&cI&V8^xQA8a;-sN46e77k8n)SVc z)>rnJrgmw%%;8{d&bOUTFZD1{xt_O>`Lj6}iQV5WX=9|#n;DU;Qs4SS zJaT>XS+$G%e?xJw>0Q%};smaJ8rVi_nFucg1k4Q#nim`rIzNmr@qNIL1AZ?2-Rl9j XbaBfTzgY1LHos}{8}~nxyf8lj32#OT literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..35b5e2216af09ab8d409ea6dc6f61ce3acb35cef GIT binary patch literal 71 vcmZQzU}#`qU|c}wai`_yDGXsm=xp@N43{0X7JkAXAMj(L;RSVz(#vp-p}V$9xO}r;?C5Xzlj4fOM*se% zt2%gd_JI~>UuYTX@6gZWLlxIuWbDD%ld*!aH)9{hO2+<-0~wEDJf86s#$k+SGoJ7A z&^QyAd==wOj0+i;Gp=RahUS^~!OvxK3*%d8VKn32Xc_bSWydj>JJ%;EVkCi7^;m%R zWX7xbgSmGz+Q*I_xfiWEjUKfI9b!dK3`b8ph1TfN(I?Pxjp*bc^u}Ox-g0z_0bR+g z-)0@=b~Tt+|3K?kpikiXTuX;*zKUrcEbwG3| ztmo0nUq@*^_QJu>)RX2UT&AA>Ds4V>_|wd4>X?l?Pg3jNM5IxtoZ1paoe_F%5%t#J zzMa&i_p0KlFQguuO#Qf`_yBe9RqGOBeui&)J$1(7#dQDkRms=s{^uQsm303LCfmCk z2WRV7mQ^%c_hBmOKar{5o*GXpwfNqa@brGhKO-brVg%)~w$ zO25(ZD_{G6rsMa2mQbrA?Sl*@x%B%W_`J43Lvr688e|8U>%X8K7GkEw6Cc1KgJmajo&s;bm?lTw6hx^P0)4{pVTreN* zGnf0!MHa;Wb>`xe_F0v!oT_OHC#tJ0EqcY^-TFMDNc#VV_SK8NwYBAPX?R95M6CV= D&Dd7I literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..35b5e2216af09ab8d409ea6dc6f61ce3acb35cef GIT binary patch literal 71 vcmZQzU}#`qU| literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 new file mode 100644 index 0000000000..3da96e6353 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 @@ -0,0 +1 @@ +3671794375 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..932936cb5183da24521124b096abd409cfaf0fab GIT binary patch literal 75 lcmZQzG+;mmjD}EN5SV5(f^wHYxW-WKHwf1R!e#UT(Ew$o12q5u literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..fa74e4b5ef7ef747d311c7c58e301a4cf4937d65 GIT binary patch literal 4453 zcmeI$`%9Bi7zgn8eYe+Jx^!B3$yJtJBxYo0LAKJ#Gy+Y#*o|6ls6iTYlvz=fK}eWM zW_qm*;GUaU7@M z{+7{F#Y@i;=@F!-kc-Z@WNVEZjafNnZI-d1z?f&U7`3Jxt2SYa)tqWEnJs2hn$cp- zwdUsMnJv2FqF09cpsmuI2TPdK=^XG2;l=W=d-$^6G2a?%g>zT?#qRzte<@r!)amd4 zbTx;n!7

I2Kyu@yf3$<%X*k8GA7HWbDP*hp{hX72^QLL5zbLhch0}IEwLf#&Z}a zyDZOpDHG3Typ3@M<3`4vXr9>*ekK#QGQNfuMls%nRxp2GaRlSa!Tcmej3JPk9`R^T zX1-p(G49ib_I03#??J0iphvDihuY9%qtO$OqqUjnxTENVE9kTl=(Qo}f<@>OBf6T& z-!?tQ9U3sN`GU?|j6RC_$vd7vT*$!lEZjvaG9N&Hr4sXB`KTS@;_Xtf$LCtGSB4Yp zJzxe88wdoeOqh=W`gafyY90v=ei;f5?@R}e@4)?z>cjnxDZ38+JMGWw4Ew-4B5J_*ZcL*VCS8KhSK*NAF^wxi z3n4!g&8xj>Tv_Nnms(ua3G?;H&n={J&n9~>wYNU$8}%?v3!EpvO!Y$=_gAE}QU}IG zLOzdD{X9(LVRZ-IQ;(aGe2#k3(`9q0qaWtfQ_o(z{TQ|W`Lt!!>Bl$3QfEb8oJYOs zmtPNc>8)A=bzMeP1oi#O;{DXU7i>wy{A9m%&D2?miS+#QwP}~=`RAPnRrLG|X8X&_ zpx+;!Qv!SDlm1?nXN%4g`=p+1wGjKR zDg8v}uX+~np3XnuQF5c2^dDg?*+{<+LTYp^S`ydX=~2`Dn()<-QbOWWmpCHneIPdG zL#v9!b)9cpHWM#A(r|{3XQg9yEY0V0i9AsjZv%*o&?!)x_6Moo=Axwcm)c z#r=!(>fP=A3B)PuzyIF#&s>44Eq?}!jODI^+;G+II~Oj9eCLv1T`D(RwfoKm3*x?W z!E$i!I~S~n`_ARQbCHDjzwTUo>Ry|wgHyL|;6zQmwLQCLsJ1-~-XZ literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Data.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Data.db new file mode 100644 index 0000000000000000000000000000000000000000..f04344a7627c284516a81b5b976983ba0d8e4969 GIT binary patch literal 12082 zcmd5?eQ;FO6@Q!ThWG-!&5~p=gt2Hu?&18Z7Vop zPdTbyf2!$JXc9BS{?17|`uLT53p>K`A-lA;r@eV?IGS3MUfYrAjI^)HcEwhOn;KWf z+M}!68{-|ZWVE$8(UoY4hP#s4)atHG^V+V)&R8-TPlcPps}n0%H-#gKH64-0RoO^W zwyil5j;v`})x0_q&tzIUJG1Hbbh;zFwl$Lk6Vc{)W>r%<6J42ZOlCTgEh+ne{SA+k zMPBXqG_Tm>WceefWG7#pP|6mZv2&$t+d`O|r=kpjwiUf%XA0Rup-eb;rG#OGGESM( zt_d7lFl6UAwheuFp97(HF$E0cWX0yzh7!gGA1kJJVbhrk?>hL2vRI6rEi7e)j0o6L zHis=PWo@z>8QwQRc2xF3!LA>rU@QEs4wK!-2PjxRV6ppbih`}Ev)KLJYzmgIx7gi% zje@NRTI?P=NWpTiC(+{e74=V6m+Wv48Jgz3hh=R4v=c$Rq`UEww#|abey|jWYHy^b z>C3$lK9{FjOcz3)c)yNeBns+ZiXj0!RcfGiYeD6zWMheCljwxkpqlKC&-Q0A(L$a1^0^gT< zt;wpNBjBbiqeaN4L};MsAc8t$m$Ku6pnTpFjzub^ z%mPXQb`Yl1s)P6S-+)$YCU?Jmky;;hl={fplwhI1fkQ}NEAFx`!4{Cr+R&`d( zi$-YRdaLCJ_t3yWtL1Q(0_JYN|7SqqXhG)HCPbWIS~aF;_(jv`HD%5a}#E4;-B)J*PkDYGRpVmf%(JO7~x0=e9nU}-V?|Hl^J{MtvCQqwx;>Uj=5IG zPIFr@%EqxmtrN)l?PQKLiaFLM@78HkTzoGiQ`Utq-kTy5n5wIQ#aQO3v_)Yk zu!YoB^z0z~H7=;iBgSp-a%T~bzK>{@xyK>K?kb)L6++QfcObTUpSw`_F6gQPR3sOm zm^H0vEGVqiV)I9wEK*t)NyU5TICCxlr4>|{iLu3qOz>8%D;3^1OB-L-RIZ1-RSc=B zc)za*+vQ}b);Nz+fqcMhR%o3{&gcwZr?acby7VXwTW_)3H9*4#Ep~soiGtxP=bOJ!n7ova$liqX$Rz#hi+XN;;zS;c;P4g4g&y=la9i%}wD!q6o$AFx_}NTh-5ES8;(P?d!2&+zp+!!`$7 zaCE-Vba@iFocN&0FbJdM0L2R~{IDbm+|?3EYE##uV-p#R6xXK{0LS&9Agbu~s0#67 znAlU3T(-kW;d%<7RK=zC#i}276Jx9sS_}&B)@$G;NkALfM0oBrc{T<@grL6Immh9- zG(TK_FhATOAwS%}mHcpngJhhhyr!M*rNv8=UN&fJIc6K;h3T$M*VgJUAD;E@|EK=y zvhookCVr#T9+E{^p!xXIGLb30dZf$b7W72K4`FnoY`s{b_Qiblg}|RqPAHVtk2_uF ze+;x1I0wqCM-^uO93}?@x>r|=r1e}c(jrc^n!egj1J|jR(X>_Yw@^=H9;&xmmLQm9 zaL{NO3B-7z+kn=nmOJ+oaJLj4%{JGv*Ki_fEQmywX?P$Y7nC9OWTq2Y9dlhbc&oIX z5Z_@a5~~+UEG72LWchF&uSA7Ql32XgK90%7(BT7h{7 zP}zDumb2>S$mmrP4Z-n*d)im(O|SB{Gg+(6DFxFh@uQKDj5C9bzdXkfq9@}Kw6zyYh} z#UZ~&}xLQw^}|+DU=K!v|2tlmEtpZa0x6%H}~j7O!?IJ6YlKcJM>vQ7zo+rlI#EVyTpXM8o*cr@20NIj4NahGaM)|_?K&5)(_HfU&p3|Azxu8X7%PeX#VHqhYM}odOJVvq*~w;`4rd&TCG}@YICxb z1>oy`7aAG5u3-m*-@^(%~+=r+xOSVc?H#WS!TgbZj-$n zxC$Nql0~RWw5?uO$bMv6owv$tlOZE?U>pfJ-WpA#&Y6o=FMOTVawV;3_wB)6YpgV(3@WWQ@YzpLiRv}iC7|!Fhm+PZ;qPj9%LJFS@KyIAOTBM3eg}MHoA{sMD VFxS751W;=To|rSt^^+Sv`X6CoZgBtr literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..d6157b2411 --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +1633775217 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..44b89c4a08416c0de0d09fe581a098ef4097bec7 GIT binary patch literal 1219455 zcmeI*U5I2?**EUBV>Pejz$k`bPKH2)1VNqY`Rc|X#Djs30fV4IM9hm3iM~X{@b?2X z5)lI$@B<8D5CT!bpk{M6*1fuSmt@FHy1Tk= z`|_andLBh5yVkn)Z~bajO&JcBjeou3^dt9PxNza~8~=AHcTP@CP98jXX!-DwqsNY~ ztQxro=7F`a*dA2Bz=dp&Ef4Hep=AtS<*FD@&Q8`PFxeC4Fi(VeDX;kd{_p=Q?6PjH z+eGVDzq7L1?dtjKw{cxso1C8f{IYq9G}N>OTmEA?V4AaYlI zz4AbeC%>4Sk->cUMDrJ0FaCdv`V`qH!{DV2(}rooQdKB3ZP=^+7)fmDmU_J6kVnp< zK61P>-WglU|K2K9yuc-d31LE5vJe)ztCXwX9HTfFCV{1T8>KR-Y=5V+jVf$y4k-ZMQwRd50E{tR(BN@pO zNfuv{tmneu1uuBPD;r*sz^-5FZP+dCyGF}C=<-3={{EoL3dpnqs$S&sy&9`F)2j7u z)gPZ+)EkxLt9g)Zs}_0GKbI}^F9zAoPp^GaNM8+KIdqxI4HEMDtlUB39bta`OJj9g-v7$$}# zieZtwN;z>~jCvbJGLn&uWQimj+c0>+3tsTbhF2u8x39&uw_(TZx?g%JNJg?ml8tQ`yx;{d zcxA&Y64?7c64%~_t=M(H_^#W1abL8Ai`NoXy;>VaE-_3D6T=e4ut;8|-1&HndK*SE zl97yLi6k4_FnGZWUhv9>S0u2zJ`>m8hOKISv_4v&#cO@6%NJjlRj<~DkxL8{!^E&e zF)Wf-DR-ZZQE$UYMlzC-ERkem8wM|U!3$p5@QMWX@dx4>ZP@ZbyY3g?b-OR_iJD?# zoV?hata_141YratE@s4H&W*@j_4OI?bkfqYOJUJ)RFQc)<%^ z+3<=4_O&PC+P@{~U>M9`2D3z%^)`%L%mvfv|%J88OcbNNV4%;lJJ5T zyx^4$uSj6uetM=2JG_{mqxw_%<60Umjh1HnEsb?FpLJCAYHb*~#4s^T3`-QlB6*ea)ca!8 z+c1)mjASHBB-z-8!3$pSf>$=YB7yz-^>OWO*os~Je0K5fv-_-d+TMXwNJcV}C6a7x!{7xkc)=?hUXj3lcQmfO4O`XHXlb-G+iz*C zqxr0(s#j~n$R&n}VPaUK7#7K^lympSsJCGxBN@p^mPoR(4TBfF;03R2ctryH!-=>? z8+Q1hUHp7@@$R$xtaaRe>sa-wZ5X-CrtQxrDpPr0>nL(peSP7pF^)EjWb=9ltahv2 zT-*Lrvy{y?3|=PG_9qmW!91^Z)bWZ0_Luj>b=roVnw&gr9-4>qnuq3^xwhT8R`CLt zkD}6i6a_u#RrDft)z|Y6$9QsfvMzx+R{(RECpuxZQH8Nf3$)BGcIC4x^4GsU6xXG- zcDmw_q%Ns%x1KPE%%OSBp{f_TL=fgMXI|#)%v_7yRbT(}Sd9C*Fd57jjTC}5)oC`> z8)ev;>G6Dc!3$pS%7#}p6%dj4DNO>*r`%-EbWw(8Z|Fmj1uVwf0~ zD27GyD#OxGW7OL)l97yLBugaO_$^6z!3$pS%7#}y4k-@I|%}g6cGLn&uWQimj+c0>+3tsTbhF2u9tG_kVh8=N6Cg&L$@0<5+ zKc2>`dbP7*+3tsTbhF42q!+{?} z66I!K!^kCuiD6<`q8Jv*s|?rwBSyUqBN@p^MzTbbjcpjb z-~}&uWy7l_u;Iotk;Hl%c1$afvlZ~ZdEfS9i&^z*Z5X-4FfmLFOBBN*d6nT!OEKzg z7|BRRGLj{dY;42e1uuBPD;r)dfep*QiX_(Cu;W@4t;&9ERm}UG^SmnR>i!}Iq$1ptqmiW7$$~^VToc`B(E~ux)P(_hLMb9BqLcO$;LJeUhsk! zyt3id64-Ftg-Bx2h8;Pm70B5Nc;CEl`?1BWdet_JT>J6eryljP&ilw+)7RnMYcY;C zjAU8gQ5w-`KhE7!Hrp_G?Z*iKKJaCo_Z_d6z=rp}I+ED54LdbC>F>wY>}&Ql`-z(U zX&DBtBNnYin`Y4p&nv5ux~8wg9k<7La(1#Vfq@KUAWL+@YNHBcmk_qhE_UU!tL3lZ zgV#k4TUu+UD-KDiD&DLWuerPb=5E!CTq20IzyH>L?)N-$*YtJx@Le(P=fY$#A4e(# zZK~63syE88Gt=Yw@PZe-;FS%pmcWLO9*iW`za_bxJ7N0M+Y{;X_R|McRj<~DkxL8{ z!^E&eF)Wf-8SeRXjCvbJGLn&uWQimjzan7im!ULHjG?im>4F8C5mB@yvp#oFUP32VI(6N$w-z+vat<=7rfvFuWWd=1U7u( zosq$=YS^^s${$eDt-i95|y*Ku!*X8N*_EVQv^=fSx zxx_FrObkmD!y+3tsTbhF42q z!{gtNB-Y!o)!chye|lY>E^j||c~!60hLKAQ6T`%?L@_LqR~gpN$EdeqBqJHgNR~*l zu?>S4yx;||YY+8naYd`g$KJoC0NB&PddJ|U4 z@bfEr7j|~CE`doO(np%~;Zd}*T1r%5>=MG3*~P9zeR#Jkny{yS*_*Jnx}o&@hng^1 zl;>$YuXusWgiSMHZJzXawa1IpHGLhPeoc%gtqGIBBrplg11-%1ZA%lzE_ShtUD@nv z`D=LQ*~no_tqJqnhb&_m%Mw`@O&GYq1uk%2PyRzBU^4IY9N#wAlwK5!v|JT3YQC@NSk$W#(xbXS- z_v-7Nb-#Jg#(jGmclXczQ{T<+r$wt=;PPxv^KABj@PL^48L?8Xs)$V)Yd<3W>?Q&zm4nk%af-kKRE<5n86HYi7=b)A<1RNrkSz2FkRSe z7k1@=p2dDKIU|G3?_(4z(Mt5O<@VRxMi~Y#F-#0|a57bevh}Z*EU)@wZ^Le>$14sA z2m*qDu>F8w9nEJQRlL9@gb86nSh5fnxvP|`XMRdd0!#Hadd|=1IqyC%>V4j*!q)8` z9U~A#1<^!7bfyV=-S|^t^>l?GCWrwY=xIQ2RT#O<*fcZNrfyL;b@P2^Hkz(VXlyGG0NO@#i}>$=YB7q&hA+Eg*JEEJ>&FE%cZZ~7~%zO1zy;>VaE-_3D6T=e4ut;8| z-1M;+^)`%TBqJHg5=l0;Veo<%yx^4$uSj4wuf(;tVMp!f=e?hI$K7%LS4yx;||YtoT`^TzRYs1JThKXTfSfUsf$*YvxABjX|62rtWF)UFGi{w?x zosY+;w_zkB8OcbNNV2gFgBQHu1+Q#)MFP9)GjZ*0*sA^fy!Z3&xI3Zy9wHjG?WtyQ}$h9!z&k-SRzBN@r^WXV!C+c0>+3tsR_ zhgT%9&weMa(>CnXcVbN% zBN@pONjA1&@PZe-;FS%pNMPT6F0TD-*bz;JCSzVrhPh_0ZFjC!y;>VaE-_3D6T=e4 zut;8|Jo<(h^)`%TBqJHg5=l0;Veo<%yx^4$uSj4&J|EZKh8@*VXehSZP?$sJ(7fhQ z)vL8(S4yx;||YE)oIGqTT8q}={MMrNw!QUM@dB5RqSAa6 zWx;Q6!T+z^zerv6_58yzo}8VmOJH*=BmY+>l79}M>}6u#sKVG~*RU*z3ZjWlht4!% z|N2nmu%)$jy5f)rs|V{|K3L5^^Y3!zU)76TA_zCQaXD`6{d|esRbT(}Sd9C*Fd57j zjTC}5)oC`>8)ev;>G6Dc!3$pS%7#}qIIiT(ukHM#aRX6)Y0*s51+ z!^kCuiD6<`q8Jv*s|-s&jZtsINJcV}kt~s9rk|mOCY{TFMFL=Q#8(xvbuKw0c8+ODw zm%TgZ;@-RWPQ_i`PcKxx+SxF2iD6=x7?vo8Me-`cwa>?>pA91!$w)@BM3Rkd7`)&G zFL-6ct0l1Ezz-sc^|N6|H8L6*jm+gWGS%JNJg?ml8tQ`yx;{dcxA(@C9vVfGm*r48+Odje(!en?!9}jiM+ffvg*~^Fmj1u zVwf0~D27GyD#M$WV$|C(l97yLBugaO*oMIiUhslfHoRH_84 zH8R%B-mRIcS8Kz_C5DM%VpyUW7Rjp&E7!!Rw_zkB8OcbNNV2gFgBQHu1+Q#)wFEZY zbS{!uZ^KsX?DuYG@7}xjn#jv*BCB4l4I`HrCWeV&iDFnJuQI&th8XoWjASGu8Oah! zHnw5#f)~8tl?|_!z=jilizL?DuvLwWMn)rZd5w%Uvv+Hz>ebpXa*1JLm>8BQhDGu! z!>ubZ>TMXwNJcV}C6a7x!{7xkc)=?hUM+zQw_S)N7H!y(gLd|Nx3hQe-Fr>sdy;>VaE-_3D6T=e4ut;8IxaZR`>TMXw zNJcV}C6a9XmL$C31uuAI!>c8*;Zrw966%JNJg?ml8tQ`yx;{dcxA&YlGpc8* z;lX<%iS@H#$Fv*TjlFC)%s=z*a^_#vtF>X|62rtWF)UFGi{w>?hn|R0Z^KANGLn%j zkz`{V1}}KQ3trjqY6)z3_=}OmdK-3J8=;N3oHoLIF<Md3#CjXH zs*TV_TuvKdzL+n2IbW(?tqmiW7$$~^VToc`B(E~8pN~;*!$?Lll94QtWMdl!FL=QV zUfJ+!32b=sbR@B98+K}P(r+NLjAblKWZAR~1J@CY)}l?bXnlgRvf7)lQih*j(Yvs- zlXVFUWFP}sqE4xlsKVGKge|j+UHR;aChVzS_9kqtZYcf!p(acg<#`&6azXTsRUE_Sgin_ZE^&iyHJ zSTtdN_mE{QV_720q6q^RxWEOjRB%NCd;ZN^n=p`p3}hfn1leX2#x8cTi(T35iX8UB zKeskviN53MYbL&CvX?*CZvHL8{Hu7?Z%2Yl2ou7DutXs&a#tDt`qmi5nJ|!n3}hfn z1leX2#x8cTi(T35YWZvU`y_JM(pnjo+wc{C`%Zbq=|}FpaN)w|#pLEHaD z*#3JLybDUeOZkD)Di^pso6|g-(T?_+pAjqNs*2c@vGy}!5}3`V&87!hng`mJpAlmh zyV%99Ya_gBi?VmI$-y9+F&UY?>LX3)6+oc41c@=vnL+lQS~d zrF;Nl4Ov4zDqNJ6vQdV?OAHgk9Gpy5p>(_=fxYUFy$!pi9Kg6K>W z_PX(>#Omn^K}-+>I?&UA-l{NinXzeRtgYey_SW!H-`|ZUtds*AKPDFE!elTROa}8r zOY=nAD8uTxFnGZWUhv9>SERA)m*To~OZ%?T@}*`u|2di70Wt^3miHL`%{Gi&Vwf1V z$E#5)xb##owqZBEBgT_x!$?Lll94RihO&Ld8(#2&7re6J6$$K(*Tl8AVTa|}OV6|J zm3yTT+}lR5>eYIDa*1JLm>8BQhDGu!W%-U6^)`%TBqJHg5=j<+(_}px1}}KQ3trjq ziUfB2hPd`N?1+X(!=vHZ+lI#)y!16#^=fSxxx_FrObkmD!yta`OJj9g-v7$$}#ieZtw zN;z>~jCvbJGLn&uWQimj+c0>+3tsTbhF2u8x39&uw_(RLJQ^Mi&)zmX*5IYD!Kznl z!^kCuiD6<`q8Jv*tCZWm5u@IQk&I*{BUvKJ#x@LI@PZe-vf&j8>|M9VwYOo%?ZhvA zC+=RkSDM4UZ4RqmtqmiW7$$~^VToc`B(G9#e%JNJg?ml8tQ`yx;{dcxA&Y z64?7c64%~_t!Q{OJQ|+8ZFsD~OJ9RkuhxcZP@Zb4UdLL!?U*yk2QGdYq087 z+c0ujwN~x27?vo8Me-`;lh4K|+AxxljASIslLAZGY{TFMFL=Q#9bS>ZKKq@xPTR0k zlatGN{we%PFTFBwuiUHu&8Kw53tT#oG#va`*VyZXD90tm~#a%hk2qC zRvT3qyR<-BAn`6!yz6#F{`%67;<~ifPFEcAR%UuDy<6U`|ILc)QfGG6i(DeerOp@s zIbtq`n322c>sS6A<9;qo2J=NDg`h$(O(D2ZhMk!n&xaSh;03R2ctryH+7of@-;#7N z3}!HcSt87O8%8d2k&9fZ+ z3tsTbhF2u8?>-mTem3lg4nha<(jA0ZVwNn%EU9|6HjG?im>4F8C5mB@yh?fW4KeC% z7|BRRGLj{dY;42e1uuBPD;r*sz5tqmiW7$$~^ zVToc`B(G8)e@l#d8%8pck&I-CBpcf>c)<%^@XCf)B(U`>;@aD=V>$>O#7lP&W{Fv{ z7_+46)!Hy}iD6=x7?vo8Me-`;$y;O8+c1)mjASHBB-z-8!3$pSf>$=YB7yzvwQ=oj z*l|6Fo?|h34l~hAeCe53^=fSxxx_FrObkmD!yS4yx;||YPS0u2%yeF>HHtf{oXu(1ei?ESkC zsjI%8e>ldIvy*iR>=J6ky?^uk2`pkMIa2aQ6~->RhGjui5KVMCbfyXW*M}m9Ev>cF z6^A_JJ>)&)J=C&1)T&GABYBnbpT}a<&xOfgzG$Qnw5d+Bsop5V z&P$=YS^^u&CnAaUZ%HoOuh_5HuV}-v^ea`b)`pQw3=_k|utYH|l2;j) zej20RhLMb9BqLcO$;NL$=YS^^ucyg!myZ^L{|5@s-iSt87O8%8d2k&9fZ zS7@hH1mn zwPEBE!^AK#EKv;GXv5yLG}DHWjASGuSt7~CHVj_yf)~89;T3Jz@~>vvu;bb=ZJ0Jp z8c)<%^@XCf)v|%@$n`y&Vv|-vX zZJ0JJT^mL&F-!~-!xF`?jW+CUH_WtQBqJHgNR~*lu?>S4yx;||YZpU7q+%x zM-FPkv|-vXZCJK8j9gZ&RhwniN*ODwy$dU4c=y`YHjHE>BN@r^7+K0@8wM|U!3$pL z@QOCFnDRPwb;HVoa!{uOdIymgOS9RZfSeU zWzV5Z&mr%YcPrN(aHnT%)r(yAPdh!Y{P&S{cV&&-HGLiK`E-nX8zzILiqoVZ#qLV6 z=re3<8wM|UIoqohP1B0bv|*pRIg(g!!wxUHy#9Q$$NtV9R>0O3Q1xnU7`enSF-#0g z6vHBUmEm(=j!|#JNJcV}kt~s9<8Ow+3tsSoS2ny_0vo>Y&PZat4fCU6FoPM)5@FWc zFmjQLT;xh6S7fmJADU^yNJcV}kt~s9V;cr9c)<%^+3<=a_P_^b+OVTeo@_mN;%>Mb zPNFUHFS%5`+SxF2iD6=x7?vo8Me-`c*MAtJem0C`BqJHg5=l0;Veo<%yx^4$ua>}u z2k(g_*3X6=)Bosy^goN-|5%}0S7_C%wPEBE!^AK#EKv-Lrk|mOCY{TFMFL=Q#8(uAe4Uc{^l2~uUR`fsmAN|iF_dizX))iXy zYHb*~#4s^T3`-QlB6*eJvFBpc+c1)mjASHBB-z-8!3$pSf>$=YS^^s$|9&K~-iEE( zYj53ayBqF?Zg7#i!Kznl!^kCuiD6<`q8Jv*s|@SsW7OL)l97yLBugaO*oMIiUhslf zHoRH_8=gEJNo?ANotm8V8;C4p8Ost`HZ8-zwa9&?PZWHj;1h-aUZK4SD`oik6}<~P zJ6V^&qz~yMP5SU?TUjk7sxWr_H}PhN;3N1f@~Y@|MHBYaFMAWVRyUM>|4YBa|ProL{lh%YuU=o-F=7E;xfwrXyV;8&F#jb32wfr?a z^K9g>rPhS`?L(HajAe-|izW$Pz)ec_xfq>|z(Y zve^|m?A)IsheZ?ScMn;{GL|K>ESfNIfeT#VN(EOWu;<^rwFv_m$Up|NM38MZVeDcT zyV#Y@uE=38{Bvs)<~I*n#xj;AvMib~aDfY4;7SEoB(T4}b!!s_GLV4`WQic#Y{J;Z zE_Sgin_ZE^{yy1g!pd;C4VV7-*Yb+fkKB9V!iCSrzgJ)HtiQ%{(65~Ml@mV#xX3>O zXoYTFp;az$c{ZncHe0@1m+$_)8x^kpudCu3U!Ih}Y&LB+JUMc$rN zyuc-d31LE5s?V_^b=B9aXMRdd0!#HaN{ABT{!WM+RoJ@Sqhkbus34jsh<3Xoi@k3A zDY1IGLJ$+gfDZIDpjXA(xiE5(i(KSNC0Asy0~Hyml+kc zZnzt|!A0%{t6r@QBbOK^hKXT`Vpt@vQf~TKjCvbJGLn&uWQimj+c0>+3tsTbhF2u8 zn^)r6+pwehAN`O1XOa6KD|G7$t$MXKj9g-v7$$}#ieZtwN;z>~jCvbJGLn&uWQimj z+c0>+3tsTbhF2u8x39&uw_(TZwYToI-3@m`H@L{%VAZR&VdN6S#4s@|Q4EXZRmyGO zh*59DNJcV}kt~s9V;cr9c)<%^+3<=4_O9FG+S{<>`XBv|{%4W4F8C5mB@yh^$Kkr?$hjASGu8Oah!Hnw5#f)~8tl?|^*VDJA(Tzea~Vz0e*ukCKQ z8@j%JNJg?ml8tQ`yx;{dcxA&Y64+gz ziED4eR`oynAN|iF_dizX))iXyYHb*~#4s^T3`-QlB6*c^_t_ZrHjHE>BN@pONjA1& z@PZe-;FS%pNMIj-AgC?6cpA>$D9!H95I# zwwNumv&D=sBNlf?RJ_3Dqo_0=Md1{umD5OF_4U3#$9QsfvMzx+R{(RECpuxZQH8Nf z3$)BGcIC4x^4FJs6xXG-cDmw_q%Ns1Zt-Dunw_(=v+6}I5rhn6n3ZACXGG+#`udfB z$GD#hlfit^NFiubon}+LQHGtF9?yptyx;||YN%spN|6_24UK+AxxljASHBB-!{aNqE5vUhv9>S0u1+KRwfi9bWWLRQ>s!0myX* zz>M9^8C&&gXT!)PhKXTfSfUsf$*YuyuZ>YZ8%8pck&I-CBpcf>c)<%^@XCf)B(U#3 z7uS9^?1;VlZtmUPU3XWPx064vQ1xnU7`enSF-#0g6vHBUmGbBtV$|C(l97yLBugaO z*oMIiUhslfHoPK%{rG%bdmDCCU!$+l*X(3pV@2)eimH0GHjG?im>4F8C5mB@yh?fe zEivkC7|BRRGLj{dY;42e1uuBPD;r*sz}BybYj4Aj*}L!N-re1GcXf?B*)>+ZS{p_# zF-!~-!xF`?NM5Bpd25V%8%8pck&I-CBpcf>c)<%^@XCf)B(R^oHmVaE-_3D6T=e4ut;8|JoUa9^)`%TBqJHg5=l0;Veo<%yx^4$uSj6O zetlef8@6KazMFe@ch}w3HST2BSoLac7`enSF-#0g6vHBUmGaEpG3sp?$w)>rk|mOC zY{TFMFL=Q#8(xvXes?sky$xH{*XV2XH9OhYSW&yVqN-l44I`HrCWeV&iDFnJuTsw4 z8>8Nak&I*{BUvKJ#x@LI@PZe-vf&j8><=g68g1C&gZA#bxp#MW-CbSdPIiq|uiA!@ z%e>mjc|~ec@9v6<+*My+_-c%!4I|m^-ghh8$~MDx@>yBRW*Y`CQ)?%u7OY{tyDO^W z6$$Jw?}_WQ4LdbCdD!eT`*wHsnPFzw&dsoj7r1;BmFA-;{Nb#d8ad<|315vT)PxAHq(r)dbKu;Tw<6QCWa-7VUfJbu=LXy^)`%TBqJHg5=l0G zOA=o2f)~89;nfn@aOM4x#CjX%YmzX78O#!4*4r?0k&9g9N+nlhu&aJE(}t0ZWF#Y5 zBFV-!3|{bp7re6J6-n&sZ_Tt}N1TkwbTY=f<=xufC-16W?Q9si#4s^T3`-QlB6*eJ z+UH}`&xVnVWF#Y5BFV-!3|{bp7re6J)e_in;0KY!`q{9f`W5}k{_a<-fJ`f(>ebpX za*1JLm>8BQhDGu!!}b4&QE$UYMlzC-ERkem8wM|U!3$p5@M;NcxbaLRvEGIq(*+3tsTbhF42q z!}6~piS;(@xPC>yvcLNkD+3tsTbhF42q!%gQRiS;&YMHi5%3-E4vxAu2;S@mjd7`enSF-#0g6vHBUmEmnS z#HhDnBqJHgNR~*lu?>S4yx;||Yvx!fT~w(!^kCu ziD6<`q8Jv*s|>fU#HhDnBqJHgNR~*lu?>S4yx;||YpmI=p)=#?gk6EZ6%;9`fw(8C%L`8wRiaJr!UG z!(1z%^u6%a2{55>=y2xQmYwdK!At_a{o2%G0WB2on zt$LA51fjrwRv_cMAGvG#I(+!98258wGMJAe6@oU^X*SgxW!RbN@qBo}3tsTbhF42q z!$%KB66@cRT+Wy){h95AG%JNJg?m zl8xVzgcrQv1+Q#)wFEYN>gGsdy$w68S<)y;>VaE-_3D6T=e4ut;8I z_}rIc)Y~wUk&I*{OC;IYhQSM7@Pb!1yjlVqzVOaSV!aLXqhTrk|mOCY{TFMFL=Q# z8(uAe4G(`Yl2~uUj%VBv`!j3sG4F8C5mB@yvp#sr(@LHFp`ms zWF$)@+1Q4`3tsSoS2ny_0vjIvW+buRhOKCpG)tPL{n;#KT>Dk8)`pQw3=_k|utYH| zl2;iXdoD)34I>%JNJg?ml8tQ`yx;{dcxA(@C9vV~??)2rZP;qY9kD;N22X>xKO4NN zS8Kz_C5DM%VpyUW7Rjp&>*r(C+c1)mjASHBB-z-8!3$pSf>$=YS^^uMJRM1F+J>E) zob(%rEMpnV5?MAa!@#van^2#E_!K1Try#uvD`oik6}<~PJ6V^&qz~yMP5STvT3Ib6 zsxWp5Vax1dSE4?=+Z9dNQ@`v@*jn9C`u#&qm@LZkG@e(yz-7XwnXoob+Pm7`Me3Tq z4o|-(#*@~BNnjF~1m=O3=7F}Q31b(#*u}1FcD4L9Jo9Yiu%*_7`RzlNv5aMjEQ=-# zT;Kv1xKhCt3GDaRMFNW^3}he!8ORbrws|IuUF>2PyRz98Iqck@B8Np2=64TS#xj;A zvMib~aDfY4;7SEoB(Ue-ytN4f8OT5evP6(=Heu{y7rWS%&92B{FZ^?B6PD;Zp1x+{ zYbIHLB*xs`skvM6s^5+Tmk=g|31NvsSmdrU{PnFdiZfv#0~yFbmI$)VCX8L|Vi&uz z+12vb@b^jNu%)#!9BISR?1Zsu_iO%p zah-m7^7P~#CWbjUnW{qB`qxXASN*ZKVYk%d6^BFxQ9)GL$*5pO?dFQAc!5g@6T*bB zWFahaS1DJ|{FImkmg;Tvbl=UVySuyicXy)-Teo|3j6e_-L=y$knI`OY<4=jz(-nf4 zAO>`xrvbfHVdOGn)67`gyT#w$&Eq}VXu?W4u<>JJaV|^-lfh&#PqZ{ow2d;Xo(qE) zyx;||Yc)<%^@XCf)B(S%y#kIF#$FwwB8ZFKCTN>+VKI^FJ)!Hy}iD6=x7?vo8 zMe-`;wr|9!w_zkB8OcbNNV2gFgBQHu1+Q#)MFM-*?Q!jG*m1k~`RwA|XZKm_xc%0# z>ebpXa*1JLm>8BQhDGu!<@QHn)Y~wUk&I*{OC;IYhQSM7@Pb!1ydr_U|08kjZP<#I zMoXim*?vo79nEJQRlQmpMlLZ-3=_i=#jr?TrQG>=jCvbJGLn&uWQimj+c0>+3tsTb zhF2u8yFL@w-iEE(#m{FK?>@WFTF33Tj#aPLhLKAQ6T`%?L@_LqS1EU&jZtsINJcV} zkt~s9V;cr9c)<%^+3<=4_VEYe8g1C}K`o7zMoY8(mc}}o&pN7l)i#V=R;^XLEQTeD zVUfH_`Q)=PiZ+a7BqJHg@+8PoHrp_G!3$pSN{3e@u+M%cuG2Q`)a2xHo_`8|()rX4 z?z8*6xKH?s7r1mFX*v*`;jMK;m7d zc-QTU{Pm?D#dT?|ovt|Kt<3aRdbhk=i(6C8V|G@($R&czW3Kt%pzY3S8@a2#e&ydW z?&rc}FkduM2r2~A6oMON*qQ0^e0aeNUhv9>S0u2nJrURbElCH%U~4QyhM8eIH^Zu4tqmiW7$$~^ zVToc`B(GAQyfsF>4I>%JNJg?ml8tQ`yx;{dcxA&Y64=jP8`s{39oJRpDt4}`Fq_P# z-JMNUuhxc+3tsTbhF2u8Kb(kbv|)!2>M!&cyW3xwVP@FQ&9JIhZNtd5bNAE= zwL;CNBfA{xBX`x;7rq+fXv0Wm?(O#6BRt`EZk3g?*@nSu=WeS-YLS{vyZtEactryH z%X{KFZNpAYP9C-btw1Yqw^yK5wo|LD;sq`rMWy*D%F^GdrJwswM(V1s=O2#o<#uhxcgIOZXdK*SAa*>N%spN_bcGYiY z+AxxljASHBB-z-8!3$pSf>$=YB8gr7t(i9Lh%+toIn&}kyU$L$ZU1K$s$T7E7`enS zF-#0g6vHBUmEqdwW7N-vk&I*{BUvKJ#x@LI@PZe-vf)`pQw3=_k|utYH|l2;ktv=pP>hLMb9BqLcO z$;LJeUhsk!yt3id64 z)`pQw3=_k|utYH|l2;ktc0-JM8%8pck&I-CBpcf>c)<%^@XCf)OJKu^zeN)3ZP==o zMoXim*?vo79nEJQRlQmpMlLZ-3=_i=#jr?TWw>=EM!gLq8OcaSvP6=NZ5X`Z1uuAI z!>c8*;kFBr#G(y5a?mb*KD&7L*?rbJZohS`det_JTxQeuXA_mFJg;>Wxoi45yn8Li z(T0(1Uhja_Znc|h+ka}7ve|~g%Y@qggaR{|=e3SHUM+zQ?|pS7v1uE2YI4%wkE_|& z>}&QDHT%;t3|s=pvPGL_(F(gOtC6~7Mj3WydOROq@PZe-vfVaE-_3D6T=e4ut;8IxaZR`>TMXwNJcV}C6a9XmL$C31uuAI!>c8*;Zrw9 z66H9bJCo=*qp3-wKj}gVwe~vh9!z&k-W0P!(aw8m?grjw_)TW7rDrlO0LLY_dhh#hLMb9BqLcO z$;LJeUhsk!yt3gHN$i0S%(P)gox^bs=VIq@%nfs6(dI_gtDOxaml!67iD8LiSR}79 zeEo+p>Sx19MlzC-ERkem8wM|U!3$p5@M;Ncc<`P`V*PB`F^z}DW6>H9bJCo=*qp3- zwKj}gVwe~vh9!z&k-W7kY(?Xt@mRFR!<;lHFE%HuUabuyml!67iD8LiSR}79Joa3SdK*SE zl97yLi6k4_FnGZWUhv9>S4&{S4F8 zC5mB@yvneCK1RI_BN@p^MzTbbjcpjb-~}&uWy7l_u;Izmk;JBL*r~}$zk$dyma#06 zWz#YYTt_Tgi#E-o^{L9rYHz|y8Ge36@50Vb)+I2Ifed7cI;B#g3S*ZLw#+Ve<+CfA zu%~|6o3ORIq4fKQnlM?E=V?5zc!A4=O*3J&K+e|Iv$c`Brmw@(uZi)bHDMB%1SWxb zprv`BZE3>T#V&TSE1O*{e+|z(8#!#LHDP}HkYy}mSt84#2?H0nzy+>Ua76<9{dJMR zq6q^T$Up|NM38Ns31b(#*u}1Fc0~?5_ov8V(S-TkLzc0OWr-|{CJbEQ0vEVa!4(PY z`8RKE!axQxkbx`_WSdPGyV%7pc4f0Ga@Y(1+}eaC`i`fsnfRK?qWy%sIXUk+S@Ejh zjs%wwCWHxLi9%T9t}^`ftucx-VITt;$Uv3|vdt!pUF>2PyRzBU^4IY9N#wAlwf`S} C1~SC} literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..a54d94d20631a84a5b62e0f76d2cd0fa303656e6 GIT binary patch literal 6859 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 literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..b6ad15517594d8672c293f2f46e54c1060789f52 GIT binary patch literal 6859 zcmeI$dq`7J7y$5l?lxcP)Tx=8%S^K*rfH^vkJN=4fu>pZqNZD^pvD|!RurZXB4&|U zpgloEMM*0kmHkm^Z%ZO8G7Of5Q8P)i64#yc@qMTN`Xh?&h08s^edliHo_ii2V;Dxj z7>~K!g>YvQce31>%lKrgcgPew6{%?|S*ju@N0FseD`d(vjVyAHMir-4s?;iFyh5!> z*Q94>snp>Gd2gcY?e}sw8x9w}UO#T-L`27i3Q6h6ye~~PY~%GYQQugv4Hqt-sAT-j z$>PMt&<1!I+5(TM_D+2!oGMISMU+h_n^HETY(d$QvY4_hWqZnVD7#W#K-rtJALS6r zF_hO)-a&aE>!g!5&LblIjN&ADEp{aypG5Zz#o0tWpV@oZg5*c2zEFtAzwpTe6c^noK{gqz zK{iX&Bb$$_kY|nCA&ZrGJle|Nqqu$RY~(qwosnI85|9^k;rH!5ir=??=?zprwC^qQ zstDY^4bEB=&-f@oJ{Z@4eCk^ea?35;KfNueKZ%9SFsx6)ql=LbxK|_Jzv&CjdNrf< zl|3PT3gZIjTr@rety|1tT$pPf1})m$gPzwUJ3SZ1Oi~n)v3a`ERI3 z^vA_;{#N{?wy!QM4_Kff+GD^%k1k0p^yuh5_UA2?Nqx5+?UdbeK!-U#L5PnLfygqcFtw|8b0UZb1pET2%mE`g6?4cY|cgE4nLPRGuD}dj7VBvyuHh9 z;+i#VbAbDQJ)j44G^U%w>r=q746;xYP3U6_OH* zfVhf*fq~J`nSsSF-Fw9-a U;ljWPR>bPe5CAr>EnTJ;0Q{{UBLDyZ literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..dacf8ac27c --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +4239203875 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..f0717e01d51118149efdbabf74859338afed4c66 GIT binary patch literal 75 lcmZQzG+;mmjD}F2Gni&Hf^yp+Tw^HrB!p`M;WF}oXaHI50-pc? literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..49b92757f5869e70d163bc189c4c5e5b6929cdfd GIT binary patch literal 4453 zcmeI$`%9Bi90u_BeYe+5)1}icTCI!OMPf!~7MP~4bP;G;X*Y7Yl?H0eQOk^?6hgu* zDhs*?QW{EGdCBUBO1s!iA}cZsmPJvsD6h#`S95MqOr>L7l0~&)4PZjXJeH%cPFmVlpHd^#-FspR6;Q zvQ61}xdvlQQNf#p>VU2GhaF{<&1UQO3FO87UyJ#&p0VF*D}{^K`ozw@4qtm*KG5jz z-*i?7ZjL_C;^+%4uKv1yCUsSucagCNV;N&PV=ux>g2N~BgZb$RX``~9Wxry<0v@nA4PPByi{gR`YOC9Tz6fvB@UiFxZ zmNDa%|Hj;_1?_D`4=qM3PojsfKnJy<$AzIMoj|M8(UHf{aZTvtVd#uNbpB#=i4I-C ztlt(5=2jJ$SA9XJFF_x}^~qbGK`x}?eirVbCFu{Ly;O?pU;3mKa`8?n*rU4=EKjw8 zJ^KydA^rYfg&x$Gn!gl)ehtJ$jdg5^CtdlN=DrebGqrzY z2(0H3il2vRKB{Wp2kP-N6E9Lvex4RZ9rie@ntD#gw&T>Am($azQ%>YWP-li*nMb|p zmroaU>Fvq{>Z;Tu6R01Q7wx6)x!g9Nn4jXawt+e`KA!G>zB0Lv?tk8PKtcDvV6eQt zN}d-w&qo&!OH90FKe2S;Bc+zQx3`eKAMr=oLHhk6o9f>cOWMoJFBDuN_DVX{Y$Wzx zQ~H^XU-82410BELlf+sjX+KO?vXOot1fGp)RFhnFw@XRi*Tk<0+7gmaTWSrV=Yfdu zkIf2_$F#p|+)TXaXw7-rpOw}*5p+H0rf4e4Nc*C-^(~#m$6s|cRS;i4eWr%?*K#wo zEpjmDmAhK|;)t~yzW?4iXfEGb$IsxwGnnYi1@ere>OOPfgt*UKFdyzS7fc7|K6Al* zxX)bfGZ$G9|JRv|Pul%lRmTm@>E=XL^`3PLvIg!s=j7Y%|KGUL{cm9Ue>Jx92VI|2 AXaE2J literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Summary.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..35b5e2216af09ab8d409ea6dc6f61ce3acb35cef GIT binary patch literal 71 vcmZQzU}#`qU|*TU~FJuy7YqM z%{7M$YrFn-FR9>rYR(|e$ibk`Xc)x6Z=Z4QMi7Ifyb*|<_3{OXZ46}V=OhF%NXeUk Un7L~_7=;5EfVMD9-=WwB03$0Sd;kCd literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..562547ae0c --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +590029692 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cb27ca204cbc779b7b25014f9909eaa3edf034 GIT binary patch literal 24 fcmZQzU|?lnU|?$GU^Eg*bYe_ka#Uwva9{uc8Bzj< literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..932936cb5183da24521124b096abd409cfaf0fab GIT binary patch literal 75 lcmZQzG+;mmjD}EN5SV5(f^wHYxW-WKHwf1R!e#UT(Ew$o12q5u literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..525a4b1c88e1f6ab0c56f6494e9d435c22477095 GIT binary patch literal 4453 zcmeI$`%6<%902fp?{rU$|hi zO3loWD?$o#K7}{foz=a0vAAlr+67Bzn!P$zNSDm6n{KXUnjX)yWAh`{x^UT2r{({t zZ!T4fV}NCGEU<9n|H*o3edVGF_n!Zw8M2s;s8OW2LD7vXJ$0|`gy z&CUBD5l<$ZOSqJ9GvOg@n%EC|2N72h?!;ys3Fl+;h`-OPz;XU!euBdK0_d7XLD|4Qu84(w=q>_lg5<$mlUDRvE! zzr7M1*NBj5(NFC71K5=~KWWW76lY@bd1hW<^WtBl{(L^pfBu_36lb3mBO6WDBAdi& zkxdum$mR>S$O0M8M;pmk6t`=0Kz15+L0&r)gY4Fi_uFd@@3(JB7wR80_8EEaZalsO z7d48feHS91k7`6N|Gg8r^$A{|kyf;xw3+n`>`#Y;Uqa5?co+F)w+}Sq*@8Y_nd^eL zFwS$yM)|>OJ7x;w{A|-;X!ht3ny*o2YBr1;x2k8MO(kK|(B`6cbe=5Zg#$2d&5P`T zw)OWw`Rpk8eFMf_>#j^dZ`dBu1noI|C=l9vAf*91An{xkwB&=&A?TRubU)}MkB7UU zPyMkRhc13v8xCC;TfPzcRawDh=-CH@VZiie%M)$TNqhFd^H0}Cx4`pHYp)65`Df(n z(MRC@%vgPJ4lqwetFHp{-TQ@+&~tOSaDUieC8hBD!+4AB_-@eOr0ibKePFYwTRjS3 zi{r&V;QR&eZ6@ISZQevQ3qgN-X;BvZK5)Jp(k=#Z(erU3+%Na3@W>(%-x{a!fcF7E z-)}tv5Dyvp(ta9vUqxd*9M2I=fFI1~j2KBx3Fu#NqP2Gnxa#9bM-6c2?K_Qdyy|YR zLI2e_Exgb-9||0qHuE=s)s#}-=01a2!dzE|Yv^mkoeM7rcjw|>J;*imwc*Z%7Q}Gp zLd!uJ?p$a+40kTWoeLzy|8?i0qb?4MS}3dZNs1LUTsoPsT&LGh=IMUl=$c#^xNN0G GHvR#kiB#?Y literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Summary.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..35b5e2216af09ab8d409ea6dc6f61ce3acb35cef GIT binary patch literal 71 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 literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..96f0d3a7c05db4f23c9ffa538a0a611cc72d6a0b GIT binary patch literal 7045 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 literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 new file mode 100644 index 0000000000..f348e92a64 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 @@ -0,0 +1 @@ +248029051 \ No newline at end of file diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Filter.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..2e1d5d29ca0683d58365c1bda385a89ced35f1f9 GIT binary patch literal 24 fcmZQzU|?lnU|?ckVPs%abZX%^z`&xww2T1&5k3Nr literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Index.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..d703649d67e2c7778c9fdaa694893936e6af9b72 GIT binary patch literal 157123 zcmeI*J#G_09ENd6LP7{3#3AV8k9=?lE)j7G8fYjexeatN^z`NeG;|ywcxIWniIu|Z zXx{9P%8JBdoSkQ%dH?HuXD6q#>-S$@ez>{0`8XT?ym&JEe06#{Uo2N==NFf6yz&`1 z53Gg0d9a1nyZIceunMcNs&7{9D7D_anpJWwc0cn9!!QiP`eslkE zYQ1?n_}2OEXI^0#hGAIW46D8+i#LxjlQEZynawrdT9_vy7jhw247rMLEu`|Og<7Z; zL#_4ZSO0liQL6fuRGx3~Exr}xTf;nYaj_$rSImofF|WSOtN7MZ zD$lq07T-$qtt;^sZ~+%^#el2o7HXjuYN1vPwc0pwxe{s#wS-zit-eF89i^&o3FY|~ z-{MDbw1|k=7Ay*8!s&5J9Q46(DD~4LPzU8@r$c0?U6+^BvPIUJcXn_`J z#XxJlc~Ks|b!DFjT)+ifG2klDvPA?f&;qR(Xs!Qzn$1q;*MGk#uy%jA`@{RbKis!i z?)w%?88IrbMlvKrvK(5jH_sJV$2fD&dF7qn=L zRR(e)7jngrtNNBHBWj@*YQ<2i`IZ7}$-HDbz9p5HZ^^ghTY34GZ(Ac5av@g?xr%Qou(nIIOSDVO*(Ls;Cn~T8F5m*L9B@_L zQebV9Xp?A@7_&)i<3t74e2Z`KtuWsb%JVJ0#kYcdOM!LHHO4zV>=6P!zsK|WZSyS! z);5VYi8hHjSa0!`0&C<#F67D~R~aWNutqJ^LaiKXwWmQSutqNALarQgRo_xfW}Il8 zXq*@~PF#6zAaWrWa>bCVj1%3x1zMm5S~1X4V9hfj8?xh&U2MzJwRA1rxTTvDp^yDe zhXU)x`uA%E*2am(iN=Xz6Xs!$S4NBqtdR`KknCZ}bI8A@!20oghwG5@z~6NqWL>+f zZz-^rdP%*cUO_X);Rz86th25*{D>b-`;4u=Wy;96_!i%a^DPC|)4qD~H~yBj0*Y@b zu+I9Op$y7Q`;2XmE;w}kS1 zi*NC*m{7ho{48~4AQy5WR}8tfzNNt0CehQkJbf!?%iQ8E1=h%gT*#F}t`cu4utqJ^ zLaiKXwRlT`HF6;ra^;Y#`j${$C@+*3%EyHAx4z}3apXcSRSq|K-MXja`)U~TPMyK!qbM~}vSr)`|5 zz}iO9M$txbY`z@tc-6Or@_dVL@vWFpzCCeXfi>UaTYT$yel+%xx4xyo8ni$Qw8lou z@s8KxEd|!dgLT9gj3)AG!LL0&C+$ z<3!`cxN+jjP2Lv9GnlUP{?$d<5D<;f@_nUC_EmKCm#kcrYoNp-RH1<0!1=jxnCuKab literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..14736e2da381005e02f2c5491f9455d9361ec352 GIT binary patch literal 7054 zcmeI%drVVT7y$5lZXZB}3I#=KL=>1CF$FTtiRCyayuWH6VjC~nv82dBUG7e%K!gv+?2NP6c{8xr zhhf{^z^)Upo0<9BW5jW1_>?{Ch=l)w;-sVydq19^#CaRV`2xJ2`779pl5bFdr4rA7 z<;`m-uDV>0tbW{r>|5YM_L~%ur%eVUYt48*1{oiscu40=)8B!vC(#5xh5bod)_cf1 z<{v}8dNB@~UvLKPul&c_TQIKBSEKo%=v?aux7)?$hBIhW0Zq ze*!%%ybG1svX@69}P4l6@Zmj(Pdic}c<-p|S08=M) zX=Wx||D+}FjCcLJyAjt%TDbms(Q)rH@OggV#IhP-g`GHd11qDh>vEt+Mz+KIqk7h` z2R=W1UI`vd2mO5;Pt|+^tjRsxEdl$ltN$6EzxHm>BY6HnH?!Myp#Kb^t_nU6!j7eN z89+Szt3e&SUr|F@Idveuu*ew=^MS;KAG@_6p4RuEYYXtoeXS?pc-A;m6XATeu1(N6!H8f$#dyHUpnKa>;$97fK$0kg@5;cKzA;>ZONOJykW}^E&0LypGjW4nU^;O8ymfS zH*_2QAvW)i|J^bfDh0__CR7-T3SUbp+*&2_f4L{et2YZ3rawDyrgf9WE=rl!icOUk H_c#0sX|sbs literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..9b24e0450c732103bdd22afb63db34808745ed6f GIT binary patch literal 47 jcmZQzU}#`qU|S_Q literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..b9fae83f659fbcf31a473fa66309dff54a789d3e GIT binary patch literal 4598 zcmeI$drT8a90%~-ZMQ&$N((-~SYP0Sm|{dk6BWT~K}|p&im&KG8^I`$wo&A~a8dk+ z+;N-{(Zsh2F=!-;55Q-lg6{`0qDB;x9%nRK&nO2x8x+QiTi{e0ud5M`pX(9Z zd)k8KaFv|B$@{xBvG(?dCb?gblrbn5MWxbLY8d-5_GheR9LQM5SkE|=@nFV7`>gbH z6cdkPJdyD<#z~A9GG4{lJGV4dQpoi>#;s_cnGb$46L&H`j}`_o-h@^$->=$*adjqI zj6rLrqy3oi`hUW>wizAhM)%)>Hta(WT!Id7K@X2ckKT(mWufDCqZ7}fQwN||hM^q` z&}9<3npwZiW{kUyVBYvQIx7Rc8`mfAegJVH9rv?v9j(f`4eixxT>t8OHz6)wEeC7f z)`0!fJ>Y;|8@OL@2v}#u^{6+$fOu%bK=9zF;ozaIY2Zai2VZ54xydoO+t9Nx$2bgESr|xHLg#8qhWw=Y@ z!K&mY>X5idSkHrW-8*P}$l*U;QjeIFbeww3!$s4mqwnS(rJlO-=RMTs#}gJ&r|n%E zOPv#WY9{r%k3k*O;~$bS+nT==W9|=)BVqT zw(02p7i_MlXUOM;_9HWjiB(SCwUt;MamSEM-PN^`&X4#{MJ0WH_>BwcNFeR~tBw_) zAl9brZ?Y2yt|)&)$FF;&e@Vx$zn4^JAngZ8Wrg&45OyfO(M00LYaIqUUlH#t$z>!y zKGPjZ&jYbBubOlu9^d*`<9g!xyK0Zn{w#G*jiu{3Kh0cSLE4vQ*EhEl?|IU8wwn0- zfrGWQzphJBEpgxDykYaro`fkqAS6BXnMaD`~L8>k#iyJKZTgMVW>4nCVJi~mjh*?WTxfYwBER48 zW@WEjc&pSnt6bv~p2@+B->xao+HV(VMG1=C4;~q7OE@m|-`~4ro7PHpN3OKSl$kMS TO2&ploBYB?vrby`pWA;1#wvZz literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..9b24e0450c732103bdd22afb63db34808745ed6f GIT binary patch literal 47 jcmZQzU}#`qU|N9t?~P3@1;o%NA|(mfEuLuKOaPm4D?JR2UdJ z7`zx67!55L>`!+pSTTr78CfydpKmw-Vj2UPmzfPfOcNmU8p8!E2EG6W1_nmPbNua7 E0E7)39R>X5m( zIQ)lfj2V%cfR8O9290Dg74Wsh4fb#o$s%(ZjwKyiT(&x+3?`wwRj&TNCrkX>tS33S z=W~Cj?RoZ|T#n=P-2IfKUU)TcP_v-s9ctEboVl4x^(dQdQjJvMl5G`|*DJZ5iez)T ze75ZEKDkhF%8KkPk`!O1uhQd|mCX9OpL37LzoCA?ykIam6_db=dv5LKo5mL0?&=Uu zoSPI!CWm9yaEqElDfGKEu@1F|CbeCVv_5DzMXfM>H874~9Ld?~?acb^w_`kD1@qRw(B-A*Hf??0zs(1(LR=`p{VaTi)|Gz?_4RsO|N1MJ zATEB<2sYg807sSt!BJB(c*ay5*yP0ZXtw_b@%WzE;JMcm!SjcT!HX{Ae5Z`#e5W;C zfcmROegUt|!uGwK=!f{0KP=$43Om93CzgY|Kg01E?uPN?jj?xVeLgey9q`VDN5EfS zTuLo0ISv1>!amb?G_Fgmh4rE9*$_qJ`r4?~)Z%MH&|ib6vX;gpy8UC+QT8>rsb^Sw zVL!!`TLx%6R+ryL9hZ>|>v@i8;sY9=cl7-m)K5N_cY=D!_v=?urw+J|Q?J;mo^*r^qe_}?d8$a*Jr9N7+e9QrCdVG8bogeYg=aZ27qE6JlfG;XZ{pdSm0CwEw1S<{PyC<|}z!7E*tf)KEj82MI?qdu=3c{c_Yo z=PT(}ZhixaKT{S+rssk5wBP$oB%V3+YwzpCFSd3bqwRS$up*tVXLqr^y@}MXcXaoU z5Fhw)_-s4z`42zpr0w-zOc~6080Rf-Uz*G&&fjw9?yiUCywhdvKUid}RTZ?t^!5LG z=F)}%_PBa8eCE(T2P$0dd*sy%5g>i{oci4 ttCke6ORBP!mAh{S>j;CsCwLA2|e*r#afv5lg literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..9b24e0450c732103bdd22afb63db34808745ed6f GIT binary patch literal 47 jcmZQzU}#`qU| TEST_DATA; public static File LEGACY_SSTABLE_ROOT; + /** + * When adding a new sstable version, add that one here. + * See {@link #testGenerateSstables()} to generate sstables. + * Take care on commit as you need to add the sstable files using {@code git add -f} + */ + public static final String[] legacyVersions = {"ma", "la", "ka", "jb"}; + + // 1200 chars + static final String longString = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"; + @BeforeClass public static void defineSchema() throws ConfigurationException { @@ -103,24 +138,6 @@ public class LegacySSTableTest return new Descriptor(ver, directory, KSNAME, CFNAME, 0, SSTableFormat.Type.LEGACY); } - /** - * Generates a test SSTable for use in this classes' tests. Uncomment and run against an older build - * and the output will be copied to a version subdirectory in 'LEGACY_SSTABLE_ROOT' - * - @Test - public void buildTestSSTable() throws IOException - { - // write the output in a version specific directory - Descriptor dest = getDescriptor(Descriptor.Version.current_version); - assert dest.directory.mkdirs() : "Could not create " + dest.directory + ". Might it already exist?"; - - SSTableReader ssTable = SSTableUtils.prepare().ks(KSNAME).cf(CFNAME).dest(dest).write(TEST_DATA); - assert ssTable.descriptor.generation == 0 : - "In order to create a generation 0 sstable, please run this test alone."; - System.out.println(">>> Wrote " + dest); - } - */ - @Test public void testStreaming() throws Throwable { @@ -128,6 +145,8 @@ public class LegacySSTableTest for (File version : LEGACY_SSTABLE_ROOT.listFiles()) { + if (!new File(LEGACY_SSTABLE_ROOT + File.separator + version.getName() + File.separator + KSNAME).isDirectory()) + continue; if (Version.validate(version.getName()) && SSTableFormat.Type.LEGACY.info.getVersion(version.getName()).isCompatibleForStreaming()) testStreaming(version.getName()); } @@ -170,6 +189,8 @@ public class LegacySSTableTest for (File version : LEGACY_SSTABLE_ROOT.listFiles()) { + if (!new File(LEGACY_SSTABLE_ROOT + File.separator + version.getName() + File.separator + KSNAME).isDirectory()) + continue; if (Version.validate(version.getName()) && SSTableFormat.Type.LEGACY.info.getVersion(version.getName()).isCompatible()) { notSkipped = true; @@ -208,4 +229,197 @@ public class LegacySSTableTest throw e; } } + + @Test + public void testLegacyCqlTables() throws Exception + { + createKeyspace(); + + loadLegacyTables(); + } + + private static void loadLegacyTables() throws IOException + { + for (String legacyVersion : legacyVersions) + { + logger.info("Preparing legacy version {}", legacyVersion); + + createTables(legacyVersion); + + loadLegacyTable("legacy_%s_simple", legacyVersion); + loadLegacyTable("legacy_%s_simple_counter", legacyVersion); + loadLegacyTable("legacy_%s_clust", legacyVersion); + loadLegacyTable("legacy_%s_clust_counter", legacyVersion); + + for (int ck = 0; ck < 50; ck++) + { + String ckValue = Integer.toString(ck) + longString; + for (int pk = 0; pk < 5; pk++) + { + logger.debug("for pk={} ck={}", pk, ck); + + String pkValue = Integer.toString(pk); + UntypedResultSet rs; + if (ck == 0) + { + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_simple WHERE pk=?", legacyVersion), pkValue); + Assert.assertNotNull(rs); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals("foo bar baz", rs.one().getString("val")); + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_simple_counter WHERE pk=?", legacyVersion), pkValue); + Assert.assertNotNull(rs); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals(1L, rs.one().getLong("val")); + } + + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_clust WHERE pk=? AND ck=?", legacyVersion), pkValue, ckValue); + assertLegacyClustRows(1, rs); + + String ckValue2 = Integer.toString(ck < 10 ? 40 : ck - 1) + longString; + String ckValue3 = Integer.toString(ck > 39 ? 10 : ck + 1) + longString; + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_clust WHERE pk=? AND ck IN (?, ?, ?)", legacyVersion), pkValue, ckValue, ckValue2, ckValue3); + assertLegacyClustRows(3, rs); + + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_clust_counter WHERE pk=? AND ck=?", legacyVersion), pkValue, ckValue); + Assert.assertNotNull(rs); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals(1L, rs.one().getLong("val")); + } + } + } + } + + private void createKeyspace() + { + QueryProcessor.executeInternal("CREATE KEYSPACE legacy_tables WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}"); + } + + private static void createTables(String legacyVersion) + { + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_simple (pk text PRIMARY KEY, val text)", legacyVersion)); + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_simple_counter (pk text PRIMARY KEY, val counter)", legacyVersion)); + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_clust (pk text, ck text, val text, PRIMARY KEY (pk, ck))", legacyVersion)); + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_clust_counter (pk text, ck text, val counter, PRIMARY KEY (pk, ck))", legacyVersion)); + } + + private static void assertLegacyClustRows(int count, UntypedResultSet rs) + { + Assert.assertNotNull(rs); + Assert.assertEquals(count, rs.size()); + for (int i = 0; i < count; i++) + { + for (UntypedResultSet.Row r : rs) + { + Assert.assertEquals(128, r.getString("val").length()); + } + } + } + + private static void loadLegacyTable(String tablePattern, String legacyVersion) throws IOException + { + String table = String.format(tablePattern, legacyVersion); + + logger.info("Loading legacy table {}", table); + + ColumnFamilyStore cfs = Keyspace.open("legacy_tables").getColumnFamilyStore(table); + + for (File cfDir : cfs.getDirectories().getCFDirectories()) + { + copySstablesToTestData(legacyVersion, table, cfDir); + } + + cfs.loadNewSSTables(); + } + + /** + * Generates sstables for 4 CQL tables (see {@link #createTables(String)}) in current + * sstable format (version) into {@code test/data/legacy-sstables/VERSION}, where + * {@code VERSION} matches {@link Version#getVersion() BigFormat.latestVersion.getVersion()}. + *

+ * Run this test alone (e.g. from your IDE) when a new version is introduced or format changed + * during development. I.e. remove the {@code @Ignore} annotation temporarily. + *

+ */ + @Test + @Ignore + public void testGenerateSstables() throws Throwable + { + createKeyspace(); + createTables(BigFormat.latestVersion.getVersion()); + + Random rand = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 128; i++) + { + sb.append((char)('a' + rand.nextInt(26))); + } + String randomString = sb.toString(); + + for (int pk = 0; pk < 5; pk++) + { + String valPk = Integer.toString(pk); + QueryProcessor.executeInternal(String.format("INSERT INTO legacy_tables.legacy_%s_simple (pk, val) VALUES ('%s', '%s')", + BigFormat.latestVersion, valPk, "foo bar baz")); + + QueryProcessor.executeInternal(String.format("UPDATE legacy_tables.legacy_%s_simple_counter SET val = val + 1 WHERE pk = '%s'", + BigFormat.latestVersion, valPk)); + + for (int ck = 0; ck < 50; ck++) + { + String valCk = Integer.toString(ck); + + QueryProcessor.executeInternal(String.format("INSERT INTO legacy_tables.legacy_%s_clust (pk, ck, val) VALUES ('%s', '%s', '%s')", + BigFormat.latestVersion, valPk, valCk + longString, randomString)); + + QueryProcessor.executeInternal(String.format("UPDATE legacy_tables.legacy_%s_clust_counter SET val = val + 1 WHERE pk = '%s' AND ck='%s'", + BigFormat.latestVersion, valPk, valCk + longString)); + + } + } + + StorageService.instance.forceKeyspaceFlush("legacy_tables"); + + File ksDir = new File(LEGACY_SSTABLE_ROOT, String.format("%s/legacy_tables", BigFormat.latestVersion)); + ksDir.mkdirs(); + copySstablesFromTestData(String.format("legacy_%s_simple", BigFormat.latestVersion), ksDir); + copySstablesFromTestData(String.format("legacy_%s_simple_counter", BigFormat.latestVersion), ksDir); + copySstablesFromTestData(String.format("legacy_%s_clust", BigFormat.latestVersion), ksDir); + copySstablesFromTestData(String.format("legacy_%s_clust_counter", BigFormat.latestVersion), ksDir); + } + + private void copySstablesFromTestData(String table, File ksDir) throws IOException + { + File cfDir = new File(ksDir, table); + cfDir.mkdir(); + + for (File srcDir : Keyspace.open("legacy_tables").getColumnFamilyStore(table).getDirectories().getCFDirectories()) + { + for (File file : srcDir.listFiles()) + { + copyFile(cfDir, file); + } + } + } + + private static void copySstablesToTestData(String legacyVersion, String table, File cfDir) throws IOException + { + for (File file : new File(LEGACY_SSTABLE_ROOT, String.format("%s/legacy_tables/%s", legacyVersion, table)).listFiles()) + { + copyFile(cfDir, file); + } + } + + private static void copyFile(File cfDir, File file) throws IOException + { + byte[] buf = new byte[65536]; + if (file.isFile()) + { + File target = new File(cfDir, file.getName()); + int rd; + FileInputStream is = new FileInputStream(file); + FileOutputStream os = new FileOutputStream(target); + while ((rd = is.read(buf)) >= 0) + os.write(buf, 0, rd); + } + } } diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java b/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java index 7826317cca..fcd2d71916 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java @@ -76,7 +76,7 @@ public class SSTableUtils File cfDir = new File(tempdir, keyspaceName + File.separator + cfname); cfDir.mkdirs(); cfDir.deleteOnExit(); - File datafile = new File(new Descriptor(cfDir, keyspaceName, cfname, generation).filenameFor("Data.db")); + File datafile = new File(new Descriptor(cfDir, keyspaceName, cfname, generation).filenameFor(Component.DATA)); if (!datafile.createNewFile()) throw new IOException("unable to create file " + datafile); datafile.deleteOnExit(); diff --git a/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java b/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java index 0898515cde..4c108824ce 100644 --- a/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java @@ -24,9 +24,7 @@ import java.io.IOException; import java.util.Collections; import java.util.EnumSet; import java.util.Map; -import java.util.Set; -import com.google.common.collect.Sets; import org.junit.Test; import org.apache.cassandra.SchemaLoader; @@ -36,10 +34,10 @@ import org.apache.cassandra.db.commitlog.ReplayPosition; import org.apache.cassandra.dht.RandomPartitioner; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.util.BufferedDataOutputStreamPlus; import org.apache.cassandra.io.util.DataOutputStreamPlus; import org.apache.cassandra.io.util.RandomAccessReader; -import org.apache.cassandra.utils.EstimatedHistogram; import static org.junit.Assert.assertEquals; @@ -64,7 +62,7 @@ public class MetadataSerializerTest File statsFile = File.createTempFile(Component.STATS.name, null); try (DataOutputStreamPlus out = new BufferedDataOutputStreamPlus(new FileOutputStream(statsFile))) { - serializer.serialize(originalMetadata, out); + serializer.serialize(originalMetadata, out, BigFormat.latestVersion); } Descriptor desc = new Descriptor( statsFile.getParentFile(), "", "", 0);