Use `deparse` schema for deparse event trigger code
authorIan Barwick <ian@2ndquadrant.com>
Mon, 15 Dec 2014 04:24:43 +0000 (13:24 +0900)
committerIan Barwick <ian@2ndquadrant.com>
Mon, 15 Dec 2014 04:24:43 +0000 (13:24 +0900)
The definitions for the deparse event trigger code won't of
course be deparsed themselves, so we don't want to dump them.
By using a separate schema, it's easier to exclude them from
the dump output.

src/test/regress/ddl-deparse/dump_regress_db.pl
src/test/regress/ddl-deparse/input/create_function.source
src/test/regress/ddl-deparse/input/deparse_init.source
src/test/regress/ddl-deparse/input/deparse_test.source
src/test/regress/ddl-deparse/output/create_function.source
src/test/regress/ddl-deparse/output/deparse_init.source
src/test/regress/ddl-deparse/output/deparse_test.source
src/test/regress/ddl-deparse/regress.c

index c1973f21498528ba93f1ef803b6ea488e933458b..388e3c99374f4a005f04fd91e1ee26c4b22a18d2 100755 (executable)
@@ -79,7 +79,7 @@ my $pg_ctl= sprintf(
 `${pg_ctl} start`;
 
 my $pg_dump_cmd = sprintf(
-    q`%s/src/bin/pg_dump/pg_dump -p %s --schema-only --no-owner --no-privileges -Fp regression | egrep -v '^-- Dumped'`,
+    q`%s/src/bin/pg_dump/pg_dump -p %s --schema-only --no-owner --no-privileges --exclude-schema=deparse -Fp regression | egrep -v '^-- Dumped'`,
     $options{'top-builddir'},
     $options{'port'},
 );
index b77619a25350a1a4ef3b17234fd3cb2ddfe83dff..6b066eb17a87a901e00ba5fbce403a24e208df8f 100644 (file)
@@ -1,4 +1,22 @@
+--
+-- CREATE FUNCTION
+--
+
 CREATE FUNCTION c_function_test ()
    RETURNS INT
    AS '@libdir@/regress@DLSUFFIX@', 'c_function_test'
-   LANGUAGE C;
\ No newline at end of file
+   LANGUAGE C;
+
+CREATE FUNCTION sql_function()
+    RETURNS TEXT
+    LANGUAGE SQL
+AS $$
+  SELECT 'Test function'::TEXT;
+$$;
+
+CREATE OR REPLACE FUNCTION sql_function()
+    RETURNS TEXT
+    LANGUAGE SQL
+AS $$
+  SELECT 'Test function replaced'::TEXT;
+$$;
\ No newline at end of file
index 2a53cc38b419139baaabf6a3ba3c9d09c49c1190..3b50939e0d08d3af60bb4d5b204f3c0d1b26c075 100644 (file)
@@ -1,18 +1,15 @@
 --
 -- DEPARSE_INIT
 --
-
-CREATE TABLE deparse_test_commands (
+CREATE SCHEMA deparse;
+CREATE TABLE deparse.deparse_test_commands (
   id SERIAL PRIMARY KEY,
   command TEXT
 );
-
-CREATE FUNCTION deparse_test_ddl_command_end()
+CREATE FUNCTION deparse.deparse_test_ddl_command_end()
   RETURNS event_trigger
   LANGUAGE C
 AS '@libdir@/regress@DLSUFFIX@', 'deparse_test_ddl_command_end';
-
-/* This should come last - we don't want to log anything defined here */
 CREATE EVENT TRIGGER deparse_test_trg_ddl_command_end
   ON ddl_command_end
-  EXECUTE PROCEDURE deparse_test_ddl_command_end();
\ No newline at end of file
+  EXECUTE PROCEDURE deparse.deparse_test_ddl_command_end();
index 8ac2c2a12274b98133d87fbca121a2258c3c3e5e..d78ba6cbaac5c71cd6707185be891ccca0745cac 100644 (file)
@@ -4,7 +4,7 @@
 \pset format unaligned
 \pset tuples_only
 \o ./sql/deparse_dump.sql
-SELECT command || ';' FROM deparse_test_commands ORDER BY id;
+SELECT command || ';' FROM deparse.deparse_test_commands ORDER BY id;
 \! @psqldir@/psql --dbname=@deparse_test_db@ < ./sql/deparse_dump.sql > /dev/null
 
-\! @psqldir@/pg_dump --schema-only --no-owner --no-privileges -Fp @deparse_test_db@ | perl -n -e 'print unless /^-- Dumped/'
+\! @psqldir@/pg_dump --schema-only --no-owner --no-privileges --exclude-schema=deparse -Fp @deparse_test_db@ | perl -n -e 'print unless /^-- Dumped/'
index c0b7864fd5beb78b276b72d2a57e2a1b3a0ea744..08185092c88d2f92a404d59dfc52b206e6e98be8 100644 (file)
@@ -1,4 +1,19 @@
+--
+-- CREATE FUNCTION
+--
 CREATE FUNCTION c_function_test ()
    RETURNS INT
    AS '@libdir@/regress@DLSUFFIX@', 'c_function_test'
    LANGUAGE C;
+CREATE FUNCTION sql_function()
+    RETURNS TEXT
+    LANGUAGE SQL
+AS $$
+  SELECT 'Test function'::TEXT;
+$$;
+CREATE OR REPLACE FUNCTION sql_function()
+    RETURNS TEXT
+    LANGUAGE SQL
+AS $$
+  SELECT 'Test function replaced'::TEXT;
+$$;
index 10cc234bb4b03541990031a5e4ff9b4b506284a1..e8469bf950ad44c6e4a8660a8fb22b82184723f1 100644 (file)
@@ -1,15 +1,15 @@
 --
 -- DEPARSE_INIT
 --
-CREATE TABLE deparse_test_commands (
+CREATE SCHEMA deparse;
+CREATE TABLE deparse.deparse_test_commands (
   id SERIAL PRIMARY KEY,
   command TEXT
 );
-CREATE FUNCTION deparse_test_ddl_command_end()
+CREATE FUNCTION deparse.deparse_test_ddl_command_end()
   RETURNS event_trigger
   LANGUAGE C
-AS '@libdir@/regress@DLSUFFIX@', 'deparse_test_ddl_command_end';
-/* This should come last - we don't want to log anything defined here */
+AS '/space/sda1/ibarwick/2ndquadrant_bdr/src/test/regress/ddl-deparse/regress.so', 'deparse_test_ddl_command_end';
 CREATE EVENT TRIGGER deparse_test_trg_ddl_command_end
   ON ddl_command_end
-  EXECUTE PROCEDURE deparse_test_ddl_command_end();
+  EXECUTE PROCEDURE deparse.deparse_test_ddl_command_end();
index 185f006137c8084a90cb1596512e8bc5eb30fbfb..474e0fdc3fc7abdf59f0a43a06aa04390b062e8e 100644 (file)
@@ -1,9 +1,12 @@
 ---
 --- DEPARSE_TEST
 ---
-\copy (SELECT command || ';' FROM deparse_test_commands ORDER BY id) TO './sql/deparse_dump.sql'
+\pset format unaligned
+\pset tuples_only
+\o ./sql/deparse_dump.sql
+SELECT command || ';' FROM deparse.deparse_test_commands ORDER BY id;
 \! @psqldir@/psql --dbname=@deparse_test_db@ < ./sql/deparse_dump.sql > /dev/null
-\! @psqldir@/pg_dump --schema-only --no-owner --no-privileges -Fp @deparse_test_db@ | perl -n -e 'print unless /^-- Dumped/'
+\! @psqldir@/pg_dump --schema-only --no-owner --no-privileges --exclude-schema=deparse -Fp @deparse_test_db@ | perl -n -e 'print unless /^-- Dumped/'
 --
 -- PostgreSQL database dump
 --
@@ -42,6 +45,63 @@ CREATE FUNCTION c_function_test() RETURNS integer
     AS '@libdir@/regress@DLSUFFIX@', 'c_function_test';
 
 
+--
+-- Name: sql_function(); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION sql_function() RETURNS text
+    LANGUAGE sql
+    AS $$
+  SELECT 'Test function replaced'::TEXT;
+$$;
+
+
+SET default_tablespace = '';
+
+SET default_with_oids = false;
+
+--
+-- Name: datatype_table; Type: TABLE; Schema: public; Owner: -; Tablespace: 
+--
+
+CREATE TABLE datatype_table (
+    id integer NOT NULL,
+    id_big bigint NOT NULL,
+    v_smallint smallint,
+    v_int integer,
+    v_bigint bigint,
+    v_char character(1),
+    v_varchar character varying(10),
+    v_text text,
+    v_bool boolean,
+    v_inet inet,
+    v_numeric numeric(1,0),
+    v_float real,
+    v_tsvector tsvector,
+    v_timestamp1 timestamp without time zone,
+    v_timestamp2 timestamp with time zone
+);
+
+
+--
+-- Name: datatype_table_id_big_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE datatype_table_id_big_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+--
+-- Name: datatype_table_id_big_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE datatype_table_id_big_seq OWNED BY datatype_table.id_big;
+
+
 --
 -- Name: datatype_table_id_seq; Type: SEQUENCE; Schema: public; Owner: -
 --
@@ -54,9 +114,12 @@ CREATE SEQUENCE datatype_table_id_seq
     CACHE 1;
 
 
-SET default_tablespace = '';
+--
+-- Name: datatype_table_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE datatype_table_id_seq OWNED BY datatype_table.id;
 
-SET default_with_oids = false;
 
 --
 -- Name: fkey_table; Type: TABLE; Schema: public; Owner: -; Tablespace: 
@@ -69,6 +132,60 @@ CREATE TABLE fkey_table (
 );
 
 
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY datatype_table ALTER COLUMN id SET DEFAULT nextval('datatype_table_id_seq'::regclass);
+
+
+--
+-- Name: id_big; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY datatype_table ALTER COLUMN id_big SET DEFAULT nextval('datatype_table_id_big_seq'::regclass);
+
+
+--
+-- Name: datatype_table_id_big_key; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: 
+--
+
+ALTER TABLE ONLY datatype_table
+    ADD CONSTRAINT datatype_table_id_big_key UNIQUE (id_big);
+
+
+--
+-- Name: datatype_table_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: 
+--
+
+ALTER TABLE ONLY datatype_table
+    ADD CONSTRAINT datatype_table_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: fkey_big_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY fkey_table
+    ADD CONSTRAINT fkey_big_id FOREIGN KEY (big_id) REFERENCES datatype_table(id_big);
+
+
+--
+-- Name: fkey_table_datatype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY fkey_table
+    ADD CONSTRAINT fkey_table_datatype_id_fkey FOREIGN KEY (datatype_id) REFERENCES datatype_table(id);
+
+
+--
+-- Name: deparse_test_trg_ddl_command_end; Type: EVENT TRIGGER; Schema: -; Owner: -
+--
+
+CREATE EVENT TRIGGER deparse_test_trg_ddl_command_end ON ddl_command_end 
+   EXECUTE PROCEDURE deparse.deparse_test_ddl_command_end();
+
+
 --
 -- PostgreSQL database dump complete
 --
index 74270b5bbaa773179739a87fc17fb4beedebf9a5..cd40443a863942cbd8026b2d48a94dca94e57961 100644 (file)
@@ -56,7 +56,7 @@ deparse_test_ddl_command_end(PG_FUNCTION_ARGS)
        "SELECT command FROM pg_event_trigger_get_creation_commands()";
 
    save_command_text =
-       "INSERT INTO deparse_test_commands (command) VALUES ($1)";
+       "INSERT INTO deparse.deparse_test_commands (command) VALUES ($1)";
 
    tmpcontext = AllocSetContextCreate(CurrentMemoryContext,
                                       "deparse_test_ddl_command_end temporary context",