From 9eee7aa7874c17ab28d43ff58c97da889c87e397 Mon Sep 17 00:00:00 2001 From: Aleksey Yeshchenko Date: Thu, 8 Nov 2018 14:02:21 -0800 Subject: [PATCH] Fix missing rows when reading 2.1 SSTables with static columns in 3.0 patch by Aleksey Yeschenko; reviewed by Blake Eggleston for CASSANDRA-14873 --- CHANGES.txt | 1 + .../org/apache/cassandra/db/Serializers.java | 3 ++ ...es-legacy_ka_14873-ka-1-CompressionInfo.db | Bin 0 -> 43 bytes ...legacy_tables-legacy_ka_14873-ka-1-Data.db | Bin 0 -> 232 bytes ...cy_tables-legacy_ka_14873-ka-1-Digest.sha1 | 1 + ...gacy_tables-legacy_ka_14873-ka-1-Filter.db | Bin 0 -> 16 bytes ...egacy_tables-legacy_ka_14873-ka-1-Index.db | Bin 0 -> 118 bytes ..._tables-legacy_ka_14873-ka-1-Statistics.db | Bin 0 -> 4446 bytes ...acy_tables-legacy_ka_14873-ka-1-Summary.db | Bin 0 -> 92 bytes ...legacy_tables-legacy_ka_14873-ka-1-TOC.txt | 8 ++++ .../io/sstable/LegacySSTableTest.java | 38 ++++++++++++++++++ 11 files changed, 51 insertions(+) create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Data.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Digest.sha1 create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Filter.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Index.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Summary.db create mode 100644 test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-TOC.txt diff --git a/CHANGES.txt b/CHANGES.txt index d9eb316525..3284250850 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.18 + * Fix missing rows when reading 2.1 SSTables with static columns in 3.0 (CASSANDRA-14873) * Move TWCS message 'No compaction necessary for bucket size' to Trace level (CASSANDRA-14884) * Sstable min/max metadata can cause data loss (CASSANDRA-14861) * Dropped columns can cause reverse sstable iteration to return prematurely (CASSANDRA-14838) diff --git a/src/java/org/apache/cassandra/db/Serializers.java b/src/java/org/apache/cassandra/db/Serializers.java index 348fda3e6b..bf340e7129 100644 --- a/src/java/org/apache/cassandra/db/Serializers.java +++ b/src/java/org/apache/cassandra/db/Serializers.java @@ -79,6 +79,9 @@ public class Serializers if (clusteringSize == 0) return Clustering.EMPTY; + if (metadata.isCompound() && CompositeType.isStaticName(bb)) + return Clustering.STATIC_CLUSTERING; + if (!metadata.isCompound()) return new Clustering(bb); diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..4a8741930a7b54fe24498e54f7e1b70bce4f07ed GIT binary patch literal 43 gcmZSJ^@%cZ&d)6Vup zwh5Gx%%LczEf{&U2~EP&P())QMIHH&=LC4Rr6Lgk6@rZ6(uTvA;!v8TAV$Jw7LvxF q2$!I!i{oX^fZ$OAKF>w9=58^TvCo?ecFo4uE0Z|c<2LVD5isdZ>7g&}N%!jB1 PvJom-z~(S8Fq!}W7KaOB literal 0 HcmV?d00001 diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..f4b26ee0056dd02ba75ce651dec5fede25c5b1da GIT binary patch literal 4446 zcmeI$drVVT90%}wZXdJ=9h8T_lx!lp5mJbV%tYwK8o(?8VNUiSQfR{?5lm^6A&Z1z z;&5STR5bH7O$Y%a*_;Z@bjjFYb8HG(#x#Slq}C0ib&Cp!p}QAb`ToxS-jXFf$;~~V z{?6@r_nuS`1cmT4Es<_ay0%D{C|wmoQnjtjVBTRaEw>s<%{4XVDvQl*u$0>kneW=I zxi*W{X0_y*ZT1R#MRk?cW^AhaE$e*vZs}n;1$jK4x!`EV#vLC7Np73}^l2sD?EFox z6q8&zCSL=6pDBGA?_I@N%{hRxhI1fixviLV2q_=RIh=D8=cSzEI45vk#d#g)Y|d|R zF5_I!`7q}ToJXk{Hy>;b7q@eEP>YK>H&QFO?^hhBaizQaQU|%IpW92VKTRF^7In-B^$SVVD^5`x3aQghP-kAD&WoTfj;5~JOxuLMm zjB%293aEj^xES0PNGdWleePtPi;>{m&RXu z6}|IuunXPtO=lLmtKir&^bc)KAE6&z9N7qFF9nzMqDwby!2QoU^Dg85XP!ek-2bB0 zIsOGaFHW4xr~@nP%y|&3Tz*ZTgPxwQ$N5oBwI0UzN5IQruJuq})AniI=itEHPX=t@ zplvPpu>ZOnp_ADE(BbS0dMF=ZZr*|KgXj)pp8?{r-?{WSU(5f>%4vpp;ud#2o(ED> z?hNQ4ZXCVcw+sB*@$Pfjp10j=Q*k|4<(t}Dp?p(G&)@|3#I>5|`Ue*>(fPC) 0 ORDER BY cc DESC;")); + + UntypedResultSet reverse = + QueryProcessor.executeOnceInternal( + String.format("SELECT * FROM legacy_tables.legacy_ka_14873 WHERE pkc = 0 AND cc > 0 ORDER BY cc ASC;")); + + Assert.assertEquals(5, forward.size()); + Assert.assertEquals(5, reverse.size()); + } + @Test public void testMultiBlockRangeTombstones() throws Exception {