Fix ALTER TABLE overriding compression options with defaults;

patch by Aleksey Yeschenko, reviewed by Jonathan Ellis for
CASSANDRA-4996
This commit is contained in:
Aleksey Yeschenko 2012-12-13 22:07:58 +03:00
parent 3e27a320b4
commit 01fcb8cac2
5 changed files with 20 additions and 27 deletions

View File

@ -5,6 +5,7 @@
* Fall back to old describe_splits if d_s_ex is not available (CASSANDRA-4803)
* Improve error reporting when streaming ranges fail (CASSANDRA-5009)
* cqlsh: fix timestamp formatting on some platforms (CASSANDRA-5046)
* Fix ALTER TABLE overriding compression options with defaults (CASSANDRA-4996)
1.1.7

View File

@ -21,22 +21,22 @@
package org.apache.cassandra.cql;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Sets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.db.compaction.AbstractCompactionStrategy;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.TypeParser;
import org.apache.cassandra.io.compress.CompressionParameters;
import org.apache.cassandra.io.compress.SnappyCompressor;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class CFPropDefs {
private static Logger logger = LoggerFactory.getLogger(CFPropDefs.class);
@ -63,8 +63,6 @@ public class CFPropDefs {
public static final String COMPACTION_OPTIONS_PREFIX = "compaction_strategy_options";
public static final String COMPRESSION_PARAMETERS_PREFIX = "compression_parameters";
private static final String DEFAULT_COMPRESSOR = SnappyCompressor.isAvailable() ? SnappyCompressor.class.getCanonicalName() : null;
static
{
comparators.put("ascii", "AsciiType");
@ -111,11 +109,7 @@ public class CFPropDefs {
public final Map<String, String> properties = new HashMap<String, String>();
public Class<? extends AbstractCompactionStrategy> compactionStrategyClass;
public final Map<String, String> compactionStrategyOptions = new HashMap<String, String>();
public final Map<String, String> compressionParameters = new HashMap<String, String>()
{{
if (CFMetaData.DEFAULT_COMPRESSOR != null)
put(CompressionParameters.SSTABLE_COMPRESSION, CFMetaData.DEFAULT_COMPRESSOR);
}};
public final Map<String, String> compressionParameters = new HashMap<String, String>();
public void validate() throws InvalidRequestException
{

View File

@ -169,6 +169,9 @@ public class CreateColumnFamilyStatement
comparator,
null);
if (CFMetaData.DEFAULT_COMPRESSOR != null && cfProps.compressionParameters.isEmpty())
cfProps.compressionParameters.put(CompressionParameters.SSTABLE_COMPRESSION, CFMetaData.DEFAULT_COMPRESSOR);
newCFMD.comment(cfProps.getProperty(CFPropDefs.KW_COMMENT))
.readRepairChance(getPropertyDouble(CFPropDefs.KW_READREPAIRCHANCE, CFMetaData.DEFAULT_READ_REPAIR_CHANCE))
.dcLocalReadRepairChance(getPropertyDouble(CFPropDefs.KW_DCLOCALREADREPAIRCHANCE, CFMetaData.DEFAULT_DCLOCAL_READ_REPAIR_CHANCE))

View File

@ -18,7 +18,6 @@
*/
package org.apache.cassandra.cql3;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@ -35,8 +34,6 @@ import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.TypeParser;
import org.apache.cassandra.io.compress.CompressionParameters;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CFPropDefs extends PropertyDefinitions
{
@ -95,11 +92,7 @@ public class CFPropDefs extends PropertyDefinitions
private Class<? extends AbstractCompactionStrategy> compactionStrategyClass = null;
public final Map<String, String> compactionStrategyOptions = new HashMap<String, String>();
public final Map<String, String> compressionParameters = new HashMap<String, String>()
{{
if (CFMetaData.DEFAULT_COMPRESSOR != null)
put(CompressionParameters.SSTABLE_COMPRESSION, CFMetaData.DEFAULT_COMPRESSOR);
}};
public final Map<String, String> compressionParameters = new HashMap<String, String>();
public static AbstractType<?> parseType(String type) throws InvalidRequestException
{
@ -169,7 +162,8 @@ public class CFPropDefs extends PropertyDefinitions
cfm.compactionStrategyOptions(new HashMap<String, String>(compactionStrategyOptions));
}
cfm.compressionParameters(CompressionParameters.create(compressionParameters));
if (!compressionParameters.isEmpty())
cfm.compressionParameters(CompressionParameters.create(compressionParameters));
}
@Override

View File

@ -24,11 +24,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.cassandra.auth.Permission;
import org.apache.commons.lang.StringUtils;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;
import org.apache.commons.lang.StringUtils;
import org.apache.cassandra.auth.Permission;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.cql3.*;
import org.apache.cassandra.config.CFMetaData;
@ -44,7 +44,6 @@ import org.apache.cassandra.service.MigrationManager;
import org.apache.cassandra.thrift.CqlResult;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.io.compress.CompressionParameters;
import org.apache.cassandra.utils.Pair;
/** A <code>CREATE COLUMNFAMILY</code> parsed from a CQL query statement. */
public class CreateColumnFamilyStatement extends SchemaAlteringStatement
@ -64,6 +63,8 @@ public class CreateColumnFamilyStatement extends SchemaAlteringStatement
{
super(name);
this.properties = properties;
if (CFMetaData.DEFAULT_COMPRESSOR != null && this.properties.compressionParameters.isEmpty())
this.properties.compressionParameters.put(CompressionParameters.SSTABLE_COMPRESSION, CFMetaData.DEFAULT_COMPRESSOR);
}
public void checkAccess(ClientState state) throws InvalidRequestException