Files
impala/testdata/workloads/functional-query/queries/QueryTest/views-ddl.test
Bharath Vissapragada 978d837758 IMPALA-3139: Fix drop table statement to not drop views and vice versa
This commit fixes the following two issues

- A drop table statement can drop a view with same name when "IF EXISTS" is specified.
- A drop view statement can drop a table with same name when "IF EXISTS" is specified.

This happens due to lack of checks in the Catalog before the drop executes.

Change-Id: I0d35cd1f50d9b8d50223660f753c56529cbbc311
Reviewed-on: http://gerrit.cloudera.org:8080/2458
Reviewed-by: Bharath Vissapragada <bharathv@cloudera.com>
Tested-by: Internal Jenkins
2016-03-15 12:10:33 +00:00

319 lines
7.7 KiB
Plaintext

====
---- QUERY
# Create a simple view without renaming the columns.
create view ddl_test_db.simple_view as
select * from functional.alltypes
---- RESULTS
====
---- QUERY
# Test that 'if not exists' swallows the error (view already exists)
create view if not exists ddl_test_db.simple_view as
select * from functional.alltypesagg
---- RESULTS
====
---- QUERY
# Create another simple view with 'if not exists' on a subset of
# alltypes' columns using custom column names and comments
create view if not exists
ddl_test_db.simple_view_sub (x, y comment 'hello', z) as
select int_col, string_col, timestamp_col from functional.alltypes
---- RESULTS
====
---- QUERY
# Create a view on a parquet table (Hive cannot create/read/write parquet)
create view ddl_test_db.parquet_view as
select * from functional_parquet.alltypes where id < 20
---- RESULTS
====
---- QUERY
# Create a complex view with predicates, joins, aggregates and order by
create view ddl_test_db.complex_view (abc comment 'agg', xyz comment 'gby') as
select count(a.bigint_col), b.string_col from
functional.alltypesagg a inner join functional.alltypestiny b
on a.id = b.id where a.bigint_col < 50
group by b.string_col having count(a.bigint_col) > 1
order by b.string_col limit 100
---- RESULTS
====
---- QUERY
# Create a view on a view
create view ddl_test_db.view_view (aaa, bbb) as
select * from ddl_test_db.complex_view
---- RESULTS
====
---- QUERY
# Test that the views are displayed by 'show tables'
show tables in ddl_test_db
---- RESULTS
'complex_view'
'parquet_view'
'simple_view'
'simple_view_sub'
'view_view'
====
---- QUERY
# Test that the views can be described
describe ddl_test_db.simple_view
---- RESULTS
'id','int',''
'bool_col','boolean',''
'tinyint_col','tinyint',''
'smallint_col','smallint',''
'int_col','int',''
'bigint_col','bigint',''
'float_col','float',''
'double_col','double',''
'date_string_col','string',''
'string_col','string',''
'timestamp_col','timestamp',''
'year','int',''
'month','int',''
---- TYPES
string,string,string
====
---- QUERY
describe ddl_test_db.simple_view_sub
---- RESULTS
'x','int',''
'y','string','hello'
'z','timestamp',''
---- TYPES
string,string,string
====
---- QUERY
describe ddl_test_db.complex_view
---- RESULTS
'abc','bigint','agg'
'xyz','string','gby'
---- TYPES
string,string,string
====
---- QUERY
describe ddl_test_db.parquet_view
---- RESULTS
'id','int',''
'bool_col','boolean',''
'tinyint_col','tinyint',''
'smallint_col','smallint',''
'int_col','int',''
'bigint_col','bigint',''
'float_col','float',''
'double_col','double',''
'date_string_col','string',''
'string_col','string',''
'timestamp_col','timestamp',''
'year','int',''
'month','int',''
---- TYPES
string,string,string
====
---- QUERY
describe ddl_test_db.view_view
---- RESULTS
'aaa','bigint',''
'bbb','string',''
---- TYPES
string,string,string
====
---- QUERY
# Test that the views can be queried.
select count(*) from ddl_test_db.simple_view
---- RESULTS
7300
---- TYPES
bigint
====
---- QUERY
select count(*) from ddl_test_db.simple_view_sub
---- RESULTS
7300
---- TYPES
bigint
====
---- QUERY
select count(*) from ddl_test_db.complex_view
---- RESULTS
2
---- TYPES
bigint
====
---- QUERY
select count(*) from ddl_test_db.parquet_view
---- RESULTS
20
---- TYPES
bigint
====
---- QUERY
select count(*) from ddl_test_db.view_view
---- RESULTS
2
---- TYPES
bigint
====
---- QUERY
# Test dropping a view
drop view ddl_test_db.simple_view_sub
---- RESULTS
====
---- QUERY
# Test that the view is gone
show tables in ddl_test_db
---- RESULTS
'complex_view'
'parquet_view'
'simple_view'
'view_view'
====
---- QUERY
# Test 'if exists' for dropping a view (view does not exist)
drop view if exists ddl_test_db.bad_view
---- RESULTS
====
---- QUERY
# Test 'if exists' does not drop a table with same name
create table ddl_test_db.drop_tbl_test(a int)
---- RESULTS
====
---- QUERY
drop view if exists ddl_test_db.drop_tbl_test
---- RESULTS
====
---- QUERY
# Test drop table 'if exists' does not drop a view with same name.
# We try to drop a table with name complex_view and it should should
# still be listed in the subsequent show tables output (as a view).
drop table if exists ddl_test_db.complex_view
---- RESULTS
====
---- QUERY
# Test that the table is present
show tables in ddl_test_db
---- RESULTS
'drop_tbl_test'
'complex_view'
'parquet_view'
'simple_view'
'view_view'
====
---- QUERY
# Test renaming a view
alter view ddl_test_db.view_view rename to ddl_test_db.view_on_view
---- RESULTS
====
---- QUERY
# Test renaming a parquet view
alter view ddl_test_db.parquet_view rename to ddl_test_db.new_parquet_view
---- RESULTS
====
---- QUERY
# Test that the view was renamed
show tables in ddl_test_db
---- RESULTS
'drop_tbl_test'
'complex_view'
'new_parquet_view'
'simple_view'
'view_on_view'
====
---- QUERY
# Test altering a with a new definition
alter view ddl_test_db.new_parquet_view as
select bigint_col, string_col from functional_parquet.alltypesagg
where bigint_col is null limit 10
---- RESULTS
====
---- QUERY
# Test querying the altered view
select count(bigint_col), count(string_col) from ddl_test_db.new_parquet_view
---- RESULTS
0,10
---- TYPES
bigint,bigint
====
---- QUERY
# Create a view on a constant select and try to query it.
create view ddl_test_db.const_view
as select 1, 'a', cast(10.0 as float)
---- RESULTS
====
---- QUERY
select * from ddl_test_db.const_view
---- RESULTS
1,'a',10
---- TYPES
tinyint,string,float
====
---- QUERY
# Test that parentheses are preserved in view creation.
# If the parentheses were ignored the query would return a count > 0.
create view ddl_test_db.paren_view as
select count(*) from functional.alltypessmall
where true and (true or false) and false
---- RESULTS
====
---- QUERY
# Test that parentheses are preserved in view creation.
select * from ddl_test_db.paren_view
---- RESULTS
0
---- TYPES
bigint
====
---- QUERY
# Create a view with decimal columns. Regression test for IMPALA-1021.
create view ddl_test_db.decimal_view as
select * from functional.decimal_tbl
---- RESULTS
====
---- QUERY
# Query a view with decimal columns. Regression test for IMPALA-1021.
select * from ddl_test_db.decimal_view
---- RESULTS
1234,2222,1.2345678900,0.12345678900000000000000000000000000000,12345.78900,1
12345,333,123.4567890000,0.12345678900000000000000000000000000000,11.22000,1
12345,333,1234.5678900000,0.12345678900000000000000000000000000000,0.10000,1
132842,333,12345.6789000000,0.12345678900000000000000000000000000000,0.77889,1
2345,111,12.3456789000,0.12345678900000000000000000000000000000,3.14100,1
---- TYPES
decimal,decimal,decimal,decimal,decimal,decimal
====
---- QUERY
# Test that plan hints are stored in the view as end-of-line commented hints
# for view-compatibility with Hive.
create view ddl_test_db.hints_test as
select /* +straight_join */ a.* from functional.alltypestiny a
inner join /* +broadcast */ functional.alltypes b on a.id = b.id
inner join /* +shuffle */ functional.alltypessmall c on b.id = c.id
---- RESULTS
====
---- QUERY
describe formatted ddl_test_db.hints_test
---- TYPES
string,string,string
---- RESULTS: VERIFY_IS_SUBSET
'# View Information','NULL','NULL'
'View Original Text: ','SELECT ','NULL'
'-- +straight_join','NULL','NULL'
' a.* FROM functional.alltypestiny a INNER JOIN ','NULL','NULL'
'-- +broadcast','NULL','NULL'
' functional.alltypes b ON a.id = b.id INNER JOIN ','NULL','NULL'
'-- +shuffle','NULL','NULL'
' functional.alltypessmall c ON b.id = c.id','NULL','NULL'
'View Expanded Text: ','SELECT ','NULL'
'-- +straight_join','NULL','NULL'
' a.* FROM functional.alltypestiny a INNER JOIN ','NULL','NULL'
'-- +broadcast','NULL','NULL'
' functional.alltypes b ON a.id = b.id INNER JOIN ','NULL','NULL'
'-- +shuffle','NULL','NULL'
' functional.alltypessmall c ON b.id = c.id','NULL','NULL'
====
---- QUERY
# Test querying the hinted view.
select count(*) from ddl_test_db.hints_test
---- RESULTS
8
---- TYPES
bigint
====