--
-- Test for directory table
--

-- Display pg_tablespace, pg_directory_table, gp_storage_server, gp_storage_user_mapping catalog
\d+ pg_tablespace;
\d+ pg_directory_table;
\d+ gp_storage_server;
\d+ gp_storage_user_mapping;

SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname = 'pg_directory_table';
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname = 'gp_storage_server';
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname = 'gp_storage_user_mapping';

\getenv abs_builddir PG_ABS_BUILDDIR
\set testtablespace :abs_builddir '/testtablespace'

-- CREATE TABLESPACE
CREATE TABLESPACE directory_tblspc LOCATION :'testtablespace';

-- CREATE DATABASE
CREATE DATABASE dirtable_db;
\c dirtable_db
\d+ pg_directory_table;
\d+ gp_storage_server;
\d+ gp_storage_user_mapping;

SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname = 'pg_directory_table';
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname = 'gp_storage_server';
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname = 'gp_storage_user_mapping';
\c regression

-- CREATE USER for directory table
CREATE USER test_dirtable1;
CREATE USER test_dirtable2;
CREATE USER test_dirtable3;
CREATE USER test_dirtable4;

-- Test CREATE STORAGE SERVER
SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
CREATE STORAGE SERVER oss_server1;
CREATE STORAGE SERVER oss_server2 OPTIONS(protocal 'localhost');
CREATE STORAGE SERVER oss_server3 OPTIONS(endpoint '127.0.0.1:9000');
CREATE STORAGE SERVER oss_server4 OPTIONS(https 'true');
CREATE STORAGE SERVER oss_server5 OPTIONS(virtual_host 'false');
CREATE STORAGE SERVER oss_server6 OPTIONS(protocol 'qingstor', endpoint 'pek3b,qingstor.com');
CREATE STORAGE SERVER oss_server7 OPTIONS(https 'false', virtual_host 'true');
CREATE STORAGE SERVER oss_server8 OPTIONS(protocol 'hdfs', namenode '127.0.0.1:8020');
CREATE STORAGE SERVER oss_server9 OWNER TO postgres;    -- fail
CREATE STORAGE SERVER IF NOT EXISTS oss_server10;
CREATE STORAGE SERVER IF NOT EXISTS oss_server11 OPTIONS(protocol 's3av2');
CREATE STORAGE SERVER IF NOT EXISTS oss_server12 OPTIONS(protocol 's3av2', endpoint '127.0.0.1:9000', https 'false');
CREATE STORAGE SERVER IF NOT EXISTS oss_server13 OWNER TO postgres;   -- fail

SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
\c dirtable_db
SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
\c regression

-- Test ALTER STORAGE SERVER
ALTER STORAGE SERVER oss_server1 OPTIONS(protocol 'aws');
ALTER STORAGE SERVER oss_server1 OPTIONS(protocol 'test');  -- fail
ALTER STORAGE SERVER oss_server2 OPTIONS(https 'true');
ALTER STORAGE SERVER oss_server2 OPTIONS(https 'false', virtual_host 'true');   -- fail
ALTER STORAGE SERVER oss_server2 OPTIONS(virtual_host 'true');
ALTER STORAGE SERVER oss_server3 OPTIONS(endpoint '192.168.0.1');   -- fail
ALTER STORAGE SERVER oss_server4 OPTIONS(protocol 'localhost', virtual_host 'true');
ALTER STORAGE SERVER oss_server4 OPTIONS(protocol 'qingstor');  -- fail
ALTER STORAGE SERVER oss_server5;   -- fail
ALTER STORAGE SERVER oss_server6 OWNER TO postgres; -- fail
ALTER STORAGE SERVER IF EXISTS oss_server7 OPTIONS(endpoint '127.0.0.1:6555');    -- fail
ALTER STORAGE SERVER IF NOT EXISTS oss_server8 OPTIONS(virtual_host 'true');    -- fail

SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
\c dirtable_db
SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
\c regression

-- Test CREATE STORAGE USER MAPPING
CREATE STORAGE USER MAPPING FOR CURRENT_USER;   -- fail

CREATE STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server1;

CREATE STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server1
OPTIONS (accesskey 'KGFQWEFQQEFXVAEAWLLC', secretkey '0SJIWiIATh6jOlmAKr8DGq6hOAGBI1BnsnvgJmTs');   -- fail

CREATE STORAGE USER MAPPING IF NOT EXISTS FOR CURRENT_USER STORAGE SERVER oss_server1;

