Fix a bug that causes worker_create_or_alter_role to crash with NULL input

(cherry picked from commit a7e4d6c94a)
pull/5152/head
Marco Slot 2021-06-15 19:26:56 +02:00 committed by Hanefi Onaldi
parent 1507f32282
commit 998b044fdc
No known key found for this signature in database
GPG Key ID: F18CDB10BA0DFDC7
3 changed files with 14 additions and 0 deletions

View File

@ -73,6 +73,11 @@ alter_role_if_exists(PG_FUNCTION_ARGS)
Datum
worker_create_or_alter_role(PG_FUNCTION_ARGS)
{
if (PG_ARGISNULL(0))
{
ereport(ERROR, (errmsg("role name cannot be NULL")));
}
text *rolenameText = PG_GETARG_TEXT_P(0);
const char *rolename = text_to_cstring(rolenameText);

View File

@ -364,6 +364,11 @@ SELECT worker_hash('(1, 2)'::test_composite_type);
SELECT citus_truncate_trigger();
ERROR: must be called as trigger
-- make sure worker_create_or_alter_role does not crash with NULL input
SELECT worker_create_or_alter_role(NULL, NULL, NULL);
ERROR: role name cannot be NULL
SELECT worker_create_or_alter_role(NULL, 'create role dontcrash', NULL);
ERROR: role name cannot be NULL
-- confirm that citus_create_restore_point works
SELECT 1 FROM citus_create_restore_point('regression-test');
NOTICE: issuing BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;SELECT assign_distributed_transaction_id(xx, xx, 'xxxxxxx');

View File

@ -202,5 +202,9 @@ SELECT worker_hash('(1, 2)'::test_composite_type);
SELECT citus_truncate_trigger();
-- make sure worker_create_or_alter_role does not crash with NULL input
SELECT worker_create_or_alter_role(NULL, NULL, NULL);
SELECT worker_create_or_alter_role(NULL, 'create role dontcrash', NULL);
-- confirm that citus_create_restore_point works
SELECT 1 FROM citus_create_restore_point('regression-test');