[ https://issues.apache.org/jira/browse/CASSANDRA-15269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16911178#comment-16911178 ]
Liudmila Kornilova commented on CASSANDRA-15269: ------------------------------------------------ Each {{ExceptionCode}} correspond to specific exception class. {{OperationExecutionException}} did not have it's own code, instead it used {{FUNCTION_FAILURE}} code. So the exception was treated as {{FunctionExecutionException}} I added {{OPERATION_FAILURE}} code How to test: revert locally d60e7988736ed4358595e9c781b110a5bbb5f812 commit (void result truncate in decimal operations) Or throw {{ArithmeticException}} in {{DecimalType.mod}} {noformat} try (CqlSession session = CqlSession.builder().build()) { session.execute("drop table if exists d"); session.execute("create table d (n decimal primary key, d decimal)"); session.execute("insert into d (n, d) values (123456789112345678921234567893123456, 2)"); session.execute("select n % d from my.d"); } {noformat} What used to be: {noformat} Exception in thread "main" com.datastax.oss.driver.api.core.servererrors.ServerError: java.lang.ClassCastException: org.apache.cassandra.exceptions.OperationExecutionException cannot be cast to org.apache.cassandra.exceptions.FunctionExecutionException at com.datastax.oss.driver.api.core.servererrors.ServerError.copy(ServerError.java:54) {noformat} What is now: {noformat} Exception in thread "main" com.datastax.oss.driver.api.core.DriverExecutionException at com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures.getUninterruptibly(CompletableFutures.java:150) ... Caused by: java.lang.IllegalArgumentException: Unsupported error code: 5888 {noformat} New error code should be added to Datastax Cassandra Native Protocol in [ProtocolConstants.java|https://github.com/datastax/native-protocol/blob/1.x/src/main/java/com/datastax/oss/protocol/internal/ProtocolConstants.java#L70] If this commit is merged, I'll write a patch to the protocol > Cassandra fails to process OperationExecutionException which causes > ClassCastException > -------------------------------------------------------------------------------------- > > Key: CASSANDRA-15269 > URL: https://issues.apache.org/jira/browse/CASSANDRA-15269 > Project: Cassandra > Issue Type: Bug > Components: CQL/Interpreter > Reporter: Liudmila Kornilova > Assignee: Liudmila Kornilova > Priority: Normal > > While working on CASSANDRA-15232 I noticed that OperationExecutionException > is not processed correctly. > How to reproduce the issue: > 1. {{create table d (numerator decimal primary key, denominator decimal);}} > 2. {{insert into d (numerator, denominator) values > (123456789112345678921234567893123456, 2);}} > 3. {{select numerator % denominator from d;}} > What happens: > 1. remainder operation throws ArithmeticException (BigDecimal:1854) > 2. The exception is wrapped in OperationExecutionException > 3. ClassCastException appears (OperationExecutionException cannot be cast to > FunctionExecutionException at ErrorMessage.java:280) > What should happen: > OperationExecutionException with message "the operation 'decimal % decimal' > failed: Division impossible" should be delivered to user > Note that after fixing CASSANDRA-15232 {{select numerator % denominator from > d;}} will produce correct result of remainder operation. > Currently I am not aware of other cases when OperationExecutionException may > be treated as FunctionExecutionException -- This message was sent by Atlassian Jira (v8.3.2#803003) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org