[ https://issues.apache.org/jira/browse/PHOENIX-2327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14961634#comment-14961634 ]
James Taylor commented on PHOENIX-2327: --------------------------------------- Would you mind reviewing, [~samarthjain]? > Row value constructors failed on the index, when len(table's pks) > 2 and > table's 1st pk is index's last pk > ----------------------------------------------------------------------------------------------------------- > > Key: PHOENIX-2327 > URL: https://issues.apache.org/jira/browse/PHOENIX-2327 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.5.2 > Environment: cdh5.3.6 > Reporter: Chunhui Liu > Attachments: PHOENIX-2327.patch, PHOENIX-2327_v1.patch > > > 1. Table has more than 2 primary keys; > 2. Table's 1st pk as index's last pk; eg. table's pks are (pk1, pk2, pk3), > the failed index's pks are (pk2, pk3, pk1); table's pks are (1, 2, 3, 4), > failed index's pks are (2, 3, 4, 5, 1); > 3. Use row value constructors on index with another condition that use one > pks(not the table's 1st pk); > 4. You will get "DEGENERATE SCAN OVER TABLE_NAME" > Here is the Test SQL > {code:sql} > DROP TABLE IF EXISTS T; > CREATE TABLE IF NOT EXISTS T ( > PK1 VARCHAR not null, > PK2 VARCHAR not null, > PK3 VARCHAR not null, > V1 VARCHAR, > CONSTRAINT PK PRIMARY KEY (PK1, PK2, PK3) > ); > CREATE INDEX IDX_T ON T > ( > PK2, PK3, PK1 > ); > UPSERT INTO T VALUES('100', '200', '300', 'V'); > UPSERT INTO T VALUES('101', '201', '301', 'V'); > UPSERT INTO T VALUES('102', '202', '302', 'V'); > UPSERT INTO T VALUES('103', '203', '303', 'V'); > UPSERT INTO T VALUES('104', '204', '304', 'V'); > SELECT * FROM T; > EXPLAIN > SELECT PK1, PK2, PK3 FROM T WHERE > (PK2, PK3, PK1) >= ('202', '302', '102') > AND PK2 < '204' > LIMIT 10; > {code} > I've tried 3 primary key, here is the results. > 1. table's pks are (pk1, pk2, pk3); > 2. 132 means (pk1, pk3, pk2); > | index's pks order | result | > | 132 | correct | > | 213 | correct | > | 231 | fail | > | 312 | correct | > | 321 | correct | > I've also test this on table with 4, 5 pks > | len(pks) | failed order | > | 3 | 231 | > | 4 | 2341 | > | 5 | 23451 | -- This message was sent by Atlassian JIRA (v6.3.4#6332)