public void addConditions(Clustering clustering, CQL3CasRequest request, QueryOptions options) throws InvalidRequestException { conditions.addConditionsTo(request, clustering, options); }
public Iterable<ColumnDefinition> getColumnsWithConditions() { return conditions.getColumns(); }
public boolean hasConditions() { return !conditions.isEmpty(); }
/** * Rebuilds LWT conditions on SuperColumn _value_ column. * * Conditions have to be changed to correspond the internal representation of SuperColumn value, since it's not * a separate column, but a value in a hidden compact value column. */ public static Conditions rebuildLWTColumnConditions(Conditions conditions, CFMetaData cfm, WhereClause whereClause) { if (conditions.isEmpty() || conditions.isIfExists() || conditions.isIfNotExists()) return conditions; ColumnConditions.Builder builder = ColumnConditions.newBuilder(); Collection<ColumnCondition> columnConditions = ((ColumnConditions) conditions).columnConditions(); Pair<ColumnDefinition, Relation> superColumnKeyRelation = SuperColumnCompatibility.getSuperColumnKeyRelation(whereClause.relations, cfm); checkNotNull(superColumnKeyRelation, "Lightweight transactions on SuperColumn tables are only supported with supplied SuperColumn key"); for (ColumnCondition columnCondition : columnConditions) { checkTrue(cfm.isSuperColumnValueColumn(columnCondition.column), "Lightweight transactions are only supported on the value column of SuperColumn tables"); Term.Raw value = superColumnKeyRelation.right.getValue(); Term collectionElemnt = value instanceof AbstractMarker.Raw ? new Constants.Marker(((AbstractMarker.Raw) value).bindIndex(), superColumnKeyRelation.left) : value.prepare(cfm.ksName, superColumnKeyRelation.left); builder.add(ColumnCondition.condition(cfm.compactValueColumn(), collectionElemnt, columnCondition.value(), columnCondition.operator)); } return builder.build(); }
/** * Checks that the specified operations and conditions only apply to static columns. * @return <code>true</code> if the specified operations and conditions only apply to static columns, * <code>false</code> otherwise. */ public static boolean appliesOnlyToStaticColumns(Operations operation, Conditions conditions) { return !operation.appliesToRegularColumns() && !conditions.appliesToRegularColumns() && (operation.appliesToStaticColumns() || conditions.appliesToStaticColumns()); }
this.attrs = attrs; if (!conditions.isEmpty()) Iterable<ColumnDefinition> columns = conditions.getColumns(); if (columns != null) conditionColumnsBuilder.addAll(columns);
public void addFunctionsTo(List<Function> functions) { attrs.addFunctionsTo(functions); restrictions.addFunctionsTo(functions); operations.addFunctionsTo(functions); conditions.addFunctionsTo(functions); }
public boolean hasIfExistCondition() { return conditions.isIfExists(); }
public boolean hasIfNotExistCondition() { return conditions.isIfNotExists(); }
checkFalse(conditions.appliesToRegularColumns(), "DELETE statements must restrict all PRIMARY KEY columns with equality relations" + " in order to use IF condition on non static columns");
/** * Rebuilds LWT conditions on SuperColumn _value_ column. * * Conditions have to be changed to correspond the internal representation of SuperColumn value, since it's not * a separate column, but a value in a hidden compact value column. */ public static Conditions rebuildLWTColumnConditions(Conditions conditions, CFMetaData cfm, WhereClause whereClause) { if (conditions.isEmpty() || conditions.isIfExists() || conditions.isIfNotExists()) return conditions; ColumnConditions.Builder builder = ColumnConditions.newBuilder(); Collection<ColumnCondition> columnConditions = ((ColumnConditions) conditions).columnConditions(); Pair<ColumnDefinition, Relation> superColumnKeyRelation = SuperColumnCompatibility.getSuperColumnKeyRelation(whereClause.relations, cfm); checkNotNull(superColumnKeyRelation, "Lightweight transactions on SuperColumn tables are only supported with supplied SuperColumn key"); for (ColumnCondition columnCondition : columnConditions) { checkTrue(cfm.isSuperColumnValueColumn(columnCondition.column), "Lightweight transactions are only supported on the value column of SuperColumn tables"); Term.Raw value = superColumnKeyRelation.right.getValue(); Term collectionElemnt = value instanceof AbstractMarker.Raw ? new Constants.Marker(((AbstractMarker.Raw) value).bindIndex(), superColumnKeyRelation.left) : value.prepare(cfm.ksName, superColumnKeyRelation.left); builder.add(ColumnCondition.condition(cfm.compactValueColumn(), collectionElemnt, columnCondition.value(), columnCondition.operator)); } return builder.build(); }
/** * Checks that the specified operations and conditions only apply to static columns. * @return <code>true</code> if the specified operations and conditions only apply to static columns, * <code>false</code> otherwise. */ public static boolean appliesOnlyToStaticColumns(Operations operation, Conditions conditions) { return !operation.appliesToRegularColumns() && !conditions.appliesToRegularColumns() && (operation.appliesToStaticColumns() || conditions.appliesToStaticColumns()); }
this.attrs = attrs; if (!conditions.isEmpty()) Iterable<ColumnDefinition> columns = conditions.getColumns(); if (columns != null) conditionColumnsBuilder.addAll(columns);
public void addFunctionsTo(List<Function> functions) { attrs.addFunctionsTo(functions); restrictions.addFunctionsTo(functions); operations.addFunctionsTo(functions); conditions.addFunctionsTo(functions); }
public boolean hasIfExistCondition() { return conditions.isIfExists(); }
public boolean hasIfNotExistCondition() { return conditions.isIfNotExists(); }
checkFalse(conditions.appliesToRegularColumns(), "DELETE statements must restrict all PRIMARY KEY columns with equality relations" + " in order to use IF condition on non static columns");
/** * Rebuilds LWT conditions on SuperColumn _value_ column. * * Conditions have to be changed to correspond the internal representation of SuperColumn value, since it's not * a separate column, but a value in a hidden compact value column. */ public static Conditions rebuildLWTColumnConditions(Conditions conditions, CFMetaData cfm, WhereClause whereClause) { if (conditions.isEmpty() || conditions.isIfExists() || conditions.isIfNotExists()) return conditions; ColumnConditions.Builder builder = ColumnConditions.newBuilder(); Collection<ColumnCondition> columnConditions = ((ColumnConditions) conditions).columnConditions(); Pair<ColumnDefinition, Relation> superColumnKeyRelation = SuperColumnCompatibility.getSuperColumnKeyRelation(whereClause.relations, cfm); checkNotNull(superColumnKeyRelation, "Lightweight transactions on SuperColumn tables are only supported with supplied SuperColumn key"); for (ColumnCondition columnCondition : columnConditions) { checkTrue(cfm.isSuperColumnValueColumn(columnCondition.column), "Lightweight transactions are only supported on the value column of SuperColumn tables"); Term.Raw value = superColumnKeyRelation.right.getValue(); Term collectionElemnt = value instanceof AbstractMarker.Raw ? new Constants.Marker(((AbstractMarker.Raw) value).bindIndex(), superColumnKeyRelation.left) : value.prepare(cfm.ksName, superColumnKeyRelation.left); builder.add(ColumnCondition.condition(cfm.compactValueColumn(), collectionElemnt, columnCondition.value(), columnCondition.operator)); } return builder.build(); }
/** * Checks that the specified operations and conditions only apply to static columns. * @return <code>true</code> if the specified operations and conditions only apply to static columns, * <code>false</code> otherwise. */ public static boolean appliesOnlyToStaticColumns(Operations operation, Conditions conditions) { return !operation.appliesToRegularColumns() && !conditions.appliesToRegularColumns() && (operation.appliesToStaticColumns() || conditions.appliesToStaticColumns()); }
this.attrs = attrs; if (!conditions.isEmpty()) Iterable<ColumnDefinition> columns = conditions.getColumns(); if (columns != null) conditionColumnsBuilder.addAll(columns);