CREATE STORAGE USER MAPPING IF NOT EXISTS FOR CURRENT_USER STORAGE SERVER oss_server1
OPTIONS (auth_method 'simple');

CREATE STORAGE USER MAPPING FOR CURRENT_ROLE STORAGE SERVER oss_server2
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '0ADQiAxcaUJ2lMHipis80hsUEhdiqui82JhduOKE');

CREATE STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server2
OPTIONS (accesskey 'KGFQWEFQQEFXVAEAWLLC', secretkey '0SJIWiIATh6jOlmAKr8DGq6hOAGBI1BnsnvgJmTs');   -- fail

CREATE STORAGE USER MAPPING FOR CURRENT_ROLE STORAGE SERVER oss_server3
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '0ADQiAxcaUJ2lMHipis80hsUEhdiqui82JhduOKE');

CREATE STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_not_exits;  -- fail

CREATE STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_not_exits
OPTIONS (accesskey 'KGFQWEFQQEFXVAEAWLLC', secretkey '0SJIWiIATh6jOlmAKr8DGq6hOAGBI1BnsnvgJmTs');   -- fail

CREATE STORAGE USER MAPPING FOR test_dirtable1 STORAGE SERVER oss_server1;

CREATE STORAGE USER MAPPING FOR test_dirtable1 STORAGE SERVER oss_server1
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '7KieQKdu02jHEUEjsqUYE83mx9OE2kdj2SJ72h6H');   -- fail

CREATE STORAGE USER MAPPING FOR test_dirtable1 STORAGE SERVER oss_server2
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '7KieQKdu02jHEUEjsqUYE83mx9OE2kdj2SJ72h6H');

CREATE STORAGE USER MAPPING FOR test_dirtable1 STORAGE SERVER oss_server3
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '7KieQKdu02jHEUEjsqUYE83mx9OE2kdj2SJ72h6H');

CREATE STORAGE USER MAPPING FOR no_exist_user STORAGE SERVER oss_server1;   -- fail

CREATE STORAGE USER MAPPING FOR no_exist_user STORAGE SERVER oss_server1
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '7KieQKdu02jHEUEjsqUYE83mx9OE2kdj2SJ72h6H');   -- fail

CREATE STORAGE USER MAPPING IF NOT EXISTS FOR CURRENT_USER STORAGE SERVER oss_server1
OPTIONS (accesskey 'KGFQWEFQQEFXVAEAWLLC', secretkey '0SJIWiIATh6jOlmAKr8DGq6hOAGBI1BnsnvgJmTs');   -- skip

CREATE STORAGE USER MAPPING IF NOT EXISTS FOR test_dirtable2 STORAGE SERVER oss_server3
OPTIONS (endpoint '127.0.0.1:6555');

CREATE STORAGE USER MAPPING IF NOT EXISTS FOR test_dirtable3 STORAGE SERVER oss_server8
OPTIONS (auth_method 'simple');

CREATE STORAGE USER MAPPING IF NOT EXISTS FOR no_exist_user STORAGE SERVER oss_server1;   -- fail

SELECT umoptions FROM gp_storage_user_mapping ORDER BY 1;
\c dirtable_db
SELECT umoptions FROM gp_storage_user_mapping ORDER BY 1;
\c regression

-- Test ALTER STORAGE USER MAPPING
ALTER STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server1; -- fail

ALTER STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server1
OPTIONS (accesskey 'KGFQWEFQQEFXVAEAWLLC', secretkey '0SJIWiIATh6jOlmAKr8DGq6hOAGBI1BnsnvgJmTs');

ALTER STORAGE USER MAPPING FOR CURRENT_ROLE STORAGE SERVER oss_server1
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ'); -- fail

ALTER STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server1
OPTIONS (auth_method 'simple');

ALTER STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server2
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '0ADQiAxcaUJ2lMHipis80hsUEhdiqui82JhduOKE');   -- fail

ALTER STORAGE USER MAPPING IF EXISTS FOR CURRENT_USER STORAGE SERVER server_not_exists
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '0ADQiAxcaUJ2lMHipis80hsUEhdiqui82JhduOKE');   -- fail

ALTER STORAGE USER MAPPING IF EXISTS FOR no_exist_user STORAGE SERVER oss_server1
OPTIONS (accesskey 'EQEJIOJFAKQWESQEJIWQ', secretkey '0ADQiAxcaUJ2lMHipis80hsUEhdiqui82JhduOKE');   -- fail

ALTER STORAGE USER MAPPING IF NOT EXISTS FOR test_dirtable1 STORAGE SERVER oss_server3
OPTIONS (auth_method 'simple'); -- fail

