diff --git a/src/java/org/apache/cassandra/db/compression/CompressionDictionary.java b/src/java/org/apache/cassandra/db/compression/CompressionDictionary.java index bbacacd85ca..30f37a0b556 100644 --- a/src/java/org/apache/cassandra/db/compression/CompressionDictionary.java +++ b/src/java/org/apache/cassandra/db/compression/CompressionDictionary.java @@ -261,11 +261,13 @@ static LightweightCompressionDictionary createFromRowLightweight(UntypedResultSe int size = row.getInt("dict_length"); String keyspaceName = row.getString("keyspace_name"); String tableName = row.getString("table_name"); + String tableId = row.getString("table_id"); try { return new LightweightCompressionDictionary(keyspaceName, tableName, + tableId, new DictId(CompressionDictionary.Kind.valueOf(kindStr), dictId), checksum, size); @@ -430,21 +432,37 @@ class LightweightCompressionDictionary { public final String keyspaceName; public final String tableName; + public final String tableId; public final DictId dictId; public final int checksum; public final int size; public LightweightCompressionDictionary(String keyspaceName, String tableName, + String tableId, DictId dictId, int checksum, int size) { this.keyspaceName = keyspaceName; this.tableName = tableName; + this.tableId = tableId; this.dictId = dictId; this.checksum = checksum; this.size = size; } + + @Override + public String toString() + { + return "LightweightCompressionDictionary{" + + "keyspaceName='" + keyspaceName + '\'' + + ", tableName='" + tableName + '\'' + + ", tableId='" + tableId + '\'' + + ", dictId=" + dictId + + ", checksum=" + checksum + + ", size=" + size + + '}'; + } } } diff --git a/src/java/org/apache/cassandra/db/compression/CompressionDictionaryDetailsTabularData.java b/src/java/org/apache/cassandra/db/compression/CompressionDictionaryDetailsTabularData.java index 3802c10abac..588bb418d34 100644 --- a/src/java/org/apache/cassandra/db/compression/CompressionDictionaryDetailsTabularData.java +++ b/src/java/org/apache/cassandra/db/compression/CompressionDictionaryDetailsTabularData.java @@ -39,16 +39,25 @@ public class CompressionDictionaryDetailsTabularData { + /** + * Position inside index names of tabular type of tabular data returned upon + * listing dictionaries where table id is expected to be located. + * We do not need to process this entry at all time, e.g. when not listing + * orphaned compression dictionaries. + */ + public static final int TABULAR_DATA_TYPE_TABLE_ID_INDEX = 2; + /** * Position inside index names of tabular type of tabular data returned upon * listing dictionaries where raw dictionary is expected to be located. * We do not need to process this entry as listing does not contain any raw dictionary, * only exporting does. */ - public static final int TABULAR_DATA_TYPE_RAW_DICTIONARY_INDEX = 3; + public static final int TABULAR_DATA_TYPE_RAW_DICTIONARY_INDEX = 4; public static final String KEYSPACE_NAME = "Keyspace"; public static final String TABLE_NAME = "Table"; + public static final String TABLE_ID_NAME = "TableId"; public static final String DICT_ID_NAME = "DictId"; public static final String DICT_NAME = "Dict"; public static final String KIND_NAME = "Kind"; @@ -58,6 +67,7 @@ public class CompressionDictionaryDetailsTabularData private static final String[] ITEM_NAMES = new String[]{ KEYSPACE_NAME, TABLE_NAME, + TABLE_ID_NAME, DICT_ID_NAME, DICT_NAME, KIND_NAME, @@ -66,6 +76,7 @@ public class CompressionDictionaryDetailsTabularData private static final String[] ITEM_DESCS = new String[]{ "keyspace", "table", + "table_id", "dictionary_id", "dictionary_bytes", "kind", @@ -84,6 +95,7 @@ public class CompressionDictionaryDetailsTabularData { ITEM_TYPES = new OpenType[]{ SimpleType.STRING, // keyspace SimpleType.STRING, // table + SimpleType.STRING, // tableId SimpleType.LONG, // dict id new ArrayType(SimpleType.BYTE, true), // dict bytes SimpleType.STRING, // kind @@ -115,6 +127,7 @@ public static CompositeData fromLightweightCompressionDictionary(LightweightComp { dictionary.keyspaceName, dictionary.tableName, + dictionary.tableId, dictionary.dictId.id, null, // on purpose not returning actual dictionary dictionary.dictId.kind.name(), @@ -133,10 +146,11 @@ public static CompositeData fromLightweightCompressionDictionary(LightweightComp * * @param keyspace keyspace of a dictionary * @param table table of a dictionary + * @param tableId id of a table dictionary is for * @param dictionary dictionary itself * @return composite data representing dictionary */ - public static CompositeData fromCompressionDictionary(String keyspace, String table, CompressionDictionary dictionary) + public static CompositeData fromCompressionDictionary(String keyspace, String table, String tableId, CompressionDictionary dictionary) { try { @@ -146,6 +160,7 @@ public static CompositeData fromCompressionDictionary(String keyspace, String ta { keyspace, table, + tableId, dictionary.dictId().id, dictionary.rawDictionary(), dictionary.kind().name(), @@ -176,6 +191,7 @@ public static CompositeData fromCompressionDictionaryDataObject(CompressionDicti { dataObject.keyspace, dataObject.table, + dataObject.tableId, dataObject.dictId, dataObject.dict, dataObject.kind, @@ -200,6 +216,7 @@ public static CompressionDictionaryDataObject fromCompositeData(CompositeData co { return new CompressionDictionaryDataObject((String) compositeData.get(CompressionDictionaryDetailsTabularData.KEYSPACE_NAME), (String) compositeData.get(CompressionDictionaryDetailsTabularData.TABLE_NAME), + (String) compositeData.get(CompressionDictionaryDetailsTabularData.TABLE_ID_NAME), (Long) compositeData.get(CompressionDictionaryDetailsTabularData.DICT_ID_NAME), (byte[]) compositeData.get(CompressionDictionaryDetailsTabularData.DICT_NAME), (String) compositeData.get(CompressionDictionaryDetailsTabularData.KIND_NAME), @@ -211,6 +228,7 @@ public static class CompressionDictionaryDataObject { public final String keyspace; public final String table; + public final String tableId; public final long dictId; public final byte[] dict; public final String kind; @@ -220,6 +238,7 @@ public static class CompressionDictionaryDataObject @JsonCreator public CompressionDictionaryDataObject(@JsonProperty("keyspace") String keyspace, @JsonProperty("table") String table, + @JsonProperty("tableId") String tableId, @JsonProperty("dictId") long dictId, @JsonProperty("dict") byte[] dict, @JsonProperty("kind") String kind, @@ -228,6 +247,7 @@ public CompressionDictionaryDataObject(@JsonProperty("keyspace") String keyspace { this.keyspace = keyspace; this.table = table; + this.tableId = tableId; this.dictId = dictId; this.dict = dict; this.kind = kind; @@ -241,7 +261,7 @@ public CompressionDictionaryDataObject(@JsonProperty("keyspace") String keyspace * An object of this class is considered to be valid if: * *