mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 10:33:27 +08:00
Starting with PG15, default permissions on the public schema is restricted for any non-superuser non-owner. This causes test failures since tables can no longer be created without explicitly adding permissions, so we remove grant when bootstrapping the data nodes and instead grant permissions to the users in the regression tests. This keeps the default permissions on data nodes, but allow regression tests to run. Fixes #3957 Reference: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=b073c3cc
60 lines
2.0 KiB
PL/PgSQL
60 lines
2.0 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;
|
|
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_internal.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_internal.show_connection_cache()
|
|
WHERE user_name='bob'
|
|
ORDER BY 1,2;
|
|
ROLLBACK;
|
|
|
|
DROP DATABASE :DN_DBNAME_1;
|
|
DROP DATABASE :DN_DBNAME_2;
|