[ https://issues.apache.org/jira/browse/PHOENIX-4712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16460569#comment-16460569 ]
Hudson commented on PHOENIX-4712: --------------------------------- SUCCESS: Integrated in Jenkins build Phoenix-4.x-HBase-0.98 #1877 (See [https://builds.apache.org/job/Phoenix-4.x-HBase-0.98/1877/]) PHOENIX-4712 When creating an index on a table, meta data cache of views (tdsilva: rev 5b7b104ed74ae7f4ef39cafc883e1da00e431503) * (edit) phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java * (edit) phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java > When creating an index on a table, meta data cache of views related to the > table isn't updated > ---------------------------------------------------------------------------------------------- > > Key: PHOENIX-4712 > URL: https://issues.apache.org/jira/browse/PHOENIX-4712 > Project: Phoenix > Issue Type: Bug > Reporter: Toshihiro Suzuki > Assignee: Toshihiro Suzuki > Priority: Major > Fix For: 4.14.0, 5.0.0 > > Attachments: PHOENIX-4712-v2.patch, PHOENIX-4712.patch, > PHOENIX-4712.patch, PHOENIX-4712_v3.patch > > > Steps to reproduce are as follows: > 1. Create a table > {code} > create table tbl (col1 varchar primary key, col2 varchar); > {code} > 2. Create a view on the table > {code} > create view vw (col3 varchar) as select * from tbl; > {code} > 3. Create a index on the table > {code} > create index idx ON tbl (col2); > {code} > After those, when issuing a explain query like the following, it seems like > the query doesn't use the index, although the index should be used: > {code} > 0: jdbc:phoenix:> explain select /*+ INDEX(vw idx) */ * from vw where col2 = > 'aaa'; > +---------------------------------------------------------------+ > | PLAN | > +---------------------------------------------------------------+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER TBL | > | SERVER FILTER BY COL2 = 'aaa' | > +---------------------------------------------------------------+ > {code} > However, after restarting sqlline, the explain output is changed, and the > index is used. > {code} > 0: jdbc:phoenix:> explain select /*+ INDEX(vw idx) */ * from vw where col2 = > 'aaa'; > +--------------------------------------------------------------------------------+ > | PLAN > | > +--------------------------------------------------------------------------------+ > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER TBL > | > | SKIP-SCAN-JOIN TABLE 0 > | > | CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER IDX > ['aaa'] | > | SERVER FILTER BY FIRST KEY ONLY > | > | DYNAMIC SERVER FILTER BY "VW.COL1" IN ($3.$5) > | > +--------------------------------------------------------------------------------+ > {code} > I think when creating an index on a table, meta data cache of views related > to the table isn't updated, so the index isn't used for that query. However > after restarting sqlline, the meta data cache is refreshed, so the index is > used. > When creating an index on a table, we should update meta data cache of views > related to the table. -- This message was sent by Atlassian JIRA (v7.6.3#76005)