| --! qt:dataset:src |
| set hive.mapred.mode=nonstrict; |
| -- test predicate pushdown on a view with a union |
| |
| drop view v; |
| |
| create table t1_new_n0 (key string, value string) partitioned by (ds string); |
| |
| insert overwrite table t1_new_n0 partition (ds = '2011-10-15') |
| select 'key1', 'value1' from src tablesample (1 rows); |
| |
| insert overwrite table t1_new_n0 partition (ds = '2011-10-16') |
| select 'key2', 'value2' from src tablesample (1 rows); |
| |
| create table t1_old (keymap string, value string) partitioned by (ds string); |
| |
| insert overwrite table t1_old partition (ds = '2011-10-13') |
| select 'keymap3', 'value3' from src tablesample (1 rows); |
| |
| insert overwrite table t1_old partition (ds = '2011-10-14') |
| select 'keymap4', 'value4' from src tablesample (1 rows); |
| |
| create table t1_mapping (key string, keymap string) partitioned by (ds string); |
| |
| insert overwrite table t1_mapping partition (ds = '2011-10-13') |
| select 'key3', 'keymap3' from src tablesample (1 rows); |
| |
| insert overwrite table t1_mapping partition (ds = '2011-10-14') |
| select 'key4', 'keymap4' from src tablesample (1 rows); |
| |
| |
| create view t1_n113 partitioned on (ds) as |
| select * from |
| ( |
| select key, value, ds from t1_new_n0 |
| union all |
| select key, value, t1_old.ds from t1_old join t1_mapping |
| on t1_old.keymap = t1_mapping.keymap and |
| t1_old.ds = t1_mapping.ds |
| ) subq; |
| |
| explain extended |
| select * from t1_n113 where ds = '2011-10-13'; |
| |
| select * from t1_n113 where ds = '2011-10-13'; |
| |
| select * from t1_n113 where ds = '2011-10-14'; |
| |
| explain extended |
| select * from t1_n113 where ds = '2011-10-15'; |
| |
| select * from t1_n113 where ds = '2011-10-15'; |
| select * from t1_n113 where ds = '2011-10-16'; |