Thread: [PATCH] Use role name "system_user" instead of "user" for unsafe_tests
[PATCH] Use role name "system_user" instead of "user" for unsafe_tests
From
Aleksander Alekseev
Date:
Hi, While playing with a new single board computer (VisionFive 2) I discovered that postgresql:unsafe_tests suite fails like this: ``` --- /home/user/projects/postgresql/src/test/modules/unsafe_tests/expected/rolenames.out 2023-04-11 14:58:57.844550612 +0000 +++ /home/user/projects/postgresql/build/testrun/unsafe_tests/regress/results/rolenames.out 2023-04-11 17:54:22.999024391 +0000 @@ -53,6 +53,7 @@ CREATE ROLE "current_user"; CREATE ROLE "session_user"; CREATE ROLE "user"; +ERROR: role "user" already exists RESET client_min_messages; CREATE ROLE current_user; -- error ERROR: CURRENT_USER cannot be used as a role name here @@ -1089,4 +1090,5 @@ DROP OWNED BY regress_testrol0, "Public", "current_role", "current_user", regress_testrol1, regress_testrol2, regress_testrolx CASCADE; DROP ROLE regress_testrol0, regress_testrol1, regress_testrol2, regress_testrolx; DROP ROLE "Public", "None", "current_role", "current_user", "session_user", "user"; +ERROR: current user cannot be dropped DROP ROLE regress_role_haspriv, regress_role_nopriv; ``` This happens because the developers of this SBC choose the default username "user", which I had no reason to change. Test merely checks that we can distinguish a username "user" from the USER keyword. Maybe it's worth replacing "user" with "system_user"? It is also a keyword but is a less likely choice for the OS user name. -- Best regards, Aleksander Alekseev
Attachment
Re: [PATCH] Use role name "system_user" instead of "user" for unsafe_tests
From
Andrew Dunstan
Date:
On 2023-04-11 Tu 14:25, Aleksander Alekseev wrote:
Hi, While playing with a new single board computer (VisionFive 2) I discovered that postgresql:unsafe_tests suite fails like this: ``` --- /home/user/projects/postgresql/src/test/modules/unsafe_tests/expected/rolenames.out 2023-04-11 14:58:57.844550612 +0000 +++ /home/user/projects/postgresql/build/testrun/unsafe_tests/regress/results/rolenames.out 2023-04-11 17:54:22.999024391 +0000 @@ -53,6 +53,7 @@ CREATE ROLE "current_user"; CREATE ROLE "session_user"; CREATE ROLE "user"; +ERROR: role "user" already exists RESET client_min_messages; CREATE ROLE current_user; -- error ERROR: CURRENT_USER cannot be used as a role name here @@ -1089,4 +1090,5 @@ DROP OWNED BY regress_testrol0, "Public", "current_role", "current_user", regress_testrol1, regress_testrol2, regress_testrolx CASCADE; DROP ROLE regress_testrol0, regress_testrol1, regress_testrol2, regress_testrolx; DROP ROLE "Public", "None", "current_role", "current_user", "session_user", "user"; +ERROR: current user cannot be dropped DROP ROLE regress_role_haspriv, regress_role_nopriv; ``` This happens because the developers of this SBC choose the default username "user", which I had no reason to change. Test merely checks that we can distinguish a username "user" from the USER keyword. Maybe it's worth replacing "user" with "system_user"? It is also a keyword but is a less likely choice for the OS user name.
I don't think we can protect against all possible user names. Wouldn't it be better to run the tests under an OS user with a different name, like "marmaduke"? ("user" is a truly terrible default user name).
cheers
andrew
-- Andrew Dunstan EDB: https://www.enterprisedb.com
Re: [PATCH] Use role name "system_user" instead of "user" for unsafe_tests
From
Aleksander Alekseev
Date:
Hi Andrew, > I don't think we can protect against all possible user names. Wouldn't it be better to run the tests under an OS user witha different name, like "marmaduke"? ("user" is a truly terrible default user name). 100% agree. The point is not to protect against all possible user names but merely to reduce the likelihood of the problem. For this particular test there is no difference which keyword to use for the test. I realize this is a minor problem, however the fix is trivial too. -- Best regards, Aleksander Alekseev
Aleksander Alekseev <aleksander@timescale.com> writes: >> I don't think we can protect against all possible user names. Wouldn't it be better to run the tests under an OS userwith a different name, like "marmaduke"? ("user" is a truly terrible default user name). > 100% agree. The point is not to protect against all possible user > names but merely to reduce the likelihood of the problem. It only reduces the likelihood if you assume that "system_user" is less likely than "user" as a choice of OS user name to run the tests under. That seems like a debatable assumption; perhaps it's actually *more* likely. Whether we need to have a test for this at all is perhaps a more interesting argument. regards, tom lane
Re: [PATCH] Use role name "system_user" instead of "user" for unsafe_tests
From
Aleksander Alekseev
Date:
Hi, > Whether we need to have a test for this at all is perhaps a > more interesting argument. This was my initial thought but since somebody put it there I assumed this is a very important test. Any objections if we remove the tests for "user"? -- Best regards, Aleksander Alekseev
Re: [PATCH] Use role name "system_user" instead of "user" for unsafe_tests
From
Michael Paquier
Date:
On Wed, Apr 12, 2023 at 03:30:03PM +0300, Aleksander Alekseev wrote: > Any objections if we remove the tests for "user"? Based on some rather-recent experience in this area with COERCE_SQL_SYNTAX, the relationship between the SQL keywords and the way they can handled internally could be tricky if this area of the code is touched. So I would choose to keep these tests, FWIW. -- Michael
Attachment
Re: [PATCH] Use role name "system_user" instead of "user" for unsafe_tests
From
Aleksander Alekseev
Date:
Hi, > On Wed, Apr 12, 2023 at 03:30:03PM +0300, Aleksander Alekseev wrote: > > Any objections if we remove the tests for "user"? > > Based on some rather-recent experience in this area with > COERCE_SQL_SYNTAX, the relationship between the SQL keywords and the > way they can handled internally could be tricky if this area of the > code is touched. So I would choose to keep these tests, FWIW. Thanks for the feedback. I see this is a controversial topic so in the interest of saving our time I'm withdrawing the patch. -- Best regards, Aleksander Alekseev