Thread: pgsql: In AlterRole, make bypassrls an int

pgsql: In AlterRole, make bypassrls an int

From
Stephen Frost
Date:
In AlterRole, make bypassrls an int

When reworking bypassrls in AlterRole to operate the same way the other
attribute handling is done, I missed that the variable was incorrectly a
bool rather than an int.  This meant that on platforms with an unsigned
char, we could end up with incorrect behavior during ALTER ROLE.

Pointed out by Andres thanks to tests he did changing our bool to be the
one from stdbool.h which showed this and a number of other issues.

Add regression tests to test CREATE/ALTER role for the various role
attributes.  Arrange to leave roles behind for testing pg_dumpall, but
none which have the LOGIN attribute.

Back-patch to 9.5 where the AlterRole bug exists.

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/0070fd8d3c1c8a733c041bfcedd41e38cee0a963

Modified Files
--------------
src/backend/commands/user.c                  |    2 +-
src/test/regress/expected/roleattributes.out |  236 ++++++++++++++++++++++++++
src/test/regress/parallel_schedule           |    2 +-
src/test/regress/serial_schedule             |    1 +
src/test/regress/sql/roleattributes.sql      |   85 ++++++++++
5 files changed, 324 insertions(+), 2 deletions(-)


Re: pgsql: In AlterRole, make bypassrls an int

From
Alvaro Herrera
Date:
Stephen Frost wrote:

> Add regression tests to test CREATE/ALTER role for the various role
> attributes.  Arrange to leave roles behind for testing pg_dumpall, but
> none which have the LOGIN attribute.

There is a problem in this test, which is that it throws errors if the
roles already exist.  Maybe CREATE IF NOT EXISTS is needed, or perhaps
a DROP beforehand?

--
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Re: pgsql: In AlterRole, make bypassrls an int

From
Stephen Frost
Date:
On Friday, August 21, 2015, Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
Stephen Frost wrote:

> Add regression tests to test CREATE/ALTER role for the various role
> attributes.  Arrange to leave roles behind for testing pg_dumpall, but
> none which have the LOGIN attribute.

There is a problem in this test, which is that it throws errors if the
roles already exist.  Maybe CREATE IF NOT EXISTS is needed, or perhaps
a DROP beforehand?

Right, not sure it's that simple since we don't want the output to differ based on if they exist already or not. Might be able to adjust the log level to address that, or a DO block which handles it if nothing else works.  

Thanks!

Stephen