mirror of https://github.com/apache/cassandra
Cassandra Triggers!
patch by Vijay; reviewed by Jonathan Ellis for CASSANDRA-1311
This commit is contained in:
parent
997ab95936
commit
72a6cff6e8
|
|
@ -448,6 +448,7 @@ struct CfDef {
|
|||
40: optional i32 default_time_to_live,
|
||||
41: optional i32 index_interval,
|
||||
42: optional string speculative_retry="NONE",
|
||||
43: optional set<string> trigger_class,
|
||||
|
||||
/* All of the following are now ignored and unsupplied. */
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -82,6 +82,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
private static final org.apache.thrift.protocol.TField DEFAULT_TIME_TO_LIVE_FIELD_DESC = new org.apache.thrift.protocol.TField("default_time_to_live", org.apache.thrift.protocol.TType.I32, (short)40);
|
||||
private static final org.apache.thrift.protocol.TField INDEX_INTERVAL_FIELD_DESC = new org.apache.thrift.protocol.TField("index_interval", org.apache.thrift.protocol.TType.I32, (short)41);
|
||||
private static final org.apache.thrift.protocol.TField SPECULATIVE_RETRY_FIELD_DESC = new org.apache.thrift.protocol.TField("speculative_retry", org.apache.thrift.protocol.TType.STRING, (short)42);
|
||||
private static final org.apache.thrift.protocol.TField TRIGGER_CLASS_FIELD_DESC = new org.apache.thrift.protocol.TField("trigger_class", org.apache.thrift.protocol.TType.SET, (short)43);
|
||||
private static final org.apache.thrift.protocol.TField ROW_CACHE_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("row_cache_size", org.apache.thrift.protocol.TType.DOUBLE, (short)9);
|
||||
private static final org.apache.thrift.protocol.TField KEY_CACHE_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("key_cache_size", org.apache.thrift.protocol.TType.DOUBLE, (short)11);
|
||||
private static final org.apache.thrift.protocol.TField ROW_CACHE_SAVE_PERIOD_IN_SECONDS_FIELD_DESC = new org.apache.thrift.protocol.TField("row_cache_save_period_in_seconds", org.apache.thrift.protocol.TType.I32, (short)19);
|
||||
|
|
@ -126,6 +127,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
public int default_time_to_live; // optional
|
||||
public int index_interval; // optional
|
||||
public String speculative_retry; // optional
|
||||
public Set<String> trigger_class; // optional
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
|
|
@ -196,6 +198,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
DEFAULT_TIME_TO_LIVE((short)40, "default_time_to_live"),
|
||||
INDEX_INTERVAL((short)41, "index_interval"),
|
||||
SPECULATIVE_RETRY((short)42, "speculative_retry"),
|
||||
TRIGGER_CLASS((short)43, "trigger_class"),
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
|
|
@ -304,6 +307,8 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
return INDEX_INTERVAL;
|
||||
case 42: // SPECULATIVE_RETRY
|
||||
return SPECULATIVE_RETRY;
|
||||
case 43: // TRIGGER_CLASS
|
||||
return TRIGGER_CLASS;
|
||||
case 9: // ROW_CACHE_SIZE
|
||||
return ROW_CACHE_SIZE;
|
||||
case 11: // KEY_CACHE_SIZE
|
||||
|
|
@ -386,7 +391,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
private static final int __MERGE_SHARDS_CHANCE_ISSET_ID = 19;
|
||||
private static final int __ROW_CACHE_KEYS_TO_SAVE_ISSET_ID = 20;
|
||||
private int __isset_bitfield = 0;
|
||||
private _Fields optionals[] = {_Fields.COLUMN_TYPE,_Fields.COMPARATOR_TYPE,_Fields.SUBCOMPARATOR_TYPE,_Fields.COMMENT,_Fields.READ_REPAIR_CHANCE,_Fields.COLUMN_METADATA,_Fields.GC_GRACE_SECONDS,_Fields.DEFAULT_VALIDATION_CLASS,_Fields.ID,_Fields.MIN_COMPACTION_THRESHOLD,_Fields.MAX_COMPACTION_THRESHOLD,_Fields.REPLICATE_ON_WRITE,_Fields.KEY_VALIDATION_CLASS,_Fields.KEY_ALIAS,_Fields.COMPACTION_STRATEGY,_Fields.COMPACTION_STRATEGY_OPTIONS,_Fields.COMPRESSION_OPTIONS,_Fields.BLOOM_FILTER_FP_CHANCE,_Fields.CACHING,_Fields.DCLOCAL_READ_REPAIR_CHANCE,_Fields.POPULATE_IO_CACHE_ON_FLUSH,_Fields.MEMTABLE_FLUSH_PERIOD_IN_MS,_Fields.DEFAULT_TIME_TO_LIVE,_Fields.INDEX_INTERVAL,_Fields.SPECULATIVE_RETRY,_Fields.ROW_CACHE_SIZE,_Fields.KEY_CACHE_SIZE,_Fields.ROW_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.KEY_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.MEMTABLE_FLUSH_AFTER_MINS,_Fields.MEMTABLE_THROUGHPUT_IN_MB,_Fields.MEMTABLE_OPERATIONS_IN_MILLIONS,_Fields.MERGE_SHARDS_CHANCE,_Fields.ROW_CACHE_PROVIDER,_Fields.ROW_CACHE_KEYS_TO_SAVE};
|
||||
private _Fields optionals[] = {_Fields.COLUMN_TYPE,_Fields.COMPARATOR_TYPE,_Fields.SUBCOMPARATOR_TYPE,_Fields.COMMENT,_Fields.READ_REPAIR_CHANCE,_Fields.COLUMN_METADATA,_Fields.GC_GRACE_SECONDS,_Fields.DEFAULT_VALIDATION_CLASS,_Fields.ID,_Fields.MIN_COMPACTION_THRESHOLD,_Fields.MAX_COMPACTION_THRESHOLD,_Fields.REPLICATE_ON_WRITE,_Fields.KEY_VALIDATION_CLASS,_Fields.KEY_ALIAS,_Fields.COMPACTION_STRATEGY,_Fields.COMPACTION_STRATEGY_OPTIONS,_Fields.COMPRESSION_OPTIONS,_Fields.BLOOM_FILTER_FP_CHANCE,_Fields.CACHING,_Fields.DCLOCAL_READ_REPAIR_CHANCE,_Fields.POPULATE_IO_CACHE_ON_FLUSH,_Fields.MEMTABLE_FLUSH_PERIOD_IN_MS,_Fields.DEFAULT_TIME_TO_LIVE,_Fields.INDEX_INTERVAL,_Fields.SPECULATIVE_RETRY,_Fields.TRIGGER_CLASS,_Fields.ROW_CACHE_SIZE,_Fields.KEY_CACHE_SIZE,_Fields.ROW_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.KEY_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.MEMTABLE_FLUSH_AFTER_MINS,_Fields.MEMTABLE_THROUGHPUT_IN_MB,_Fields.MEMTABLE_OPERATIONS_IN_MILLIONS,_Fields.MERGE_SHARDS_CHANCE,_Fields.ROW_CACHE_PROVIDER,_Fields.ROW_CACHE_KEYS_TO_SAVE};
|
||||
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
|
||||
static {
|
||||
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
|
||||
|
|
@ -449,6 +454,9 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
|
||||
tmpMap.put(_Fields.SPECULATIVE_RETRY, new org.apache.thrift.meta_data.FieldMetaData("speculative_retry", org.apache.thrift.TFieldRequirementType.OPTIONAL,
|
||||
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
|
||||
tmpMap.put(_Fields.TRIGGER_CLASS, new org.apache.thrift.meta_data.FieldMetaData("trigger_class", org.apache.thrift.TFieldRequirementType.OPTIONAL,
|
||||
new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET,
|
||||
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
|
||||
tmpMap.put(_Fields.ROW_CACHE_SIZE, new org.apache.thrift.meta_data.FieldMetaData("row_cache_size", org.apache.thrift.TFieldRequirementType.OPTIONAL,
|
||||
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
|
||||
tmpMap.put(_Fields.KEY_CACHE_SIZE, new org.apache.thrift.meta_data.FieldMetaData("key_cache_size", org.apache.thrift.TFieldRequirementType.OPTIONAL,
|
||||
|
|
@ -586,6 +594,13 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
if (other.isSetSpeculative_retry()) {
|
||||
this.speculative_retry = other.speculative_retry;
|
||||
}
|
||||
if (other.isSetTrigger_class()) {
|
||||
Set<String> __this__trigger_class = new HashSet<String>();
|
||||
for (String other_element : other.trigger_class) {
|
||||
__this__trigger_class.add(other_element);
|
||||
}
|
||||
this.trigger_class = __this__trigger_class;
|
||||
}
|
||||
this.row_cache_size = other.row_cache_size;
|
||||
this.key_cache_size = other.key_cache_size;
|
||||
this.row_cache_save_period_in_seconds = other.row_cache_save_period_in_seconds;
|
||||
|
|
@ -649,6 +664,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
this.index_interval = 0;
|
||||
this.speculative_retry = "NONE";
|
||||
|
||||
this.trigger_class = null;
|
||||
setRow_cache_sizeIsSet(false);
|
||||
this.row_cache_size = 0.0;
|
||||
setKey_cache_sizeIsSet(false);
|
||||
|
|
@ -1353,6 +1369,45 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
}
|
||||
}
|
||||
|
||||
public int getTrigger_classSize() {
|
||||
return (this.trigger_class == null) ? 0 : this.trigger_class.size();
|
||||
}
|
||||
|
||||
public java.util.Iterator<String> getTrigger_classIterator() {
|
||||
return (this.trigger_class == null) ? null : this.trigger_class.iterator();
|
||||
}
|
||||
|
||||
public void addToTrigger_class(String elem) {
|
||||
if (this.trigger_class == null) {
|
||||
this.trigger_class = new HashSet<String>();
|
||||
}
|
||||
this.trigger_class.add(elem);
|
||||
}
|
||||
|
||||
public Set<String> getTrigger_class() {
|
||||
return this.trigger_class;
|
||||
}
|
||||
|
||||
public CfDef setTrigger_class(Set<String> trigger_class) {
|
||||
this.trigger_class = trigger_class;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void unsetTrigger_class() {
|
||||
this.trigger_class = null;
|
||||
}
|
||||
|
||||
/** Returns true if field trigger_class is set (has been assigned a value) and false otherwise */
|
||||
public boolean isSetTrigger_class() {
|
||||
return this.trigger_class != null;
|
||||
}
|
||||
|
||||
public void setTrigger_classIsSet(boolean value) {
|
||||
if (!value) {
|
||||
this.trigger_class = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
|
|
@ -1862,6 +1917,14 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
}
|
||||
break;
|
||||
|
||||
case TRIGGER_CLASS:
|
||||
if (value == null) {
|
||||
unsetTrigger_class();
|
||||
} else {
|
||||
setTrigger_class((Set<String>)value);
|
||||
}
|
||||
break;
|
||||
|
||||
case ROW_CACHE_SIZE:
|
||||
if (value == null) {
|
||||
unsetRow_cache_size();
|
||||
|
|
@ -2028,6 +2091,9 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
case SPECULATIVE_RETRY:
|
||||
return getSpeculative_retry();
|
||||
|
||||
case TRIGGER_CLASS:
|
||||
return getTrigger_class();
|
||||
|
||||
case ROW_CACHE_SIZE:
|
||||
return Double.valueOf(getRow_cache_size());
|
||||
|
||||
|
|
@ -2123,6 +2189,8 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
return isSetIndex_interval();
|
||||
case SPECULATIVE_RETRY:
|
||||
return isSetSpeculative_retry();
|
||||
case TRIGGER_CLASS:
|
||||
return isSetTrigger_class();
|
||||
case ROW_CACHE_SIZE:
|
||||
return isSetRow_cache_size();
|
||||
case KEY_CACHE_SIZE:
|
||||
|
|
@ -2403,6 +2471,15 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
return false;
|
||||
}
|
||||
|
||||
boolean this_present_trigger_class = true && this.isSetTrigger_class();
|
||||
boolean that_present_trigger_class = true && that.isSetTrigger_class();
|
||||
if (this_present_trigger_class || that_present_trigger_class) {
|
||||
if (!(this_present_trigger_class && that_present_trigger_class))
|
||||
return false;
|
||||
if (!this.trigger_class.equals(that.trigger_class))
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean this_present_row_cache_size = true && this.isSetRow_cache_size();
|
||||
boolean that_present_row_cache_size = true && that.isSetRow_cache_size();
|
||||
if (this_present_row_cache_size || that_present_row_cache_size) {
|
||||
|
|
@ -2635,6 +2712,11 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
if (present_speculative_retry)
|
||||
builder.append(speculative_retry);
|
||||
|
||||
boolean present_trigger_class = true && (isSetTrigger_class());
|
||||
builder.append(present_trigger_class);
|
||||
if (present_trigger_class)
|
||||
builder.append(trigger_class);
|
||||
|
||||
boolean present_row_cache_size = true && (isSetRow_cache_size());
|
||||
builder.append(present_row_cache_size);
|
||||
if (present_row_cache_size)
|
||||
|
|
@ -2966,6 +3048,16 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
return lastComparison;
|
||||
}
|
||||
}
|
||||
lastComparison = Boolean.valueOf(isSetTrigger_class()).compareTo(typedOther.isSetTrigger_class());
|
||||
if (lastComparison != 0) {
|
||||
return lastComparison;
|
||||
}
|
||||
if (isSetTrigger_class()) {
|
||||
lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.trigger_class, typedOther.trigger_class);
|
||||
if (lastComparison != 0) {
|
||||
return lastComparison;
|
||||
}
|
||||
}
|
||||
lastComparison = Boolean.valueOf(isSetRow_cache_size()).compareTo(typedOther.isSetRow_cache_size());
|
||||
if (lastComparison != 0) {
|
||||
return lastComparison;
|
||||
|
|
@ -3303,6 +3395,16 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
}
|
||||
first = false;
|
||||
}
|
||||
if (isSetTrigger_class()) {
|
||||
if (!first) sb.append(", ");
|
||||
sb.append("trigger_class:");
|
||||
if (this.trigger_class == null) {
|
||||
sb.append("null");
|
||||
} else {
|
||||
sb.append(this.trigger_class);
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
if (isSetRow_cache_size()) {
|
||||
if (!first) sb.append(", ");
|
||||
sb.append("row_cache_size:");
|
||||
|
|
@ -3481,7 +3583,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
struct.column_metadata = new ArrayList<ColumnDef>(_list92.size);
|
||||
for (int _i93 = 0; _i93 < _list92.size; ++_i93)
|
||||
{
|
||||
ColumnDef _elem94; // required
|
||||
ColumnDef _elem94; // optional
|
||||
_elem94 = new ColumnDef();
|
||||
_elem94.read(iprot);
|
||||
struct.column_metadata.add(_elem94);
|
||||
|
|
@ -3669,6 +3771,24 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
|
||||
}
|
||||
break;
|
||||
case 43: // TRIGGER_CLASS
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.SET) {
|
||||
{
|
||||
org.apache.thrift.protocol.TSet _set103 = iprot.readSetBegin();
|
||||
struct.trigger_class = new HashSet<String>(2*_set103.size);
|
||||
for (int _i104 = 0; _i104 < _set103.size; ++_i104)
|
||||
{
|
||||
String _elem105; // optional
|
||||
_elem105 = iprot.readString();
|
||||
struct.trigger_class.add(_elem105);
|
||||
}
|
||||
iprot.readSetEnd();
|
||||
}
|
||||
struct.setTrigger_classIsSet(true);
|
||||
} else {
|
||||
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
|
||||
}
|
||||
break;
|
||||
case 9: // ROW_CACHE_SIZE
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.DOUBLE) {
|
||||
struct.row_cache_size = iprot.readDouble();
|
||||
|
|
@ -3822,9 +3942,9 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
oprot.writeFieldBegin(COLUMN_METADATA_FIELD_DESC);
|
||||
{
|
||||
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.column_metadata.size()));
|
||||
for (ColumnDef _iter103 : struct.column_metadata)
|
||||
for (ColumnDef _iter106 : struct.column_metadata)
|
||||
{
|
||||
_iter103.write(oprot);
|
||||
_iter106.write(oprot);
|
||||
}
|
||||
oprot.writeListEnd();
|
||||
}
|
||||
|
|
@ -3926,10 +4046,10 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
oprot.writeFieldBegin(COMPACTION_STRATEGY_OPTIONS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.compaction_strategy_options.size()));
|
||||
for (Map.Entry<String, String> _iter104 : struct.compaction_strategy_options.entrySet())
|
||||
for (Map.Entry<String, String> _iter107 : struct.compaction_strategy_options.entrySet())
|
||||
{
|
||||
oprot.writeString(_iter104.getKey());
|
||||
oprot.writeString(_iter104.getValue());
|
||||
oprot.writeString(_iter107.getKey());
|
||||
oprot.writeString(_iter107.getValue());
|
||||
}
|
||||
oprot.writeMapEnd();
|
||||
}
|
||||
|
|
@ -3946,10 +4066,10 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
oprot.writeFieldBegin(COMPRESSION_OPTIONS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.compression_options.size()));
|
||||
for (Map.Entry<String, String> _iter105 : struct.compression_options.entrySet())
|
||||
for (Map.Entry<String, String> _iter108 : struct.compression_options.entrySet())
|
||||
{
|
||||
oprot.writeString(_iter105.getKey());
|
||||
oprot.writeString(_iter105.getValue());
|
||||
oprot.writeString(_iter108.getKey());
|
||||
oprot.writeString(_iter108.getValue());
|
||||
}
|
||||
oprot.writeMapEnd();
|
||||
}
|
||||
|
|
@ -4000,6 +4120,20 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
oprot.writeFieldEnd();
|
||||
}
|
||||
}
|
||||
if (struct.trigger_class != null) {
|
||||
if (struct.isSetTrigger_class()) {
|
||||
oprot.writeFieldBegin(TRIGGER_CLASS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, struct.trigger_class.size()));
|
||||
for (String _iter109 : struct.trigger_class)
|
||||
{
|
||||
oprot.writeString(_iter109);
|
||||
}
|
||||
oprot.writeSetEnd();
|
||||
}
|
||||
oprot.writeFieldEnd();
|
||||
}
|
||||
}
|
||||
oprot.writeFieldStop();
|
||||
oprot.writeStructEnd();
|
||||
}
|
||||
|
|
@ -4095,37 +4229,40 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
if (struct.isSetSpeculative_retry()) {
|
||||
optionals.set(24);
|
||||
}
|
||||
if (struct.isSetRow_cache_size()) {
|
||||
if (struct.isSetTrigger_class()) {
|
||||
optionals.set(25);
|
||||
}
|
||||
if (struct.isSetKey_cache_size()) {
|
||||
if (struct.isSetRow_cache_size()) {
|
||||
optionals.set(26);
|
||||
}
|
||||
if (struct.isSetRow_cache_save_period_in_seconds()) {
|
||||
if (struct.isSetKey_cache_size()) {
|
||||
optionals.set(27);
|
||||
}
|
||||
if (struct.isSetKey_cache_save_period_in_seconds()) {
|
||||
if (struct.isSetRow_cache_save_period_in_seconds()) {
|
||||
optionals.set(28);
|
||||
}
|
||||
if (struct.isSetMemtable_flush_after_mins()) {
|
||||
if (struct.isSetKey_cache_save_period_in_seconds()) {
|
||||
optionals.set(29);
|
||||
}
|
||||
if (struct.isSetMemtable_throughput_in_mb()) {
|
||||
if (struct.isSetMemtable_flush_after_mins()) {
|
||||
optionals.set(30);
|
||||
}
|
||||
if (struct.isSetMemtable_operations_in_millions()) {
|
||||
if (struct.isSetMemtable_throughput_in_mb()) {
|
||||
optionals.set(31);
|
||||
}
|
||||
if (struct.isSetMerge_shards_chance()) {
|
||||
if (struct.isSetMemtable_operations_in_millions()) {
|
||||
optionals.set(32);
|
||||
}
|
||||
if (struct.isSetRow_cache_provider()) {
|
||||
if (struct.isSetMerge_shards_chance()) {
|
||||
optionals.set(33);
|
||||
}
|
||||
if (struct.isSetRow_cache_keys_to_save()) {
|
||||
if (struct.isSetRow_cache_provider()) {
|
||||
optionals.set(34);
|
||||
}
|
||||
oprot.writeBitSet(optionals, 35);
|
||||
if (struct.isSetRow_cache_keys_to_save()) {
|
||||
optionals.set(35);
|
||||
}
|
||||
oprot.writeBitSet(optionals, 36);
|
||||
if (struct.isSetColumn_type()) {
|
||||
oprot.writeString(struct.column_type);
|
||||
}
|
||||
|
|
@ -4144,9 +4281,9 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
if (struct.isSetColumn_metadata()) {
|
||||
{
|
||||
oprot.writeI32(struct.column_metadata.size());
|
||||
for (ColumnDef _iter106 : struct.column_metadata)
|
||||
for (ColumnDef _iter110 : struct.column_metadata)
|
||||
{
|
||||
_iter106.write(oprot);
|
||||
_iter110.write(oprot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4180,20 +4317,20 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
if (struct.isSetCompaction_strategy_options()) {
|
||||
{
|
||||
oprot.writeI32(struct.compaction_strategy_options.size());
|
||||
for (Map.Entry<String, String> _iter107 : struct.compaction_strategy_options.entrySet())
|
||||
for (Map.Entry<String, String> _iter111 : struct.compaction_strategy_options.entrySet())
|
||||
{
|
||||
oprot.writeString(_iter107.getKey());
|
||||
oprot.writeString(_iter107.getValue());
|
||||
oprot.writeString(_iter111.getKey());
|
||||
oprot.writeString(_iter111.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (struct.isSetCompression_options()) {
|
||||
{
|
||||
oprot.writeI32(struct.compression_options.size());
|
||||
for (Map.Entry<String, String> _iter108 : struct.compression_options.entrySet())
|
||||
for (Map.Entry<String, String> _iter112 : struct.compression_options.entrySet())
|
||||
{
|
||||
oprot.writeString(_iter108.getKey());
|
||||
oprot.writeString(_iter108.getValue());
|
||||
oprot.writeString(_iter112.getKey());
|
||||
oprot.writeString(_iter112.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4221,6 +4358,15 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
if (struct.isSetSpeculative_retry()) {
|
||||
oprot.writeString(struct.speculative_retry);
|
||||
}
|
||||
if (struct.isSetTrigger_class()) {
|
||||
{
|
||||
oprot.writeI32(struct.trigger_class.size());
|
||||
for (String _iter113 : struct.trigger_class)
|
||||
{
|
||||
oprot.writeString(_iter113);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (struct.isSetRow_cache_size()) {
|
||||
oprot.writeDouble(struct.row_cache_size);
|
||||
}
|
||||
|
|
@ -4260,7 +4406,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
struct.setKeyspaceIsSet(true);
|
||||
struct.name = iprot.readString();
|
||||
struct.setNameIsSet(true);
|
||||
BitSet incoming = iprot.readBitSet(35);
|
||||
BitSet incoming = iprot.readBitSet(36);
|
||||
if (incoming.get(0)) {
|
||||
struct.column_type = iprot.readString();
|
||||
struct.setColumn_typeIsSet(true);
|
||||
|
|
@ -4283,14 +4429,14 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
}
|
||||
if (incoming.get(5)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list109 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.column_metadata = new ArrayList<ColumnDef>(_list109.size);
|
||||
for (int _i110 = 0; _i110 < _list109.size; ++_i110)
|
||||
org.apache.thrift.protocol.TList _list114 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.column_metadata = new ArrayList<ColumnDef>(_list114.size);
|
||||
for (int _i115 = 0; _i115 < _list114.size; ++_i115)
|
||||
{
|
||||
ColumnDef _elem111; // required
|
||||
_elem111 = new ColumnDef();
|
||||
_elem111.read(iprot);
|
||||
struct.column_metadata.add(_elem111);
|
||||
ColumnDef _elem116; // optional
|
||||
_elem116 = new ColumnDef();
|
||||
_elem116.read(iprot);
|
||||
struct.column_metadata.add(_elem116);
|
||||
}
|
||||
}
|
||||
struct.setColumn_metadataIsSet(true);
|
||||
|
|
@ -4333,30 +4479,30 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
}
|
||||
if (incoming.get(15)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map112 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.compaction_strategy_options = new HashMap<String,String>(2*_map112.size);
|
||||
for (int _i113 = 0; _i113 < _map112.size; ++_i113)
|
||||
org.apache.thrift.protocol.TMap _map117 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.compaction_strategy_options = new HashMap<String,String>(2*_map117.size);
|
||||
for (int _i118 = 0; _i118 < _map117.size; ++_i118)
|
||||
{
|
||||
String _key114; // required
|
||||
String _val115; // required
|
||||
_key114 = iprot.readString();
|
||||
_val115 = iprot.readString();
|
||||
struct.compaction_strategy_options.put(_key114, _val115);
|
||||
String _key119; // required
|
||||
String _val120; // required
|
||||
_key119 = iprot.readString();
|
||||
_val120 = iprot.readString();
|
||||
struct.compaction_strategy_options.put(_key119, _val120);
|
||||
}
|
||||
}
|
||||
struct.setCompaction_strategy_optionsIsSet(true);
|
||||
}
|
||||
if (incoming.get(16)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map116 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.compression_options = new HashMap<String,String>(2*_map116.size);
|
||||
for (int _i117 = 0; _i117 < _map116.size; ++_i117)
|
||||
org.apache.thrift.protocol.TMap _map121 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.compression_options = new HashMap<String,String>(2*_map121.size);
|
||||
for (int _i122 = 0; _i122 < _map121.size; ++_i122)
|
||||
{
|
||||
String _key118; // required
|
||||
String _val119; // required
|
||||
_key118 = iprot.readString();
|
||||
_val119 = iprot.readString();
|
||||
struct.compression_options.put(_key118, _val119);
|
||||
String _key123; // required
|
||||
String _val124; // required
|
||||
_key123 = iprot.readString();
|
||||
_val124 = iprot.readString();
|
||||
struct.compression_options.put(_key123, _val124);
|
||||
}
|
||||
}
|
||||
struct.setCompression_optionsIsSet(true);
|
||||
|
|
@ -4394,42 +4540,55 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
|
|||
struct.setSpeculative_retryIsSet(true);
|
||||
}
|
||||
if (incoming.get(25)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TSet _set125 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.trigger_class = new HashSet<String>(2*_set125.size);
|
||||
for (int _i126 = 0; _i126 < _set125.size; ++_i126)
|
||||
{
|
||||
String _elem127; // optional
|
||||
_elem127 = iprot.readString();
|
||||
struct.trigger_class.add(_elem127);
|
||||
}
|
||||
}
|
||||
struct.setTrigger_classIsSet(true);
|
||||
}
|
||||
if (incoming.get(26)) {
|
||||
struct.row_cache_size = iprot.readDouble();
|
||||
struct.setRow_cache_sizeIsSet(true);
|
||||
}
|
||||
if (incoming.get(26)) {
|
||||
if (incoming.get(27)) {
|
||||
struct.key_cache_size = iprot.readDouble();
|
||||
struct.setKey_cache_sizeIsSet(true);
|
||||
}
|
||||
if (incoming.get(27)) {
|
||||
if (incoming.get(28)) {
|
||||
struct.row_cache_save_period_in_seconds = iprot.readI32();
|
||||
struct.setRow_cache_save_period_in_secondsIsSet(true);
|
||||
}
|
||||
if (incoming.get(28)) {
|
||||
if (incoming.get(29)) {
|
||||
struct.key_cache_save_period_in_seconds = iprot.readI32();
|
||||
struct.setKey_cache_save_period_in_secondsIsSet(true);
|
||||
}
|
||||
if (incoming.get(29)) {
|
||||
if (incoming.get(30)) {
|
||||
struct.memtable_flush_after_mins = iprot.readI32();
|
||||
struct.setMemtable_flush_after_minsIsSet(true);
|
||||
}
|
||||
if (incoming.get(30)) {
|
||||
if (incoming.get(31)) {
|
||||
struct.memtable_throughput_in_mb = iprot.readI32();
|
||||
struct.setMemtable_throughput_in_mbIsSet(true);
|
||||
}
|
||||
if (incoming.get(31)) {
|
||||
if (incoming.get(32)) {
|
||||
struct.memtable_operations_in_millions = iprot.readDouble();
|
||||
struct.setMemtable_operations_in_millionsIsSet(true);
|
||||
}
|
||||
if (incoming.get(32)) {
|
||||
if (incoming.get(33)) {
|
||||
struct.merge_shards_chance = iprot.readDouble();
|
||||
struct.setMerge_shards_chanceIsSet(true);
|
||||
}
|
||||
if (incoming.get(33)) {
|
||||
if (incoming.get(34)) {
|
||||
struct.row_cache_provider = iprot.readString();
|
||||
struct.setRow_cache_providerIsSet(true);
|
||||
}
|
||||
if (incoming.get(34)) {
|
||||
if (incoming.get(35)) {
|
||||
struct.row_cache_keys_to_save = iprot.readI32();
|
||||
struct.setRow_cache_keys_to_saveIsSet(true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -479,7 +479,7 @@ public class CounterSuperColumn implements org.apache.thrift.TBase<CounterSuperC
|
|||
struct.columns = new ArrayList<CounterColumn>(_list8.size);
|
||||
for (int _i9 = 0; _i9 < _list8.size; ++_i9)
|
||||
{
|
||||
CounterColumn _elem10; // required
|
||||
CounterColumn _elem10; // optional
|
||||
_elem10 = new CounterColumn();
|
||||
_elem10.read(iprot);
|
||||
struct.columns.add(_elem10);
|
||||
|
|
@ -560,7 +560,7 @@ public class CounterSuperColumn implements org.apache.thrift.TBase<CounterSuperC
|
|||
struct.columns = new ArrayList<CounterColumn>(_list13.size);
|
||||
for (int _i14 = 0; _i14 < _list13.size; ++_i14)
|
||||
{
|
||||
CounterColumn _elem15; // required
|
||||
CounterColumn _elem15; // optional
|
||||
_elem15 = new CounterColumn();
|
||||
_elem15.read(iprot);
|
||||
struct.columns.add(_elem15);
|
||||
|
|
|
|||
|
|
@ -658,15 +658,15 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
|
|||
case 1: // NAME_TYPES
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map146 = iprot.readMapBegin();
|
||||
struct.name_types = new HashMap<ByteBuffer,String>(2*_map146.size);
|
||||
for (int _i147 = 0; _i147 < _map146.size; ++_i147)
|
||||
org.apache.thrift.protocol.TMap _map154 = iprot.readMapBegin();
|
||||
struct.name_types = new HashMap<ByteBuffer,String>(2*_map154.size);
|
||||
for (int _i155 = 0; _i155 < _map154.size; ++_i155)
|
||||
{
|
||||
ByteBuffer _key148; // required
|
||||
String _val149; // required
|
||||
_key148 = iprot.readBinary();
|
||||
_val149 = iprot.readString();
|
||||
struct.name_types.put(_key148, _val149);
|
||||
ByteBuffer _key156; // required
|
||||
String _val157; // required
|
||||
_key156 = iprot.readBinary();
|
||||
_val157 = iprot.readString();
|
||||
struct.name_types.put(_key156, _val157);
|
||||
}
|
||||
iprot.readMapEnd();
|
||||
}
|
||||
|
|
@ -678,15 +678,15 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
|
|||
case 2: // VALUE_TYPES
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map150 = iprot.readMapBegin();
|
||||
struct.value_types = new HashMap<ByteBuffer,String>(2*_map150.size);
|
||||
for (int _i151 = 0; _i151 < _map150.size; ++_i151)
|
||||
org.apache.thrift.protocol.TMap _map158 = iprot.readMapBegin();
|
||||
struct.value_types = new HashMap<ByteBuffer,String>(2*_map158.size);
|
||||
for (int _i159 = 0; _i159 < _map158.size; ++_i159)
|
||||
{
|
||||
ByteBuffer _key152; // required
|
||||
String _val153; // required
|
||||
_key152 = iprot.readBinary();
|
||||
_val153 = iprot.readString();
|
||||
struct.value_types.put(_key152, _val153);
|
||||
ByteBuffer _key160; // required
|
||||
String _val161; // required
|
||||
_key160 = iprot.readBinary();
|
||||
_val161 = iprot.readString();
|
||||
struct.value_types.put(_key160, _val161);
|
||||
}
|
||||
iprot.readMapEnd();
|
||||
}
|
||||
|
|
@ -730,10 +730,10 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
|
|||
oprot.writeFieldBegin(NAME_TYPES_FIELD_DESC);
|
||||
{
|
||||
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.name_types.size()));
|
||||
for (Map.Entry<ByteBuffer, String> _iter154 : struct.name_types.entrySet())
|
||||
for (Map.Entry<ByteBuffer, String> _iter162 : struct.name_types.entrySet())
|
||||
{
|
||||
oprot.writeBinary(_iter154.getKey());
|
||||
oprot.writeString(_iter154.getValue());
|
||||
oprot.writeBinary(_iter162.getKey());
|
||||
oprot.writeString(_iter162.getValue());
|
||||
}
|
||||
oprot.writeMapEnd();
|
||||
}
|
||||
|
|
@ -743,10 +743,10 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
|
|||
oprot.writeFieldBegin(VALUE_TYPES_FIELD_DESC);
|
||||
{
|
||||
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.value_types.size()));
|
||||
for (Map.Entry<ByteBuffer, String> _iter155 : struct.value_types.entrySet())
|
||||
for (Map.Entry<ByteBuffer, String> _iter163 : struct.value_types.entrySet())
|
||||
{
|
||||
oprot.writeBinary(_iter155.getKey());
|
||||
oprot.writeString(_iter155.getValue());
|
||||
oprot.writeBinary(_iter163.getKey());
|
||||
oprot.writeString(_iter163.getValue());
|
||||
}
|
||||
oprot.writeMapEnd();
|
||||
}
|
||||
|
|
@ -781,18 +781,18 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
|
|||
TTupleProtocol oprot = (TTupleProtocol) prot;
|
||||
{
|
||||
oprot.writeI32(struct.name_types.size());
|
||||
for (Map.Entry<ByteBuffer, String> _iter156 : struct.name_types.entrySet())
|
||||
for (Map.Entry<ByteBuffer, String> _iter164 : struct.name_types.entrySet())
|
||||
{
|
||||
oprot.writeBinary(_iter156.getKey());
|
||||
oprot.writeString(_iter156.getValue());
|
||||
oprot.writeBinary(_iter164.getKey());
|
||||
oprot.writeString(_iter164.getValue());
|
||||
}
|
||||
}
|
||||
{
|
||||
oprot.writeI32(struct.value_types.size());
|
||||
for (Map.Entry<ByteBuffer, String> _iter157 : struct.value_types.entrySet())
|
||||
for (Map.Entry<ByteBuffer, String> _iter165 : struct.value_types.entrySet())
|
||||
{
|
||||
oprot.writeBinary(_iter157.getKey());
|
||||
oprot.writeString(_iter157.getValue());
|
||||
oprot.writeBinary(_iter165.getKey());
|
||||
oprot.writeString(_iter165.getValue());
|
||||
}
|
||||
}
|
||||
oprot.writeString(struct.default_name_type);
|
||||
|
|
@ -803,28 +803,28 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
|
|||
public void read(org.apache.thrift.protocol.TProtocol prot, CqlMetadata struct) throws org.apache.thrift.TException {
|
||||
TTupleProtocol iprot = (TTupleProtocol) prot;
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map158 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.name_types = new HashMap<ByteBuffer,String>(2*_map158.size);
|
||||
for (int _i159 = 0; _i159 < _map158.size; ++_i159)
|
||||
org.apache.thrift.protocol.TMap _map166 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.name_types = new HashMap<ByteBuffer,String>(2*_map166.size);
|
||||
for (int _i167 = 0; _i167 < _map166.size; ++_i167)
|
||||
{
|
||||
ByteBuffer _key160; // required
|
||||
String _val161; // required
|
||||
_key160 = iprot.readBinary();
|
||||
_val161 = iprot.readString();
|
||||
struct.name_types.put(_key160, _val161);
|
||||
ByteBuffer _key168; // required
|
||||
String _val169; // required
|
||||
_key168 = iprot.readBinary();
|
||||
_val169 = iprot.readString();
|
||||
struct.name_types.put(_key168, _val169);
|
||||
}
|
||||
}
|
||||
struct.setName_typesIsSet(true);
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map162 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.value_types = new HashMap<ByteBuffer,String>(2*_map162.size);
|
||||
for (int _i163 = 0; _i163 < _map162.size; ++_i163)
|
||||
org.apache.thrift.protocol.TMap _map170 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.value_types = new HashMap<ByteBuffer,String>(2*_map170.size);
|
||||
for (int _i171 = 0; _i171 < _map170.size; ++_i171)
|
||||
{
|
||||
ByteBuffer _key164; // required
|
||||
String _val165; // required
|
||||
_key164 = iprot.readBinary();
|
||||
_val165 = iprot.readString();
|
||||
struct.value_types.put(_key164, _val165);
|
||||
ByteBuffer _key172; // required
|
||||
String _val173; // required
|
||||
_key172 = iprot.readBinary();
|
||||
_val173 = iprot.readString();
|
||||
struct.value_types.put(_key172, _val173);
|
||||
}
|
||||
}
|
||||
struct.setValue_typesIsSet(true);
|
||||
|
|
|
|||
|
|
@ -649,13 +649,13 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
|
|||
case 3: // VARIABLE_TYPES
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list174 = iprot.readListBegin();
|
||||
struct.variable_types = new ArrayList<String>(_list174.size);
|
||||
for (int _i175 = 0; _i175 < _list174.size; ++_i175)
|
||||
org.apache.thrift.protocol.TList _list182 = iprot.readListBegin();
|
||||
struct.variable_types = new ArrayList<String>(_list182.size);
|
||||
for (int _i183 = 0; _i183 < _list182.size; ++_i183)
|
||||
{
|
||||
String _elem176; // required
|
||||
_elem176 = iprot.readString();
|
||||
struct.variable_types.add(_elem176);
|
||||
String _elem184; // optional
|
||||
_elem184 = iprot.readString();
|
||||
struct.variable_types.add(_elem184);
|
||||
}
|
||||
iprot.readListEnd();
|
||||
}
|
||||
|
|
@ -667,13 +667,13 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
|
|||
case 4: // VARIABLE_NAMES
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list177 = iprot.readListBegin();
|
||||
struct.variable_names = new ArrayList<String>(_list177.size);
|
||||
for (int _i178 = 0; _i178 < _list177.size; ++_i178)
|
||||
org.apache.thrift.protocol.TList _list185 = iprot.readListBegin();
|
||||
struct.variable_names = new ArrayList<String>(_list185.size);
|
||||
for (int _i186 = 0; _i186 < _list185.size; ++_i186)
|
||||
{
|
||||
String _elem179; // required
|
||||
_elem179 = iprot.readString();
|
||||
struct.variable_names.add(_elem179);
|
||||
String _elem187; // optional
|
||||
_elem187 = iprot.readString();
|
||||
struct.variable_names.add(_elem187);
|
||||
}
|
||||
iprot.readListEnd();
|
||||
}
|
||||
|
|
@ -714,9 +714,9 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
|
|||
oprot.writeFieldBegin(VARIABLE_TYPES_FIELD_DESC);
|
||||
{
|
||||
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.variable_types.size()));
|
||||
for (String _iter180 : struct.variable_types)
|
||||
for (String _iter188 : struct.variable_types)
|
||||
{
|
||||
oprot.writeString(_iter180);
|
||||
oprot.writeString(_iter188);
|
||||
}
|
||||
oprot.writeListEnd();
|
||||
}
|
||||
|
|
@ -728,9 +728,9 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
|
|||
oprot.writeFieldBegin(VARIABLE_NAMES_FIELD_DESC);
|
||||
{
|
||||
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.variable_names.size()));
|
||||
for (String _iter181 : struct.variable_names)
|
||||
for (String _iter189 : struct.variable_names)
|
||||
{
|
||||
oprot.writeString(_iter181);
|
||||
oprot.writeString(_iter189);
|
||||
}
|
||||
oprot.writeListEnd();
|
||||
}
|
||||
|
|
@ -767,18 +767,18 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
|
|||
if (struct.isSetVariable_types()) {
|
||||
{
|
||||
oprot.writeI32(struct.variable_types.size());
|
||||
for (String _iter182 : struct.variable_types)
|
||||
for (String _iter190 : struct.variable_types)
|
||||
{
|
||||
oprot.writeString(_iter182);
|
||||
oprot.writeString(_iter190);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (struct.isSetVariable_names()) {
|
||||
{
|
||||
oprot.writeI32(struct.variable_names.size());
|
||||
for (String _iter183 : struct.variable_names)
|
||||
for (String _iter191 : struct.variable_names)
|
||||
{
|
||||
oprot.writeString(_iter183);
|
||||
oprot.writeString(_iter191);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -794,26 +794,26 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
|
|||
BitSet incoming = iprot.readBitSet(2);
|
||||
if (incoming.get(0)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list184 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.variable_types = new ArrayList<String>(_list184.size);
|
||||
for (int _i185 = 0; _i185 < _list184.size; ++_i185)
|
||||
org.apache.thrift.protocol.TList _list192 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.variable_types = new ArrayList<String>(_list192.size);
|
||||
for (int _i193 = 0; _i193 < _list192.size; ++_i193)
|
||||
{
|
||||
String _elem186; // required
|
||||
_elem186 = iprot.readString();
|
||||
struct.variable_types.add(_elem186);
|
||||
String _elem194; // optional
|
||||
_elem194 = iprot.readString();
|
||||
struct.variable_types.add(_elem194);
|
||||
}
|
||||
}
|
||||
struct.setVariable_typesIsSet(true);
|
||||
}
|
||||
if (incoming.get(1)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list187 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.variable_names = new ArrayList<String>(_list187.size);
|
||||
for (int _i188 = 0; _i188 < _list187.size; ++_i188)
|
||||
org.apache.thrift.protocol.TList _list195 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.variable_names = new ArrayList<String>(_list195.size);
|
||||
for (int _i196 = 0; _i196 < _list195.size; ++_i196)
|
||||
{
|
||||
String _elem189; // required
|
||||
_elem189 = iprot.readString();
|
||||
struct.variable_names.add(_elem189);
|
||||
String _elem197; // optional
|
||||
_elem197 = iprot.readString();
|
||||
struct.variable_names.add(_elem197);
|
||||
}
|
||||
}
|
||||
struct.setVariable_namesIsSet(true);
|
||||
|
|
|
|||
|
|
@ -644,14 +644,14 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
|
|||
case 2: // ROWS
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list166 = iprot.readListBegin();
|
||||
struct.rows = new ArrayList<CqlRow>(_list166.size);
|
||||
for (int _i167 = 0; _i167 < _list166.size; ++_i167)
|
||||
org.apache.thrift.protocol.TList _list174 = iprot.readListBegin();
|
||||
struct.rows = new ArrayList<CqlRow>(_list174.size);
|
||||
for (int _i175 = 0; _i175 < _list174.size; ++_i175)
|
||||
{
|
||||
CqlRow _elem168; // required
|
||||
_elem168 = new CqlRow();
|
||||
_elem168.read(iprot);
|
||||
struct.rows.add(_elem168);
|
||||
CqlRow _elem176; // optional
|
||||
_elem176 = new CqlRow();
|
||||
_elem176.read(iprot);
|
||||
struct.rows.add(_elem176);
|
||||
}
|
||||
iprot.readListEnd();
|
||||
}
|
||||
|
|
@ -702,9 +702,9 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
|
|||
oprot.writeFieldBegin(ROWS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.rows.size()));
|
||||
for (CqlRow _iter169 : struct.rows)
|
||||
for (CqlRow _iter177 : struct.rows)
|
||||
{
|
||||
_iter169.write(oprot);
|
||||
_iter177.write(oprot);
|
||||
}
|
||||
oprot.writeListEnd();
|
||||
}
|
||||
|
|
@ -755,9 +755,9 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
|
|||
if (struct.isSetRows()) {
|
||||
{
|
||||
oprot.writeI32(struct.rows.size());
|
||||
for (CqlRow _iter170 : struct.rows)
|
||||
for (CqlRow _iter178 : struct.rows)
|
||||
{
|
||||
_iter170.write(oprot);
|
||||
_iter178.write(oprot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -777,14 +777,14 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
|
|||
BitSet incoming = iprot.readBitSet(3);
|
||||
if (incoming.get(0)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list171 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.rows = new ArrayList<CqlRow>(_list171.size);
|
||||
for (int _i172 = 0; _i172 < _list171.size; ++_i172)
|
||||
org.apache.thrift.protocol.TList _list179 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.rows = new ArrayList<CqlRow>(_list179.size);
|
||||
for (int _i180 = 0; _i180 < _list179.size; ++_i180)
|
||||
{
|
||||
CqlRow _elem173; // required
|
||||
_elem173 = new CqlRow();
|
||||
_elem173.read(iprot);
|
||||
struct.rows.add(_elem173);
|
||||
CqlRow _elem181; // optional
|
||||
_elem181 = new CqlRow();
|
||||
_elem181.read(iprot);
|
||||
struct.rows.add(_elem181);
|
||||
}
|
||||
}
|
||||
struct.setRowsIsSet(true);
|
||||
|
|
|
|||
|
|
@ -478,14 +478,14 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
|
|||
case 2: // COLUMNS
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list138 = iprot.readListBegin();
|
||||
struct.columns = new ArrayList<Column>(_list138.size);
|
||||
for (int _i139 = 0; _i139 < _list138.size; ++_i139)
|
||||
org.apache.thrift.protocol.TList _list146 = iprot.readListBegin();
|
||||
struct.columns = new ArrayList<Column>(_list146.size);
|
||||
for (int _i147 = 0; _i147 < _list146.size; ++_i147)
|
||||
{
|
||||
Column _elem140; // required
|
||||
_elem140 = new Column();
|
||||
_elem140.read(iprot);
|
||||
struct.columns.add(_elem140);
|
||||
Column _elem148; // optional
|
||||
_elem148 = new Column();
|
||||
_elem148.read(iprot);
|
||||
struct.columns.add(_elem148);
|
||||
}
|
||||
iprot.readListEnd();
|
||||
}
|
||||
|
|
@ -518,9 +518,9 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
|
|||
oprot.writeFieldBegin(COLUMNS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.columns.size()));
|
||||
for (Column _iter141 : struct.columns)
|
||||
for (Column _iter149 : struct.columns)
|
||||
{
|
||||
_iter141.write(oprot);
|
||||
_iter149.write(oprot);
|
||||
}
|
||||
oprot.writeListEnd();
|
||||
}
|
||||
|
|
@ -546,9 +546,9 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
|
|||
oprot.writeBinary(struct.key);
|
||||
{
|
||||
oprot.writeI32(struct.columns.size());
|
||||
for (Column _iter142 : struct.columns)
|
||||
for (Column _iter150 : struct.columns)
|
||||
{
|
||||
_iter142.write(oprot);
|
||||
_iter150.write(oprot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -559,14 +559,14 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
|
|||
struct.key = iprot.readBinary();
|
||||
struct.setKeyIsSet(true);
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list143 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.columns = new ArrayList<Column>(_list143.size);
|
||||
for (int _i144 = 0; _i144 < _list143.size; ++_i144)
|
||||
org.apache.thrift.protocol.TList _list151 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.columns = new ArrayList<Column>(_list151.size);
|
||||
for (int _i152 = 0; _i152 < _list151.size; ++_i152)
|
||||
{
|
||||
Column _elem145; // required
|
||||
_elem145 = new Column();
|
||||
_elem145.read(iprot);
|
||||
struct.columns.add(_elem145);
|
||||
Column _elem153; // optional
|
||||
_elem153 = new Column();
|
||||
_elem153.read(iprot);
|
||||
struct.columns.add(_elem153);
|
||||
}
|
||||
}
|
||||
struct.setColumnsIsSet(true);
|
||||
|
|
|
|||
|
|
@ -559,7 +559,7 @@ public class IndexClause implements org.apache.thrift.TBase<IndexClause, IndexCl
|
|||
struct.expressions = new ArrayList<IndexExpression>(_list24.size);
|
||||
for (int _i25 = 0; _i25 < _list24.size; ++_i25)
|
||||
{
|
||||
IndexExpression _elem26; // required
|
||||
IndexExpression _elem26; // optional
|
||||
_elem26 = new IndexExpression();
|
||||
_elem26.read(iprot);
|
||||
struct.expressions.add(_elem26);
|
||||
|
|
@ -661,7 +661,7 @@ public class IndexClause implements org.apache.thrift.TBase<IndexClause, IndexCl
|
|||
struct.expressions = new ArrayList<IndexExpression>(_list29.size);
|
||||
for (int _i30 = 0; _i30 < _list29.size; ++_i30)
|
||||
{
|
||||
IndexExpression _elem31; // required
|
||||
IndexExpression _elem31; // optional
|
||||
_elem31 = new IndexExpression();
|
||||
_elem31.read(iprot);
|
||||
struct.expressions.add(_elem31);
|
||||
|
|
|
|||
|
|
@ -848,7 +848,7 @@ public class KeyRange implements org.apache.thrift.TBase<KeyRange, KeyRange._Fie
|
|||
struct.row_filter = new ArrayList<IndexExpression>(_list32.size);
|
||||
for (int _i33 = 0; _i33 < _list32.size; ++_i33)
|
||||
{
|
||||
IndexExpression _elem34; // required
|
||||
IndexExpression _elem34; // optional
|
||||
_elem34 = new IndexExpression();
|
||||
_elem34.read(iprot);
|
||||
struct.row_filter.add(_elem34);
|
||||
|
|
@ -1017,7 +1017,7 @@ public class KeyRange implements org.apache.thrift.TBase<KeyRange, KeyRange._Fie
|
|||
struct.row_filter = new ArrayList<IndexExpression>(_list37.size);
|
||||
for (int _i38 = 0; _i38 < _list37.size; ++_i38)
|
||||
{
|
||||
IndexExpression _elem39; // required
|
||||
IndexExpression _elem39; // optional
|
||||
_elem39 = new IndexExpression();
|
||||
_elem39.read(iprot);
|
||||
struct.row_filter.add(_elem39);
|
||||
|
|
|
|||
|
|
@ -486,7 +486,7 @@ public class KeySlice implements org.apache.thrift.TBase<KeySlice, KeySlice._Fie
|
|||
struct.columns = new ArrayList<ColumnOrSuperColumn>(_list40.size);
|
||||
for (int _i41 = 0; _i41 < _list40.size; ++_i41)
|
||||
{
|
||||
ColumnOrSuperColumn _elem42; // required
|
||||
ColumnOrSuperColumn _elem42; // optional
|
||||
_elem42 = new ColumnOrSuperColumn();
|
||||
_elem42.read(iprot);
|
||||
struct.columns.add(_elem42);
|
||||
|
|
@ -567,7 +567,7 @@ public class KeySlice implements org.apache.thrift.TBase<KeySlice, KeySlice._Fie
|
|||
struct.columns = new ArrayList<ColumnOrSuperColumn>(_list45.size);
|
||||
for (int _i46 = 0; _i46 < _list45.size; ++_i46)
|
||||
{
|
||||
ColumnOrSuperColumn _elem47; // required
|
||||
ColumnOrSuperColumn _elem47; // optional
|
||||
_elem47 = new ColumnOrSuperColumn();
|
||||
_elem47.read(iprot);
|
||||
struct.columns.add(_elem47);
|
||||
|
|
|
|||
|
|
@ -837,15 +837,15 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
case 3: // STRATEGY_OPTIONS
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map120 = iprot.readMapBegin();
|
||||
struct.strategy_options = new HashMap<String,String>(2*_map120.size);
|
||||
for (int _i121 = 0; _i121 < _map120.size; ++_i121)
|
||||
org.apache.thrift.protocol.TMap _map128 = iprot.readMapBegin();
|
||||
struct.strategy_options = new HashMap<String,String>(2*_map128.size);
|
||||
for (int _i129 = 0; _i129 < _map128.size; ++_i129)
|
||||
{
|
||||
String _key122; // required
|
||||
String _val123; // required
|
||||
_key122 = iprot.readString();
|
||||
_val123 = iprot.readString();
|
||||
struct.strategy_options.put(_key122, _val123);
|
||||
String _key130; // required
|
||||
String _val131; // required
|
||||
_key130 = iprot.readString();
|
||||
_val131 = iprot.readString();
|
||||
struct.strategy_options.put(_key130, _val131);
|
||||
}
|
||||
iprot.readMapEnd();
|
||||
}
|
||||
|
|
@ -865,14 +865,14 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
case 5: // CF_DEFS
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list124 = iprot.readListBegin();
|
||||
struct.cf_defs = new ArrayList<CfDef>(_list124.size);
|
||||
for (int _i125 = 0; _i125 < _list124.size; ++_i125)
|
||||
org.apache.thrift.protocol.TList _list132 = iprot.readListBegin();
|
||||
struct.cf_defs = new ArrayList<CfDef>(_list132.size);
|
||||
for (int _i133 = 0; _i133 < _list132.size; ++_i133)
|
||||
{
|
||||
CfDef _elem126; // required
|
||||
_elem126 = new CfDef();
|
||||
_elem126.read(iprot);
|
||||
struct.cf_defs.add(_elem126);
|
||||
CfDef _elem134; // optional
|
||||
_elem134 = new CfDef();
|
||||
_elem134.read(iprot);
|
||||
struct.cf_defs.add(_elem134);
|
||||
}
|
||||
iprot.readListEnd();
|
||||
}
|
||||
|
|
@ -919,10 +919,10 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
oprot.writeFieldBegin(STRATEGY_OPTIONS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.strategy_options.size()));
|
||||
for (Map.Entry<String, String> _iter127 : struct.strategy_options.entrySet())
|
||||
for (Map.Entry<String, String> _iter135 : struct.strategy_options.entrySet())
|
||||
{
|
||||
oprot.writeString(_iter127.getKey());
|
||||
oprot.writeString(_iter127.getValue());
|
||||
oprot.writeString(_iter135.getKey());
|
||||
oprot.writeString(_iter135.getValue());
|
||||
}
|
||||
oprot.writeMapEnd();
|
||||
}
|
||||
|
|
@ -938,9 +938,9 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
oprot.writeFieldBegin(CF_DEFS_FIELD_DESC);
|
||||
{
|
||||
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.cf_defs.size()));
|
||||
for (CfDef _iter128 : struct.cf_defs)
|
||||
for (CfDef _iter136 : struct.cf_defs)
|
||||
{
|
||||
_iter128.write(oprot);
|
||||
_iter136.write(oprot);
|
||||
}
|
||||
oprot.writeListEnd();
|
||||
}
|
||||
|
|
@ -972,9 +972,9 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
oprot.writeString(struct.strategy_class);
|
||||
{
|
||||
oprot.writeI32(struct.cf_defs.size());
|
||||
for (CfDef _iter129 : struct.cf_defs)
|
||||
for (CfDef _iter137 : struct.cf_defs)
|
||||
{
|
||||
_iter129.write(oprot);
|
||||
_iter137.write(oprot);
|
||||
}
|
||||
}
|
||||
BitSet optionals = new BitSet();
|
||||
|
|
@ -991,10 +991,10 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
if (struct.isSetStrategy_options()) {
|
||||
{
|
||||
oprot.writeI32(struct.strategy_options.size());
|
||||
for (Map.Entry<String, String> _iter130 : struct.strategy_options.entrySet())
|
||||
for (Map.Entry<String, String> _iter138 : struct.strategy_options.entrySet())
|
||||
{
|
||||
oprot.writeString(_iter130.getKey());
|
||||
oprot.writeString(_iter130.getValue());
|
||||
oprot.writeString(_iter138.getKey());
|
||||
oprot.writeString(_iter138.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1014,29 +1014,29 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
|
|||
struct.strategy_class = iprot.readString();
|
||||
struct.setStrategy_classIsSet(true);
|
||||
{
|
||||
org.apache.thrift.protocol.TList _list131 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.cf_defs = new ArrayList<CfDef>(_list131.size);
|
||||
for (int _i132 = 0; _i132 < _list131.size; ++_i132)
|
||||
org.apache.thrift.protocol.TList _list139 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
|
||||
struct.cf_defs = new ArrayList<CfDef>(_list139.size);
|
||||
for (int _i140 = 0; _i140 < _list139.size; ++_i140)
|
||||
{
|
||||
CfDef _elem133; // required
|
||||
_elem133 = new CfDef();
|
||||
_elem133.read(iprot);
|
||||
struct.cf_defs.add(_elem133);
|
||||
CfDef _elem141; // optional
|
||||
_elem141 = new CfDef();
|
||||
_elem141.read(iprot);
|
||||
struct.cf_defs.add(_elem141);
|
||||
}
|
||||
}
|
||||
struct.setCf_defsIsSet(true);
|
||||
BitSet incoming = iprot.readBitSet(3);
|
||||
if (incoming.get(0)) {
|
||||
{
|
||||
org.apache.thrift.protocol.TMap _map134 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.strategy_options = new HashMap<String,String>(2*_map134.size);
|
||||
for (int _i135 = 0; _i135 < _map134.size; ++_i135)
|
||||
org.apache.thrift.protocol.TMap _map142 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
|
||||
struct.strategy_options = new HashMap<String,String>(2*_map142.size);
|
||||
for (int _i143 = 0; _i143 < _map142.size; ++_i143)
|
||||
{
|
||||
String _key136; // required
|
||||
String _val137; // required
|
||||
_key136 = iprot.readString();
|
||||
_val137 = iprot.readString();
|
||||
struct.strategy_options.put(_key136, _val137);
|
||||
String _key144; // required
|
||||
String _val145; // required
|
||||
_key144 = iprot.readString();
|
||||
_val145 = iprot.readString();
|
||||
struct.strategy_options.put(_key144, _val145);
|
||||
}
|
||||
}
|
||||
struct.setStrategy_optionsIsSet(true);
|
||||
|
|
|
|||
|
|
@ -467,7 +467,7 @@ public class SlicePredicate implements org.apache.thrift.TBase<SlicePredicate, S
|
|||
struct.column_names = new ArrayList<ByteBuffer>(_list16.size);
|
||||
for (int _i17 = 0; _i17 < _list16.size; ++_i17)
|
||||
{
|
||||
ByteBuffer _elem18; // required
|
||||
ByteBuffer _elem18; // optional
|
||||
_elem18 = iprot.readBinary();
|
||||
struct.column_names.add(_elem18);
|
||||
}
|
||||
|
|
@ -572,7 +572,7 @@ public class SlicePredicate implements org.apache.thrift.TBase<SlicePredicate, S
|
|||
struct.column_names = new ArrayList<ByteBuffer>(_list21.size);
|
||||
for (int _i22 = 0; _i22 < _list21.size; ++_i22)
|
||||
{
|
||||
ByteBuffer _elem23; // required
|
||||
ByteBuffer _elem23; // optional
|
||||
_elem23 = iprot.readBinary();
|
||||
struct.column_names.add(_elem23);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ public class SuperColumn implements org.apache.thrift.TBase<SuperColumn, SuperCo
|
|||
struct.columns = new ArrayList<Column>(_list0.size);
|
||||
for (int _i1 = 0; _i1 < _list0.size; ++_i1)
|
||||
{
|
||||
Column _elem2; // required
|
||||
Column _elem2; // optional
|
||||
_elem2 = new Column();
|
||||
_elem2.read(iprot);
|
||||
struct.columns.add(_elem2);
|
||||
|
|
@ -566,7 +566,7 @@ public class SuperColumn implements org.apache.thrift.TBase<SuperColumn, SuperCo
|
|||
struct.columns = new ArrayList<Column>(_list5.size);
|
||||
for (int _i6 = 0; _i6 < _list5.size; ++_i6)
|
||||
{
|
||||
Column _elem7; // required
|
||||
Column _elem7; // optional
|
||||
_elem7 = new Column();
|
||||
_elem7.read(iprot);
|
||||
struct.columns.add(_elem7);
|
||||
|
|
|
|||
|
|
@ -774,7 +774,7 @@ public class TokenRange implements org.apache.thrift.TBase<TokenRange, TokenRang
|
|||
struct.endpoints = new ArrayList<String>(_list48.size);
|
||||
for (int _i49 = 0; _i49 < _list48.size; ++_i49)
|
||||
{
|
||||
String _elem50; // required
|
||||
String _elem50; // optional
|
||||
_elem50 = iprot.readString();
|
||||
struct.endpoints.add(_elem50);
|
||||
}
|
||||
|
|
@ -792,7 +792,7 @@ public class TokenRange implements org.apache.thrift.TBase<TokenRange, TokenRang
|
|||
struct.rpc_endpoints = new ArrayList<String>(_list51.size);
|
||||
for (int _i52 = 0; _i52 < _list51.size; ++_i52)
|
||||
{
|
||||
String _elem53; // required
|
||||
String _elem53; // optional
|
||||
_elem53 = iprot.readString();
|
||||
struct.rpc_endpoints.add(_elem53);
|
||||
}
|
||||
|
|
@ -810,7 +810,7 @@ public class TokenRange implements org.apache.thrift.TBase<TokenRange, TokenRang
|
|||
struct.endpoint_details = new ArrayList<EndpointDetails>(_list54.size);
|
||||
for (int _i55 = 0; _i55 < _list54.size; ++_i55)
|
||||
{
|
||||
EndpointDetails _elem56; // required
|
||||
EndpointDetails _elem56; // optional
|
||||
_elem56 = new EndpointDetails();
|
||||
_elem56.read(iprot);
|
||||
struct.endpoint_details.add(_elem56);
|
||||
|
|
@ -953,7 +953,7 @@ public class TokenRange implements org.apache.thrift.TBase<TokenRange, TokenRang
|
|||
struct.endpoints = new ArrayList<String>(_list63.size);
|
||||
for (int _i64 = 0; _i64 < _list63.size; ++_i64)
|
||||
{
|
||||
String _elem65; // required
|
||||
String _elem65; // optional
|
||||
_elem65 = iprot.readString();
|
||||
struct.endpoints.add(_elem65);
|
||||
}
|
||||
|
|
@ -966,7 +966,7 @@ public class TokenRange implements org.apache.thrift.TBase<TokenRange, TokenRang
|
|||
struct.rpc_endpoints = new ArrayList<String>(_list66.size);
|
||||
for (int _i67 = 0; _i67 < _list66.size; ++_i67)
|
||||
{
|
||||
String _elem68; // required
|
||||
String _elem68; // optional
|
||||
_elem68 = iprot.readString();
|
||||
struct.rpc_endpoints.add(_elem68);
|
||||
}
|
||||
|
|
@ -979,7 +979,7 @@ public class TokenRange implements org.apache.thrift.TBase<TokenRange, TokenRang
|
|||
struct.endpoint_details = new ArrayList<EndpointDetails>(_list69.size);
|
||||
for (int _i70 = 0; _i70 < _list69.size; ++_i70)
|
||||
{
|
||||
EndpointDetails _elem71; // required
|
||||
EndpointDetails _elem71; // optional
|
||||
_elem71 = new EndpointDetails();
|
||||
_elem71.read(iprot);
|
||||
struct.endpoint_details.add(_elem71);
|
||||
|
|
|
|||
|
|
@ -27,10 +27,14 @@ import java.nio.ByteBuffer;
|
|||
import java.nio.charset.CharacterCodingException;
|
||||
import java.util.*;
|
||||
|
||||
import com.google.common.base.CharMatcher;
|
||||
import com.google.common.base.Charsets;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.Collections2;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import org.antlr.runtime.tree.Tree;
|
||||
|
|
@ -140,7 +144,8 @@ public class CliClient
|
|||
CACHING,
|
||||
DEFAULT_TIME_TO_LIVE,
|
||||
SPECULATIVE_RETRY,
|
||||
POPULATE_IO_CACHE_ON_FLUSH
|
||||
POPULATE_IO_CACHE_ON_FLUSH,
|
||||
TRIGGER_CLASSES
|
||||
}
|
||||
|
||||
private static final String DEFAULT_PLACEMENT_STRATEGY = "org.apache.cassandra.locator.NetworkTopologyStrategy";
|
||||
|
|
@ -1354,6 +1359,10 @@ public class CliClient
|
|||
case POPULATE_IO_CACHE_ON_FLUSH:
|
||||
cfDef.setPopulate_io_cache_on_flush(Boolean.parseBoolean(mValue));
|
||||
break;
|
||||
case TRIGGER_CLASSES:
|
||||
Iterable<String> tcIt = Splitter.on(',').trimResults(CharMatcher.is('\'')).split(mValue);
|
||||
cfDef.setTrigger_class(Sets.newHashSet(tcIt));
|
||||
break;
|
||||
default:
|
||||
//must match one of the above or we'd throw an exception at the valueOf statement above.
|
||||
assert(false);
|
||||
|
|
@ -1818,6 +1827,8 @@ public class CliClient
|
|||
|
||||
if (cfDef.isSetBloom_filter_fp_chance())
|
||||
writeAttr(output, false, "bloom_filter_fp_chance", cfDef.bloom_filter_fp_chance);
|
||||
if (cfDef.isSetTrigger_class())
|
||||
writeAttr(output, false, "trigger_class", StringUtils.join(cfDef.trigger_class, ','));
|
||||
|
||||
if (!cfDef.compaction_strategy_options.isEmpty())
|
||||
{
|
||||
|
|
@ -2188,6 +2199,9 @@ public class CliClient
|
|||
sessionState.out.printf(" Index interval: %s%n", cf_def.isSetIndex_interval() ? cf_def.index_interval : "default");
|
||||
sessionState.out.printf(" Speculative Retry: %s%n", cf_def.speculative_retry);
|
||||
|
||||
if (cf_def.trigger_class != null)
|
||||
sessionState.out.printf(" Trigger class: %s%n", cf_def.trigger_class);
|
||||
|
||||
// if we have connection to the cfMBean established
|
||||
if (cfMBean != null)
|
||||
sessionState.out.printf(" Built indexes: %s%n", cfMBean.getBuiltIndexes());
|
||||
|
|
|
|||
|
|
@ -26,8 +26,11 @@ import java.util.*;
|
|||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.MapDifference;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.builder.EqualsBuilder;
|
||||
|
|
@ -138,6 +141,7 @@ public final class CFMetaData
|
|||
+ "default_write_consistency text,"
|
||||
+ "speculative_retry text,"
|
||||
+ "populate_io_cache_on_flush boolean,"
|
||||
+ "trigger_class text,"
|
||||
+ "dropped_columns map<text, bigint>,"
|
||||
+ "PRIMARY KEY (keyspace_name, columnfamily_name)"
|
||||
+ ") WITH COMMENT='ColumnFamily definitions' AND gc_grace_seconds=8640");
|
||||
|
|
@ -360,6 +364,7 @@ public final class CFMetaData
|
|||
private volatile SpeculativeRetry speculativeRetry = DEFAULT_SPECULATIVE_RETRY;
|
||||
private volatile boolean populateIoCacheOnFlush = DEFAULT_POPULATE_IO_CACHE_ON_FLUSH;
|
||||
private volatile Map<ByteBuffer, Long> droppedColumns = new HashMap<ByteBuffer, Long>();
|
||||
private volatile Set<String> triggerClass = null;
|
||||
|
||||
/*
|
||||
* All CQL3 columns definition are stored in the column_metadata map.
|
||||
|
|
@ -405,6 +410,7 @@ public final class CFMetaData
|
|||
public CFMetaData speculativeRetry(SpeculativeRetry prop) {speculativeRetry = prop; return this;}
|
||||
public CFMetaData populateIoCacheOnFlush(boolean prop) {populateIoCacheOnFlush = prop; return this;}
|
||||
public CFMetaData droppedColumns(Map<ByteBuffer, Long> cols) {droppedColumns = cols; return this;}
|
||||
public CFMetaData triggerClass(Set<String> prop) {triggerClass = prop; return this;}
|
||||
|
||||
public CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc)
|
||||
{
|
||||
|
|
@ -502,6 +508,7 @@ public final class CFMetaData
|
|||
.gcGraceSeconds(0)
|
||||
.caching(indexCaching)
|
||||
.speculativeRetry(parent.speculativeRetry)
|
||||
.triggerClass(parent.triggerClass)
|
||||
.compactionStrategyClass(parent.compactionStrategyClass)
|
||||
.compactionStrategyOptions(parent.compactionStrategyOptions)
|
||||
.reloadSecondaryIndexMetadata(parent);
|
||||
|
|
@ -556,7 +563,8 @@ public final class CFMetaData
|
|||
.speculativeRetry(oldCFMD.speculativeRetry)
|
||||
.memtableFlushPeriod(oldCFMD.memtableFlushPeriod)
|
||||
.populateIoCacheOnFlush(oldCFMD.populateIoCacheOnFlush)
|
||||
.droppedColumns(oldCFMD.droppedColumns);
|
||||
.droppedColumns(oldCFMD.droppedColumns)
|
||||
.triggerClass(oldCFMD.triggerClass);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -687,6 +695,11 @@ public final class CFMetaData
|
|||
: bloomFilterFpChance;
|
||||
}
|
||||
|
||||
public Set<String> getTriggerClass()
|
||||
{
|
||||
return triggerClass;
|
||||
}
|
||||
|
||||
public Caching getCaching()
|
||||
{
|
||||
return caching;
|
||||
|
|
@ -756,6 +769,7 @@ public final class CFMetaData
|
|||
.append(speculativeRetry, rhs.speculativeRetry)
|
||||
.append(populateIoCacheOnFlush, rhs.populateIoCacheOnFlush)
|
||||
.append(droppedColumns, rhs.droppedColumns)
|
||||
.append(triggerClass, rhs.triggerClass)
|
||||
.isEquals();
|
||||
}
|
||||
|
||||
|
|
@ -788,6 +802,7 @@ public final class CFMetaData
|
|||
.append(speculativeRetry)
|
||||
.append(populateIoCacheOnFlush)
|
||||
.append(droppedColumns)
|
||||
.append(triggerClass)
|
||||
.toHashCode();
|
||||
}
|
||||
|
||||
|
|
@ -877,6 +892,8 @@ public final class CFMetaData
|
|||
newCFMD.speculativeRetry(SpeculativeRetry.fromString(cf_def.speculative_retry));
|
||||
if (cf_def.isSetPopulate_io_cache_on_flush())
|
||||
newCFMD.populateIoCacheOnFlush(cf_def.populate_io_cache_on_flush);
|
||||
if (cf_def.isSetTrigger_class())
|
||||
newCFMD.triggerClass(cf_def.trigger_class);
|
||||
|
||||
CompressionParameters cp = CompressionParameters.create(cf_def.compression_options);
|
||||
|
||||
|
|
@ -958,6 +975,8 @@ public final class CFMetaData
|
|||
speculativeRetry = cfm.speculativeRetry;
|
||||
populateIoCacheOnFlush = cfm.populateIoCacheOnFlush;
|
||||
|
||||
if (cfm.triggerClass != null)
|
||||
triggerClass = cfm.triggerClass;
|
||||
if (!cfm.droppedColumns.isEmpty())
|
||||
droppedColumns = cfm.droppedColumns;
|
||||
|
||||
|
|
@ -1118,6 +1137,8 @@ public final class CFMetaData
|
|||
def.setCaching(caching.toString());
|
||||
def.setDefault_time_to_live(defaultTimeToLive);
|
||||
def.setSpeculative_retry(speculativeRetry.toString());
|
||||
if (triggerClass != null)
|
||||
def.setTrigger_class(new HashSet<String>(triggerClass));
|
||||
return def;
|
||||
}
|
||||
|
||||
|
|
@ -1453,6 +1474,7 @@ public final class CFMetaData
|
|||
cf.addColumn(DeletedColumn.create(ldt, timestamp, cfName, "column_aliases"));
|
||||
cf.addColumn(DeletedColumn.create(ldt, timestamp, cfName, "compaction_strategy_options"));
|
||||
cf.addColumn(DeletedColumn.create(ldt, timestamp, cfName, "index_interval"));
|
||||
cf.addColumn(DeletedColumn.create(ldt, timestamp, cfName, "trigger_class"));
|
||||
|
||||
for (Map.Entry<ByteBuffer, Long> entry : droppedColumns.entrySet())
|
||||
cf.addColumn(new DeletedColumn(makeDroppedColumnName(entry.getKey()), ldt, timestamp));
|
||||
|
|
@ -1516,6 +1538,8 @@ public final class CFMetaData
|
|||
cf.addColumn(Column.create(json(compactionStrategyOptions), timestamp, cfName, "compaction_strategy_options"));
|
||||
cf.addColumn(Column.create(indexInterval, timestamp, cfName, "index_interval"));
|
||||
cf.addColumn(Column.create(speculativeRetry.toString(), timestamp, cfName, "speculative_retry"));
|
||||
cf.addColumn(triggerClass == null ? DeletedColumn.create(ldt, timestamp, cfName, "trigger_class")
|
||||
: Column.create(StringUtils.join(triggerClass, ','), timestamp, cfName, "trigger_class"));
|
||||
|
||||
for (Map.Entry<ByteBuffer, Long> entry : droppedColumns.entrySet())
|
||||
cf.addColumn(new Column(makeDroppedColumnName(entry.getKey()), LongType.instance.decompose(entry.getValue()), timestamp));
|
||||
|
|
@ -1565,6 +1589,8 @@ public final class CFMetaData
|
|||
cfm.indexInterval(result.getInt("index_interval"));
|
||||
if (result.has("populate_io_cache_on_flush"))
|
||||
cfm.populateIoCacheOnFlush(result.getBoolean("populate_io_cache_on_flush"));
|
||||
if (result.has("trigger_class") && !Strings.isNullOrEmpty(result.getString("trigger_class")))
|
||||
cfm.triggerClass(Sets.newHashSet(StringUtils.split(result.getString("trigger_class"), ',')));
|
||||
|
||||
/*
|
||||
* The info previously hold by key_alias(es), column_alias and value_alias is now stored in column_metadata (because 1) this
|
||||
|
|
@ -1987,6 +2013,7 @@ public final class CFMetaData
|
|||
.append("indexInterval", indexInterval)
|
||||
.append("populateIoCacheOnFlush", populateIoCacheOnFlush)
|
||||
.append("droppedColumns", droppedColumns)
|
||||
.append("trigger_class", triggerClass)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -186,6 +186,7 @@ public class AlterTableStatement
|
|||
cfm.populateIoCacheOnFlush(cfProps.getPropertyBoolean(CFPropDefs.KW_POPULATE_IO_CACHE_ON_FLUSH, cfm.populateIoCacheOnFlush()));
|
||||
cfm.bloomFilterFpChance(cfProps.getPropertyDouble(CFPropDefs.KW_BF_FP_CHANCE, cfm.getBloomFilterFpChance()));
|
||||
cfm.memtableFlushPeriod(cfProps.getPropertyInt(CFPropDefs.KW_MEMTABLE_FLUSH_PERIOD, cfm.getMemtableFlushPeriod()));
|
||||
cfm.triggerClass(cfProps.getPropertySet(CFPropDefs.KW_TRIGGER_CLASS, cfm.getTriggerClass()));
|
||||
|
||||
if (!cfProps.compactionStrategyOptions.isEmpty())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import java.util.HashSet;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -33,6 +34,7 @@ import org.apache.cassandra.db.marshal.AbstractType;
|
|||
import org.apache.cassandra.db.marshal.TypeParser;
|
||||
import org.apache.cassandra.exceptions.InvalidRequestException;
|
||||
import org.apache.cassandra.exceptions.SyntaxException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
public class CFPropDefs {
|
||||
private static final Logger logger = LoggerFactory.getLogger(CFPropDefs.class);
|
||||
|
|
@ -53,6 +55,7 @@ public class CFPropDefs {
|
|||
public static final String KW_POPULATE_IO_CACHE_ON_FLUSH = "populate_io_cache_on_flush";
|
||||
public static final String KW_BF_FP_CHANCE = "bloom_filter_fp_chance";
|
||||
public static final String KW_MEMTABLE_FLUSH_PERIOD = "memtable_flush_period_in_ms";
|
||||
public static final String KW_TRIGGER_CLASS = "trigger_class";
|
||||
|
||||
// Maps CQL short names to the respective Cassandra comparator/validator class names
|
||||
public static final Map<String, String> comparators = new HashMap<String, String>();
|
||||
|
|
@ -96,6 +99,7 @@ public class CFPropDefs {
|
|||
keywords.add(KW_POPULATE_IO_CACHE_ON_FLUSH);
|
||||
keywords.add(KW_BF_FP_CHANCE);
|
||||
keywords.add(KW_MEMTABLE_FLUSH_PERIOD);
|
||||
keywords.add(KW_TRIGGER_CLASS);
|
||||
|
||||
obsoleteKeywords.add("row_cache_size");
|
||||
obsoleteKeywords.add("key_cache_size");
|
||||
|
|
@ -286,6 +290,14 @@ public class CFPropDefs {
|
|||
return result;
|
||||
}
|
||||
|
||||
public Set<String> getPropertySet(String key, Set<String> defaultValue)
|
||||
{
|
||||
String value = properties.get(key);
|
||||
if (Strings.isNullOrEmpty(value))
|
||||
return defaultValue;
|
||||
return Sets.newHashSet(StringUtils.split(value, ','));
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return String.format("CFPropDefs(%s, compaction: %s, compression: %s)",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.cassandra.config.CFMetaData;
|
||||
import org.apache.cassandra.config.ColumnDefinition;
|
||||
|
|
@ -201,7 +202,8 @@ public class CreateColumnFamilyStatement
|
|||
.bloomFilterFpChance(getPropertyDouble(CFPropDefs.KW_BF_FP_CHANCE, null))
|
||||
.memtableFlushPeriod(getPropertyInt(CFPropDefs.KW_MEMTABLE_FLUSH_PERIOD, 0))
|
||||
.defaultTimeToLive(getPropertyInt(CFPropDefs.KW_DEFAULT_TIME_TO_LIVE, CFMetaData.DEFAULT_DEFAULT_TIME_TO_LIVE))
|
||||
.populateIoCacheOnFlush(getPropertyBoolean(CFPropDefs.KW_POPULATE_IO_CACHE_ON_FLUSH, CFMetaData.DEFAULT_POPULATE_IO_CACHE_ON_FLUSH));
|
||||
.populateIoCacheOnFlush(getPropertyBoolean(CFPropDefs.KW_POPULATE_IO_CACHE_ON_FLUSH, CFMetaData.DEFAULT_POPULATE_IO_CACHE_ON_FLUSH))
|
||||
.triggerClass(getPropertySet(CFPropDefs.KW_TRIGGER_CLASS, null));
|
||||
|
||||
// CQL2 can have null keyAliases
|
||||
if (keyAlias != null)
|
||||
|
|
@ -238,6 +240,11 @@ public class CreateColumnFamilyStatement
|
|||
return cfProps.getPropertyInt(key, defaultValue);
|
||||
}
|
||||
|
||||
private Set<String> getPropertySet(String key, Set<String> defaultValue)
|
||||
{
|
||||
return cfProps.getPropertySet(key, defaultValue);
|
||||
}
|
||||
|
||||
public Map<Term, String> getColumns()
|
||||
{
|
||||
return columns;
|
||||
|
|
|
|||
|
|
@ -507,7 +507,7 @@ public class QueryProcessor
|
|||
validateKey(mutation.key());
|
||||
}
|
||||
|
||||
StorageProxy.mutate(rowMutations, update.getConsistencyLevel());
|
||||
StorageProxy.mutateWithTriggers(rowMutations, update.getConsistencyLevel(), false);
|
||||
|
||||
result.type = CqlResultType.VOID;
|
||||
return result;
|
||||
|
|
@ -536,7 +536,7 @@ public class QueryProcessor
|
|||
validateKey(mutation.key());
|
||||
}
|
||||
|
||||
StorageProxy.mutate(mutations, batch.getConsistencyLevel());
|
||||
StorageProxy.mutateWithTriggers(mutations, batch.getConsistencyLevel(), false);
|
||||
|
||||
result.type = CqlResultType.VOID;
|
||||
return result;
|
||||
|
|
@ -582,7 +582,7 @@ public class QueryProcessor
|
|||
validateKey(deletion.key());
|
||||
}
|
||||
|
||||
StorageProxy.mutate(deletions, delete.getConsistencyLevel());
|
||||
StorageProxy.mutateWithTriggers(deletions, delete.getConsistencyLevel(), false);
|
||||
|
||||
result.type = CqlResultType.VOID;
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ public class CFPropDefs extends PropertyDefinitions
|
|||
public static final String KW_POPULATE_IO_CACHE_ON_FLUSH = "populate_io_cache_on_flush";
|
||||
public static final String KW_BF_FP_CHANCE = "bloom_filter_fp_chance";
|
||||
public static final String KW_MEMTABLE_FLUSH_PERIOD = "memtable_flush_period_in_ms";
|
||||
public static final String KW_TRIGGER_CLASS = "trigger_class";
|
||||
|
||||
public static final String KW_COMPACTION = "compaction";
|
||||
public static final String KW_COMPRESSION = "compression";
|
||||
|
|
@ -69,6 +70,7 @@ public class CFPropDefs extends PropertyDefinitions
|
|||
keywords.add(KW_COMPACTION);
|
||||
keywords.add(KW_COMPRESSION);
|
||||
keywords.add(KW_MEMTABLE_FLUSH_PERIOD);
|
||||
keywords.add(KW_TRIGGER_CLASS);
|
||||
|
||||
obsoleteKeywords.add("compaction_strategy_class");
|
||||
obsoleteKeywords.add("compaction_strategy_options");
|
||||
|
|
@ -150,6 +152,8 @@ public class CFPropDefs extends PropertyDefinitions
|
|||
cfm.speculativeRetry(CFMetaData.SpeculativeRetry.fromString(getString(KW_SPECULATIVE_RETRY, cfm.getSpeculativeRetry().toString())));
|
||||
cfm.memtableFlushPeriod(getInt(KW_MEMTABLE_FLUSH_PERIOD, cfm.getMemtableFlushPeriod()));
|
||||
cfm.populateIoCacheOnFlush(getBoolean(KW_POPULATE_IO_CACHE_ON_FLUSH, cfm.populateIoCacheOnFlush()));
|
||||
if (hasProperty(KW_TRIGGER_CLASS))
|
||||
cfm.triggerClass(getSet(KW_TRIGGER_CLASS, cfm.getTriggerClass()));
|
||||
|
||||
if (compactionStrategyClass != null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -76,6 +76,16 @@ public class PropertyDefinitions
|
|||
return (Map<String, String>)val;
|
||||
}
|
||||
|
||||
protected Set<String> getSet(String name, Set<String> defaultValue) throws SyntaxException
|
||||
{
|
||||
Object val = properties.get(name);
|
||||
if (val == null)
|
||||
return defaultValue;
|
||||
if (!(val instanceof Set))
|
||||
throw new SyntaxException(String.format("Invalid value for property '%s'", name));
|
||||
return (Set<String>) val;
|
||||
}
|
||||
|
||||
public Boolean hasProperty(String name)
|
||||
{
|
||||
return properties.containsKey(name);
|
||||
|
|
|
|||
|
|
@ -125,11 +125,8 @@ public class BatchStatement implements CQLStatement
|
|||
throw new InvalidRequestException("Invalid empty consistency level");
|
||||
|
||||
Collection<? extends IMutation> mutations = getMutations(variables, false, cl, queryState.getTimestamp());
|
||||
if (type == Type.LOGGED && mutations.size() > 1)
|
||||
StorageProxy.mutateAtomically((Collection<RowMutation>) mutations, cl);
|
||||
else
|
||||
StorageProxy.mutate(mutations, cl);
|
||||
|
||||
boolean mutateAtomic = (type == Type.LOGGED && mutations.size() > 1);
|
||||
StorageProxy.mutateWithTriggers(mutations, cl, mutateAtomic);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -351,7 +351,7 @@ public abstract class ModificationStatement implements CQLStatement
|
|||
else
|
||||
cl.validateForWrite(cfm.ksName);
|
||||
|
||||
StorageProxy.mutate(getMutations(variables, false, cl, queryState.getTimestamp(), false), cl);
|
||||
StorageProxy.mutateWithTriggers(getMutations(variables, false, cl, queryState.getTimestamp(), false), cl, false);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,11 @@ public class CounterMutation implements IMutation
|
|||
return rowMutation.getColumnFamilyIds();
|
||||
}
|
||||
|
||||
public Collection<ColumnFamily> getColumnFamilies()
|
||||
{
|
||||
return rowMutation.getColumnFamilies();
|
||||
}
|
||||
|
||||
public ByteBuffer key()
|
||||
{
|
||||
return rowMutation.key();
|
||||
|
|
|
|||
|
|
@ -29,4 +29,5 @@ public interface IMutation
|
|||
public void apply();
|
||||
public String toString(boolean shallow);
|
||||
public void addAll(IMutation m);
|
||||
public Collection<ColumnFamily> getColumnFamilies();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ import org.apache.cassandra.metrics.ClientRequestMetrics;
|
|||
import org.apache.cassandra.net.*;
|
||||
import org.apache.cassandra.service.paxos.*;
|
||||
import org.apache.cassandra.tracing.Tracing;
|
||||
import org.apache.cassandra.triggers.TriggerExecutor;
|
||||
import org.apache.cassandra.utils.*;
|
||||
|
||||
public class StorageProxy implements StorageProxyMBean
|
||||
|
|
@ -449,6 +450,23 @@ public class StorageProxy implements StorageProxyMBean
|
|||
}
|
||||
}
|
||||
|
||||
public static void mutateWithTriggers(Collection<? extends IMutation> mutations, ConsistencyLevel consistencyLevel, boolean mutateAtomically) throws WriteTimeoutException, UnavailableException,
|
||||
OverloadedException, InvalidRequestException
|
||||
{
|
||||
Collection<RowMutation> tmutations = TriggerExecutor.instance.execute(mutations);
|
||||
if (mutateAtomically || tmutations != null)
|
||||
{
|
||||
Collection<RowMutation> allMutations = (Collection<RowMutation>) mutations;
|
||||
if (tmutations != null)
|
||||
allMutations.addAll(tmutations);
|
||||
StorageProxy.mutateAtomically(allMutations, consistencyLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
StorageProxy.mutate(mutations, consistencyLevel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* See mutate. Adds additional steps before and after writing a batch.
|
||||
* Before writing the batch (but after doing availability check against the FD for the row replicas):
|
||||
|
|
@ -1878,5 +1896,5 @@ public class StorageProxy implements StorageProxyMBean
|
|||
|
||||
public Long getTruncateRpcTimeout() { return DatabaseDescriptor.getTruncateRpcTimeout(); }
|
||||
public void setTruncateRpcTimeout(Long timeoutInMillis) { DatabaseDescriptor.setTruncateRpcTimeout(timeoutInMillis); }
|
||||
|
||||
public void reloadTriggerClass() { TriggerExecutor.instance.reloadClasses(); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,4 +88,6 @@ public interface StorageProxyMBean
|
|||
public void setRangeRpcTimeout(Long timeoutInMillis);
|
||||
public Long getTruncateRpcTimeout();
|
||||
public void setTruncateRpcTimeout(Long timeoutInMillis);
|
||||
|
||||
public void reloadTriggerClass();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1062,10 +1062,7 @@ public class CassandraServer implements Cassandra.Iface
|
|||
schedule(DatabaseDescriptor.getWriteRpcTimeout());
|
||||
try
|
||||
{
|
||||
if (mutateAtomically)
|
||||
StorageProxy.mutateAtomically((List<RowMutation>) mutations, consistencyLevel);
|
||||
else
|
||||
StorageProxy.mutate(mutations, consistencyLevel);
|
||||
StorageProxy.mutateWithTriggers(mutations, consistencyLevel, mutateAtomically);
|
||||
}
|
||||
catch (RequestExecutionException e)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,113 @@
|
|||
package org.apache.cassandra.triggers;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOError;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.io.Files;
|
||||
|
||||
/**
|
||||
* Custom class loader will load the classes from the class path, CCL will load
|
||||
* the classes from the the URL first, if it cannot find the required class it
|
||||
* will let the parent class loader do the its job.
|
||||
*
|
||||
* Note: If the CCL is GC'ed then the associated classes will be unloaded.
|
||||
*/
|
||||
public class CustomClassLoader extends URLClassLoader
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(CustomClassLoader.class);
|
||||
private static final String[] PACKAGE_EXCLUSION_LIST = new String[] {"org.apache.log4j", "org.slf4j"};
|
||||
private final Map<String, Class<?>> cache = new ConcurrentHashMap<String, Class<?>>();
|
||||
private final ClassLoader parent;
|
||||
|
||||
public CustomClassLoader(ClassLoader parent)
|
||||
{
|
||||
super(new URL[] {}, parent);
|
||||
assert parent != null;
|
||||
this.parent = getParent();
|
||||
}
|
||||
|
||||
public CustomClassLoader(ClassLoader parent, File classPathDir)
|
||||
{
|
||||
super(new URL[] {}, parent);
|
||||
assert parent != null;
|
||||
this.parent = getParent();
|
||||
addClassPath(classPathDir);
|
||||
}
|
||||
|
||||
public void addClassPath(File dir)
|
||||
{
|
||||
if (dir == null || !dir.exists())
|
||||
return;
|
||||
FilenameFilter filter = new FilenameFilter() {
|
||||
public boolean accept(File dir, String name) {
|
||||
return name.endsWith(".jar");
|
||||
}
|
||||
};
|
||||
for (File inputJar : dir.listFiles(filter))
|
||||
{
|
||||
File lib = new File(System.getProperty("java.io.tmpdir"), "lib");
|
||||
if (!lib.exists())
|
||||
{
|
||||
lib.mkdir();
|
||||
lib.deleteOnExit();
|
||||
}
|
||||
try
|
||||
{
|
||||
File out = File.createTempFile("cassandra-", ".jar", lib);
|
||||
out.deleteOnExit();
|
||||
logger.info("Loading new jar {}", inputJar.getAbsolutePath());
|
||||
Files.copy(inputJar, out);
|
||||
addURL(out.toURL());
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
throw new IOError(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> loadClass(String name) throws ClassNotFoundException
|
||||
{
|
||||
Class<?> clazz = cache.get(name);
|
||||
if (clazz == null)
|
||||
return loadClassInternal(name);
|
||||
return clazz;
|
||||
}
|
||||
|
||||
public synchronized Class<?> loadClassInternal(String name) throws ClassNotFoundException
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!isExcluded(name))
|
||||
return parent.loadClass(name);
|
||||
}
|
||||
catch (ClassNotFoundException ex)
|
||||
{
|
||||
logger.debug("Class not found using parent class loader,", ex);
|
||||
// Don't throw the exception here, try triggers directory.
|
||||
}
|
||||
Class<?> clazz = this.findClass(name);
|
||||
cache.put(name, clazz);
|
||||
return clazz;
|
||||
}
|
||||
|
||||
private boolean isExcluded(String name)
|
||||
{
|
||||
for (String exclusion : PACKAGE_EXCLUSION_LIST)
|
||||
{
|
||||
if (name.startsWith(exclusion))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package org.apache.cassandra.triggers;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.apache.cassandra.db.ColumnFamily;
|
||||
import org.apache.cassandra.db.RowMutation;
|
||||
|
||||
/**
|
||||
* Trigger interface, For every Mutation received by the coordinator {@link #augment(ByteBuffer, ColumnFamily)}
|
||||
* is called.<p>
|
||||
*
|
||||
* <b> Contract:</b><br>
|
||||
* 1) Implementation of this interface should only have a constructor without parameters <br>
|
||||
* 2) ITrigger implementation can be instantiated multiple times during the server life time.
|
||||
* (Depends on the number of times trigger folder is updated.)<br>
|
||||
* 3) ITrigger implementation should be state-less (avoid dependency on instance variables).<br>
|
||||
*
|
||||
* <br><b>The API is still beta and can change.</b>
|
||||
*/
|
||||
public interface ITrigger
|
||||
{
|
||||
/**
|
||||
* Called exactly once per CF update, returned mutations are atomically updated.
|
||||
*
|
||||
* @param key - Row Key for the update.
|
||||
* @param update - Update received for the CF
|
||||
* @return modifications to be applied, null if no action to be performed.
|
||||
*/
|
||||
public Collection<RowMutation> augment(ByteBuffer key, ColumnFamily update);
|
||||
}
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
package org.apache.cassandra.triggers;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.cassandra.cql.QueryProcessor;
|
||||
import org.apache.cassandra.db.ColumnFamily;
|
||||
import org.apache.cassandra.db.CounterMutation;
|
||||
import org.apache.cassandra.db.IMutation;
|
||||
import org.apache.cassandra.db.RowMutation;
|
||||
import org.apache.cassandra.exceptions.InvalidRequestException;
|
||||
import org.apache.cassandra.utils.FBUtilities;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
public class TriggerExecutor
|
||||
{
|
||||
public static final TriggerExecutor instance = new TriggerExecutor();
|
||||
|
||||
private final Map<String, ITrigger> cachedTriggers = Maps.newConcurrentMap();
|
||||
private final ClassLoader parent = Thread.currentThread().getContextClassLoader();
|
||||
private final File triggerDirectory = new File(FBUtilities.cassandraHomeDir(), "triggers");
|
||||
private volatile ClassLoader customClassLoader;
|
||||
|
||||
private TriggerExecutor()
|
||||
{
|
||||
reloadClasses();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the triggers which is already loaded, Invoking this will update
|
||||
* the class loader so new jars can be loaded.
|
||||
*/
|
||||
public void reloadClasses()
|
||||
{
|
||||
customClassLoader = new CustomClassLoader(parent, triggerDirectory);
|
||||
cachedTriggers.clear();
|
||||
}
|
||||
|
||||
public Collection<RowMutation> execute(Collection<? extends IMutation> updates) throws InvalidRequestException
|
||||
{
|
||||
boolean hasCounters = false;
|
||||
Collection<RowMutation> tmutations = null;
|
||||
for (IMutation mutation : updates)
|
||||
{
|
||||
for (ColumnFamily cf : mutation.getColumnFamilies())
|
||||
{
|
||||
List<RowMutation> intermediate = execute(mutation.key(), cf);
|
||||
if (intermediate == null)
|
||||
continue;
|
||||
|
||||
validate(intermediate);
|
||||
if (tmutations == null)
|
||||
tmutations = intermediate;
|
||||
else
|
||||
tmutations.addAll(intermediate);
|
||||
}
|
||||
if (mutation instanceof CounterMutation)
|
||||
hasCounters = true;
|
||||
}
|
||||
if (tmutations != null && hasCounters)
|
||||
throw new InvalidRequestException("Counter mutations and trigger mutations cannot be applied together atomically.");
|
||||
return tmutations;
|
||||
}
|
||||
|
||||
private void validate(Collection<RowMutation> tmutations) throws InvalidRequestException
|
||||
{
|
||||
for (RowMutation mutation : tmutations)
|
||||
{
|
||||
QueryProcessor.validateKey(mutation.key());
|
||||
for (ColumnFamily tcf : mutation.getColumnFamilies())
|
||||
for (ByteBuffer tName : tcf.getColumnNames())
|
||||
QueryProcessor.validateColumn(tcf.metadata(), tName, tcf.getColumn(tName).value());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch class loader before using the triggers for the column family, if
|
||||
* not loaded them with the custom class loader.
|
||||
*/
|
||||
private List<RowMutation> execute(ByteBuffer key, ColumnFamily columnFamily)
|
||||
{
|
||||
Set<String> triggerNames = columnFamily.metadata().getTriggerClass();
|
||||
if (triggerNames == null)
|
||||
return null;
|
||||
List<RowMutation> tmutations = Lists.newLinkedList();
|
||||
Thread.currentThread().setContextClassLoader(customClassLoader);
|
||||
try
|
||||
{
|
||||
for (String triggerName : triggerNames)
|
||||
{
|
||||
ITrigger trigger = cachedTriggers.get(triggerName);
|
||||
if (trigger == null)
|
||||
{
|
||||
trigger = loadTriggerInstance(triggerName);
|
||||
cachedTriggers.put(triggerName, trigger);
|
||||
}
|
||||
Collection<RowMutation> temp = trigger.augment(key, columnFamily);
|
||||
if (temp != null)
|
||||
tmutations.addAll(temp);
|
||||
}
|
||||
return tmutations;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new RuntimeException(String.format("Exception while creating trigger a trigger on CF with ID: %s", columnFamily.id()), ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Thread.currentThread().setContextClassLoader(parent);
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized ITrigger loadTriggerInstance(String triggerName) throws Exception
|
||||
{
|
||||
// double check.
|
||||
if (cachedTriggers.get(triggerName) != null)
|
||||
return cachedTriggers.get(triggerName);
|
||||
|
||||
Constructor<? extends ITrigger> costructor = (Constructor<? extends ITrigger>) customClassLoader.loadClass(triggerName).getConstructor(new Class<?>[0]);
|
||||
return costructor.newInstance(new Object[0]);
|
||||
}
|
||||
}
|
||||
|
|
@ -333,6 +333,12 @@ public class FBUtilities
|
|||
return scpurl.getFile();
|
||||
}
|
||||
|
||||
public static File cassandraHomeDir()
|
||||
{
|
||||
String libDir = new File(FBUtilities.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent();
|
||||
return new File(new File(libDir).getParent());
|
||||
}
|
||||
|
||||
public static String getReleaseVersionString()
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -650,6 +650,9 @@ commands:
|
|||
- bloom_filter_fp_chance: Desired false positive probability for
|
||||
sstable row bloom filters. Default is 0.000744.
|
||||
|
||||
- trigger_class: Trigger class / set of Trigger classes implementing ITrigger
|
||||
Tigger class is invoked for every insert/update statement.
|
||||
|
||||
- column_type: Type of columns this column family holds, valid values are
|
||||
Standard and Super. Default is Standard.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue