private Builder addSubSelection(ColumnSubselection subSelection) { add(subSelection.column()); if (subSelections == null) subSelections = new ArrayList<>(); subSelections.add(subSelection); return this; }
private Builder addSubSelection(ColumnSubselection subSelection) { add(subSelection.column()); if (subSelections == null) subSelections = new ArrayList<>(); subSelections.add(subSelection); return this; }
private Builder addSubSelection(ColumnSubselection subSelection) { add(subSelection.column()); if (subSelections == null) subSelections = new ArrayList<>(); subSelections.add(subSelection); return this; }
private void updateWithCurrentValuesFromCFS(List<PartitionUpdate.CounterMark> marks, ColumnFamilyStore cfs) { ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); BTreeSet.Builder<Clustering> names = BTreeSet.builder(cfs.metadata.comparator); for (PartitionUpdate.CounterMark mark : marks) { if (mark.clustering() != Clustering.STATIC_CLUSTERING) names.add(mark.clustering()); if (mark.path() == null) builder.add(mark.column()); else builder.select(mark.column(), mark.path()); } int nowInSec = FBUtilities.nowInSeconds(); ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(names.build(), false); SinglePartitionReadCommand cmd = SinglePartitionReadCommand.create(cfs.metadata, nowInSec, key(), builder.build(), filter); PeekingIterator<PartitionUpdate.CounterMark> markIter = Iterators.peekingIterator(marks.iterator()); try (ReadExecutionController controller = cmd.executionController(); RowIterator partition = UnfilteredRowIterators.filter(cmd.queryMemtableAndDisk(cfs, controller), nowInSec)) { updateForRow(markIter, partition.staticRow(), cfs); while (partition.hasNext()) { if (!markIter.hasNext()) return; updateForRow(markIter, partition.next(), cfs); } } }
private void updateWithCurrentValuesFromCFS(List<PartitionUpdate.CounterMark> marks, ColumnFamilyStore cfs) { ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); BTreeSet.Builder<Clustering> names = BTreeSet.builder(cfs.metadata.comparator); for (PartitionUpdate.CounterMark mark : marks) { if (mark.clustering() != Clustering.STATIC_CLUSTERING) names.add(mark.clustering()); if (mark.path() == null) builder.add(mark.column()); else builder.select(mark.column(), mark.path()); } int nowInSec = FBUtilities.nowInSeconds(); ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(names.build(), false); SinglePartitionReadCommand cmd = SinglePartitionReadCommand.create(cfs.metadata, nowInSec, key(), builder.build(), filter); PeekingIterator<PartitionUpdate.CounterMark> markIter = Iterators.peekingIterator(marks.iterator()); try (ReadExecutionController controller = cmd.executionController(); RowIterator partition = UnfilteredRowIterators.filter(cmd.queryMemtableAndDisk(cfs, controller), nowInSec)) { updateForRow(markIter, partition.staticRow(), cfs); while (partition.hasNext()) { if (!markIter.hasNext()) return; updateForRow(markIter, partition.next(), cfs); } } }
private void updateWithCurrentValuesFromCFS(List<PartitionUpdate.CounterMark> marks, ColumnFamilyStore cfs) { ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); BTreeSet.Builder<Clustering> names = BTreeSet.builder(cfs.metadata.comparator); for (PartitionUpdate.CounterMark mark : marks) { if (mark.clustering() != Clustering.STATIC_CLUSTERING) names.add(mark.clustering()); if (mark.path() == null) builder.add(mark.column()); else builder.select(mark.column(), mark.path()); } int nowInSec = FBUtilities.nowInSeconds(); ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(names.build(), false); SinglePartitionReadCommand cmd = SinglePartitionReadCommand.create(cfs.metadata, nowInSec, key(), builder.build(), filter); PeekingIterator<PartitionUpdate.CounterMark> markIter = Iterators.peekingIterator(marks.iterator()); try (ReadExecutionController controller = cmd.executionController(); RowIterator partition = UnfilteredRowIterators.filter(cmd.queryMemtableAndDisk(cfs, controller), nowInSec)) { updateForRow(markIter, partition.staticRow(), cfs); while (partition.hasNext()) { if (!markIter.hasNext()) return; updateForRow(markIter, partition.next(), cfs); } } }
private ColumnFilter makeColumnFilter(CFMetaData metadata, ColumnParent parent, SliceRange range) { if (metadata.isSuper() && parent.isSetSuper_column()) { // We want a slice of the dynamic columns ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); ColumnDefinition def = metadata.compactValueColumn(); ByteBuffer start = range.reversed ? range.finish : range.start; ByteBuffer finish = range.reversed ? range.start : range.finish; builder.slice(def, start.hasRemaining() ? CellPath.create(start) : CellPath.BOTTOM, finish.hasRemaining() ? CellPath.create(finish) : CellPath.TOP); if (metadata.isDense()) return builder.build(); // We also want to add any staticly defined column if it's within the range AbstractType<?> cmp = metadata.thriftColumnNameType(); for (ColumnDefinition column : metadata.partitionColumns()) { if (SuperColumnCompatibility.isSuperColumnMapColumn(column)) continue; ByteBuffer name = column.name.bytes; if (cmp.compare(name, start) < 0 || cmp.compare(finish, name) > 0) continue; builder.add(column); } return builder.build(); } return makeColumnFilter(metadata, makeSlices(metadata, range)); }
/** * Creates a PartitionUpdate from a partition containing some schema table content. * This is mainly calling {@code PartitionUpdate.fromIterator} except for the fact that it deals with * the problem described in #12236. */ private static PartitionUpdate makeUpdateForSchema(UnfilteredRowIterator partition, ColumnFilter filter) { // This method is used during schema migration tasks, and if cdc is disabled, we want to force excluding the // 'cdc' column from the TABLES/VIEWS schema table because it is problematic if received by older nodes (see #12236 // and #12697). Otherwise though, we just simply "buffer" the content of the partition into a PartitionUpdate. if (DatabaseDescriptor.isCDCEnabled() || !TABLES_WITH_CDC_ADDED.contains(partition.metadata().cfName)) return PartitionUpdate.fromIterator(partition, filter); // We want to skip the 'cdc' column. A simple solution for that is based on the fact that // 'PartitionUpdate.fromIterator()' will ignore any columns that are marked as 'fetched' but not 'queried'. ColumnFilter.Builder builder = ColumnFilter.allColumnsBuilder(partition.metadata()); for (ColumnDefinition column : filter.fetchedColumns()) { if (!column.name.toString().equals("cdc")) builder.add(column); } return PartitionUpdate.fromIterator(partition, builder.build()); }
/** * Creates a PartitionUpdate from a partition containing some schema table content. * This is mainly calling {@code PartitionUpdate.fromIterator} except for the fact that it deals with * the problem described in #12236. */ private static PartitionUpdate makeUpdateForSchema(UnfilteredRowIterator partition, ColumnFilter filter) { // This method is used during schema migration tasks, and if cdc is disabled, we want to force excluding the // 'cdc' column from the TABLES/VIEWS schema table because it is problematic if received by older nodes (see #12236 // and #12697). Otherwise though, we just simply "buffer" the content of the partition into a PartitionUpdate. if (DatabaseDescriptor.isCDCEnabled() || !TABLES_WITH_CDC_ADDED.contains(partition.metadata().cfName)) return PartitionUpdate.fromIterator(partition, filter); // We want to skip the 'cdc' column. A simple solution for that is based on the fact that // 'PartitionUpdate.fromIterator()' will ignore any columns that are marked as 'fetched' but not 'queried'. ColumnFilter.Builder builder = ColumnFilter.allColumnsBuilder(partition.metadata()); for (ColumnDefinition column : filter.fetchedColumns()) { if (!column.name.toString().equals("cdc")) builder.add(column); } return PartitionUpdate.fromIterator(partition, builder.build()); }
/** * Creates a PartitionUpdate from a partition containing some schema table content. * This is mainly calling {@code PartitionUpdate.fromIterator} except for the fact that it deals with * the problem described in #12236. */ private static PartitionUpdate makeUpdateForSchema(UnfilteredRowIterator partition, ColumnFilter filter) { // This method is used during schema migration tasks, and if cdc is disabled, we want to force excluding the // 'cdc' column from the TABLES/VIEWS schema table because it is problematic if received by older nodes (see #12236 // and #12697). Otherwise though, we just simply "buffer" the content of the partition into a PartitionUpdate. if (DatabaseDescriptor.isCDCEnabled() || !TABLES_WITH_CDC_ADDED.contains(partition.metadata().cfName)) return PartitionUpdate.fromIterator(partition, filter); // We want to skip the 'cdc' column. A simple solution for that is based on the fact that // 'PartitionUpdate.fromIterator()' will ignore any columns that are marked as 'fetched' but not 'queried'. ColumnFilter.Builder builder = ColumnFilter.allColumnsBuilder(partition.metadata()); for (ColumnDefinition column : filter.fetchedColumns()) { if (!column.name.toString().equals("cdc")) builder.add(column); } return PartitionUpdate.fromIterator(partition, builder.build()); }
private ColumnFilter gatherQueriedColumns() { if (selection.isWildcard()) return ColumnFilter.all(cfm); ColumnFilter.Builder builder = ColumnFilter.allColumnsBuilder(cfm); // Adds all selected columns for (ColumnDefinition def : selection.getColumns()) if (!def.isPrimaryKeyColumn()) builder.add(def); // as well as any restricted column (so we can actually apply the restriction) builder.addAll(restrictions.nonPKRestrictedColumns(true)); return builder.build(); }
private ColumnFilter gatherQueriedColumns() { if (selection.isWildcard()) return ColumnFilter.all(cfm); ColumnFilter.Builder builder = ColumnFilter.allColumnsBuilder(cfm); // Adds all selected columns for (ColumnDefinition def : selection.getColumns()) if (!def.isPrimaryKeyColumn()) builder.add(def); // as well as any restricted column (so we can actually apply the restriction) builder.addAll(restrictions.nonPKRestrictedColumns(true)); return builder.build(); }
private ColumnFilter gatherQueriedColumns() { if (selection.isWildcard()) return ColumnFilter.all(cfm); ColumnFilter.Builder builder = ColumnFilter.allColumnsBuilder(cfm); // Adds all selected columns for (ColumnDefinition def : selection.getColumns()) if (!def.isPrimaryKeyColumn()) builder.add(def); // as well as any restricted column (so we can actually apply the restriction) builder.addAll(restrictions.nonPKRestrictedColumns(true)); return builder.build(); }
protected ColumnFilter makeColumnFilter() { if (columns == null || columns.isEmpty()) return ColumnFilter.all(cfs.metadata); ColumnFilter.Builder filter = ColumnFilter.selectionBuilder(); for (ColumnIdentifier column : columns) filter.add(cfs.metadata.getColumnDefinition(column)); return filter.build(); }
private ColumnFilter getExtendedFilter(ColumnFilter initialFilter) { if (command.columnFilter().fetches(index.getIndexedColumn())) return initialFilter; ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); builder.addAll(initialFilter.fetchedColumns()); builder.add(index.getIndexedColumn()); return builder.build(); }
private Builder addSubSelection(ColumnSubselection subSelection) { add(subSelection.column()); if (subSelections == null) subSelections = new ArrayList<>(); subSelections.add(subSelection); return this; }
private ColumnFilter getExtendedFilter(ColumnFilter initialFilter) { if (command.columnFilter().fetches(index.getIndexedColumn())) return initialFilter; ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); builder.addAll(initialFilter.fetchedColumns()); builder.add(index.getIndexedColumn()); return builder.build(); }
protected ColumnFilter makeColumnFilter() { if (columns == null || columns.isEmpty()) return ColumnFilter.all(cfs.metadata); ColumnFilter.Builder filter = ColumnFilter.selectionBuilder(); for (ColumnIdentifier column : columns) filter.add(cfs.metadata.getColumnDefinition(column)); return filter.build(); }
protected ColumnFilter makeColumnFilter() { if (columns == null || columns.isEmpty()) return ColumnFilter.all(cfs.metadata); ColumnFilter.Builder filter = ColumnFilter.selectionBuilder(); for (ColumnIdentifier column : columns) filter.add(cfs.metadata.getColumnDefinition(column)); return filter.build(); }
private ColumnFilter getExtendedFilter(ColumnFilter initialFilter) { if (command.columnFilter().fetches(index.getIndexedColumn())) return initialFilter; ColumnFilter.Builder builder = ColumnFilter.selectionBuilder(); builder.addAll(initialFilter.fetchedColumns()); builder.add(index.getIndexedColumn()); return builder.build(); }