mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-24 23:34:25 +08:00
PG13 introduced an option to DROP DATABASE statement to terminate all existing connections to the target database. Now that our minor supported version is PG13 make sense to use it on regression tests in order to avoid potential flaky tests.
61 lines
2.1 KiB
PL/PgSQL
61 lines
2.1 KiB
PL/PgSQL
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
|
|
\c :TEST_DBNAME :ROLE_SUPERUSER
|
|
|
|
\set DN_DBNAME_1 :TEST_DBNAME _1
|
|
\set DN_DBNAME_2 :TEST_DBNAME _2
|
|
|
|
CREATE FUNCTION _timescaledb_internal.test_remote_connection_cache()
|
|
RETURNS void
|
|
AS :TSL_MODULE_PATHNAME, 'ts_test_remote_connection_cache'
|
|
LANGUAGE C STRICT;
|
|
|
|
CREATE FUNCTION _timescaledb_internal.test_alter_data_node(node_name NAME)
|
|
RETURNS BOOL
|
|
AS :TSL_MODULE_PATHNAME, 'ts_test_alter_data_node'
|
|
LANGUAGE C STRICT;
|
|
|
|
SET client_min_messages TO WARNING;
|
|
SELECT node_name, database, node_created, extension_created
|
|
FROM add_data_node('loopback_1', host => 'localhost', database => :'DN_DBNAME_1',
|
|
port => current_setting('port')::int);
|
|
SELECT node_name, database, node_created, extension_created
|
|
FROM add_data_node('loopback_2', host => 'localhost', database => :'DN_DBNAME_2',
|
|
port => current_setting('port')::int);
|
|
SET client_min_messages TO INFO;
|
|
|
|
SELECT _timescaledb_internal.test_remote_connection_cache();
|
|
|
|
-- Test that connection cache entries for a role gets invalidated when
|
|
-- we rename the role
|
|
GRANT USAGE ON FOREIGN SERVER loopback_1, loopback_2 TO :ROLE_1;
|
|
GRANT CREATE ON SCHEMA public TO :ROLE_1;
|
|
SET ROLE :ROLE_1;
|
|
|
|
CREATE TABLE testtable (time timestamptz, location int, temp float);
|
|
SELECT * FROM create_distributed_hypertable('testtable', 'time', 'location');
|
|
INSERT INTO testtable VALUES ('2021-09-19', 1, 13.2);
|
|
|
|
-- Should show valid connections for ROLE_1
|
|
SELECT node_name, user_name, invalidated
|
|
FROM _timescaledb_functions.show_connection_cache()
|
|
WHERE user_name=:'ROLE_1'
|
|
ORDER BY 1,2;
|
|
RESET ROLE;
|
|
BEGIN;
|
|
|
|
-- Renaming the role should invalidate the connection cache entries
|
|
-- for ROLE_1/bob. The connections will be recreated on next cache
|
|
-- fetch.
|
|
ALTER ROLE :ROLE_1 RENAME TO bob;
|
|
SELECT node_name, user_name, invalidated
|
|
FROM _timescaledb_functions.show_connection_cache()
|
|
WHERE user_name='bob'
|
|
ORDER BY 1,2;
|
|
ROLLBACK;
|
|
|
|
DROP DATABASE :DN_DBNAME_1 WITH (FORCE);
|
|
DROP DATABASE :DN_DBNAME_2 WITH (FORCE);
|