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

Caleb Rackliffe commented on CASSANDRA-19891:
---------------------------------------------

Made a pass at review and left comments in the PR...

> SAI fails queries when multiple columns exist and a non-indexed column is a 
> composite with a map
> ------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-19891
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19891
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Feature/2i Index
>            Reporter: David Capwell
>            Assignee: Sunil Ramchandra Pawar
>            Priority: Normal
>             Fix For: 5.0.x, 5.x
>
>
> Hit an edge case where SAI fails to create a query plan when multiple columns 
> are used and one of the columns is a CompositeType with a MapType inside
> {code}
> CREATE TABLE keyspace_test_00."tbl" (
>    "pk1" frozen<map<'CompositeType(IntegerType,SimpleDateType)', 
> 'DynamicCompositeType(Q=>LongType,I=>ByteType,6=>LexicalUUIDType)'>>,
>    "pk2" frozen<tuple<frozen<tuple<float>>>>,
>    "ck1" frozen<list<frozen<map<'LexicalUUIDType', ascii>>>>,
>    "ck2" tinyint,
>    "r1" 
> frozen<list<'DynamicCompositeType(X=>DecimalType,y=>TimestampType,f=>BooleanType)'>>
>  static,
>    "r2" 'DynamicCompositeType(P=>ShortType)',
>    "r3" 
> 'CompositeType(FrozenType(ListType(DoubleType)),FrozenType(MapType(LongType,DurationType)),DoubleType)',
>    "r4" frozen<list<frozen<list<time>>>>,
>    "r5" 
> 'CompositeType(CompositeType(ShortType,SimpleDateType,BooleanType),CompositeType(FloatType),MapType(ByteType,TimeType))',
>    "r6" set<smallint>,
>    PRIMARY KEY (("pk1", "pk2"), "ck1", "ck2")
> ) WITH CLUSTERING ORDER BY ("ck1" ASC, "ck2" DESC);
> CREATE INDEX index_test_01 ON keyspace_test_00."tbl"("r5") USING 
> 'legacy_local_table';
> CREATE INDEX index_test_02 ON keyspace_test_00."tbl"(FULL("ck1")) USING 'SAI';
> CREATE INDEX index_test_03 ON keyspace_test_00."tbl"(FULL("pk1")) USING 'SAI';
> CREATE INDEX index_test_04 ON keyspace_test_00."tbl"(FULL("r1")) USING 
> 'legacy_local_table';
> CREATE INDEX index_test_05 ON keyspace_test_00."tbl"("r3") USING 
> 'legacy_local_table';
> CREATE INDEX index_test_06 ON keyspace_test_00."tbl"(FULL("r4")) USING 'SAI';
> CREATE INDEX index_test_07 ON keyspace_test_00."tbl"("r2") USING 'SAI';
> CREATE INDEX index_test_08 ON keyspace_test_00."tbl"("pk2") USING 
> ‘legacy_local_table';
> {code}
> And the query
> {code}
> SELECT *
> FROM keyspace_test_00."tbl"
> WHERE "r5" = 
> 0x0010000230bd00000457f0bd31000001000000000700049f647252000000260000000200000001f300000008000001c4e14bba4b00000001260000000800003f2b300d385d00
>  AND "ck1" = ? AND "pk1" = ? AND "r1" = ? AND "r3" = 
> 0x001c00000002000000083380d171eace676900000008e153bb97fdd5c22e00006d000000030000000897c5493857999fc000000013f08cc4fad0f04d0de51cff28d4ae743d2da1c40000000857108e8c372c868400000013f0cc6bca55f0ee240b27ff12c77a7b7dc3c665000000086c07d25fcdd3403500000013f0745922bdf0ac44c9b5ffd80f025ded9a211d000008200547f5da7a43aa00
>  AND "r4" = ? AND "r2" = 0x8050000255e200 AND "pk2" = ((-1.2651989E-23))
> ALLOW FILTERING
> {code}
> I played around with this more and see you can also simplify to just SAI 
> indexes
> The following test fails due to this issue but the single column query case 
> (on the complex column) passes
> {code}
>     @Test
>     public void sai()
>     {
>         createKeyspace("CREATE KEYSPACE keyspace_test_00 WITH REPLICATION = 
> {'class': 'SimpleStrategy', 'replication_factor': 1}");
>         schemaChange("CREATE TABLE keyspace_test_00.\"tbl\" (\n" +
>                      "   \"pk1\" 
> frozen<map<'CompositeType(IntegerType,SimpleDateType)', 
> 'DynamicCompositeType(Q=>LongType,I=>ByteType,6=>LexicalUUIDType)'>>,\n" +
>                      "   \"pk2\" frozen<tuple<frozen<tuple<float>>>>,\n" +
>                      "   \"ck1\" frozen<list<frozen<map<'LexicalUUIDType', 
> ascii>>>>,\n" +
>                      "   \"ck2\" tinyint,\n" +
>                      "   \"r1\" 
> frozen<list<'DynamicCompositeType(X=>DecimalType,y=>TimestampType,f=>BooleanType)'>>
>  static,\n" +
>                      "   \"r2\" 'DynamicCompositeType(P=>ShortType)',\n" +
>                      "   \"r3\" 
> 'CompositeType(FrozenType(ListType(DoubleType)),FrozenType(MapType(LongType,DurationType)),DoubleType)',\n"
>  +
>                      "   \"r4\" frozen<list<frozen<list<time>>>>,\n" +
>                      "   \"r5\" 
> 'CompositeType(CompositeType(ShortType,SimpleDateType,BooleanType),CompositeType(FloatType),MapType(ByteType,TimeType))',\n"
>  +
>                      "   \"r6\" set<smallint>,\n" +
>                      "   PRIMARY KEY ((\"pk1\", \"pk2\"), \"ck1\", 
> \"ck2\")\n" +
>                      ") WITH CLUSTERING ORDER BY (\"ck1\" ASC, \"ck2\" 
> DESC);");
>         schemaChange("CREATE INDEX ON keyspace_test_00.\"tbl\"(FULL(\"ck1\")) 
> USING 'SAI'");
>         schemaChange("CREATE INDEX ON keyspace_test_00.\"tbl\"(FULL(\"pk1\")) 
> USING 'SAI'");
>         schemaChange("CREATE INDEX ON keyspace_test_00.\"tbl\"(FULL(\"r4\")) 
> USING 'SAI'");
>         schemaChange("CREATE INDEX ON keyspace_test_00.\"tbl\"(\"r2\") USING 
> 'SAI'");
>         schemaChange("CREATE INDEX ON keyspace_test_00.\"tbl\"(\"r3\") USING 
> 'SAI'");
>         executeFormattedQuery("SELECT *\n" +
>                               "FROM keyspace_test_00.\"tbl\"\n" +
>                               "WHERE " +
>                               "    \"r3\" = 
> 0x001c00000002000000083380d171eace676900000008e153bb97fdd5c22e00006d000000030000000897c5493857999fc000000013f08cc4fad0f04d0de51cff28d4ae743d2da1c40000000857108e8c372c868400000013f0cc6bca55f0ee240b27ff12c77a7b7dc3c665000000086c07d25fcdd3403500000013f0745922bdf0ac44c9b5ffd80f025ded9a211d000008200547f5da7a43aa00
>  " +
>                               "ALLOW FILTERING");
>         executeFormattedQuery("SELECT *\n" +
>                               "FROM keyspace_test_00.\"tbl\"\n" +
>                               "WHERE \"r5\" = 
> 0x0010000230bd00000457f0bd31000001000000000700049f647252000000260000000200000001f300000008000001c4e14bba4b00000001260000000800003f2b300d385d00
>  " +
>                               "    AND \"r3\" = 
> 0x001c00000002000000083380d171eace676900000008e153bb97fdd5c22e00006d000000030000000897c5493857999fc000000013f08cc4fad0f04d0de51cff28d4ae743d2da1c40000000857108e8c372c868400000013f0cc6bca55f0ee240b27ff12c77a7b7dc3c665000000086c07d25fcdd3403500000013f0745922bdf0ac44c9b5ffd80f025ded9a211d000008200547f5da7a43aa00
>  " +
>                               "    AND \"r2\" = 0x8050000255e200 " + // SAI
>                               "    AND \"pk2\" = ((-1.2651989E-23))\n" +
>                               "ALLOW FILTERING");
>     }
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to