====
---- QUERY
# First create a partitioned table
create table t1 like functional.alltypes
location '$FILESYSTEM_PREFIX/test-warehouse/$DATABASE.db/t1';
insert into t1 partition(year, month) select * from functional.alltypes;
compute incremental stats t1;
show table stats t1;
---- LABELS
YEAR, MONTH, #ROWS, #FILES, SIZE, BYTES CACHED, CACHE REPLICATION, FORMAT, INCREMENTAL STATS, LOCATION
---- RESULTS
'2009','1',310,1,'24.56KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','2',280,1,'22.27KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','3',310,1,'24.67KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','4',300,1,'24.06KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','5',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','6',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','7',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','8',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','9',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','10',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','11',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2009','12',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','1',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','2',280,1,'22.54KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','3',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','4',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','5',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','6',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','7',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','8',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','9',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','10',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','11',300,1,'24.16KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'2010','12',310,1,'24.97KB','NOT CACHED','NOT CACHED','TEXT','true',regex:.*
'Total','',7300,24,'586.84KB','0B','','','',''
---- TYPES
STRING, STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
show column stats t1;
---- LABELS
COLUMN, TYPE, #DISTINCT VALUES, #NULLS, MAX SIZE, AVG SIZE
---- RESULTS
'id','INT',7300,0,4,4
'bool_col','BOOLEAN',2,0,1,1
'tinyint_col','TINYINT',10,0,1,1
'smallint_col','SMALLINT',10,0,2,2
'int_col','INT',10,0,4,4
'bigint_col','BIGINT',10,0,8,8
'float_col','FLOAT',10,0,4,4
'double_col','DOUBLE',10,0,8,8
'date_string_col','STRING',736,0,8,8
'string_col','STRING',10,0,1,1
'timestamp_col','TIMESTAMP',7300,0,16,16
'year','INT',2,0,4,4
'month','INT',12,0,4,4
---- TYPES
STRING, STRING, BIGINT, BIGINT, BIGINT, DOUBLE
====
---- QUERY
# Show that the truncation removed all files, table stats, and incremental stats,
# but preserved the partitions.
truncate table t1;
show table stats t1;
---- LABELS
YEAR, MONTH, #ROWS, #FILES, SIZE, BYTES CACHED, CACHE REPLICATION, FORMAT, INCREMENTAL STATS, LOCATION
---- RESULTS
'2009','1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','3',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','4',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','5',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','6',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','7',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','8',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','9',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','10',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','11',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2009','12',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','3',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','4',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','5',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','6',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','7',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','8',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','9',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','10',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','11',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'2010','12',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
'Total','',-1,0,'0B','0B','','','',''
---- TYPES
STRING, STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Show that the truncation removed the column stats.
show column stats t1;
---- LABELS
COLUMN, TYPE, #DISTINCT VALUES, #NULLS, MAX SIZE, AVG SIZE
---- RESULTS
'id','INT',-1,-1,4,4
'bool_col','BOOLEAN',-1,-1,1,1
'tinyint_col','TINYINT',-1,-1,1,1
'smallint_col','SMALLINT',-1,-1,2,2
'int_col','INT',-1,-1,4,4
'bigint_col','BIGINT',-1,-1,8,8
'float_col','FLOAT',-1,-1,4,4
'double_col','DOUBLE',-1,-1,8,8
'date_string_col','STRING',-1,-1,-1,-1
'string_col','STRING',-1,-1,-1,-1
'timestamp_col','TIMESTAMP',-1,-1,16,16
'year','INT',2,0,4,4
'month','INT',12,0,4,4
---- TYPES
STRING, STRING, BIGINT, BIGINT, BIGINT, DOUBLE
====
---- QUERY
# Create an unpartitioned table.
create table t2 like functional.tinytable
location '$FILESYSTEM_PREFIX/test-warehouse/$DATABASE.db/t2';
insert into t2 select * from functional.tinytable;
compute incremental stats t2;
show table stats t2;
---- LABELS
#ROWS, #FILES, SIZE, BYTES CACHED, CACHE REPLICATION, FORMAT, INCREMENTAL STATS, LOCATION
---- RESULTS
3,1,'38B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
---- TYPES
BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
show column stats t2;
---- LABELS
COLUMN, TYPE, #DISTINCT VALUES, #NULLS, MAX SIZE, AVG SIZE
---- RESULTS
'a','STRING',3,0,8,6.666666507720947
'b','STRING',3,0,7,4
---- TYPES
STRING, STRING, BIGINT, BIGINT, BIGINT, DOUBLE
====
---- QUERY
# Show that the truncation removed all files, table stats, and incremental stats.
truncate table t2;
show table stats t2;
---- LABELS
#ROWS, #FILES, SIZE, BYTES CACHED, CACHE REPLICATION, FORMAT, INCREMENTAL STATS, LOCATION
---- RESULTS
-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*
---- TYPES
BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# Show that the truncation removed the column stats.
show column stats t2;
---- LABELS
COLUMN, TYPE, #DISTINCT VALUES, #NULLS, MAX SIZE, AVG SIZE
---- RESULTS
'a','STRING',-1,-1,-1,-1
'b','STRING',-1,-1,-1,-1
---- TYPES
STRING, STRING, BIGINT, BIGINT, BIGINT, DOUBLE
====
---- QUERY
# TRUNCATE IF EXISTS does not fail on non existent table
truncate table if exists non_existent;
---- RESULTS
'Table does not exist.'
====
---- QUERY
# Create an unpartitioned table.
create table t3 like functional.tinytable
location '$FILESYSTEM_PREFIX/test-warehouse/$DATABASE.db/t3';
insert into t3 select * from functional.tinytable;
select count(*) from t3;
---- RESULTS
3
---- TYPES
BIGINT
====
---- QUERY
# TRUNCATE IF EXISTS base scenario
truncate table if exists t3;
---- RESULTS
'Table has been truncated.'
====
---- QUERY
# Verify that truncate was successful
select count(*) from t3;
---- RESULTS
0
---- TYPES
BIGINT
====
