[ 
https://issues.apache.org/jira/browse/CASSANDRA-19781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17877203#comment-17877203
 ] 

David Capwell commented on CASSANDRA-19781:
-------------------------------------------

to simplify things a bit

{code}
@Test
    public void test5()
    {
        schemaChange(format("CREATE TYPE %s.test5 (a int)", KEYSPACE));
        String name = createTableName(null);
        String fq = format("%s.%s", KEYSPACE, name);
        createTable(format("CREATE TABLE %s(pk int, ck frozen<%s.test5>, v int, 
PRIMARY KEY(pk, ck)) WITH CLUSTERING ORDER BY (ck DESC)", fq, KEYSPACE));
        execute(format("INSERT INTO %s(pk, ck, v) VALUES (?, {a: 0}, ?)", fq), 
0, 0);
        assertRows(execute(format("SELECT * FROM %s WHERE pk=?", fq), 0),
                   row(0, tuple(0), 0));
    }
{code}

> UDT rejects UDT literals when the column is clustering and reverse order
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-19781
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19781
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL/Semantics
>            Reporter: David Capwell
>            Priority: Normal
>             Fix For: 5.x
>
>
> This was found in Accord’s fuzz testing
> {code}
> CREATE TYPE 
> distributed_test_keyspace."EJfW0z8VJlcU2PA1sfV_mTu2jEFmRZbvzg2P1sW0EUBl" (
>     "kRT76zGo0XlD_FXMcjR5scASR4W_WtKw3WxPrMeosltr6X" 
> set<'org.apache.cassandra.db.marshal.LexicalUUIDType’>
> );
> {code}
> {code}
> CREATE TABLE distributed_test_keyspace."vTZ11fk6t8tzR3V" (
>     "X2RD2YtsnBd7mvidw" 
> frozen<tuple<frozen<"egCMwY5Ivz1Ubq5rtTKGaMSb4MtO0BVBAs8CEpqM">>>,
>     "yXEL6XVkYSEWoFb8HTj0JAXx2pPtFlMNIa9l7H" 
> frozen<"EJfW0z8VJlcU2PA1sfV_mTu2jEFmRZbvzg2P1sW0EUBl">,
>     "bBsAIZg0d6ed_VyEYmo7XKdZhWLGSF5AaZCcIIv0A8N8kkjMp" 
> 'org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.FrozenType(org.apache.cassandra.db.marshal.UserType(distributed_test_keyspace,5337794750306e6c,6f506464446c3762575652615a7a59397866345f4e6163764c4c634575:org.apache.cassandra.db.marshal.BytesType,777a526a4b7775706453384465546f7957474552564f456771527052596e4c36614f4d4e58596439336a6470:org.apache.cassandra.db.marshal.UTF8Type)),org.apache.cassandra.db.marshal.FrozenType(org.apache.cassandra.db.marshal.SetType(org.apache.cassandra.db.marshal.InetAddressType)))',
>     "qokh6bGEIF4xf5AAZn6jMc" 
> 'org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.ListType(org.apache.cassandra.db.marshal.Int32Type),org.apache.cassandra.db.marshal.FloatType)'
>  static,
>     "UGwI2I3HjxYOCA" 'org.apache.cassandra.db.marshal.LexicalUUIDType',
>     PRIMARY KEY ("X2RD2YtsnBd7mvidw", 
> "yXEL6XVkYSEWoFb8HTj0JAXx2pPtFlMNIa9l7H", 
> "bBsAIZg0d6ed_VyEYmo7XKdZhWLGSF5AaZCcIIv0A8N8kkjMp")
> ) WITH CLUSTERING ORDER BY ("yXEL6XVkYSEWoFb8HTj0JAXx2pPtFlMNIa9l7H" DESC, 
> "bBsAIZg0d6ed_VyEYmo7XKdZhWLGSF5AaZCcIIv0A8N8kkjMp" ASC)
> {code}
> {code}
> UPDATE distributed_test_keyspace."vTZ11fk6t8tzR3V"
>   SET 
>       "qokh6bGEIF4xf5AAZn6jMc"=?, 
>       "UGwI2I3HjxYOCA"=QtGwDS."UGwI2I3HjxYOCA"
>   WHERE 
>     "X2RD2YtsnBd7mvidw"=? AND 
>     
> "yXEL6XVkYSEWoFb8HTj0JAXx2pPtFlMNIa9l7H"={"kRT76zGo0XlD_FXMcjR5scASR4W_WtKw3WxPrMeosltr6X":
>  {0x0000000000001f00bd00000000000000}} AND 
>     "bBsAIZg0d6ed_VyEYmo7XKdZhWLGSF5AaZCcIIv0A8N8kkjMp"=0x...;
> {code}
> {code}
> ERROR [node2_isolatedExecutor:3] node2 2024-07-17 14:04:33,530 
> JVMStabilityInspector.java:71 - Exception in thread 
> Thread[node2_isolatedExecutor:3,5,isolatedExecutor]
> org.apache.cassandra.exceptions.InvalidRequestException: Invalid user type 
> literal for yXEL6XVkYSEWoFb8HTj0JAXx2pPtFlMNIa9l7H of type 
> frozen<"EJfW0z8VJlcU2PA1sfV_mTu2jEFmRZbvzg2P1sW0EUBl">
>       at 
> org.apache.cassandra.cql3.terms.UserTypes$Literal.validateAssignableTo(UserTypes.java:175)
>       at 
> org.apache.cassandra.cql3.terms.UserTypes$Literal.prepare(UserTypes.java:137)
>       at org.apache.cassandra.cql3.terms.Terms$Raw$2.prepare(Terms.java:280)
>       at org.apache.cassandra.cql3.Relation.toRestriction(Relation.java:178)
>       at 
> org.apache.cassandra.cql3.restrictions.StatementRestrictions.<init>(StatementRestrictions.java:218)
>       at 
> org.apache.cassandra.cql3.restrictions.StatementRestrictions.<init>(StatementRestrictions.java:157)
>       at 
> org.apache.cassandra.cql3.statements.ModificationStatement$Parsed.newRestrictions(ModificationStatement.java:1162)
>       at 
> org.apache.cassandra.cql3.statements.UpdateStatement$ParsedUpdate.prepareInternal(UpdateStatement.java:423)
>       at 
> org.apache.cassandra.cql3.statements.ModificationStatement$Parsed.prepare(ModificationStatement.java:1076)
>       at 
> org.apache.cassandra.cql3.statements.TransactionStatement$Parsed.prepare(TransactionStatement.java:566)
>       at 
> org.apache.cassandra.distributed.test.accord.AccordTestBase.lambda$isIdempotent$3b31f888$1(AccordTestBase.java:399)
> {code}
> The issue is “yXEL6XVkYSEWoFb8HTj0JAXx2pPtFlMNIa9l7H” is ReverseType (ORDER 
> BY DESC), so type.isUDT() returns false!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to