SELECT umoptions FROM gp_storage_user_mapping ORDER BY 1;
\c dirtable_db
SELECT umoptions FROM gp_storage_user_mapping ORDER BY 1;
\c regression

-- Test DROP STORAGE USER MAPPING
DROP STORAGE USER MAPPING FOR CURRENT_USER; -- fail
DROP STORAGE USER MAPPING FOR CURRENT_USER STORAGE SERVER oss_server2;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable1 STORAGE SERVER oss_server1;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable2 STORAGE SERVER no_exist_server;
DROP STORAGE USER MAPPING FOR test_dirtable3 STORAGE SERVER no_exist_server;    -- fail
DROP STORAGE USER MAPPING FOR no_exist_user STORAGE SERVER oss_server1; -- fail
DROP STORAGE USER MAPPING IF EXISTS FOR no_exist_user STORAGE SERVER oss_server1;   -- skip

SELECT umoptions FROM gp_storage_user_mapping ORDER BY 1;
\c dirtable_db
SELECT umoptions FROM gp_storage_user_mapping ORDER BY 1;
\c regression

-- Test DROP STOARGE SERVER
DROP STORAGE SERVER oss_server1;    -- fail
DROP STORAGE SERVER oss_server2;    -- fail
DROP STORAGE SERVER oss_server3;    -- fail
DROP STORAGE SERVER oss_server4;    -- fail
DROP STORAGE SERVER oss_server8;    -- fail
DROP STORAGE SERVER oss_server9;    -- fail
DROP STAROGE SERVER IF EXISTS oss_server9;  -- fail
DROP STORAGE SERVER IF NOT EXISTS oss_server9;  --fail
DROP STORAGE SERVER IF EXISTS oss_server10;

SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
\c dirtable_db
SELECT srvname, srvacl, srvoptions from gp_storage_server ORDER BY 1;
\c regression

-- Test directory table
-- Test CREATE DIRECTORY TABLE
SELECT count(*) FROM pg_directory_table;
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname like '%dir_table%' ORDER BY 1;

CREATE DIRECTORY TABLE dir_table1;
CREATE DIRECTORY TABLE dir_table2 TABLESPACE directory_tblspc;
CREATE DIRECTORY TABLE dir_table3 TABLESPACE directory_tblspc DISTRIBUTED BY(relative_path);    -- fail
CREATE DIRECTORY TABLE dir_table3 TABLESPACE directory_tblspc DISTRIBUTED RANDOMLY; -- fail
CREATE DIRECTORY TABLE dir_table3 TABLESPACE directory_tblspc DISTRIBUTED REPLICATED;   -- fail
CREATE DIRECTORY TABLE dir_table3 TABLESPACE directory_tblspc;
CREATE DIRECTORY TABLE IF NOT EXISTS dir_table4 TABLESPACE directory_tblspc;
CREATE DIRECTORY TABLE IF NOT EXISTS dir_table2 TABLESPACE directory_tblspc;    -- fail
CREATE DIRECTORY TABLE dir_table5 TABLESPACE directory_tblspc;
CREATE DIRECTORY TABLE dir_table6 TABLESPACE pg_default;
CREATE DIRECTORY TABLE "abs.dir_table";

SELECT count(*) FROM pg_directory_table;
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname like '%dir_table%' ORDER BY 1;
\d+ dir_table1;
\d+ dir_table2;
\d+ dir_table3;
\c dirtable_db
SELECT count(*) FROM pg_directory_table;
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname like '%dir_table%' ORDER BY 1;
\c regression

-- Test create table inherits directory table
CREATE TABLE test_inherits1 INHERITS(dir_table1);   -- fail
CREATE TABLE test_inherits2(a int) INHERITS(dir_table2);    -- fail
CREATE TABLE test_inherits3 INHERITS(dir_table2, dir_table3);   -- fail
CREATE TABLE test_inherits4(b text) INHERITS(dir_table1, dir_table2);   -- fail

-- Test DROP DIRECTORY TABLE
DROP DIRECTORY TABLE dir_table4;
DROP DIRECTORY TABLE dir_table4;
DROP DIRECTORY TABLE IF EXISTS dir_table5;
DROP DIRECTORY TABLE IF EXISTS dir_table5;  -- skip

SELECT count(*) FROM pg_directory_table;
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname like '%dir_table%' ORDER BY 1;
\c dirtable_db
SELECT count(*) FROM pg_directory_table;
SELECT relname, relisshared, relpersistence, relkind FROM pg_class WHERE relname like '%dir_table%' ORDER BY 1;
\c regression

