blob: 9bfd914637c28ef1999855a5c852334d34ada4b1 [file]
-- start_ignore
\! gpstop -u;
20190709:16:49:48:083167 gpstop:Weinan-Pivotal-Mac:wwang-[INFO]:-Starting gpstop with args: -u
20190709:16:49:48:083167 gpstop:Weinan-Pivotal-Mac:wwang-[INFO]:-Gathering information and validating the environment...
20190709:16:49:48:083167 gpstop:Weinan-Pivotal-Mac:wwang-[INFO]:-Obtaining Cloudberry Master catalog information
20190709:16:49:48:083167 gpstop:Weinan-Pivotal-Mac:wwang-[INFO]:-Obtaining Segment details from master...
20190709:16:49:48:083167 gpstop:Weinan-Pivotal-Mac:wwang-[INFO]:-Cloudberry Version: 'postgres (Apache Cloudberry) 7.0.0-alpha.0+dev.487.gc712d6d8b0 build dev'
20190709:16:49:48:083167 gpstop:Weinan-Pivotal-Mac:wwang-[INFO]:-Signalling all postmaster processes to reload
create language plpython3u;
-- end_ignore
--list all database oid relevant directories in all node(master, segments, mirrors, etc.)
CREATE OR REPLACE FUNCTION db_dirs(dboid oid) RETURNS setof text
STRICT STABLE LANGUAGE plpython3u
as $$
import os
bash_cmd = "find " + os.getcwd() + "/../../ " + "-name %d -type d"
p = os.popen(bash_cmd % dboid)
return p.readlines()
$$;
--
--CASE 0: createdb do well
--
create database dowell STRATEGY = file_copy;
select force_mirrors_to_catch_up();
force_mirrors_to_catch_up
---------------------------
(1 row)
select count(*)=0 as result from
(select db_dirs(oid) from pg_database where datname = 'dowell') as foo;
result
--------
f
(1 row)
\! psql -d dowell -Xc "create table test1(a int, b text)"
CREATE TABLE
\! psql -d dowell -Xc "insert into test1 values (1, '111'), (2, '222'), (3, '333')"
INSERT 0 3
\! psql -d dowell -Xc "select * from test1"
a | b
---+-----
2 | 222
3 | 333
1 | 111
(3 rows)
drop database dowell;
--
--CASE 2: error after XLOG_DBASE_CREATE on master
--
select gp_inject_fault('all', 'reset', dbid) from gp_segment_configuration;
gp_inject_fault
-----------------
Success:
Success:
(2 rows)
select gp_inject_fault('after_xlog_create_database', 'error', dbid)
from gp_segment_configuration where content=-1 and role='p';
gp_inject_fault
-----------------
Success:
(1 row)
-- should fail
create database db2 STRATEGY = file_copy;
ERROR: fault triggered, fault name:'after_xlog_create_database' fault type:'error'
select force_mirrors_to_catch_up();
force_mirrors_to_catch_up
---------------------------
(1 row)
-- since this is a failed case, db oid is invisible, however we need it to search
-- our tablespace to check if has db files left over.
set gp_select_invisible=on;
select db_dirs(oid) from pg_database where datname = 'db2';
db_dirs
---------
(0 rows)
set gp_select_invisible=off;
-- start_ignore
select gp_inject_fault('all', 'reset', dbid) from gp_segment_configuration;
gp_inject_fault
-----------------
Success:
Success:
Success:
Success:
Success:
Success:
Success:
Success:
(8 rows)
select force_mirrors_to_catch_up();
force_mirrors_to_catch_up
---------------------------
(1 row)
-- end_ignore