Use a fixed application_name while connecting to remote nodes

Citus heavily relies on application_name, see
`IsCitusInitiatedRemoteBackend()`.

But if the user set the application name, such as export PGAPPNAME=test_name,
Citus uses that name while connecting to the remote node.

With this commit, we ensure that Citus always connects with
the "citus" user name to the remote nodes.
fail_assign_explicit_citus_user_name
Onder Kalaci 2022-01-26 16:57:08 +01:00
parent 9bc0fd9479
commit dc370335a9
4 changed files with 35 additions and 6 deletions

View File

@ -72,8 +72,8 @@ InitConnParams()
/*
* ResetConnParams frees all strings in the keywords and parameters arrays,
* sets their elements to null, and resets the ConnParamsSize to zero before
* adding back any hardcoded global connection settings (at present, only the
* fallback_application_name of 'citus').
* adding back any hardcoded global connection settings (at present, there
* are no).
*/
void
ResetConnParams()
@ -89,8 +89,6 @@ ResetConnParams()
ConnParams.size = 0;
InvalidateConnParamsHashEntries();
AddConnParam("fallback_application_name", CITUS_APPLICATION_NAME);
}
@ -253,14 +251,16 @@ GetConnParams(ConnectionHashKey *key, char ***keywords, char ***values,
"port",
"dbname",
"user",
"client_encoding"
"client_encoding",
"application_name"
};
const char *runtimeValues[] = {
key->hostname,
nodePortString,
key->database,
key->user,
GetDatabaseEncodingName()
GetDatabaseEncodingName(),
CITUS_APPLICATION_NAME
};
/*

View File

@ -0,0 +1,14 @@
CREATE SCHEMA mx_app_name;
CREATE TABLE output (line text);
-- a hack to run command with another application name
\COPY output FROM PROGRAM 'psql postgres://postgres@localhost:xxxxx/regression?application_name=test -c "CREATE TABLE dist_1(a int)"'
\COPY output FROM PROGRAM 'psql postgres://postgres@localhost:xxxxx/regression?application_name=test -c "SELECT create_distributed_table(''dist_1'', ''a'');"'
-- ensure the command executed fine
SELECT count(*) FROM pg_dist_partition WHERE logicalrelid = 'dist_1'::regclass;
count
---------------------------------------------------------------------
1
(1 row)
\COPY output FROM PROGRAM 'psql postgres://postgres@localhost:xxxxx/regression?application_name=test -c "DROP TABLE dist_1;"'
DROP SCHEMA mx_app_name CASCADE;

View File

@ -59,6 +59,7 @@ test: locally_execute_intermediate_results
test: multi_mx_alter_distributed_table
test: update_colocation_mx
test: resync_metadata_with_sequences
test: mx_application_name
# should be executed sequentially because it modifies metadata
test: local_shard_execution_dropped_column

View File

@ -0,0 +1,14 @@
CREATE SCHEMA mx_app_name;
CREATE TABLE output (line text);
-- a hack to run command with another application name
\COPY output FROM PROGRAM 'psql postgres://postgres@localhost:57636/regression?application_name=test -c "CREATE TABLE dist_1(a int)"'
\COPY output FROM PROGRAM 'psql postgres://postgres@localhost:57636/regression?application_name=test -c "SELECT create_distributed_table(''dist_1'', ''a'');"'
-- ensure the command executed fine
SELECT count(*) FROM pg_dist_partition WHERE logicalrelid = 'dist_1'::regclass;
\COPY output FROM PROGRAM 'psql postgres://postgres@localhost:57636/regression?application_name=test -c "DROP TABLE dist_1;"'
DROP SCHEMA mx_app_name CASCADE;