blob: 691a0f5b025aaa2bebc518964aba6d38cd139da9 [file] [log] [blame]
--! qt:dataset:srcpart
--! qt:dataset:src
DROP VIEW vp1;
DROP VIEW vp2;
DROP VIEW vp3;
-- test partitioned view definition
-- (underlying table is not actually partitioned)
CREATE VIEW vp1
PARTITIONED ON (value)
AS
SELECT key, value
FROM src
WHERE key=86;
DESCRIBE EXTENDED vp1;
DESCRIBE FORMATTED vp1;
SELECT * FROM vp1;
SELECT key FROM vp1;
SELECT value FROM vp1;
ALTER VIEW vp1
ADD PARTITION (value='val_86') PARTITION (value='val_xyz');
-- should work since we use IF NOT EXISTS
ALTER VIEW vp1
ADD IF NOT EXISTS PARTITION (value='val_xyz');
SHOW PARTITIONS vp1;
SHOW PARTITIONS vp1 PARTITION(value='val_86');
SHOW TABLE EXTENDED LIKE vp1;
SHOW TABLE EXTENDED LIKE vp1 PARTITION(value='val_86');
ALTER VIEW vp1
DROP PARTITION (value='val_xyz');
SET hive.exec.drop.ignorenonexistent=false;
-- should work since we use IF EXISTS
ALTER VIEW vp1
DROP IF EXISTS PARTITION (value='val_xyz');
SHOW PARTITIONS vp1;
SET hive.mapred.mode=strict;
-- Even though no partition predicate is specified in the next query,
-- the WHERE clause inside of the view should satisfy strict mode.
-- In other words, strict only applies to underlying tables
-- (regardless of whether or not the view is partitioned).
SELECT * FROM vp1;
SET hive.mapred.mode=nonstrict;
-- test a partitioned view on top of an underlying partitioned table,
-- but with only a suffix of the partitioning columns
CREATE VIEW vp2
PARTITIONED ON (hr)
AS SELECT * FROM srcpart WHERE key < 10;
DESCRIBE FORMATTED vp2;
ALTER VIEW vp2 ADD PARTITION (hr='11') PARTITION (hr='12');
SELECT key FROM vp2 WHERE hr='12' ORDER BY key;
-- test a partitioned view where the PARTITIONED ON clause references
-- an imposed column name
CREATE VIEW vp3(k,v)
PARTITIONED ON (v)
AS
SELECT key, value
FROM src
WHERE key=86;
DESCRIBE FORMATTED vp3;
ALTER VIEW vp3
ADD PARTITION (v='val_86');
DROP VIEW vp1;
DROP VIEW vp2;
DROP VIEW vp3;
-- HIVE-16828
set hive.security.authorization.enabled=true;
CREATE TABLE table1_n12 (id int) PARTITIONED BY (year int);
-- create partitioned view
CREATE VIEW view1_n0 partitioned on (year) as select id, year from table1_n12;
select year from view1_n0;
Drop view view1_n0;
drop table table1_n12;