[ https://issues.apache.org/jira/browse/CASSANDRA-18484 ]
Brandon Williams deleted comment on CASSANDRA-18484:
----------------------------------------------
was (Author: brandon.williams):
They should be separate tickets at this point, and already are, like
CASSANDRA-18486, so go ahead imo.
> FunctionCall can throw more specific exceptions
> -----------------------------------------------
>
> Key: CASSANDRA-18484
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18484
> Project: Cassandra
> Issue Type: Bug
> Reporter: Hao Zhong
> Assignee: Stefan Miklosovic
> Priority: Normal
> Fix For: 5.x
>
>
> FunctionCall has the following code:
> {code:java}
> private static ByteBuffer executeInternal(ProtocolVersion protocolVersion,
> ScalarFunction fun, List<ByteBuffer> params) throws InvalidRequestException
> {
> ByteBuffer result = fun.execute(protocolVersion, params);
> try
> {
> // Check the method didn't lied on it's declared return type
> if (result != null)
> fun.returnType().validate(result);
> return result;
> }
> catch (MarshalException e)
> {
> throw new RuntimeException(String.format("Return of function %s
> (%s) is not a valid value for its declared return type %s",
> fun,
> ByteBufferUtil.bytesToHex(result), fun.returnType().asCQL3Type()), e);
> }
> }
> {code}
> When validate throws MarshalException, it rethrows RuntimeException. Other
> methods throw more specific exceptions. For example, BytesConversionFcts
> throws
> {color:#000000}InvalidRequestException:{color}
> {code:java}
> public ByteBuffer execute(ProtocolVersion protocolVersion, List<ByteBuffer>
> parameters)
> {
> ByteBuffer val = parameters.get(0);
> if (val != null)
> {
> try
> {
> toType.getType().validate(val);
> }
> catch (MarshalException e)
> {
> throw new InvalidRequestException(String.format("In call
> to function %s, value 0x%s is not a " +
> "valid
> binary representation for type %s",
> name,
> ByteBufferUtil.bytesToHex(val), toType));
> }
> }
> return val;
> }
> {code}
> {color:#000000}{color:#000000}As another example, Validation also rethrows
> this exception:{color}{color}
> {code:java}
> public static void validateKey(TableMetadata metadata, ByteBuffer key)
> {
> ...
> try
> {
> metadata.partitionKeyType.validate(key);
> }
> catch (MarshalException e)
> {
> throw new InvalidRequestException(e.getMessage());
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]