private void validateDistinctSelection() throws InvalidRequestException { Collection<ColumnDefinition> requestedColumns = selection.getColumns(); for (ColumnDefinition def : requestedColumns) if (def.kind != ColumnDefinition.Kind.PARTITION_KEY && def.kind != ColumnDefinition.Kind.STATIC) throw new InvalidRequestException(String.format("SELECT DISTINCT queries must only request partition key columns and/or static columns (not %s)", def.name)); // If it's a key range, we require that all partition key columns are selected so we don't have to bother with post-query grouping. if (!isKeyRange) return; for (ColumnDefinition def : cfm.partitionKeyColumns()) if (!requestedColumns.contains(def)) throw new InvalidRequestException(String.format("SELECT DISTINCT queries must request all the partition key columns (missing %s)", def.name)); }
/** Returns true if a non-frozen collection is selected, false otherwise. */ private boolean selectACollection() { if (!cfm.comparator.hasCollections()) return false; for (ColumnDefinition def : selection.getColumns()) { if (def.type.isCollection() && def.type.isMultiCell()) return true; } return false; }
private void initStaticColumnsInfo() { if (!cfm.hasStaticColumns()) return; // If it's a wildcard, we do select static but not only them if (selection.isWildcard()) { selectsStaticColumns = true; return; } // Otherwise, check the selected columns selectsStaticColumns = !Iterables.isEmpty(Iterables.filter(selection.getColumns(), isStaticFilter)); selectsOnlyStaticColumns = true; for (ColumnDefinition def : selection.getColumns()) { if (def.kind != ColumnDefinition.Kind.PARTITION_KEY && def.kind != ColumnDefinition.Kind.STATIC) { selectsOnlyStaticColumns = false; break; } } }
for (ColumnDefinition def : selection.getColumns()) if (def.kind == ColumnDefinition.Kind.REGULAR || def.kind == ColumnDefinition.Kind.STATIC) columns.add(cfm.comparator.create(prefix, def));
for (ColumnDefinition def : selection.getColumns()) for (ColumnDefinition def : selection.getColumns())