--Test Lock directory table
BEGIN;
LOCK TABLE dir_table1 IN ACCESS SHARE MODE;
LOCK TABLE dir_table1 IN ACCESS EXCLUSIVE MODE;
COMMIT;

BEGIN;
LOCK TABLE dir_table1 IN ACCESS SHARE MODE;
LOCK TABLE dir_table1 IN ACCESS EXCLUSIVE MODE;
ROLLBACK;

-- Test CREATE/DROP/REINDEX on DIRECTORY SCHEMA TABLE
-- Test CREATE INDEX on DIRECTORY SCHEMA TABLE
CREATE INDEX dirtable1_relative_path_idx on dir_table1(relative_path);
CREATE INDEX dirtable1_size_idx on dir_table1(size);
CREATE INDEX dirtable1_last_modified_idx on dir_table1(last_modified);
CREATE INDEX dirtable1_md5_idx on dir_table1(md5);
CREATE INDEX dirtable1_tag_idx on dir_table1(tag);
\d+ dir_table1;

-- Test DROP INDEX on DIRECTORY SCHEMA TABLE
DROP INDEX dir_table1_pkey; -- fail
DROP INDEX dir_table2_pkey; -- fail
DROP INDEX dir_table3_pkey; -- fail
DROP INDEX dir_table4_pkey; -- fail
DROP INDEX dir_table5_pkey; -- fail
DROP INDEX dir_table6_pkey; -- fail
DROP INDEX dirtable1_relative_path_idx; -- OK
DROP INDEX dirtable1_size_idx;  -- OK
DROP INDEX dirtable1_last_modified_idx; -- OK
DROP INDEX dirtable1_md5_idx;   -- OK
DROP INDEX dirtable1_tag_idx;   -- OK
\d+ dir_table1;

-- Test REINDEX on DIRECTORY SCHEMA TABLE
REINDEX INDEX dir_table1_pkey;
REINDEX INDEX dir_table2_pkey;
REINDEX INDEX dir_table3_pkey;
REINDEX INDEX dir_table4_pkey;
REINDEX INDEX dir_table5_pkey;
REINDEX INDEX dir_table6_pkey;

REINDEX TABLE dir_table1;
REINDEX TABLE dir_table2;
REINDEX TABLE dir_table3;
REINDEX TABLE dir_table4;
REINDEX TABLE dir_table5;
REINDEX TABLE dir_table6;

-- Test triggers
create function triggertest() returns trigger as $$
begin
	raise notice '% % % %', TG_TABLE_NAME, TG_OP, TG_WHEN, TG_LEVEL;
	return new;
end;$$ language plpgsql;

create trigger trigtest_b_row_tg_dirtable_1 before insert or update or delete on dir_table1
for each row execute procedure triggertest();
create trigger trigtest_a_row_tg_dirtable_1 after insert or update or delete on dir_table1
for each row execute procedure triggertest();
create trigger trigtest_b_stmt_tg_dirtable_1 before insert or update or delete on dir_table1
for each statement execute procedure triggertest();
create trigger trigtest_a_stmt_tg_dirtable_1 after insert or update or delete on dir_table1
for each statement execute procedure triggertest();

-- Test COPY DIRECTORY TABLE syntax
SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;

\getenv abs_srcdir PG_ABS_SRCDIR
\set nation_file :abs_srcdir '/data/nation.csv'
COPY dir_table1 FROM :'nation_file';    -- fail
COPY dir_table1 FROM :'nation_file' 'nation'; -- fail
COPY BINARY dir_table1 FROM :'nation_file';    -- fail
COPY BINARY dir_table1 FROM :'nation_file' 'nation1';
COPY BINARY dir_table1 FROM :'nation_file' 'nation1'; -- fail
COPY BINARY dir_table1 FROM :'nation_file' 'nation2' 'nation2'; -- fail
COPY BINARY dir_table1 FROM :'nation_file' 'nation2';
COPY BINARY dir_table1 FROM :'nation_file' 'nation3' WITH TAG 'nation';
COPY BINARY dir_table1 FROM :'nation_file' 'nation3' WITH TAG 'nation';    -- fail
COPY BINARY dir_table1 FROM :'nation_file' 'nation3' WITH TAG 'nation2';    -- fail
COPY BINARY dir_table1 FROM :'nation_file' 'nation4' WITH TAG 'nation';
COPY BINARY dir_table1 FROM :'nation_file' 'nation5' WITH TAG 'nation' WITH TAG 'nation2';    -- fail
COPY BINARY dir_table1 FROM :'nation_file' 'nation6';
COPY BINARY dir_table1 FROM :'nation_file' 'nation7';
COPY BINARY dir_table1 FROM :'nation_file' 'nation8';
COPY BINARY dir_table1 FROM :'nation_file' 'nation9';
COPY BINARY dir_table1 FROM :'nation_file' 'nation10';
COPY BINARY dir_table1 FROM :'nation_file' 'nation11';
COPY BINARY dir_table1 FROM :'nation_file' 'nation12';
COPY BINARY dir_table1 FROM :'nation_file' 'nation13';
COPY BINARY dir_table1 FROM :'nation_file' 'nation14';
COPY BINARY dir_table1 FROM :'nation_file' 'nation15';
COPY BINARY dir_table1 FROM :'nation_file' 'nation16';
COPY BINARY dir_table1 FROM :'nation_file' 'nation17';
COPY BINARY dir_table1 FROM :'nation_file' 'nation18';
SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, content FROM directory_table('dir_table1') ORDER BY 1;

