/** * Adds the specified value to the specified builder * * @param builder the CBuilder to which the value must be added * @param def the column associated to the value * @param value the value to add * @throws InvalidRequestException if the value is null */ private static void addValue(CBuilder builder, ColumnDefinition def, ByteBuffer value) throws InvalidRequestException { if (value == null) throw new InvalidRequestException(String.format("Invalid null value in condition for column %s", def.name)); builder.add(value); }
public Composite make(Object... components) { if (components.length > size()) throw new IllegalArgumentException("Too many components, max is " + size()); CBuilder builder = builder(); for (int i = 0; i < components.length; i++) { Object obj = components[i]; if (obj instanceof ByteBuffer) builder.add((ByteBuffer)obj); else builder.add(obj); } return builder.build(); }
protected Composite makeIndexColumnPrefix(ByteBuffer rowKey, Composite columnName) { int count = Math.min(baseCfs.metadata.clusteringColumns().size(), columnName.size()); CBuilder builder = getIndexComparator().prefixBuilder(); builder.add(rowKey); for (int i = 0; i < Math.min(columnDef.position(), count); i++) builder.add(columnName.get(i)); for (int i = columnDef.position() + 1; i < count; i++) builder.add(columnName.get(i)); return builder.build(); }
protected Composite makeIndexColumnPrefix(ByteBuffer rowKey, Composite cellName) { int count = 1 + baseCfs.metadata.clusteringColumns().size(); CBuilder builder = getIndexComparator().builder(); builder.add(rowKey); for (int i = 0; i < Math.min(cellName.size(), count - 1); i++) builder.add(cellName.get(i)); return builder.build(); }
protected Composite makeIndexColumnPrefix(ByteBuffer rowKey, Composite columnName) { int count = Math.min(baseCfs.metadata.clusteringColumns().size(), columnName.size()); CBuilder builder = getIndexComparator().prefixBuilder(); builder.add(rowKey); for (int i = 0; i < count; i++) builder.add(columnName.get(i)); return builder.build(); }
protected Composite makeIndexColumnPrefix(ByteBuffer rowKey, Composite cellName) { CBuilder builder = getIndexComparator().prefixBuilder(); builder.add(rowKey); for (int i = 0; i < Math.min(columnDef.position(), cellName.size()); i++) builder.add(cellName.get(i)); // When indexing, cellName is a full name including the collection // key. When searching, restricted clustering columns are included // but the collection key is not. In this case, don't try to add an // element to the builder for it, as it will just end up null and // error out when retrieving cells from the index cf (CASSANDRA-7525) if (cellName.size() >= columnDef.position() + 1) builder.add(cellName.get(columnDef.position() + 1)); return builder.build(); }
public final Composite start(CellName cellName) { CBuilder builder = clusteringCType.builder(); for (int i = 0; i < cellName.clusteringSize(); i++) { ByteBuffer component = cellName.get(i); builder.add(component); } return builder.build(); }
public ByteBuffer execute(List<ByteBuffer> parameters) throws InvalidRequestException { CBuilder builder = cfm.getKeyValidatorAsCType().builder(); for (int i = 0; i < parameters.size(); i++) { ByteBuffer bb = parameters.get(i); if (bb == null) return null; builder.add(bb); } return partitioner.getTokenFactory().toByteArray(partitioner.getToken(builder.build().toByteBuffer())); } }
public IndexedEntry decodeEntry(DecoratedKey indexedValue, Cell indexEntry) { int ckCount = baseCfs.metadata.clusteringColumns().size(); CBuilder builder = baseCfs.getComparator().builder(); for (int i = 0; i < columnDef.position(); i++) builder.add(indexEntry.name().get(i + 1)); builder.add(indexedValue.getKey()); for (int i = columnDef.position() + 1; i < ckCount; i++) builder.add(indexEntry.name().get(i)); return new IndexedEntry(indexedValue, indexEntry.name(), indexEntry.timestamp(), indexEntry.name().get(0), builder.build()); }
private Composite createClusteringPrefixBuilderInternal(QueryOptions options) throws InvalidRequestException { CBuilder builder = cfm.comparator.prefixBuilder(); ColumnDefinition firstEmptyKey = null; for (ColumnDefinition def : cfm.clusteringColumns()) { Restriction r = processedKeys.get(def.name); if (r == null) { firstEmptyKey = def; if (requireFullClusteringKey() && !cfm.comparator.isDense() && cfm.comparator.isCompound()) throw new InvalidRequestException(String.format("Missing mandatory PRIMARY KEY part %s", def.name)); } else if (firstEmptyKey != null) { throw new InvalidRequestException(String.format("Missing PRIMARY KEY part %s since %s is set", firstEmptyKey.name, def.name)); } else { List<ByteBuffer> values = r.values(options); assert values.size() == 1; // We only allow IN for row keys so far ByteBuffer val = values.get(0); if (val == null) throw new InvalidRequestException(String.format("Invalid null value for clustering key part %s", def.name)); builder.add(val); } } return builder.build(); }
if (val == null) throw new InvalidRequestException(String.format("Invalid null value for partition key part %s", def.name)); keyBuilder.add(val);
if (val == null) throw new InvalidRequestException(String.format("Invalid null value for partition key part %s", def.name)); builder.add(val);
public IndexedEntry decodeEntry(DecoratedKey indexedValue, Cell indexEntry) { int count = 1 + baseCfs.metadata.clusteringColumns().size(); CBuilder builder = baseCfs.getComparator().builder(); for (int i = 0; i < count - 1; i++) builder.add(indexEntry.name().get(i + 1)); return new IndexedEntry(indexedValue, indexEntry.name(), indexEntry.timestamp(), indexEntry.name().get(0), builder.build()); }
public IndexedEntry decodeEntry(DecoratedKey indexedValue, Cell indexEntry) { int ckCount = baseCfs.metadata.clusteringColumns().size(); CBuilder builder = baseCfs.getComparator().builder(); for (int i = 0; i < ckCount; i++) builder.add(indexEntry.name().get(i + 1)); return new IndexedEntry(indexedValue, indexEntry.name(), indexEntry.timestamp(), indexEntry.name().get(0), builder.build()); }
public IndexedEntry decodeEntry(DecoratedKey indexedValue, Cell indexEntry) { int prefixSize = columnDef.position(); CellName name = indexEntry.name(); CBuilder builder = baseCfs.getComparator().builder(); for (int i = 0; i < prefixSize; i++) builder.add(name.get(i + 1)); return new IndexedEntry(indexedValue, name, indexEntry.timestamp(), name.get(0), builder.build(), name.get(prefixSize + 1)); }
public IndexedEntry decodeEntry(DecoratedKey indexedValue, Cell indexEntry) { CBuilder builder = baseCfs.getComparator().builder(); for (int i = 0; i < columnDef.position(); i++) builder.add(indexEntry.name().get(i + 1)); return new IndexedEntry(indexedValue, indexEntry.name(), indexEntry.timestamp(), indexEntry.name().get(0), builder.build()); }
public Row getRowWithMetaColumn(ByteBuffer metaColumnValue) { if (isMetaColumn) { ColumnFamily cleanColumnFamily = ArrayBackedSortedColumns.factory.create(table.metadata); CellNameType cellNameType = table.getComparator(); boolean hasCollections = cellNameType.hasCollections(); int prefixSize = cellNameType.size() - (hasCollections ? 2 : 1); CBuilder builder = cellNameType.builder(); for (int i = 0; i < prefixSize; i++) { AbstractType<?> type = cellNameType.subtype(i); builder.add(Fields.defaultValue(type)); } Composite prefix = builder.build(); Iterable<ColumnDefinition> cols = table.metadata.regularAndStaticColumns(); for (ColumnDefinition columnDef : cols) { if (columnDef.equals(primaryColumnDefinition)) { addColumn(table, cleanColumnFamily, primaryColumnDefinition, prefix, metaColumnValue); } else { addColumn(table, cleanColumnFamily, columnDef, prefix, Fields.defaultValue(columnDef.type)); } } DecoratedKey dk = table.partitioner.decorateKey(defaultPartitionKey); return new Row(dk, cleanColumnFamily); } else { return null; } }
public static SliceQueryFilter fromSCSliceFilter(CellNameType type, ByteBuffer scName, SliceQueryFilter filter) { assert filter.slices.length == 1; if (scName == null) { // The filter is on the super column name CBuilder builder = type.builder(); Composite start = filter.start().isEmpty() ? Composites.EMPTY : builder.buildWith(filter.start().toByteBuffer()).withEOC(filter.reversed ? Composite.EOC.END : Composite.EOC.START); Composite finish = filter.finish().isEmpty() ? Composites.EMPTY : builder.buildWith(filter.finish().toByteBuffer()).withEOC(filter.reversed ? Composite.EOC.START : Composite.EOC.END); return new SliceQueryFilter(start, finish, filter.reversed, filter.count, 1); } else { CBuilder builder = type.builder().add(scName); Composite start = filter.start().isEmpty() ? builder.build().withEOC(filter.reversed ? Composite.EOC.END : Composite.EOC.START) : builder.buildWith(filter.start().toByteBuffer()); Composite end = filter.finish().isEmpty() ? builder.build().withEOC(filter.reversed ? Composite.EOC.START : Composite.EOC.END) : builder.buildWith(filter.finish().toByteBuffer()); return new SliceQueryFilter(start, end, filter.reversed, filter.count); } } }