blob: a8361e79ba481fb3f56bf8acf6f5e891fa461a8d [file] [log] [blame]
-- SORT_QUERY_RESULTS
set hive.support.concurrency=true;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
set hive.strict.checks.cartesian.product=false;
set hive.stats.fetch.column.stats=true;
set hive.materializedview.rewriting=true;
set hive.materializedview.rewriting.sql=false;
create table emps_n3 (
empid int,
deptno int,
name varchar(256),
salary float,
commission int)
stored as orc TBLPROPERTIES ('transactional'='true');
insert into emps_n3 values (100, 10, 'Bill', 10000, 1000), (200, 20, 'Eric', 8000, 500),
(150, 10, 'Sebastian', 7000, null), (110, 10, 'Theodore', 10000, 250), (120, 10, 'Bill', 10000, 250);
create table depts_n2 (
deptno int,
name varchar(256),
locationid int)
stored as orc TBLPROPERTIES ('transactional'='true');
insert into depts_n2 values (10, 'Sales', 10), (30, 'Marketing', null), (20, 'HR', 20);
create table dependents_n2 (
empid int,
name varchar(256))
stored as orc TBLPROPERTIES ('transactional'='true');
insert into dependents_n2 values (10, 'Michael'), (20, 'Jane');
create table locations_n2 (
locationid int,
name varchar(256))
stored as orc TBLPROPERTIES ('transactional'='true');
insert into locations_n2 values (10, 'San Francisco'), (20, 'San Diego');
alter table emps_n3 add constraint pk1 primary key (empid) disable novalidate rely;
alter table depts_n2 add constraint pk2 primary key (deptno) disable novalidate rely;
alter table dependents_n2 add constraint pk3 primary key (empid) disable novalidate rely;
alter table locations_n2 add constraint pk4 primary key (locationid) disable novalidate rely;
alter table emps_n3 add constraint fk1 foreign key (deptno) references depts_n2(deptno) disable novalidate rely;
alter table depts_n2 add constraint fk2 foreign key (locationid) references locations_n2(locationid) disable novalidate rely;
-- EXAMPLE 1
create materialized view mv1_n2 as
select * from emps_n3 where empid < 150;
explain
select *
from (select * from emps_n3 where empid < 120) t
join depts_n2 using (deptno);
select *
from (select * from emps_n3 where empid < 120) t
join depts_n2 using (deptno);
drop materialized view mv1_n2;
-- EXAMPLE 2
create materialized view mv1_n2 as
select deptno, name, salary, commission
from emps_n3;
explain
select emps_n3.name, emps_n3.salary, emps_n3.commission
from emps_n3
join depts_n2 using (deptno);
select emps_n3.name, emps_n3.salary, emps_n3.commission
from emps_n3
join depts_n2 using (deptno);
drop materialized view mv1_n2;
-- EXAMPLE 3
create materialized view mv1_n2 as
select empid deptno from emps_n3
join depts_n2 using (deptno);
explain
select empid deptno from emps_n3
join depts_n2 using (deptno) where empid = 1;
select empid deptno from emps_n3
join depts_n2 using (deptno) where empid = 1;
drop materialized view mv1_n2;
-- EXAMPLE 4
create materialized view mv1_n2 as
select * from emps_n3 where empid < 200;
explain
select * from emps_n3 where empid > 120
union all select * from emps_n3 where empid < 150;
select * from emps_n3 where empid > 120
union all select * from emps_n3 where empid < 150;
drop materialized view mv1_n2;
-- EXAMPLE 5 - NO MV, ALREADY UNIQUE
create materialized view mv1_n2 as
select empid, deptno from emps_n3 group by empid, deptno;
explain cbo
select empid, deptno from emps_n3 group by empid, deptno;
explain
select empid, deptno from emps_n3 group by empid, deptno;
select empid, deptno from emps_n3 group by empid, deptno;
drop materialized view mv1_n2;
-- EXAMPLE 5 - NO MV, ALREADY UNIQUE
create materialized view mv1_n2 as
select empid, name from emps_n3 group by empid, name;
explain
select empid, name from emps_n3 group by empid, name;
select empid, name from emps_n3 group by empid, name;
drop materialized view mv1_n2;
-- EXAMPLE 5
create materialized view mv1_n2 as
select name, salary from emps_n3 group by name, salary;
explain
select name, salary from emps_n3 group by name, salary;
select name, salary from emps_n3 group by name, salary;
drop materialized view mv1_n2;
-- EXAMPLE 6
create materialized view mv1_n2 as
select name, salary from emps_n3 group by name, salary;
explain
select name from emps_n3 group by name;
select name from emps_n3 group by name;
drop materialized view mv1_n2;
-- EXAMPLE 7
create materialized view mv1_n2 as
select name, salary from emps_n3 where deptno = 10 group by name, salary;
explain
select name from emps_n3 where deptno = 10 group by name;
select name from emps_n3 where deptno = 10 group by name;
drop materialized view mv1_n2;
-- EXAMPLE 9
create materialized view mv1_n2 as
select name, salary, count(*) as c, sum(empid) as s
from emps_n3 group by name, salary;
explain
select name from emps_n3 group by name;
select name from emps_n3 group by name;
drop materialized view mv1_n2;
-- NEW 1
create materialized view mv1_n2 as
select deptno, name, count(*) as c
from depts_n2
group by deptno, name;
explain
select name, count(*) as c
from depts_n2
where name = 'Sales'
group by name;
select name, count(*) as c
from depts_n2
where name = 'Sales'
group by name;
drop materialized view mv1_n2;
-- NEW 2
create materialized view mv1_n2 as
select deptno, name, locationid, count(*) as c
from depts_n2
group by deptno, name, locationid;
explain
select deptno, name, count(*) as c
from depts_n2
where name = 'Sales'
group by deptno, name;
select deptno, name, count(*) as c
from depts_n2
where name = 'Sales'
group by deptno, name;
drop materialized view mv1_n2;