blob: 45679e2eda2611f9d6c140d26aa3a8703c961650 [file] [log] [blame]
create tablespace some_default_tablespace location '@testtablespace@_default_tablespace';
create tablespace some_database_tablespace location '@testtablespace@_database_tablespace';
create database database_for_default_tablespace;
\c database_for_default_tablespace;
set default_tablespace to some_default_tablespace;
create table some_table_in_default_tablespace (a int);
-- expect this to be one
select count(1) from pg_class inner join pg_tablespace ON pg_class.reltablespace = pg_tablespace.oid where spcname = 'some_default_tablespace' AND relname = 'some_table_in_default_tablespace';
-- expect this to be the number of segments
select count(1) from gp_dist_random('pg_class') segment_pg_class inner join pg_tablespace on pg_tablespace.oid = segment_pg_class.reltablespace where relname = 'some_table_in_default_tablespace' and spcname = 'some_default_tablespace';
-- When I create an index with the a default tablespace set
create index some_table_in_default_tablespace_index on some_table_in_default_tablespace(a);
-- Then it should be created in the default tablespace
select count(1) from pg_class inner join pg_tablespace ON pg_class.reltablespace = pg_tablespace.oid where spcname = 'some_default_tablespace' AND relname = 'some_table_in_default_tablespace_index';
-- And it should be created in the default tablespace on the segments
select count(1) from gp_dist_random('pg_class') segment_pg_class inner join pg_tablespace on pg_tablespace.oid = segment_pg_class.reltablespace where relname = 'some_table_in_default_tablespace_index' and spcname = 'some_default_tablespace';
-- When I create a temporary table
create temporary table some_temporary_table_for_default_tablespace_test (a int);
-- Then it should not be affected by the default_tablespace GUC
select count(1) from pg_class inner join pg_tablespace ON pg_class.reltablespace = pg_tablespace.oid where spcname = 'some_default_tablespace' AND relname = 'some_temporary_table_for_default_tablespace_test';
-- And is should not be affected on the segments either
select count(1) from gp_dist_random('pg_class') segment_pg_class inner join pg_tablespace on pg_tablespace.oid = segment_pg_class.reltablespace where relname = 'some_temporary_table_for_default_tablespace_test' and spcname = 'some_default_tablespace';
-- When I create an index on a temporary table
create index some_temporary_table_for_default_tablespace_test_index on some_temporary_table_for_default_tablespace_test(a);
-- Then it should not be affected by the default_tablespace GUC
select count(1) from pg_class inner join pg_tablespace ON pg_class.reltablespace = pg_tablespace.oid where spcname = 'some_default_tablespace' AND relname = 'some_temporary_table_for_default_tablespace_test_index';
-- And is should not be affected on the segments either
select count(1) from gp_dist_random('pg_class') segment_pg_class inner join pg_tablespace on pg_tablespace.oid = segment_pg_class.reltablespace where relname = 'some_temporary_table_for_default_tablespace_test_index' and spcname = 'some_default_tablespace';
-- When I set a tablespace for a database
reset default_tablespace;
create database database_with_tablespace;
alter database database_with_tablespace set tablespace some_database_tablespace;
\c database_with_tablespace;
-- And I set a default tablespace
set default_tablespace to some_default_tablespace;
-- Then tables and indexes that I create should be in the default tablespace
create table table_under_database_with_default_tablespace (a int);
create index table_under_database_with_default_tablespace_index on table_under_database_with_default_tablespace(a);
select count(1) from pg_class inner join pg_tablespace ON pg_class.reltablespace = pg_tablespace.oid where spcname = 'some_default_tablespace' AND relname = 'table_under_database_with_default_tablespace';
select count(1) from gp_dist_random('pg_class') segment_pg_class inner join pg_tablespace on pg_tablespace.oid = segment_pg_class.reltablespace where relname = 'table_under_database_with_default_tablespace' and spcname = 'some_default_tablespace';
select count(1) from pg_class inner join pg_tablespace ON pg_class.reltablespace = pg_tablespace.oid where spcname = 'some_default_tablespace' AND relname = 'table_under_database_with_default_tablespace_index';
select count(1) from gp_dist_random('pg_class') segment_pg_class inner join pg_tablespace on pg_tablespace.oid = segment_pg_class.reltablespace where relname = 'table_under_database_with_default_tablespace_index' and spcname = 'some_default_tablespace';
-- cleanup
\c database_for_default_tablespace
drop table some_table_in_default_tablespace;
\c database_with_tablespace
drop table table_under_database_with_default_tablespace;
\c regression;
reset default_tablespace;
drop database database_for_default_tablespace;
drop database database_with_tablespace;
drop tablespace some_default_tablespace;
drop tablespace some_database_tablespace;