ekaterinadimitrova2 commented on code in PR #3095:
URL: https://github.com/apache/cassandra/pull/3095#discussion_r1569127435
##########
src/java/org/apache/cassandra/cql3/Operator.java:
##########
@@ -324,23 +561,150 @@ public static Operator readFrom(DataInput input) throws
IOException
throw new IOException(String.format("Cannot resolve Relation.Type
from binary representation: %s", b));
}
+
/**
* Whether 2 values satisfy this operator (given the type they should be
compared with).
*/
public abstract boolean isSatisfiedBy(AbstractType<?> type, ByteBuffer
leftOperand, ByteBuffer rightOperand);
- public int serializedSize()
+
+ public boolean isSatisfiedBy(CollectionType<?> type, ComplexColumnData
leftOperand, ByteBuffer rightOperand)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public static int serializedSize()
{
return 4;
}
+ public void validateFor(ColumnsExpression expression)
+ {
+ if (!this.canBeUsedWith(expression.kind()))
+ throw invalidRequest("%s cannot be used with %s relations", this,
expression);
+
+ switch (expression.kind())
+ {
+ case SINGLE_COLUMN:
+ ColumnMetadata firstColumn = expression.firstColumn();
+ AbstractType<?> columnType = firstColumn.type;
+ if (isSlice())
+ {
+ if (columnType.referencesDuration())
+ {
+ checkFalse(columnType.isCollection(), "Slice
restrictions are not supported on collections containing durations");
+ checkFalse(columnType.isTuple(), "Slice restrictions
are not supported on tuples containing durations");
+ checkFalse(columnType.isUDT(), "Slice restrictions are
not supported on UDTs containing durations");
+ throw invalidRequest("Slice restrictions are not
supported on duration columns");
+ }
+ }
+ else
+ {
+ checkFalse(appliesToMapKeys() && !(columnType instanceof
MapType), "Cannot use %s on non-map column %s", this, firstColumn.name);
+ checkFalse(appliesToCollectionElements() &&
!columnType.isCollection(), "Cannot use %s on non-collection column %s", this,
firstColumn.name);
+ }
+
+ case MAP_ELEMENT:
+ ColumnMetadata column = expression.firstColumn();
+ AbstractType<?> type = column.type;
+ if (type.isMultiCell())
Review Comment:
I am not sure I understand. I did not say we remove the break, but that we
know from below check already that MAP_ELEMENT `isMultiCell`
https://github.com/apache/cassandra/pull/3095/files#diff-32e20318305ede66277b1825cbda4a5ff1612e496f9679961b40bae7fbe19b55R184
EDIT: saw it
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]