\set cat_nation_file 'cat ' :abs_srcdir '/data/nation.csv'
COPY dir_table2 FROM PROGRAM :'cat_nation_file';     -- fail
COPY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation';  -- fail
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation1';
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation1'; -- fail
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation2';
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation3' WITH TAG 'nation';
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation3' WITH TAG 'nation';    -- fail
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation3' WITH TAG 'nation2';    -- fail
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation4' WITH TAG 'nation';
COPY BINARY dir_table2 FROM PROGRAM :'cat_nation_file' 'nation5' WITH TAG 'nation' WITH TAG 'nation2';    -- fail
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;
SELECT relative_path, content FROM directory_table('dir_table2') ORDER BY 1;

COPY BINARY dir_table1 FROM :'nation_file' 'nation.txt';   -- OK
COPY BINARY dir_table1 FROM :'nation_file' 'nation2.txt';   -- OK
COPY BINARY "abs.dir_table" FROM :'nation_file' 'aa.bb';    -- OK
COPY BINARY "abs.dir_table" FROM :'nation_file' 'cc.dd';    -- OK

-- Test copy binary from directory table
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (format CSV);
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (freeze off);
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (freeze on);
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (delimiter ',');
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (null ' ');
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (header off);
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (header on);
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (quote ':');
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (escape ':');
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (force_quote (a));
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (force_quote *);
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (force_not_null (a));
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (force_null (a));
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (convert_selectively (a));
COPY BINARY dir_table1 FROM :'nation_file' 'nation_failed' (encoding 'sql_ascii');

COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (format CSV);
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (freeze off);
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (freeze on);
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (delimiter ',');
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (null ' ');
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (header off);
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (header on);
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (quote ':');
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (escape ':');
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (force_quote (a));
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (force_quote *);
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (force_not_null (a));
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (force_null (a));
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (convert_selectively (a));
COPY BINARY dir_table2 FROM :'nation_file' 'nation_failed' (encoding 'sql_ascii');

-- Test copy file content md5
CREATE OR REPLACE FUNCTION file_content(text, text) RETURNS BYTEA LANGUAGE SQL AS
'select content from directory_table($1) where relative_path = $2';

CREATE OR REPLACE FUNCTION file_md5(text, text) RETURNS TEXT LANGUAGE SQL AS
'select md5 from directory_table($1) where relative_path = $2';

CREATE OR REPLACE FUNCTION md5_equal(text, text) RETURNS BOOL LANGUAGE SQL AS
'SELECT md5(file_content($1, $2)) = (SELECT file_md5($1, $2))';

SELECT md5_equal('dir_table1', 'nation1');
SELECT md5_equal('dir_table1', 'nation2');
SELECT md5_equal('dir_table1', 'nation3');
SELECT md5_equal('dir_table1', 'nation4');

SELECT md5_equal('dir_table2', 'nation1');
SELECT md5_equal('dir_table2', 'nation2');
SELECT md5_equal('dir_table2', 'nation3');
SELECT md5_equal('dir_table2', 'nation4');

