106 lines
1.4 KiB
PL/PgSQL
106 lines
1.4 KiB
PL/PgSQL
--
|
|
-- Hot Standby tests
|
|
--
|
|
-- hs_standby_disallowed.sql
|
|
--
|
|
|
|
SET transaction_read_only = off;
|
|
|
|
begin transaction read write;
|
|
commit;
|
|
|
|
-- SELECT
|
|
|
|
select * from hs1 FOR SHARE;
|
|
select * from hs1 FOR UPDATE;
|
|
|
|
-- DML
|
|
BEGIN;
|
|
insert into hs1 values (37);
|
|
ROLLBACK;
|
|
BEGIN;
|
|
delete from hs1 where col1 = 1;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
update hs1 set col1 = NULL where col1 > 0;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
truncate hs3;
|
|
ROLLBACK;
|
|
|
|
-- DDL
|
|
|
|
create temporary table hstemp1 (col1 integer);
|
|
BEGIN;
|
|
drop table hs2;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
create table hs4 (col1 integer);
|
|
ROLLBACK;
|
|
|
|
-- Sequences
|
|
|
|
SELECT nextval('hsseq');
|
|
|
|
-- Two-phase commit transaction stuff
|
|
|
|
BEGIN;
|
|
SELECT count(*) FROM hs1;
|
|
PREPARE TRANSACTION 'foobar';
|
|
ROLLBACK;
|
|
BEGIN;
|
|
SELECT count(*) FROM hs1;
|
|
COMMIT PREPARED 'foobar';
|
|
ROLLBACK;
|
|
|
|
BEGIN;
|
|
SELECT count(*) FROM hs1;
|
|
PREPARE TRANSACTION 'foobar';
|
|
ROLLBACK PREPARED 'foobar';
|
|
ROLLBACK;
|
|
|
|
BEGIN;
|
|
SELECT count(*) FROM hs1;
|
|
ROLLBACK PREPARED 'foobar';
|
|
ROLLBACK;
|
|
|
|
|
|
-- Locks
|
|
BEGIN;
|
|
LOCK hs1;
|
|
COMMIT;
|
|
BEGIN;
|
|
LOCK hs1 IN SHARE UPDATE EXCLUSIVE MODE;
|
|
COMMIT;
|
|
BEGIN;
|
|
LOCK hs1 IN SHARE MODE;
|
|
COMMIT;
|
|
BEGIN;
|
|
LOCK hs1 IN SHARE ROW EXCLUSIVE MODE;
|
|
COMMIT;
|
|
BEGIN;
|
|
LOCK hs1 IN EXCLUSIVE MODE;
|
|
COMMIT;
|
|
BEGIN;
|
|
LOCK hs1 IN ACCESS EXCLUSIVE MODE;
|
|
COMMIT;
|
|
|
|
-- Listen
|
|
listen a;
|
|
notify a;
|
|
unlisten a;
|
|
unlisten *;
|
|
|
|
-- disallowed commands
|
|
|
|
ANALYZE hs1;
|
|
|
|
VACUUM hs2;
|
|
|
|
CLUSTER hs2 using hs1_pkey;
|
|
|
|
REINDEX TABLE hs2;
|
|
|
|
REVOKE SELECT ON hs1 FROM PUBLIC;
|
|
GRANT SELECT ON hs1 TO PUBLIC;
|