mirror of
https://github.com/postgres/postgres.git
synced 2026-10-23 13:29:09 +03:00
Fix pg_event_trigger_ddl_commands for GRANT ON PROPERTY GRAPH
stringify_grant_objtype() treated OBJECT_PROPGRAPH as unused, so pg_event_trigger_ddl_commands() failed with "unsupported object type" when a ddl_command_end trigger inspected GRANT/REVOKE on a property graph. Return "PROPERTY GRAPH" like the GRANT command syntax. Bug: #19637 Reported-by: Alexander Lakhin <exclusion@gmail.com> Author: Andrey Rachitskiy <pl0h0yp1@gmail.com> Reviewed-by: Fujii Masao <masao.fujii@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/19637-4446f72945492ed8%40postgresql.org
This commit is contained in:
@@ -2288,6 +2288,8 @@ stringify_grant_objtype(ObjectType objtype)
|
||||
return "PARAMETER";
|
||||
case OBJECT_PROCEDURE:
|
||||
return "PROCEDURE";
|
||||
case OBJECT_PROPGRAPH:
|
||||
return "PROPERTY GRAPH";
|
||||
case OBJECT_ROUTINE:
|
||||
return "ROUTINE";
|
||||
case OBJECT_TABLESPACE:
|
||||
@@ -2315,7 +2317,6 @@ stringify_grant_objtype(ObjectType objtype)
|
||||
case OBJECT_OPERATOR:
|
||||
case OBJECT_OPFAMILY:
|
||||
case OBJECT_POLICY:
|
||||
case OBJECT_PROPGRAPH:
|
||||
case OBJECT_PUBLICATION:
|
||||
case OBJECT_PUBLICATION_NAMESPACE:
|
||||
case OBJECT_PUBLICATION_REL:
|
||||
|
||||
@@ -173,7 +173,8 @@ NOTICE: test_event_trigger: ddl_command_end CREATE USER MAPPING
|
||||
alter default privileges for role regress_evt_user
|
||||
revoke delete on tables from regress_evt_user;
|
||||
NOTICE: test_event_trigger: ddl_command_end ALTER DEFAULT PRIVILEGES
|
||||
-- DROP PROPERTY GRAPH should work with event trigger in place
|
||||
-- property graph DDL should work with event trigger in place; these
|
||||
-- objects are dropped further down, under the sql_drop trigger
|
||||
CREATE TABLE tv1 (a int PRIMARY KEY, b text);
|
||||
NOTICE: test_event_trigger: ddl_command_start CREATE TABLE
|
||||
NOTICE: test_event_trigger: ddl_command_end CREATE TABLE
|
||||
@@ -191,10 +192,6 @@ CREATE PROPERTY GRAPH gx
|
||||
NOTICE: test_event_trigger: ddl_command_end CREATE PROPERTY GRAPH
|
||||
ALTER PROPERTY GRAPH gx ALTER EDGE TABLE te1 ALTER LABEL e1 DROP PROPERTIES (p1);
|
||||
NOTICE: test_event_trigger: ddl_command_end ALTER PROPERTY GRAPH
|
||||
DROP PROPERTY GRAPH gx;
|
||||
NOTICE: test_event_trigger: ddl_command_end DROP PROPERTY GRAPH
|
||||
DROP TABLE tv1, tv2, te1;
|
||||
NOTICE: test_event_trigger: ddl_command_end DROP TABLE
|
||||
-- alter owner to non-superuser should fail
|
||||
alter event trigger regress_event_trigger owner to regress_evt_user;
|
||||
ERROR: permission denied to change owner of event trigger "regress_event_trigger"
|
||||
@@ -434,6 +431,20 @@ BEGIN
|
||||
END; $$;
|
||||
CREATE EVENT TRIGGER regress_event_trigger_report_end ON ddl_command_end
|
||||
EXECUTE PROCEDURE event_trigger_report_end();
|
||||
-- GRANT/REVOKE ON PROPERTY GRAPH with pg_event_trigger_ddl_commands()
|
||||
GRANT SELECT ON PROPERTY GRAPH gx TO public;
|
||||
NOTICE: END: command_tag=GRANT type=PROPERTY GRAPH identity=<NULL>
|
||||
REVOKE SELECT ON PROPERTY GRAPH gx FROM public;
|
||||
NOTICE: END: command_tag=REVOKE type=PROPERTY GRAPH identity=<NULL>
|
||||
DROP PROPERTY GRAPH gx;
|
||||
NOTICE: NORMAL: orig=t normal=f istemp=f type=property graph identity=public.gx schema=public name=gx addr={public,gx} args={}
|
||||
NOTICE: NORMAL: orig=f normal=t istemp=f type=property graph element identity=te1 of property graph public.gx schema=<NULL> name=<NULL> addr={public,gx,te1} args={}
|
||||
DROP TABLE tv1, tv2, te1;
|
||||
NOTICE: NORMAL: orig=t normal=f istemp=f type=table identity=public.te1 schema=public name=te1 addr={public,te1} args={}
|
||||
NOTICE: NORMAL: orig=t normal=f istemp=f type=table identity=public.tv2 schema=public name=tv2 addr={public,tv2} args={}
|
||||
NOTICE: NORMAL: orig=f normal=t istemp=f type=table constraint identity=te1_b_fkey on public.te1 schema=public name=<NULL> addr={public,te1,te1_b_fkey} args={}
|
||||
NOTICE: NORMAL: orig=t normal=f istemp=f type=table identity=public.tv1 schema=public name=tv1 addr={public,tv1} args={}
|
||||
NOTICE: NORMAL: orig=f normal=t istemp=f type=table constraint identity=te1_a_fkey on public.te1 schema=public name=<NULL> addr={public,te1,te1_a_fkey} args={}
|
||||
CREATE SCHEMA evttrig
|
||||
CREATE TABLE one (col_a SERIAL PRIMARY KEY, col_b text DEFAULT 'forty two', col_c SERIAL)
|
||||
CREATE INDEX one_idx ON one (col_b)
|
||||
|
||||
@@ -143,7 +143,8 @@ create user mapping for regress_evt_user server useless_server;
|
||||
alter default privileges for role regress_evt_user
|
||||
revoke delete on tables from regress_evt_user;
|
||||
|
||||
-- DROP PROPERTY GRAPH should work with event trigger in place
|
||||
-- property graph DDL should work with event trigger in place; these
|
||||
-- objects are dropped further down, under the sql_drop trigger
|
||||
CREATE TABLE tv1 (a int PRIMARY KEY, b text);
|
||||
CREATE TABLE tv2 (i int PRIMARY KEY, j text);
|
||||
CREATE TABLE te1 (p int PRIMARY KEY, a int REFERENCES tv1(a), b int REFERENCES tv2(i), q text);
|
||||
@@ -155,8 +156,6 @@ CREATE PROPERTY GRAPH gx
|
||||
EDGE TABLES (te1 SOURCE tv1 DESTINATION tv2 LABEL e1 PROPERTIES (q as p1));
|
||||
|
||||
ALTER PROPERTY GRAPH gx ALTER EDGE TABLE te1 ALTER LABEL e1 DROP PROPERTIES (p1);
|
||||
DROP PROPERTY GRAPH gx;
|
||||
DROP TABLE tv1, tv2, te1;
|
||||
|
||||
-- alter owner to non-superuser should fail
|
||||
alter event trigger regress_event_trigger owner to regress_evt_user;
|
||||
@@ -335,6 +334,12 @@ END; $$;
|
||||
CREATE EVENT TRIGGER regress_event_trigger_report_end ON ddl_command_end
|
||||
EXECUTE PROCEDURE event_trigger_report_end();
|
||||
|
||||
-- GRANT/REVOKE ON PROPERTY GRAPH with pg_event_trigger_ddl_commands()
|
||||
GRANT SELECT ON PROPERTY GRAPH gx TO public;
|
||||
REVOKE SELECT ON PROPERTY GRAPH gx FROM public;
|
||||
DROP PROPERTY GRAPH gx;
|
||||
DROP TABLE tv1, tv2, te1;
|
||||
|
||||
CREATE SCHEMA evttrig
|
||||
CREATE TABLE one (col_a SERIAL PRIMARY KEY, col_b text DEFAULT 'forty two', col_c SERIAL)
|
||||
CREATE INDEX one_idx ON one (col_b)
|
||||
|
||||
Reference in New Issue
Block a user