-- Test Copy To directory table
\set dir_table1_file :abs_srcdir '/data/dir_table1'
\set dir_table12_file :abs_srcdir '/data/dir_table2'
\set dir_nation1_file :abs_srcdir '/data/dir_nation1'
\set dir_unknown_file :abs_srcdir '/data/dir_unknown'
\set nation2_gz 'gzip -c -1 > ' :abs_srcdir '/data/nation2.gz'
COPY dir_table1 TO :'dir_table1_file';  -- fail
COPY BINARY dir_table1 TO :'dir_table1_file';  -- fail
COPY dir_table1 TO :'dir_table1_file';  -- fail
COPY BINARY dir_table1 TO :'dir_table1_file';  -- fail
COPY dir_table2 TO :'dir_table12_file';  -- fail
COPY BINARY dir_table2 TO :'dir_table12_file';  -- fail
COPY dir_table2 TO :'dir_table12_file';  -- fail
COPY BINARY dir_table2 TO :'dir_table12_file';  -- fail
COPY BINARY dir_table1 TO :'dir_table1_file';   -- fail
COPY BINARY dir_table1 TO :'dir_table1_file';   -- fail
COPY BINARY DIRECTORY TABLE dir_table1 'nation1' TO :'dir_nation1_file';   -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation1' TO :'dir_nation1_file';   -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'unknown' TO :'dir_unknown_file';   -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'unknown' TO :'dir_unknown_file';    -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2' TO stdin; -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2' TO stdin; -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2' TO stdout; -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2' TO stdout; -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2' TO PROGRAM :'nation2_gz';   -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2' TO PROGRAM :'nation2_gz';   -- OK

\set aa_bb_file :abs_srcdir '/data/aa.bb'
\set cc_dd_file :abs_srcdir '/data/cc.dd'
\set nation_txt_file :abs_srcdir '/data/nation.txt'
\set nation2_txt_file :abs_srcdir '/data/nation2.txt'
\set nation3_txt_file :abs_srcdir '/data/nation3.txt'
\set nation4_txt_file :abs_srcdir '/data/nation4.txt'
COPY BINARY DIRECTORY TABLE "abs.dir_table" 'aa.bb' TO :'aa_bb_file';   -- OK
COPY BINARY DIRECTORY TABLE "abs.dir_table" 'cc.dd' TO :'cc_dd_file';    -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation.txt' TO :'nation_txt_file'; -- OK
COPY BINARY DIRECTORY TABLE dir_table1 'nation2.txt' TO :'nation2_txt_file'; -- OK
COPY BINARY DIRECTORY TABLE public.dir_table1 'nation.txt' TO :'nation3_txt_file'; -- OK
COPY BINARY DIRECTORY TABLE public.dir_table1 'nation2.txt' TO :'nation4_txt_file'; -- OK


SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;

-- Test join between two directory schema tables
ANALYZE dir_table1;
ANALYZE dir_table2;
EXPLAIN (COSTS OFF) SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.relative_path = dir_table2.relative_path ORDER BY 1;
SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.relative_path = dir_table2.relative_path ORDER BY 1;

ANALYZE dir_table1;
ANALYZE dir_table2;
EXPLAIN (COSTS OFF) SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.size = dir_table2.size ORDER BY 1 LIMIT 1;
SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.size = dir_table2.size ORDER BY 1 LIMIT 1;

ANALYZE dir_table1;
ANALYZE dir_table2;
EXPLAIN (COSTS OFF) SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.md5 = dir_table2.md5 ORDER BY 1 LIMIT 1;
SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.md5 = dir_table2.md5 ORDER BY 1 LIMIT 1;

ANALYZE dir_table1;
ANALYZE dir_table2;
EXPLAIN (COSTS OFF) SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.tag = dir_table2.tag ORDER BY 1;
SELECT dir_table1.relative_path FROM dir_table1, dir_table2
WHERE dir_table1.tag = dir_table2.tag ORDER BY 1;

-- Test DML directory schema table, only allow to update tag
INSERT INTO dir_table1 VALUES('insert');    -- fail
INSERT INTO dir_table2 VALUES('insert', 512, '2000-03-21 17:13:27+08', '70f09140d1b83eb3ecf9a0e28494d2a4', 'insert');   -- fail
SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;

DELETE FROM dir_table1; -- fail
DELETE FROM dir_table2 WHERE relative_path = 'nation1'; -- fail
SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;

