mirror of
https://github.com/apache/impala.git
synced 2026-01-14 03:00:25 -05:00
Previously, when creating a new database, the CatalogOpExecutor would create an HMS Database object, issue the HMS createDatabase call, and then create a Catalog entry from that same Database object. The resulting Catalog entry would be missing certain fields that are auto-created by the HMS itself, most importantly the location field. The code for CTAS seems to have contained a workaround for this issue ever since catalogd was first introduced: rather than using the location stored in the Db object, it would re-fetch the Database from HMS. Now that this is fixed, that workaround could be removed and some code simplified. A new test verifies that a newly-created database has the appropriate location, and existing CTAS tests verify that functionality didn't regress. Change-Id: I13df31cee1e5768b073e0e35c4c16ebf1892be23 Reviewed-on: http://gerrit.cloudera.org:8080/11229 Reviewed-by: Vuk Ercegovac <vercegovac@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
133 lines
3.3 KiB
Plaintext
133 lines
3.3 KiB
Plaintext
====
|
|
---- QUERY
|
|
create database $DATABASE_2 comment "For testing"
|
|
---- RESULTS
|
|
'Database has been created.'
|
|
====
|
|
---- QUERY
|
|
show databases like "$DATABASE_2"
|
|
---- RESULTS
|
|
'$DATABASE_2','For testing'
|
|
---- TYPES
|
|
STRING, STRING
|
|
====
|
|
---- QUERY
|
|
# Test that DESCRIBE shows the proper database location
|
|
# for a newly created database (regression test for IMPALA-7439)
|
|
describe database $DATABASE_2
|
|
---- RESULTS
|
|
'$DATABASE_2','$NAMENODE/test-warehouse/$DATABASE_2.db','For testing'
|
|
---- TYPES
|
|
string, string, string
|
|
====
|
|
---- QUERY
|
|
# Test that DESCRIBE EXTENDED also has all of the necessary info.
|
|
describe database extended $DATABASE_2
|
|
---- RESULTS
|
|
'$DATABASE_2','$NAMENODE/test-warehouse/$DATABASE_2.db','For testing'
|
|
'Owner: ','',''
|
|
'','$USER','USER'
|
|
---- TYPES
|
|
string, string, string
|
|
====
|
|
---- QUERY
|
|
# Make sure creating a database with the same name doesn't throw an error when
|
|
# IF NOT EXISTS is specified.
|
|
create database if not exists $DATABASE_2
|
|
---- RESULTS
|
|
'Database already exists.'
|
|
====
|
|
---- QUERY
|
|
# Test dropping the database.
|
|
drop database $DATABASE_2
|
|
---- RESULTS
|
|
'Database has been dropped.'
|
|
====
|
|
---- QUERY
|
|
show databases like "$DATABASE_2"
|
|
---- RESULTS
|
|
---- TYPES
|
|
STRING, STRING
|
|
====
|
|
---- QUERY
|
|
# Dropping a non-existent databases is ok with IF EXISTS
|
|
drop database if exists $DATABASE_2
|
|
---- RESULTS
|
|
'Database has been dropped.'
|
|
====
|
|
---- QUERY
|
|
# Test DROP DATABASE ... CASCADE
|
|
create database if not exists $DATABASE_cascade
|
|
====
|
|
---- QUERY
|
|
create table if not exists $DATABASE_cascade.t1 (i int);
|
|
create table if not exists $DATABASE_cascade.t2 (i int)
|
|
partitioned by (year smallint, month smallint);
|
|
insert into $DATABASE_cascade.t2 partition (year=2015, month=8) values(1);
|
|
create external table if not exists $DATABASE_cascade.t3 like functional.alltypes
|
|
location '$FILESYSTEM_PREFIX/test-warehouse/alltypes_external';
|
|
create view if not exists $DATABASE_cascade.v1 as
|
|
select int_col from functional.alltypes;
|
|
create function if not exists $DATABASE_cascade.f1() returns string
|
|
location '$FILESYSTEM_PREFIX/test-warehouse/libTestUdfs.so' symbol='NoArgs';
|
|
create aggregate function if not exists $DATABASE_cascade.f2(int, string) RETURNS int
|
|
location '$FILESYSTEM_PREFIX/test-warehouse/libTestUdas.so' UPDATE_FN='TwoArgUpdate'
|
|
---- RESULTS
|
|
'Function has been created.'
|
|
====
|
|
---- QUERY
|
|
show tables in $DATABASE_cascade
|
|
---- RESULTS
|
|
't1'
|
|
't2'
|
|
't3'
|
|
'v1'
|
|
---- TYPES
|
|
STRING
|
|
====
|
|
---- QUERY
|
|
show functions in $DATABASE_cascade
|
|
---- RESULTS
|
|
'STRING','f1()','NATIVE','true'
|
|
---- TYPES
|
|
STRING, STRING, STRING, STRING
|
|
====
|
|
---- QUERY
|
|
show aggregate functions in $DATABASE_cascade
|
|
---- RESULTS
|
|
'INT','f2(INT, STRING)','NATIVE','true'
|
|
---- TYPES
|
|
STRING, STRING, STRING, STRING
|
|
====
|
|
---- QUERY
|
|
# Should drop all tables, functions, and aggregate functions, as well
|
|
# as the database itself.
|
|
drop database $DATABASE_cascade cascade
|
|
---- RESULTS
|
|
'Database has been dropped.'
|
|
====
|
|
---- QUERY
|
|
show databases like '$DATABASE_cascade'
|
|
---- RESULTS
|
|
====
|
|
---- QUERY
|
|
# Test that DROP DATABASE ... RESTRICT executes ok.
|
|
create database if not exists $DATABASE_restrict
|
|
====
|
|
---- QUERY
|
|
show databases like '$DATABASE_restrict'
|
|
---- RESULTS
|
|
'$DATABASE_restrict',''
|
|
---- TYPES
|
|
STRING,STRING
|
|
====
|
|
---- QUERY
|
|
drop database $DATABASE_restrict restrict
|
|
---- RESULTS
|
|
'Database has been dropped.'
|
|
====
|
|
---- QUERY
|
|
show databases like '$DATABASE_restrict'
|
|
---- RESULTS
|
|
====
|