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; }
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; } }
/** * 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 ColumnFilter getColumnSelectionForSlice(boolean selectsStatics, int compositesToGroup, CFMetaData metadata) { // A value of -2 indicates this is a DISTINCT query that doesn't select static columns, only partition keys. // In that case, we'll basically be querying the first row of the partition, but we must make sure we include // all columns so we get at least one cell if there is a live row as it would confuse pre-3.0 nodes otherwise. if (compositesToGroup == -2) return ColumnFilter.all(metadata); // if a slice query from a pre-3.0 node doesn't cover statics, we shouldn't select them at all PartitionColumns columns = selectsStatics ? metadata.partitionColumns() : metadata.partitionColumns().withoutStatics(); return ColumnFilter.selectionBuilder().addAll(columns).build(); } }
static ColumnFilter getColumnSelectionForSlice(boolean selectsStatics, int compositesToGroup, CFMetaData metadata) { // A value of -2 indicates this is a DISTINCT query that doesn't select static columns, only partition keys. // In that case, we'll basically be querying the first row of the partition, but we must make sure we include // all columns so we get at least one cell if there is a live row as it would confuse pre-3.0 nodes otherwise. if (compositesToGroup == -2) return ColumnFilter.all(metadata); // if a slice query from a pre-3.0 node doesn't cover statics, we shouldn't select them at all PartitionColumns columns = selectsStatics ? metadata.partitionColumns() : metadata.partitionColumns().withoutStatics(); return ColumnFilter.selectionBuilder().addAll(columns).build(); } }
static ColumnFilter getColumnSelectionForSlice(boolean selectsStatics, int compositesToGroup, CFMetaData metadata) { // A value of -2 indicates this is a DISTINCT query that doesn't select static columns, only partition keys. // In that case, we'll basically be querying the first row of the partition, but we must make sure we include // all columns so we get at least one cell if there is a live row as it would confuse pre-3.0 nodes otherwise. if (compositesToGroup == -2) return ColumnFilter.all(metadata); // if a slice query from a pre-3.0 node doesn't cover statics, we shouldn't select them at all PartitionColumns columns = selectsStatics ? metadata.partitionColumns() : metadata.partitionColumns().withoutStatics(); return ColumnFilter.selectionBuilder().addAll(columns).build(); } }
public SinglePartitionReadCommand readCommand(int nowInSec) { if (expected.isEmpty()) { // We want to know if the partition exists, so just fetch a single cell. ClusteringIndexSliceFilter filter = new ClusteringIndexSliceFilter(Slices.ALL, false); DataLimits limits = DataLimits.thriftLimits(1, 1); return SinglePartitionReadCommand.create(true, metadata, nowInSec, ColumnFilter.all(metadata), RowFilter.NONE, limits, key, filter); } // Gather the clustering for the expected values and query those. BTreeSet.Builder<Clustering> clusterings = BTreeSet.builder(metadata.comparator); FilteredPartition expectedPartition = FilteredPartition.create(LegacyLayout.toRowIterator(metadata, key, expected.iterator(), nowInSec)); for (Row row : expectedPartition) clusterings.add(row.clustering()); PartitionColumns columns = expectedPartition.staticRow().isEmpty() ? metadata.partitionColumns().withoutStatics() : metadata.partitionColumns(); ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(clusterings.build(), false); return SinglePartitionReadCommand.create(true, metadata, nowInSec, ColumnFilter.selection(columns), RowFilter.NONE, DataLimits.NONE, key, filter); }
public SinglePartitionReadCommand readCommand(int nowInSec) { if (expected.isEmpty()) { // We want to know if the partition exists, so just fetch a single cell. ClusteringIndexSliceFilter filter = new ClusteringIndexSliceFilter(Slices.ALL, false); DataLimits limits = DataLimits.thriftLimits(1, 1); return SinglePartitionReadCommand.create(true, metadata, nowInSec, ColumnFilter.all(metadata), RowFilter.NONE, limits, key, filter); } // Gather the clustering for the expected values and query those. BTreeSet.Builder<Clustering> clusterings = BTreeSet.builder(metadata.comparator); FilteredPartition expectedPartition = FilteredPartition.create(LegacyLayout.toRowIterator(metadata, key, expected.iterator(), nowInSec)); for (Row row : expectedPartition) clusterings.add(row.clustering()); PartitionColumns columns = expectedPartition.staticRow().isEmpty() ? metadata.partitionColumns().withoutStatics() : metadata.partitionColumns(); ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(clusterings.build(), false); return SinglePartitionReadCommand.create(true, metadata, nowInSec, ColumnFilter.selection(columns), RowFilter.NONE, DataLimits.NONE, key, filter); }