UPDATE dir_table1 SET relative_path = 'nation_updated'; -- fail
UPDATE dir_table2 SET relative_path = 'nation_updated' WHERE relative_path = 'nation2'; -- fail
UPDATE dir_table1 SET size = 512;   -- fail
UPDATE dir_table2 SET size = 1024 WHERE relative_path = 'nation1';  -- fail
UPDATE dir_table1 SET last_modified = '2000-03-21 16:55:07+08'; -- fail
UPDATE dir_table2 SET last_modified = '2000-03-21 16:55:07+08' WHERE relative_path = 'nation3'; -- fail
UPDATE dir_table1 SET md5 = '70f09140d1b83eb3ecf9a0e28494d2a4'; -- fail
UPDATE dir_table2 SET md5 = '70f09140d1b83eb3ecf9a0e28494d2a4' WHERE relative_path = 'nation4'; -- fail
UPDATE dir_table1 SET tag = 'nation_new_tag';  -- ok
UPDATE dir_table1 SET tag = 'nation2_new_tag' WHERE relative_path = 'nation2';  -- ok
UPDATE dir_table2 SET tag = 'nation4_new_tag' WHERE relative_path = 'nation3';  -- ok
UPDATE dir_table1 SET tag = 'failed_tag' WHERE relative_path = 'not_exist_path';
UPDATE dir_table2 SET tag = 'no_tag' WHERE relative_path = 'not_exist_path';
SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;

-- Test alter table directory schema table
ALTER TABLE dir_table1 ADD COLUMN a int;    -- fail
ALTER DIRECTORY TABLE dir_table1 ADD COLUMN a int;  -- fail
ALTER TABLE dir_table2 DROP COLUMN relative_path;   -- fail
ALTER DIRECTORY TABLE dir_table2 DROP COLUMN relative_path; -- fail
ALTER TABLE dir_table1 RENAME TO dir_table_new; -- fail
ALTER DIRECTORY TABLE dir_table1 RENAME TO dir_table_new;   -- fail
ALTER TABLE dir_table2 ADD CONSTRAINT dirtable_constraint UNIQUE (tag); -- fail
ALTER DIRECTORY TABLE dir_table2 ADD CONSTRAINT dirtable_constraint UNIQUE (tag);   -- fail
ALTER TABLE dir_table1 DROP CONSTRAINT DROP CONSTRAINT test_pkey;   -- fail
ALTER DIRECTORY TABLE dir_table1 DROP CONSTRAINT DROP CONSTRAINT test_pkey; -- fail

-- Test remove_table
SELECT remove_file('dir_table1', 'nation5');    -- fail
SELECT remove_file('dir_table1', 'nation1');
SELECT remove_file('dir_table2', 'nation1', 'nation2'); -- fail
SELECT remove_file('dir_table1', 'nation2');
SELECT remove_file('dir_table3', 'nation1');    -- fail
SELECT remove_file('dir_table2', 'nation3');
SELECT remove_file('dir_table1', 'nation1');    -- fail
SELECT relative_path, size, tag FROM dir_table1 ORDER BY 1;
SELECT relative_path, size, tag FROM dir_table2 ORDER BY 1;

-- Test transaction commit of directory table manipulation
CREATE DIRECTORY TABLE dir_table4 TABLESPACE directory_tblspc;

BEGIN;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_commit';
COPY BINARY dir_table4 FROM :'nation_file' 'nation_commit2' WITH TAG 'nation';

COMMIT;
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;

BEGIN;
SELECT remove_file('dir_table4', 'nation_commit');
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;
COMMIT;
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;

BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
UPDATE dir_table4 SET tag = 'nation_updated' WHERE relative_path = 'nation_commit2';
COMMIT;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;

-- Test transaction rollback of directory table manipulation

BEGIN;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_rollback';
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;
ROLLBACK;
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;

BEGIN;
SELECT remove_file('dir_table4', 'nation_commit2');
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;
ROLLBACK;
SELECT relative_path, content FROM directory_table('dir_table4') ORDER BY 1;

BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_rollback2' WITH TAG 'nation';
UPDATE dir_table4 SET tag = 'nation_updated' WHERE relative_path = 'nation_rollback2';
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
ROLLBACK;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;

-- Test subtransaction commit of directory table manipulation
BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subcommit' WITH TAG 'nation';
SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subcommit2';
SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subcommit3';
RELEASE SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COMMIT;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;

BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SELECT remove_file('dir_table4', 'nation_subcommit');
SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subcommit';
SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
RELEASE SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COMMIT;

BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SELECT remove_file('dir_table4', 'nation_subcommit');
SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SELECT remove_file('dir_table4', 'nation_subcommit2');
SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
RELEASE SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COMMIT;

BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SELECT remove_file('dir_table4', 'nation_subcommit2');
SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subcommit4';
SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
ROLLBACK TO SAVEPOINT s1;
COMMIT;

-- Test subtransaction rollback of directory table manipulation
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subrollback1';
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subrollback2';
BEGIN;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subrollback3';
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SAVEPOINT s1;
SELECT remove_file('dir_table4', 'nation_subrollback1');
SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
ROLLBACK;

