Use ROLE consistently when generating RE-SQL for roles, not USER. Fixes #4446

pull/25/head
Murtuza Zabuawala 2019-07-15 11:31:27 +01:00 committed by Dave Page
parent 1dcf46cc5f
commit 1831c9e70a
18 changed files with 64 additions and 65 deletions

View File

@ -39,5 +39,6 @@ Bug fixes
| `Issue #4429 <https://redmine.postgresql.org/issues/4429>`_ - Ensure drag/drop from the treeview works as expected on Firefox. | `Issue #4429 <https://redmine.postgresql.org/issues/4429>`_ - Ensure drag/drop from the treeview works as expected on Firefox.
| `Issue #4437 <https://redmine.postgresql.org/issues/4437>`_ - Fix table icon issue when updating any existing field. | `Issue #4437 <https://redmine.postgresql.org/issues/4437>`_ - Fix table icon issue when updating any existing field.
| `Issue #4442 <https://redmine.postgresql.org/issues/4442>`_ - Ensure browser should not be started by Selenium when feature tests are excluded from a test run. | `Issue #4442 <https://redmine.postgresql.org/issues/4442>`_ - Ensure browser should not be started by Selenium when feature tests are excluded from a test run.
| `Issue #4446 <https://redmine.postgresql.org/issues/4446>`_ - Use ROLE consistently when generating RE-SQL for roles, not USER.
| `Issue #4450 <https://redmine.postgresql.org/issues/4450>`_ - Fix reverse engineered sql for Foreign Data Wrapper created on EPAS server in redwood mode. | `Issue #4450 <https://redmine.postgresql.org/issues/4450>`_ - Fix reverse engineered sql for Foreign Data Wrapper created on EPAS server in redwood mode.
| `Issue #4462 <https://redmine.postgresql.org/issues/4462>`_ - Fix some minor UI issues on IE11. | `Issue #4462 <https://redmine.postgresql.org/issues/4462>`_ - Fix some minor UI issues on IE11.

View File

@ -1,6 +1,6 @@
{% import 'macros/security.macros' as SECLABEL %} {% import 'macros/security.macros' as SECLABEL %}
{% import 'macros/variable.macros' as VARIABLE %} {% import 'macros/variable.macros' as VARIABLE %}
CREATE {% if data.rolcanlogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data.rolcanlogin is sameas True %} CREATE ROLE {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data.rolcanlogin is sameas True %}
LOGIN{% else %} LOGIN{% else %}

View File

