Fix flaky data_node_bootstrap test

Copy collation and chartype before releasing syscache since we need
them past the lifetime of the current context.
This commit is contained in:
Sven Klemm 2022-06-12 15:50:07 +02:00 committed by Sven Klemm
parent 5c69adfb7e
commit 02d4aefb85
3 changed files with 11 additions and 20 deletions

View File

@ -109,6 +109,9 @@ get_database_info(Oid dbid, DbInfo *database)
database->chartype = TextDatumGetCString(datum);
#endif
database->collation = pstrdup(database->collation);
database->chartype = pstrdup(database->chartype);
ReleaseSysCache(dbtuple);
return true;
}

View File

@ -23,12 +23,9 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost', database => '
-- Ensure database and extensions are installed and have the correct
-- encoding, ctype and collation.
\c bootstrap_test :ROLE_CLUSTER_SUPERUSER;
SELECT extname, nspname
FROM pg_extension e, pg_namespace n
WHERE e.extnamespace = n.oid
AND e.extname = 'timescaledb';
extname | nspname
-------------+---------
SELECT extname, extnamespace::regnamespace FROM pg_extension e WHERE extname = 'timescaledb';
extname | extnamespace
-------------+--------------
timescaledb | public
(1 row)
@ -57,12 +54,9 @@ SELECT * FROM show_data_nodes();
(0 rows)
\c bootstrap_test :ROLE_CLUSTER_SUPERUSER;
SELECT extname, nspname
FROM pg_extension e, pg_namespace n
WHERE e.extnamespace = n.oid
AND e.extname = 'timescaledb';
extname | nspname
-------------+---------
SELECT extname, extnamespace::regnamespace FROM pg_extension e WHERE extname = 'timescaledb';
extname | extnamespace
-------------+--------------
timescaledb | public
(1 row)

View File

@ -23,10 +23,7 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost', database => '
-- Ensure database and extensions are installed and have the correct
-- encoding, ctype and collation.
\c bootstrap_test :ROLE_CLUSTER_SUPERUSER;
SELECT extname, nspname
FROM pg_extension e, pg_namespace n
WHERE e.extnamespace = n.oid
AND e.extname = 'timescaledb';
SELECT extname, extnamespace::regnamespace FROM pg_extension e WHERE extname = 'timescaledb';
SELECT PG_ENCODING_TO_CHAR(encoding) = :enc
, datcollate = :coll
, datctype = :ctype
@ -41,10 +38,7 @@ SELECT * FROM show_data_nodes();
\c bootstrap_test :ROLE_CLUSTER_SUPERUSER;
SELECT extname, nspname
FROM pg_extension e, pg_namespace n
WHERE e.extnamespace = n.oid
AND e.extname = 'timescaledb';
SELECT extname, extnamespace::regnamespace FROM pg_extension e WHERE extname = 'timescaledb';
\c :TEST_DBNAME :ROLE_CLUSTER_SUPERUSER;
\set ON_ERROR_STOP 0