@@ -29,7 +29,8 @@ CREATE TABLE IF NOT EXISTS @extschema@.pathman_config (
2929
3030CREATE TABLE IF NOT EXISTS @extschema@.pathman_config_params (
3131 partrel REGCLASS NOT NULL ,
32- enable_parent BOOLEAN NOT NULL DEFAULT TRUE
32+ enable_parent BOOLEAN NOT NULL DEFAULT TRUE,
33+ auto BOOLEAN NOT NULL DEFAULT TRUE
3334);
3435CREATE UNIQUE INDEX i_pathman_config_params
3536ON @extschema@.pathman_config_params(partrel);
8182$$
8283LANGUAGE plpgsql;
8384
84- /* Include parent relation into query plan's for specified relation */
85+ /*
86+ * Set additional param
87+ */
88+ CREATE OR REPLACE FUNCTION @extschema@.pathman_set_param(
89+ relation REGCLASS,
90+ param TEXT ,
91+ value BOOLEAN )
92+ RETURNS VOID AS
93+ $$
94+ BEGIN
95+ EXECUTE format(
96+ ' INSERT INTO @extschema@.pathman_config_params (partrel, %1$s)
97+ VALUES ($1, $2)
98+ ON CONFLICT (partrel) DO
99+ UPDATE SET %1$s = $2' ,
100+ param)
101+ USING
102+ relation,
103+ value;
104+ END
105+ $$
106+ LANGUAGE plpgsql;
107+
108+ /*
109+ * Include parent relation into query plan's for specified relation
110+ */
85111CREATE OR REPLACE FUNCTION @extschema@.enable_parent(relation REGCLASS)
86112RETURNS VOID AS
87113$$
88114BEGIN
89- INSERT INTO @extschema@.pathman_config_params values (relation, True)
90- ON CONFLICT (partrel) DO
91- UPDATE SET enable_parent = True;
115+ PERFORM @extschema@.pathman_set_param(relation, ' enable_parent' , True);
116+ END
117+ $$
118+ LANGUAGE plpgsql;
92119
93- -- PERFORM @extschema@.invalidate_relcache(relation::oid);
94- -- PERFORM @extschema@.on_enable_parent(relation::oid);
120+ /*
121+ * Do not include parent relation into query plan's for specified relation
122+ */
123+ CREATE OR REPLACE FUNCTION @extschema@.disable_parent(relation REGCLASS)
124+ RETURNS VOID AS
125+ $$
126+ BEGIN
127+ PERFORM @extschema@.pathman_set_param(relation, ' enable_parent' , False);
95128END
96129$$
97130LANGUAGE plpgsql;
98131
99- /* Do not include parent relation into query plan's for specified relation */
100- CREATE OR REPLACE FUNCTION @extschema@.disable_parent(relation REGCLASS)
132+ /*
133+ * Enable auto partition creation
134+ */
135+ CREATE OR REPLACE FUNCTION @extschema@.enable_auto(relation REGCLASS)
101136RETURNS VOID AS
102137$$
103138BEGIN
104- INSERT INTO @extschema@.pathman_config_params values (relation, False)
105- ON CONFLICT (partrel) DO
106- UPDATE SET enable_parent = False;
139+ PERFORM @extschema@.pathman_set_param(relation, ' auto' , True);
140+ END
141+ $$
142+ LANGUAGE plpgsql;
107143
108- -- PERFORM @extschema@.invalidate_relcache(relation::oid);
109- -- PERFORM @extschema@.on_disable_parent(relation::oid);
144+ /*
145+ * Disable auto partition creation
146+ */
147+ CREATE OR REPLACE FUNCTION @extschema@.disable_auto(relation REGCLASS)
148+ RETURNS VOID AS
149+ $$
150+ BEGIN
151+ PERFORM @extschema@.pathman_set_param(relation, ' auto' , False);
110152END
111153$$
112154LANGUAGE plpgsql;
0 commit comments