@ -2,11 +2,10 @@ SELECT
array_to_string(array_agg(sql), E'\n\n') array_to_string(array_agg(sql), E'\n\n')
FROM FROM
(SELECT (SELECT
CASE WHEN rolcanlogin THEN '-- User: ' ELSE '-- Role: ' END || '-- Role: ' ||
pg_catalog.quote_ident(rolname) || pg_catalog.quote_ident(rolname) ||
E'\n-- DROP ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END || E'\n-- DROP ROLE ' ||
pg_catalog.quote_ident(rolname) || E';\n\nCREATE ' || pg_catalog.quote_ident(rolname) || E';\n\nCREATE ROLE ' ||
CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END ||
pg_catalog.quote_ident(rolname) || E' WITH\n ' || pg_catalog.quote_ident(rolname) || E' WITH\n ' ||
CASE WHEN rolcanlogin THEN 'LOGIN' ELSE 'NOLOGIN' END || E'\n ' || CASE WHEN rolcanlogin THEN 'LOGIN' ELSE 'NOLOGIN' END || E'\n ' ||
CASE WHEN rolcanlogin AND rolpassword LIKE 'md5%%' THEN 'ENCRYPTED PASSWORD ' || quote_literal(rolpassword) || E'\n ' ELSE '' END || CASE WHEN rolcanlogin AND rolpassword LIKE 'md5%%' THEN 'ENCRYPTED PASSWORD ' || quote_literal(rolpassword) || E'\n ' ELSE '' END ||
@ -48,7 +47,7 @@ UNION ALL
array_to_string(array_agg(sql), E'\n') AS sql array_to_string(array_agg(sql), E'\n') AS sql
FROM FROM
(SELECT (SELECT
'ALTER ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END || pg_catalog.quote_ident(rolname) || ' SET ' || param || ' TO ' || CASE WHEN param IN ('search_path', 'temp_tablespaces') THEN value ELSE quote_literal(value) END || ';' AS sql 'ALTER ROLE ' || pg_catalog.quote_ident(rolname) || ' SET ' || param || ' TO ' || CASE WHEN param IN ('search_path', 'temp_tablespaces') THEN value ELSE quote_literal(value) END || ';' AS sql
FROM FROM
(SELECT (SELECT
rolcanlogin, rolname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value rolcanlogin, rolname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value

View File

@ -2,14 +2,14 @@
{% import 'macros/variable.macros' as VARIABLE %} {% import 'macros/variable.macros' as VARIABLE %}
{% if 'rolname' in data %} {% if 'rolname' in data %}
{% set rolname=data.rolname %} {% set rolname=data.rolname %}
ALTER{% if rolCanLogin %} USER {% else %} ROLE {% endif %}{{ conn|qtIdent(role) }} ALTER ROLE {{ conn|qtIdent(role) }}
RENAME TO {{ conn|qtIdent(rolname) }}; RENAME TO {{ conn|qtIdent(rolname) }};
{% else %} {% else %}
{% set rolname=role %} {% set rolname=role %}
{% endif %} {% endif %}
{% if data|hasAny(alterKeys) %} {% if data|hasAny(alterKeys) %}
ALTER {% if rolCanLogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %} ALTER ROLE {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %}
{% if data.rolcanlogin %} {% if data.rolcanlogin %}
LOGIN{% else %} LOGIN{% else %}

View File

@ -1,6 +1,6 @@
{% import 'macros/security.macros' as SECLABEL %} {% import 'macros/security.macros' as SECLABEL %}
{% import 'macros/variable.macros' as VARIABLE %} {% import 'macros/variable.macros' as VARIABLE %}
CREATE {% if data.rolcanlogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data.rolcanlogin is sameas True %} CREATE ROLE {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data.rolcanlogin is sameas True %}
LOGIN{% else %} LOGIN{% else %}

View File

@ -2,11 +2,10 @@ SELECT
array_to_string(array_agg(sql), E'\n\n') AS sql array_to_string(array_agg(sql), E'\n\n') AS sql
FROM FROM
(SELECT (SELECT
CASE WHEN rolcanlogin THEN '-- User: ' ELSE '-- Role: ' END || '-- Role: ' ||
pg_catalog.quote_ident(rolname) || pg_catalog.quote_ident(rolname) ||
E'\n-- DROP ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END || E'\n-- DROP ROLE ' ||
pg_catalog.quote_ident(rolname) || E';\n\nCREATE ' || pg_catalog.quote_ident(rolname) || E';\n\nCREATE ROLE ' ||
CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END ||
pg_catalog.quote_ident(rolname) || E' WITH\n ' || pg_catalog.quote_ident(rolname) || E' WITH\n ' ||
CASE WHEN rolcanlogin THEN 'LOGIN' ELSE 'NOLOGIN' END || E'\n ' || CASE WHEN rolcanlogin THEN 'LOGIN' ELSE 'NOLOGIN' END || E'\n ' ||
CASE WHEN rolcanlogin AND rolpassword LIKE 'md5%%' THEN 'ENCRYPTED PASSWORD ' || quote_literal(rolpassword) || E'\n ' ELSE '' END || CASE WHEN rolcanlogin AND rolpassword LIKE 'md5%%' THEN 'ENCRYPTED PASSWORD ' || quote_literal(rolpassword) || E'\n ' ELSE '' END ||
@ -46,7 +45,7 @@ UNION ALL
array_to_string(array_agg(sql), E'\n') AS sql array_to_string(array_agg(sql), E'\n') AS sql
FROM FROM
(SELECT (SELECT
'ALTER ' || CASE WHEN rolcanlogin THEN 'USER ' ELSE 'ROLE ' END || pg_catalog.quote_ident(rolname) || ' SET ' || param || ' TO ' || CASE WHEN param IN ('search_path', 'temp_tablespaces') THEN value ELSE quote_literal(value) END || ';' AS sql 'ALTER ROLE ' || pg_catalog.quote_ident(rolname) || ' SET ' || param || ' TO ' || CASE WHEN param IN ('search_path', 'temp_tablespaces') THEN value ELSE quote_literal(value) END || ';' AS sql
FROM FROM
(SELECT (SELECT
rolcanlogin, rolname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value rolcanlogin, rolname, split_part(rolconfig, '=', 1) AS param, replace(rolconfig, split_part(rolconfig, '=', 1) || '=', '') AS value

View File

@ -2,14 +2,14 @@
{% import 'macros/variable.macros' as VARIABLE %} {% import 'macros/variable.macros' as VARIABLE %}
{% if 'rolname' in data %} {% if 'rolname' in data %}
{% set rolname=data.rolname %} {% set rolname=data.rolname %}
ALTER{% if rolCanLogin %} USER {% else %} ROLE {% endif %}{{ conn|qtIdent(role) }} ALTER ROLE {{ conn|qtIdent(role) }}
RENAME TO {{ conn|qtIdent(rolname) }}; RENAME TO {{ conn|qtIdent(rolname) }};
{% else %} {% else %}
{% set rolname=role %} {% set rolname=role %}
{% endif %} {% endif %}
{% if data|hasAny(alterKeys) %} {% if data|hasAny(alterKeys) %}
ALTER {% if rolCanLogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %} ALTER ROLE {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %}
{% if data.rolcanlogin %} {% if data.rolcanlogin %}
LOGIN{% else %} LOGIN{% else %}

View File

@ -1,7 +1,7 @@
-- User: "Role1_$%{}[]()&*^!@""'`\/#" -- Role: "Role1_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role1_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role1_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role1_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role1_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
SUPERUSER SUPERUSER
INHERIT INHERIT

View File

@ -1,7 +1,7 @@
-- User: "Role2_$%{}[]()&*^!@""'`\/#" -- Role: "Role2_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role2_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role2_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role2_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role2_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
SUPERUSER SUPERUSER
INHERIT INHERIT

View File

@ -1,7 +1,7 @@
-- User: "Role2_$%{}[]()&*^!@""'`\/#" -- Role: "Role2_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role2_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role2_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role2_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role2_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
NOSUPERUSER NOSUPERUSER
INHERIT INHERIT

View File

@ -1,7 +1,7 @@
-- User: "Role1_$%{}[]()&*^!@""'`\/#" -- Role: "Role1_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role1_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role1_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role1_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role1_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
SUPERUSER SUPERUSER
INHERIT INHERIT

View File

@ -62,7 +62,7 @@
}, },
{ {
"type": "create", "type": "create",
"name": "Create User", "name": "Create Login Role",
"endpoint": "NODE-role.obj", "endpoint": "NODE-role.obj",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
@ -81,42 +81,42 @@
"seclabels": [], "seclabels": [],
"variables": [] "variables": []
}, },
"expected_sql_file": "create_user.sql" "expected_sql_file": "create_login_role.sql"
}, },
{ {
"type": "alter", "type": "alter",
"name": "Alter User description", "name": "Alter Login Role description",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
"description": "This is detailed description" "description": "This is detailed description"
}, },
"expected_sql_file": "alter_user_description.sql" "expected_sql_file": "alter_login_role_description.sql"
}, },
{ {
"type": "alter", "type": "alter",
"name": "Alter User name", "name": "Alter Login Role name",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
"rolname": "Role2_$%{}[]()&*^!@\"'`\\/#" "rolname": "Role2_$%{}[]()&*^!@\"'`\\/#"
}, },
"expected_sql_file": "alter_user_name.sql" "expected_sql_file": "alter_login_role_name.sql"
}, },
{ {
"type": "alter", "type": "alter",
"name": "Alter User superuser, createdb etc options", "name": "Alter Login Role superuser, createdb etc options",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
"rolsuper": false, "rolsuper": false,
"rolcreatedb": false "rolcreatedb": false
}, },
"expected_sql_file": "alter_user_options.sql" "expected_sql_file": "alter_login_role_options.sql"
}, },
{ {
"type": "delete", "type": "delete",
"name": "Drop User", "name": "Drop Login Role",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"data": {} "data": {}
} }

View File

@ -1,7 +1,7 @@
-- User: "Role1_$%{}[]()&*^!@""'`\/#" -- Role: "Role1_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role1_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role1_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role1_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role1_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
SUPERUSER SUPERUSER
INHERIT INHERIT

View File

@ -1,7 +1,7 @@
-- User: "Role2_$%{}[]()&*^!@""'`\/#" -- Role: "Role2_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role2_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role2_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role2_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role2_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
SUPERUSER SUPERUSER
INHERIT INHERIT

View File

@ -1,7 +1,7 @@
-- User: "Role2_$%{}[]()&*^!@""'`\/#" -- Role: "Role2_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role2_$%{}[]()&*^!@""'`\/#"; -- DROP ROLE "Role2_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role2_$%{}[]()&*^!@""'`\/#" WITH CREATE ROLE "Role2_$%{}[]()&*^!@""'`\/#" WITH
LOGIN LOGIN
NOSUPERUSER NOSUPERUSER
INHERIT INHERIT

View File

@ -0,0 +1,10 @@
-- Role: "Role1_$%{}[]()&*^!@""'`\/#"
-- DROP ROLE "Role1_$%{}[]()&*^!@""'`\/#";
CREATE ROLE "Role1_$%{}[]()&*^!@""'`\/#" WITH
LOGIN
SUPERUSER
INHERIT
CREATEDB
CREATEROLE
REPLICATION;

View File

@ -1,10 +0,0 @@
-- User: "Role1_$%{}[]()&*^!@""'`\/#"
-- DROP USER "Role1_$%{}[]()&*^!@""'`\/#";
CREATE USER "Role1_$%{}[]()&*^!@""'`\/#" WITH
LOGIN
SUPERUSER
INHERIT
CREATEDB
CREATEROLE
REPLICATION;

View File

@ -62,7 +62,7 @@
}, },
{ {
"type": "create", "type": "create",
"name": "Create User", "name": "Create Login Role",
"endpoint": "NODE-role.obj", "endpoint": "NODE-role.obj",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
@ -81,42 +81,42 @@
"seclabels": [], "seclabels": [],
"variables": [] "variables": []
}, },
"expected_sql_file": "create_user.sql" "expected_sql_file": "create_login_role.sql"
}, },
{ {
"type": "alter", "type": "alter",
"name": "Alter User description", "name": "Alter Login Role description",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
"description": "This is detailed description" "description": "This is detailed description"
}, },
"expected_sql_file": "alter_user_description.sql" "expected_sql_file": "alter_login_role_description.sql"
}, },
{ {
"type": "alter", "type": "alter",
"name": "Alter User name", "name": "Alter Login Role name",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
"rolname": "Role2_$%{}[]()&*^!@\"'`\\/#" "rolname": "Role2_$%{}[]()&*^!@\"'`\\/#"
}, },
"expected_sql_file": "alter_user_name.sql" "expected_sql_file": "alter_login_role_name.sql"
}, },
{ {
"type": "alter", "type": "alter",
"name": "Alter User superuser, createdb etc options", "name": "Alter Login Role superuser, createdb etc options",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"sql_endpoint": "NODE-role.sql_id", "sql_endpoint": "NODE-role.sql_id",
"data": { "data": {
"rolsuper": false, "rolsuper": false,
"rolcreatedb": false "rolcreatedb": false
}, },
"expected_sql_file": "alter_user_options.sql" "expected_sql_file": "alter_login_role_options.sql"
}, },
{ {
"type": "delete", "type": "delete",
"name": "Drop User", "name": "Drop Login Role",
"endpoint": "NODE-role.obj_id", "endpoint": "NODE-role.obj_id",
"data": {} "data": {}
} }