BEGIN;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subrollback4';
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SAVEPOINT s1;
SELECT remove_file('dir_table4', 'nation_subrollback4');
SAVEPOINT s2;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
RELEASE SAVEPOINT s1;
ROLLBACK;

BEGIN;
SELECT remove_file('dir_table4', 'nation_subrollback2');
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subrollback5';
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SAVEPOINT s1;
SELECT remove_file('dir_table4', 'nation_subrollback5');
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
ROLLBACK TO SAVEPOINT s1;
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
COPY BINARY dir_table4 FROM :'nation_file' 'nation_subrollback6';
SELECT relative_path, tag FROM dir_table4 ORDER BY 1;
SAVEPOINT s2;
ROLLBACK;

-- test create directory table with location
CREATE DIRECTORY TABLE dir_table_with_location TABLESPACE directory_tblspc WITH LOCATION '/test_dirtable';
CREATE DIRECTORY TABLE dir_table_with_location2 TABLESPACE directory_tblspc WITH LOCATION '/test_dirtable'; -- error
CREATE DIRECTORY TABLE dir_table_with_location3 WITH LOCATION '/test_dirtable';
SELECT count(*) FROM pg_directory_table;
DROP DIRECTORY TABLE dir_table_with_location WITH CONTENT;
DROP DIRECTORY TABLE dir_table_with_location3 WITH CONTENT;

-- clean up
DROP DIRECTORY TABLE IF EXISTS dir_table1;
DROP DIRECTORY TABLE IF EXISTS dir_table2;
DROP DIRECTORY TABLE IF EXISTS dir_table3;
DROP DIRECTORY TABLE IF EXISTS dir_table4;
DROP DIRECTORY TABLE IF EXISTS dir_table5;
DROP DIRECTORY TABLE IF EXISTS dir_table6;
DROP DIRECTORY TABLE IF EXISTS "abs.dir_table";

DROP FUNCTION IF EXISTS triggertest;

DROP STORAGE USER MAPPING IF EXISTS FOR CURRENT_USER STORAGE SERVER oss_server1;
DROP STORAGE USER MAPPING IF EXISTS FOR CURRENT_USER STORAGE SERVER oss_server2;
DROP STORAGE USER MAPPING IF EXISTS FOR CURRENT_USER STORAGE SERVER oss_server3;
DROP STORAGE USER MAPPING IF EXISTS FOR CURRENT_USER STORAGE SERVER oss_server4;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable1 STORAGE SERVER oss_server1;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable1 STORAGE SERVER oss_server2;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable1 STORAGE SERVER oss_server3;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable2 STORAGE SERVER oss_server3;
DROP STORAGE USER MAPPING IF EXISTS FOR test_dirtable3 STORAGE SERVER oss_server8;

DROP STORAGE SERVER IF EXISTS oss_server1;
DROP STORAGE SERVER IF EXISTS oss_server2;
DROP STORAGE SERVER IF EXISTS oss_server3;
DROP STORAGE SERVER IF EXISTS oss_server4;
DROP STORAGE SERVER IF EXISTS oss_server5;
DROP STORAGE SERVER IF EXISTS oss_server6;
DROP STORAGE SERVER IF EXISTS oss_server7;
DROP STORAGE SERVER IF EXISTS oss_server8;
DROP STORAGE SERVER IF EXISTS oss_server9;
DROP STORAGE SERVER IF EXISTS oss_server10;
DROP STORAGE SERVER IF EXISTS oss_server11;
DROP STORAGE SERVER IF EXISTS oss_server12;
DROP STORAGE SERVER IF EXISTS oss_server13;

SELECT srvname, srvacl, srvoptions FROM gp_storage_server;

DROP USER test_dirtable1;
DROP USER test_dirtable2;
DROP USER test_dirtable3;
DROP USER test_dirtable4;

DROP FUNCTION IF EXISTS file_content;
DROP FUNCTION IF EXISTS file_md5;
DROP FUNCTION IF EXISTS md5_equal;

DROP DATABASE dirtable_db;

DROP TRIGGER IF EXISTS trigtest_b_row_tg_dirtable_1 ON dir_table1;
DROP TRIGGER IF EXISTS trigtest_a_row_tg_dirtable_1 ON dir_table1;
DROP TRIGGER IF EXISTS trigtest_b_stmt_tg_dirtable_1 ON dir_table1;
DROP TRIGGER IF EXISTS trigtest_a_stmt_tg_dirtable_1 ON dir_table1;

\!rm -rf $PG_ABS_BUILDDIR/testtablespace;

DROP TABLESPACE directory_tblspc;