blob: 6bee8190fd747fb4418c991679e77a585f3d740a [file] [log] [blame]
CREATE SCHEMA mdt_test;
SET search_path = mdt_test;
-- CREATE VIEW
CREATE VIEW
pg_stat_last_operation_testview AS
SELECT
c.relname AS objname, staactionname AS actionname, stasubtype AS subtype
FROM
pg_stat_last_operation lo
JOIN pg_catalog.pg_class c ON (
c.oid = lo.objid
)
JOIN pg_catalog.pg_namespace nsp ON (
c.relnamespace = nsp.oid AND nsp.nspname = 'mdt_test'
)
ORDER BY
statime;
SELECT * FROM pg_stat_last_operation_testview WHERE actionname = 'CREATE';
objname | actionname | subtype
---------------------------------+------------+---------
pg_stat_last_operation_testview | CREATE | VIEW
(1 row)
-- CREATE TABLE
CREATE TABLE pg_stat_last_operation_test (foo int) DISTRIBUTED BY (foo);
CREATE TABLE mdt_test_part1 (
id int,
rank int,
year date,
gender char(1))
DISTRIBUTED BY (id, gender, year)
PARTITION BY list (gender)
SUBPARTITION BY range (year)
SUBPARTITION TEMPLATE (start (date '2001-01-01'))
(VALUES ('M'), VALUES ('F'));
ALTER TABLE mdt_test_part1 ADD DEFAULT PARTITION default_part;
CREATE TABLE mdt_all_types (
a int,
col001 char DEFAULT 'z',
col002 numeric,
col003 boolean DEFAULT false,
col004 bit(3) DEFAULT '111',
col005 text DEFAULT 'pookie',
col006 integer[] DEFAULT '{5, 4, 3, 2, 1}',
col007 character varying(512) DEFAULT 'Now is the time',
col008 character varying DEFAULT 'Now is the time',
col009 character varying(512)[],
col010 numeric(8),
col011 int,
col012 double precision,
col013 bigint,
col014 char(8),
col015 bytea,
col016 timestamp with time zone,
col017 interval,
col018 cidr,
col019 inet,
col020 macaddr,
col021 serial,
col022 money,
col023 bigserial,
col024 timetz,
col025 circle,
col026 box,
col027 name,
col028 path,
col029 int2,
col031 bit varying(256),
col032 date,
col034 lseg,
col035 point,
col036 polygon,
col037 real,
col039 time,
col040 timestamp
)
WITH (appendonly=true);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Apache Cloudberry data distribution key for this table.
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
SELECT * FROM pg_stat_last_operation_testview WHERE actionname = 'CREATE';
objname | actionname | subtype
-------------------------------------------+------------+----------
pg_stat_last_operation_testview | CREATE | VIEW
pg_stat_last_operation_test | CREATE | TABLE
mdt_test_part1 | CREATE | TABLE
mdt_test_part1_1_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_2 | CREATE | TABLE
mdt_test_part1_1_prt_1_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_2_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_default_part | CREATE | TABLE
mdt_test_part1_1_prt_default_part_2_prt_1 | CREATE | TABLE
mdt_all_types_col021_seq | CREATE | SEQUENCE
mdt_all_types_col023_seq | CREATE | SEQUENCE
mdt_all_types | CREATE | TABLE
(12 rows)
-- CREATE TABLE .. PARTITION OF
CREATE TABLE mdt_test_newpart PARTITION OF mdt_test_part1 FOR VALUES IN ('X');
NOTICE: table has parent, setting distribution columns to match parent table
-- ATTACH PARTITION
CREATE TABLE mdt_test_newpart2 (
id int,
rank int,
year date,
gender char(1))
DISTRIBUTED BY (id, gender, year);
ALTER TABLE mdt_test_part1 ATTACH PARTITION mdt_test_newpart2 FOR VALUES IN ('Y');
-- DETACH PARTITION
CREATE TABLE mdt_test_detach PARTITION OF mdt_test_part1 FOR VALUES IN ('Z');
NOTICE: table has parent, setting distribution columns to match parent table
ALTER TABLE mdt_test_part1 DETACH PARTITION mdt_test_detach;
-- DROP PARTITION
ALTER TABLE mdt_test_part1 DROP PARTITION FOR ('Y');
-- GRANT
GRANT ALL ON mdt_all_types TO public;
SELECT * FROM pg_stat_last_operation_testview WHERE actionname = 'PRIVILEGE';
objname | actionname | subtype
---------------+------------+---------
mdt_all_types | PRIVILEGE | GRANT
(1 row)
-- VACUUM
VACUUM ANALYZE mdt_all_types ;
SELECT * FROM pg_stat_last_operation_testview WHERE actionname in ('VACUUM','ANALYZE');
objname | actionname | subtype
---------------+------------+---------
mdt_all_types | VACUUM |
mdt_all_types | ANALYZE |
(2 rows)
SELECT * FROM pg_stat_last_operation_testview WHERE objname like ('mdt_all_%');
objname | actionname | subtype
--------------------------+------------+----------
mdt_all_types_col021_seq | CREATE | SEQUENCE
mdt_all_types_col023_seq | CREATE | SEQUENCE
mdt_all_types | CREATE | TABLE
mdt_all_types_col021_seq | ALTER | OWNED BY
mdt_all_types_col023_seq | ALTER | OWNED BY
mdt_all_types | PRIVILEGE | GRANT
mdt_all_types | VACUUM |
mdt_all_types | ANALYZE |
(8 rows)
-- TRUNCATE
SELECT * FROM pg_stat_last_operation_testview WHERE actionname = 'TRUNCATE';
objname | actionname | subtype
---------+------------+---------
(0 rows)
INSERT INTO pg_stat_last_operation_test SELECT generate_series(1, 5);
TRUNCATE pg_stat_last_operation_test;
SELECT * FROM pg_stat_last_operation_testview WHERE actionname = 'TRUNCATE';
objname | actionname | subtype
-----------------------------+------------+---------
pg_stat_last_operation_test | TRUNCATE |
(1 row)
-- CREATE INDEX
CREATE INDEX idx_mt ON mdt_all_types (a);
REINDEX INDEX idx_mt;
SELECT * FROM pg_stat_last_operation_testview WHERE objname = 'idx_mt';
objname | actionname | subtype
---------+------------+---------
idx_mt | CREATE | INDEX
idx_mt | VACUUM | REINDEX
(2 rows)
-- QEs shouldn't do meta tracking stuff
SELECT gp_execution_dbid(), * FROM gp_dist_random('pg_stat_last_operation_testview') WHERE objname = 'idx_mt';
gp_execution_dbid | objname | actionname | subtype
-------------------+---------+------------+---------
(0 rows)
-- DROP TABLE
SELECT * FROM pg_stat_last_operation_testview WHERE actionname = 'DROP';
objname | actionname | subtype
---------+------------+---------
(0 rows)
SELECT * FROM pg_stat_last_operation_testview WHERE objname like ('mdt_%');
objname | actionname | subtype
-------------------------------------------+------------+----------
mdt_test_part1 | CREATE | TABLE
mdt_test_part1_1_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_1 | PARTITION | ATTACH
mdt_test_part1_1_prt_2 | CREATE | TABLE
mdt_test_part1_1_prt_2 | PARTITION | ATTACH
mdt_test_part1_1_prt_1_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_1_2_prt_1 | PARTITION | ATTACH
mdt_test_part1_1_prt_2_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_2_2_prt_1 | PARTITION | ATTACH
mdt_test_part1_1_prt_default_part | CREATE | TABLE
mdt_test_part1_1_prt_default_part | PARTITION | ATTACH
mdt_test_part1_1_prt_default_part_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_default_part_2_prt_1 | PARTITION | ATTACH
mdt_all_types_col021_seq | CREATE | SEQUENCE
mdt_all_types_col023_seq | CREATE | SEQUENCE
mdt_all_types | CREATE | TABLE
mdt_all_types_col021_seq | ALTER | OWNED BY
mdt_all_types_col023_seq | ALTER | OWNED BY
mdt_test_newpart | CREATE | TABLE
mdt_test_newpart | PARTITION | ATTACH
mdt_test_detach | CREATE | TABLE
mdt_test_detach | PARTITION | DETACH
mdt_test_part1 | PARTITION | DROP
mdt_all_types | PRIVILEGE | GRANT
mdt_all_types | VACUUM |
mdt_all_types | ANALYZE |
(26 rows)
DROP TABLE mdt_all_types;
SELECT * FROM pg_stat_last_operation_testview WHERE objname like ('mdt_%');
objname | actionname | subtype
-------------------------------------------+------------+---------
mdt_test_part1 | CREATE | TABLE
mdt_test_part1_1_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_1 | PARTITION | ATTACH
mdt_test_part1_1_prt_2 | CREATE | TABLE
mdt_test_part1_1_prt_2 | PARTITION | ATTACH
mdt_test_part1_1_prt_1_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_1_2_prt_1 | PARTITION | ATTACH
mdt_test_part1_1_prt_2_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_2_2_prt_1 | PARTITION | ATTACH
mdt_test_part1_1_prt_default_part | CREATE | TABLE
mdt_test_part1_1_prt_default_part | PARTITION | ATTACH
mdt_test_part1_1_prt_default_part_2_prt_1 | CREATE | TABLE
mdt_test_part1_1_prt_default_part_2_prt_1 | PARTITION | ATTACH
mdt_test_newpart | CREATE | TABLE
mdt_test_newpart | PARTITION | ATTACH
mdt_test_detach | CREATE | TABLE
mdt_test_detach | PARTITION | DETACH
mdt_test_part1 | PARTITION | DROP
(18 rows)
DROP TABLE mdt_test_part1;
SELECT * FROM pg_stat_last_operation_testview WHERE objname like ('mdt_%');
objname | actionname | subtype
-----------------+------------+---------
mdt_test_detach | CREATE | TABLE
mdt_test_detach | PARTITION | DETACH
(2 rows)