[ https://issues.apache.org/jira/browse/HIVE-24274?focusedWorklogId=523095&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-523095 ]
ASF GitHub Bot logged work on HIVE-24274: ----------------------------------------- Author: ASF GitHub Bot Created on: 11/Dec/20 09:05 Start Date: 11/Dec/20 09:05 Worklog Time Spent: 10m Work Description: kasakrisz commented on a change in pull request #1706: URL: https://github.com/apache/hive/pull/1706#discussion_r540793497 ########## File path: ql/src/test/results/clientpositive/llap/materialized_view_rewrite_by_text_2.q.out ########## @@ -0,0 +1,334 @@ +PREHOOK: query: create table cmv_basetable_n0 (a int, b varchar(256), c decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@cmv_basetable_n0 +POSTHOOK: query: create table cmv_basetable_n0 (a int, b varchar(256), c decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@cmv_basetable_n0 +PREHOOK: query: insert into cmv_basetable_n0 values + (1, 'alfred', 10.30, 2), + (2, 'bob', 3.14, 3), + (2, 'bonnie', 172342.2, 3), + (3, 'calvin', 978.76, 3), + (3, 'charlie', 9.8, 1) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@cmv_basetable_n0 +POSTHOOK: query: insert into cmv_basetable_n0 values + (1, 'alfred', 10.30, 2), + (2, 'bob', 3.14, 3), + (2, 'bonnie', 172342.2, 3), + (3, 'calvin', 978.76, 3), + (3, 'charlie', 9.8, 1) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@cmv_basetable_n0 +POSTHOOK: Lineage: cmv_basetable_n0.a SCRIPT [] +POSTHOOK: Lineage: cmv_basetable_n0.b SCRIPT [] +POSTHOOK: Lineage: cmv_basetable_n0.c SCRIPT [] +POSTHOOK: Lineage: cmv_basetable_n0.d SCRIPT [] +PREHOOK: query: create materialized view cmv_mat_view_n0 +as select a, b, c from cmv_basetable_n0 where a = 2 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: default@cmv_basetable_n0 +PREHOOK: Output: database:default +PREHOOK: Output: default@cmv_mat_view_n0 +POSTHOOK: query: create materialized view cmv_mat_view_n0 +as select a, b, c from cmv_basetable_n0 where a = 2 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: default@cmv_basetable_n0 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@cmv_mat_view_n0 +PREHOOK: query: select * from cmv_mat_view_n0 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_mat_view_n0 +#### A masked pattern was here #### +POSTHOOK: query: select * from cmv_mat_view_n0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_mat_view_n0 +#### A masked pattern was here #### +2 bob 3.14 +2 bonnie 172342.20 +PREHOOK: query: show tblproperties cmv_mat_view_n0 +PREHOOK: type: SHOW_TBLPROPERTIES +POSTHOOK: query: show tblproperties cmv_mat_view_n0 +POSTHOOK: type: SHOW_TBLPROPERTIES +COLUMN_STATS_ACCURATE {"BASIC_STATS":"true","COLUMN_STATS":{"a":"true","b":"true","c":"true"}} +bucketing_version 2 +numFiles 1 +numFilesErasureCoded 0 +numRows 2 +rawDataSize 408 +totalSize 468 +#### A masked pattern was here #### +PREHOOK: query: create materialized view if not exists cmv_mat_view2 +as select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: default@cmv_basetable_n0 +PREHOOK: Output: database:default +PREHOOK: Output: default@cmv_mat_view2 +POSTHOOK: query: create materialized view if not exists cmv_mat_view2 +as select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: default@cmv_basetable_n0 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@cmv_mat_view2 +PREHOOK: query: select * from cmv_mat_view2 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +POSTHOOK: query: select * from cmv_mat_view2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +3 9.80 +3 978.76 +PREHOOK: query: show tblproperties cmv_mat_view2 +PREHOOK: type: SHOW_TBLPROPERTIES +POSTHOOK: query: show tblproperties cmv_mat_view2 +POSTHOOK: type: SHOW_TBLPROPERTIES +COLUMN_STATS_ACCURATE {"BASIC_STATS":"true","COLUMN_STATS":{"a":"true","c":"true"}} +bucketing_version 2 +numFiles 1 +numFilesErasureCoded 0 +numRows 2 +rawDataSize 232 +totalSize 334 +#### A masked pattern was here #### +PREHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +PREHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +POSTHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +POSTHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: default.cmv_mat_view2 + Select Operator + expressions: a (type: int), c (type: decimal(10,2)) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +PREHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +POSTHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +POSTHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +3 9.80 +3 978.76 +PREHOOK: query: explain +alter materialized view cmv_mat_view2 disable rewrite +PREHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +PREHOOK: Input: default@cmv_mat_view2 +PREHOOK: Output: default@cmv_mat_view2 +POSTHOOK: query: explain +alter materialized view cmv_mat_view2 disable rewrite +POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +POSTHOOK: Input: default@cmv_mat_view2 +POSTHOOK: Output: default@cmv_mat_view2 +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Alter Materialized View Rewrite + name: default.cmv_mat_view2 + disable: true + + Stage: Stage-1 + Materialized View Update + name: default.cmv_mat_view2 + disable rewrite: true + +PREHOOK: query: alter materialized view cmv_mat_view2 disable rewrite +PREHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +PREHOOK: Input: default@cmv_mat_view2 +PREHOOK: Output: default@cmv_mat_view2 +POSTHOOK: query: alter materialized view cmv_mat_view2 disable rewrite +POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +POSTHOOK: Input: default@cmv_mat_view2 +POSTHOOK: Output: default@cmv_mat_view2 +PREHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +POSTHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: cmv_basetable_n0 + filterExpr: (a = 3) (type: boolean) + Filter Operator + predicate: (a = 3) (type: boolean) + Select Operator + expressions: 3 (type: int), c (type: decimal(10,2)) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +POSTHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +3 9.80 +3 978.76 +PREHOOK: query: explain +alter materialized view cmv_mat_view2 enable rewrite +PREHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +PREHOOK: Input: default@cmv_mat_view2 +PREHOOK: Output: default@cmv_mat_view2 +POSTHOOK: query: explain +alter materialized view cmv_mat_view2 enable rewrite +POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +POSTHOOK: Input: default@cmv_mat_view2 +POSTHOOK: Output: default@cmv_mat_view2 +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Alter Materialized View Rewrite + name: default.cmv_mat_view2 + enable: true + + Stage: Stage-1 + Materialized View Update + name: default.cmv_mat_view2 + retrieve and include: true + +PREHOOK: query: alter materialized view cmv_mat_view2 enable rewrite +PREHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +PREHOOK: Input: default@cmv_mat_view2 +PREHOOK: Output: default@cmv_mat_view2 +POSTHOOK: query: alter materialized view cmv_mat_view2 enable rewrite +POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE +POSTHOOK: Input: default@cmv_mat_view2 +POSTHOOK: Output: default@cmv_mat_view2 +PREHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +PREHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +POSTHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +POSTHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: default.cmv_mat_view2 + Select Operator + expressions: a (type: int), c (type: decimal(10,2)) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +PREHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +POSTHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +POSTHOOK: Input: default@cmv_mat_view2 +#### A masked pattern was here #### +3 9.80 +3 978.76 +PREHOOK: query: drop materialized view cmv_mat_view2 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: default@cmv_mat_view2 +PREHOOK: Output: default@cmv_mat_view2 +POSTHOOK: query: drop materialized view cmv_mat_view2 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: default@cmv_mat_view2 +POSTHOOK: Output: default@cmv_mat_view2 +PREHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +POSTHOOK: query: explain +select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: cmv_basetable_n0 + filterExpr: (a = 3) (type: boolean) + Filter Operator + predicate: (a = 3) (type: boolean) + Select Operator + expressions: 3 (type: int), c (type: decimal(10,2)) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +PREHOOK: type: QUERY +PREHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +POSTHOOK: query: select a, c from cmv_basetable_n0 where a = 3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@cmv_basetable_n0 +#### A masked pattern was here #### +3 9.80 +3 978.76 +PREHOOK: query: drop materialized view cmv_mat_view_n0 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: default@cmv_mat_view_n0 +PREHOOK: Output: default@cmv_mat_view_n0 +POSTHOOK: query: drop materialized view cmv_mat_view_n0 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: default@cmv_mat_view_n0 +POSTHOOK: Output: default@cmv_mat_view_n0 Review comment: added ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 523095) Time Spent: 2h 40m (was: 2.5h) > Implement Query Text based MaterializedView rewrite > --------------------------------------------------- > > Key: HIVE-24274 > URL: https://issues.apache.org/jira/browse/HIVE-24274 > Project: Hive > Issue Type: Improvement > Reporter: Krisztian Kasa > Assignee: Krisztian Kasa > Priority: Major > Labels: pull-request-available > Time Spent: 2h 40m > Remaining Estimate: 0h > > Besides the way queries are currently rewritten to use materialized views in > Hive this project provides an alternative: > Compare the query text with the materialized views query text stored. If we > found a match the original query's logical plan can be replaced by a scan on > the materialized view. > - Only materialized views which are enabled to rewrite can participate > - Use existing *HiveMaterializedViewsRegistry* through *Hive* object by > adding a lookup method by query text. > - There might be more than one materialized views which have the same query > text. In this case chose the first valid one. > - Validation can be done by calling > *Hive.validateMaterializedViewsFromRegistry()* > - The scope of this first patch is rewriting queries which entire text can be > matched only. > - Use the expanded query text (fully qualified column and table names) for > comparing -- This message was sent by Atlassian Jira (v8.3.4#803005)