private void rebuild() { this.comparator = new ClusteringComparator(extractTypes(clusteringColumns)); Map<ByteBuffer, ColumnDefinition> newColumnMetadata = Maps.newHashMapWithExpectedSize(partitionKeyColumns.size() + clusteringColumns.size() + partitionColumns.size()); for (ColumnDefinition def : partitionKeyColumns) newColumnMetadata.put(def.name.bytes, def); for (ColumnDefinition def : clusteringColumns) newColumnMetadata.put(def.name.bytes, def); for (ColumnDefinition def : partitionColumns) newColumnMetadata.put(def.name.bytes, def); this.columnMetadata = newColumnMetadata; List<AbstractType<?>> keyTypes = extractTypes(partitionKeyColumns); this.keyValidator = keyTypes.size() == 1 ? keyTypes.get(0) : CompositeType.getInstance(keyTypes); if (isCompactTable()) this.compactValueColumn = CompactTables.getCompactValueColumn(partitionColumns, isSuper()); this.allColumnFilter = ColumnFilter.all(this); }
static long serializedNamesFilterSize(ClusteringIndexNamesFilter filter, CFMetaData metadata, PartitionColumns fetchedColumns) { SortedSet<Clustering> requestedRows = filter.requestedRows(); long size = 0; if (requestedRows.isEmpty()) { // only static columns are requested size += TypeSizes.sizeof(fetchedColumns.size()); for (ColumnDefinition column : fetchedColumns) size += ByteBufferUtil.serializedSizeWithShortLength(column.name.bytes); } else { size += TypeSizes.sizeof(requestedRows.size() * fetchedColumns.size()); for (Clustering clustering : requestedRows) { for (ColumnDefinition column : fetchedColumns) size += ByteBufferUtil.serializedSizeWithShortLength(LegacyLayout.encodeCellName(metadata, clustering, column.name.bytes, null)); } } return size + TypeSizes.sizeof(true); // countCql3Rows }
static long serializedNamesFilterSize(ClusteringIndexNamesFilter filter, CFMetaData metadata, PartitionColumns fetchedColumns) { SortedSet<Clustering> requestedRows = filter.requestedRows(); long size = 0; if (requestedRows.isEmpty()) { // only static columns are requested size += TypeSizes.sizeof(fetchedColumns.size()); for (ColumnDefinition column : fetchedColumns) size += ByteBufferUtil.serializedSizeWithShortLength(column.name.bytes); } else { size += TypeSizes.sizeof(requestedRows.size() * fetchedColumns.size()); for (Clustering clustering : requestedRows) { for (ColumnDefinition column : fetchedColumns) size += ByteBufferUtil.serializedSizeWithShortLength(LegacyLayout.encodeCellName(metadata, clustering, column.name.bytes, null)); } } return size + TypeSizes.sizeof(true); // countCql3Rows }
private static List<ColumnDefinition> getPartitionColumns(CFMetaData metadata) { List<ColumnDefinition> cds = new ArrayList<>(metadata.partitionColumns().size()); for (ColumnDefinition cd : metadata.partitionColumns().statics) cds.add(cd); if (metadata.isDense()) { // remove an empty type for (ColumnDefinition cd : metadata.partitionColumns().withoutStatics()) if (!cd.type.equals(EmptyType.instance)) cds.add(cd); } // "regular" columns are not exposed for static compact tables else if (!metadata.isStaticCompactTable()) { for (ColumnDefinition cd : metadata.partitionColumns().withoutStatics()) cds.add(cd); } return cds; }
/** * Whether or not the given metadata is compatible / representable with CQL Language */ public static boolean isCqlCompatible(CFMetaData metaData) { if (metaData.isSuper()) return false; if (metaData.isCompactTable() && metaData.partitionColumns().withoutStatics().size() > 1 && metaData.clusteringColumns().size() >= 1) return false; return true; } }
/** * Whether or not the given metadata is compatible / representable with CQL Language */ public static boolean isCqlCompatible(CFMetaData metaData) { if (metaData.isSuper()) return false; if (metaData.isCompactTable() && metaData.partitionColumns().withoutStatics().size() > 1 && metaData.clusteringColumns().size() >= 1) return false; return true; } }
static long serializedNamesFilterSize(ClusteringIndexNamesFilter filter, CFMetaData metadata, PartitionColumns fetchedColumns) { SortedSet<Clustering> requestedRows = filter.requestedRows(); long size = 0; if (requestedRows.isEmpty()) { // only static columns are requested size += TypeSizes.sizeof(fetchedColumns.size()); for (ColumnDefinition column : fetchedColumns) size += ByteBufferUtil.serializedSizeWithShortLength(column.name.bytes); } else { size += TypeSizes.sizeof(requestedRows.size() * fetchedColumns.size()); for (Clustering clustering : requestedRows) { for (ColumnDefinition column : fetchedColumns) size += ByteBufferUtil.serializedSizeWithShortLength(LegacyLayout.encodeCellName(metadata, clustering, column.name.bytes, null)); } } return size + TypeSizes.sizeof(true); // countCql3Rows }
private static List<ColumnDefinition> getPartitionColumns(CFMetaData metadata) { List<ColumnDefinition> cds = new ArrayList<>(metadata.partitionColumns().size()); for (ColumnDefinition cd : metadata.partitionColumns().statics) cds.add(cd); if (metadata.isDense()) { // remove an empty type for (ColumnDefinition cd : metadata.partitionColumns().withoutStatics()) if (!cd.type.equals(EmptyType.instance)) cds.add(cd); } // "regular" columns are not exposed for static compact tables else if (!metadata.isStaticCompactTable()) { for (ColumnDefinition cd : metadata.partitionColumns().withoutStatics()) cds.add(cd); } return cds; }
private static List<ColumnDefinition> getPartitionColumns(CFMetaData metadata) { List<ColumnDefinition> cds = new ArrayList<>(metadata.partitionColumns().size()); for (ColumnDefinition cd : metadata.partitionColumns().statics) cds.add(cd); if (metadata.isDense()) { // remove an empty type for (ColumnDefinition cd : metadata.partitionColumns().withoutStatics()) if (!cd.type.equals(EmptyType.instance)) cds.add(cd); } // "regular" columns are not exposed for static compact tables else if (!metadata.isStaticCompactTable()) { for (ColumnDefinition cd : metadata.partitionColumns().withoutStatics()) cds.add(cd); } return cds; }
/** * Whether or not the given metadata is compatible / representable with CQL Language */ public static boolean isCqlCompatible(CFMetaData metaData) { if (metaData.isSuper()) return false; if (metaData.isCompactTable() && metaData.partitionColumns().withoutStatics().size() > 1 && metaData.clusteringColumns().size() >= 1) return false; return true; } }
Map<ByteBuffer, ColumnDefinition> newColumnMetadata = Maps.newHashMapWithExpectedSize(partitionKeyColumns.size() + clusteringColumns.size() + partitionColumns.size());
Map<ByteBuffer, ColumnDefinition> newColumnMetadata = Maps.newHashMapWithExpectedSize(partitionKeyColumns.size() + clusteringColumns.size() + partitionColumns.size());
Map<ByteBuffer, ColumnDefinition> newColumnMetadata = Maps.newHashMapWithExpectedSize(partitionKeyColumns.size() + clusteringColumns.size() + partitionColumns.size());
public Indexer indexerFor(DecoratedKey key, PartitionColumns columns, int nowInSec, Group opGroup, Type transactionType) { if (isIndexing()) { if (transactionType == Type.COMPACTION && !this.mappingInfo.indexOnCompaction) return null; boolean found = (columns.size() == 0); if (!found) { for(ColumnDefinition cd : columns) { if (this.mappingInfo.fieldsToIdx.containsKey(cd.name.toString())) { found = true; break; } } } if (found) { try { if (baseCfs.getComparator().size() == 0) return this.mappingInfo.new SkinnyRowcumentIndexer(key, columns, nowInSec, opGroup, transactionType); else return this.mappingInfo.new WideRowcumentIndexer(key, columns, nowInSec, opGroup, transactionType); } catch (Throwable e) { throw new RuntimeException(e); } } } return null; }
private static void serializeNamesFilter(ReadCommand command, ClusteringIndexNamesFilter filter, DataOutputPlus out) throws IOException { PartitionColumns columns = command.columnFilter().fetchedColumns(); CFMetaData metadata = command.metadata(); SortedSet<Clustering> requestedRows = filter.requestedRows(); if (requestedRows.isEmpty()) { // only static columns are requested out.writeInt(columns.size()); for (ColumnDefinition column : columns) ByteBufferUtil.writeWithShortLength(column.name.bytes, out); } else { out.writeInt(requestedRows.size() * columns.size()); for (Clustering clustering : requestedRows) { for (ColumnDefinition column : columns) ByteBufferUtil.writeWithShortLength(LegacyLayout.encodeCellName(metadata, clustering, column.name.bytes, null), out); } } // countCql3Rows should be true if it's not for Thrift or a DISTINCT query if (command.isForThrift() || (command.limits().kind() == DataLimits.Kind.CQL_LIMIT && command.limits().perPartitionCount() == 1)) out.writeBoolean(false); // it's compact and not a DISTINCT query else out.writeBoolean(true); }
private static void serializeNamesFilter(ReadCommand command, ClusteringIndexNamesFilter filter, DataOutputPlus out) throws IOException { PartitionColumns columns = command.columnFilter().fetchedColumns(); CFMetaData metadata = command.metadata(); SortedSet<Clustering> requestedRows = filter.requestedRows(); if (requestedRows.isEmpty()) { // only static columns are requested out.writeInt(columns.size()); for (ColumnDefinition column : columns) ByteBufferUtil.writeWithShortLength(column.name.bytes, out); } else { out.writeInt(requestedRows.size() * columns.size()); for (Clustering clustering : requestedRows) { for (ColumnDefinition column : columns) ByteBufferUtil.writeWithShortLength(LegacyLayout.encodeCellName(metadata, clustering, column.name.bytes, null), out); } } // countCql3Rows should be true if it's not for Thrift or a DISTINCT query if (command.isForThrift() || (command.limits().kind() == DataLimits.Kind.CQL_LIMIT && command.limits().perPartitionCount() == 1)) out.writeBoolean(false); // it's compact and not a DISTINCT query else out.writeBoolean(true); }
private static void serializeNamesFilter(ReadCommand command, ClusteringIndexNamesFilter filter, DataOutputPlus out) throws IOException { PartitionColumns columns = command.columnFilter().fetchedColumns(); CFMetaData metadata = command.metadata(); SortedSet<Clustering> requestedRows = filter.requestedRows(); if (requestedRows.isEmpty()) { // only static columns are requested out.writeInt(columns.size()); for (ColumnDefinition column : columns) ByteBufferUtil.writeWithShortLength(column.name.bytes, out); } else { out.writeInt(requestedRows.size() * columns.size()); for (Clustering clustering : requestedRows) { for (ColumnDefinition column : columns) ByteBufferUtil.writeWithShortLength(LegacyLayout.encodeCellName(metadata, clustering, column.name.bytes, null), out); } } // countCql3Rows should be true if it's not for Thrift or a DISTINCT query if (command.isForThrift() || (command.limits().kind() == DataLimits.Kind.CQL_LIMIT && command.limits().perPartitionCount() == 1)) out.writeBoolean(false); // it's compact and not a DISTINCT query else out.writeBoolean(true); }