Files
impala/testdata/workloads/functional-query/queries/QueryTest/hdfs-caching.test
Michael Ho eb479d040e IMPALA-1714: Check if tables or partitions specified in "CREATE/ALTER TABLE ... CACHE IN ..." statements are cacheable.
This change adds more analysis checks to verify the location
of the table or partition specified in a "CREATE/ALTER TABLE
... CACHED IN ..." statement can actually be cached. Caching
is only supported for HDFS locations.

If table-wide caching is enabled for a table, adding a partition
at an uncacheable location will be disallowed for that table
unless the attribute "UNCACHED" is explicitly specified.

Enabling table-wide caching for a table at an uncacheable
location or a table with partitions at uncacheable locations
will also be disallowed. However, caching can still be enabled
for individual partitions whose underlying locations
support caching.

Change-Id: I2299c9285126f4b035360f2ef902147188ccd5f1
Reviewed-on: http://gerrit.cloudera.org:8080/1373
Reviewed-by: Dan Hecht <dhecht@cloudera.com>
Reviewed-by: Michael Ho <kwho@cloudera.com>
Tested-by: Internal Jenkins
2015-11-06 23:30:14 +00:00

376 lines
13 KiB
Plaintext

====
---- QUERY
use cachedb
====
---- QUERY
create table cached_tbl_nopart (i int) cached in 'testPool'
====
---- QUERY
insert into cached_tbl_nopart select 1
---- RESULTS
: 1
====
---- QUERY
select * from cached_tbl_nopart
---- RESULTS
1
---- TYPES
INT
====
---- QUERY
# Unpartitioned table shows correct caching
show table stats cached_tbl_nopart
---- RESULTS
-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
---- TYPES
BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Unpartitioned table is no longer cached
alter table cached_tbl_nopart set uncached
====
---- QUERY
show table stats cached_tbl_nopart
---- RESULTS
-1,1,'2B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
---- TYPES
BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
drop table if exists cached_tbl_part
====
---- QUERY
create table cached_tbl_part (i int) partitioned by (j int) cached in 'testPool' with replication = 9
====
---- QUERY
# new partition should inherit the cached property
alter table cached_tbl_part add partition (j=0)
====
---- QUERY
# should be able to override the inherited cached property
alter table cached_tbl_part add partition (j=1) uncached
====
---- QUERY
alter table cached_tbl_part add partition (j=2) cached in 'testPool'
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'9','TEXT','false',regex:.*
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'9','TEXT','false',regex:.*
'Total',-1,0,'0B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
drop table if exists cached_tbl_part
====
---- QUERY
create table cached_tbl_part (i int) partitioned by (j int) cached in 'testPool'
====
---- QUERY
# new partition should inherit the cached property
alter table cached_tbl_part add partition (j=0)
====
---- QUERY
# should be able to override the inherited cached property
alter table cached_tbl_part add partition (j=1) uncached
====
---- QUERY
alter table cached_tbl_part add partition (j=2) cached in 'testPool'
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'Total',-1,0,'0B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# uncache one of the partitions
alter table cached_tbl_part partition (j=2) set uncached
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'Total',-1,0,'0B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Can uncache the same partition twice without an error.
alter table cached_tbl_part partition (j=2) set uncached
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'Total',-1,0,'0B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# mark an uncached partition as cached
alter table cached_tbl_part partition (j=1) set cached in 'testPool'
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'Total',-1,0,'0B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# dynamic partition insert inherits table properties
insert into cached_tbl_part partition(j) values(3, 3), (4, 4);
---- RESULTS
j=3/: 1
j=4/: 1
====
---- QUERY
# Modify partition cache replication
alter table cached_tbl_part partition (j=3) set cached in 'testPool' with replication = 4
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'4','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Set uncached clears all cache requests
alter table cached_tbl_part set uncached
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'3',-1,1,'2B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'4',-1,1,'2B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Can call set uncached multiple times on the same partitioned table
alter table cached_tbl_part set uncached
====
---- QUERY
# Set cached caches all partitions
alter table cached_tbl_part set cached in 'testPool'
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Can call set cached multiple times on the same partitioned table.
alter table cached_tbl_part set cached in 'testPool'
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Modify partition cache replication in preparation for table level alteration
alter table cached_tbl_part partition (j=3) set cached in 'testPool' with replication = 4
====
---- QUERY
# Uncache a partition in preparation for table level alteration
alter table cached_tbl_part partition (j=1) set uncached
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'4','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'1','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Set replication factor for all partitions regardless of their current state
alter table cached_tbl_part set cached in 'testPool' with replication = 8
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Add partition with different replication
alter table cached_tbl_part add partition(j=5) cached in 'testPool' with replication = 3
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'5',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Change replication for a partition
alter table cached_tbl_part partition(j=2) set cached in 'testPool' with replication = 3
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'5',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Add partition with inherited replication from table
alter table cached_tbl_part add partition(j=6) cached in 'testPool'
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'5',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'6',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Add a partition with uncacheable location and it should fail
alter table cached_tbl_part add partition(j=7)
location 'file://$IMPALA_HOME/testdata/data/cached_tbl_part'
---- CATCH
Location 'file:$IMPALA_HOME/testdata/data/cached_tbl_part' cannot be cached. Please retry without caching: ALTER TABLE cachedb.cached_tbl_part ADD PARTITION ... UNCACHED
====
---- QUERY
# Add a partition with uncacheable location and it should succeed with UNCACHED specified
alter table cached_tbl_part add partition(j=7)
location 'file://$IMPALA_HOME/testdata/data/cache_tbl_part' uncached
====
---- QUERY
show partitions cached_tbl_part
---- RESULTS
'0',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'2',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'3',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'4',-1,1,'2B',regex:.+B,'8','TEXT','false',regex:.*
'5',-1,0,'0B',regex:.+B,'3','TEXT','false',regex:.*
'6',-1,0,'0B',regex:.+B,'8','TEXT','false',regex:.*
'7',-1,0,'0B',regex:.+B,'NOT CACHED','TEXT','false',regex:.*
'Total',-1,2,'4B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Create a table which resides on the local file system
create table uncached_tbl_local(i int)
location 'file://$IMPALA_HOME/testdata/data/uncached_tbl_local'
====
---- QUERY
# Turning on caching should fail for this table
alter table uncached_tbl_local set cached in 'testPool'
---- CATCH
Table cachedb.uncached_tbl_local cannot be cached. Please check if the table or partitions are on a filesystem which supports caching.
====
---- QUERY
# Create a new table on HDFS
create table cached_tbl_local(i int) partitioned by (j int)
====
---- QUERY
# Add a partition which resides on the local filesystem
alter table cached_tbl_local add partition(j=0)
location 'file://$IMPALA_HOME/testdata/data/cached_local_part'
====
---- QUERY
# Turning on caching for this new partition should fail
alter table cached_tbl_local partition(j=0) set cached in 'testPool'
---- CATCH
Partition (j=0) cannot be cached. Please check if the table or partitions are on a filesystem which supports caching.
====
---- QUERY
# Turning on caching should also fail for this table
alter table cached_tbl_local set cached in 'testPool'
---- CATCH
Table cachedb.cached_tbl_local cannot be cached. Please check if the table or partitions are on a filesystem which supports caching.
====
---- QUERY
# Adding a cacheable partition should be allowed even if other partitions are not cacheable.
alter table cached_tbl_local add partition(j=1) cached in 'testPool'
====
---- QUERY
# Turning on caching should still fail for this table
alter table cached_tbl_local set cached in 'testPool'
---- CATCH
Table cachedb.cached_tbl_local cannot be cached. Please check if the table or partitions are on a filesystem which supports caching.
====
---- QUERY
show partitions cached_tbl_local;
---- RESULTS
'0',-1,0,'0B',regex:.+B,'NOT CACHED','TEXT','false',regex:.*
'1',-1,0,'0B',regex:.+B,'1','TEXT','false',regex:.*
'Total',-1,0,'0B',regex:.+B,'','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====