Skip to content

Commit

Permalink
Don't write compression to index metadata if index compression disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
pkolaczk committed Jan 31, 2025
1 parent b0691a2 commit 71a3a1e
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,9 @@ public enum CassandraRelevantProperties
/** Watcher used when opening sstables to discover extra components, eg. archive component */
CUSTOM_SSTABLE_WATCHER("cassandra.custom_sstable_watcher"),

/** When enabled, a user can set compression options in the index schema */
INDEX_COMPRESSION("cassandra.index.compression_enabled", "false"),

/** Controls the maximum top-k limit for vector search */
SAI_VECTOR_SEARCH_MAX_TOP_K("cassandra.sai.vector_search.max_top_k", "1000"),

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.apache.cassandra.audit.AuditLogContext;
import org.apache.cassandra.audit.AuditLogEntryType;
import org.apache.cassandra.auth.Permission;
import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.ParameterizedClass;
import org.apache.cassandra.cql3.ColumnIdentifier;
Expand Down Expand Up @@ -172,6 +173,10 @@ public Keyspaces apply(Keyspaces schema)
? CompressionParams.fromMap(valueCompressionOptions)
: CompressionParams.noCompression();

if ((keyCompression.isEnabled() || valueCompression.isEnabled()) && !CassandraRelevantProperties.INDEX_COMPRESSION.getBoolean())
throw ire("Cannot create a compressed index, because index compression is disabled. " +
"Please set " + CassandraRelevantProperties.INDEX_COMPRESSION.getKey() + " property to enable it.");

IndexMetadata index = IndexMetadata.fromIndexTargets(indexTargets, name, kind, options, keyCompression, valueCompression);

String className = index.getIndexClassName();
Expand Down
7 changes: 5 additions & 2 deletions src/java/org/apache/cassandra/schema/SchemaKeyspace.java
Original file line number Diff line number Diff line change
Expand Up @@ -822,8 +822,11 @@ private static void addIndexToSchemaMutation(TableMetadata table, IndexMetadata
.add("kind", index.kind.toString())
.add("options", index.options);

rowBuilder.add("key_compression", index.keyCompression.asMap());
rowBuilder.add("value_compression", index.valueCompression.asMap());
if (CassandraRelevantProperties.INDEX_COMPRESSION.getBoolean())
{
rowBuilder.add("key_compression", index.keyCompression.asMap());
rowBuilder.add("value_compression", index.valueCompression.asMap());
}
}

private static void dropIndexFromSchemaMutation(TableMetadata table, IndexMetadata index, Mutation.SimpleBuilder builder)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@

import java.util.Set;

import org.junit.BeforeClass;
import org.junit.Test;

import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.index.sai.IndexContext;
import org.apache.cassandra.index.sai.SAITester;
Expand All @@ -38,6 +40,11 @@

public class IndexCompressionTest extends SAITester
{
@BeforeClass
public static void setup()
{
CassandraRelevantProperties.INDEX_COMPRESSION.setBoolean(true);
}

@Test
public void testKeyCompression()
Expand Down

0 comments on commit 71a3a1e

Please sign in to comment.