Files
dolthub--doltgresql/testing/dumps/sql/Chris-Merced_Classic-Messenger-App-Backend.sql
T
2026-07-13 12:32:25 +08:00

742 lines
21 KiB
PL/PgSQL

-- Downloaded from: https://github.com/Chris-Merced/Classic-Messenger-App-Backend/blob/830ae3a7451ff23d2d41943f7a727008e525e190/schema.sql
--
-- PostgreSQL database dump
--
-- Dumped from database version 16.9 (Ubuntu 16.9-0ubuntu0.24.04.1)
-- Dumped by pg_dump version 16.9 (Ubuntu 16.9-0ubuntu0.24.04.1)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: _heroku; Type: SCHEMA; Schema: -; Owner: chris
--
CREATE SCHEMA _heroku;
ALTER SCHEMA _heroku OWNER TO chris;
--
-- Name: pg_stat_statements; Type: EXTENSION; Schema: -; Owner: -
--
CREATE EXTENSION IF NOT EXISTS pg_stat_statements WITH SCHEMA public;
--
-- Name: EXTENSION pg_stat_statements; Type: COMMENT; Schema: -; Owner:
--
COMMENT ON EXTENSION pg_stat_statements IS 'track planning and execution statistics of all SQL statements executed';
--
-- Name: create_ext(); Type: FUNCTION; Schema: _heroku; Owner: chris
--
CREATE FUNCTION _heroku.create_ext() RETURNS event_trigger
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
schemaname TEXT;
databaseowner TEXT;
r RECORD;
BEGIN
IF tg_tag = 'CREATE EXTENSION' and current_user != 'rds_superuser' THEN
FOR r IN SELECT * FROM pg_event_trigger_ddl_commands()
LOOP
CONTINUE WHEN r.command_tag != 'CREATE EXTENSION' OR r.object_type != 'extension';
schemaname = (
SELECT n.nspname
FROM pg_catalog.pg_extension AS e
INNER JOIN pg_catalog.pg_namespace AS n
ON e.extnamespace = n.oid
WHERE e.oid = r.objid
);
databaseowner = (
SELECT pg_catalog.pg_get_userbyid(d.datdba)
FROM pg_catalog.pg_database d
WHERE d.datname = current_database()
);
--RAISE NOTICE 'Record for event trigger %, objid: %,tag: %, current_user: %, schema: %, database_owenr: %', r.object_identity, r.objid, tg_tag, current_user, schemaname, databaseowner;
IF r.object_identity = 'address_standardizer_data_us' THEN
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT, UPDATE, INSERT, DELETE', databaseowner, 'us_gaz');
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT, UPDATE, INSERT, DELETE', databaseowner, 'us_lex');
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT, UPDATE, INSERT, DELETE', databaseowner, 'us_rules');
ELSIF r.object_identity = 'amcheck' THEN
EXECUTE format('GRANT EXECUTE ON FUNCTION %I.bt_index_check TO %I;', schemaname, databaseowner);
EXECUTE format('GRANT EXECUTE ON FUNCTION %I.bt_index_parent_check TO %I;', schemaname, databaseowner);
ELSIF r.object_identity = 'dict_int' THEN
EXECUTE format('ALTER TEXT SEARCH DICTIONARY %I.intdict OWNER TO %I;', schemaname, databaseowner);
ELSIF r.object_identity = 'pg_partman' THEN
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT, UPDATE, INSERT, DELETE', databaseowner, 'part_config');
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT, UPDATE, INSERT, DELETE', databaseowner, 'part_config_sub');
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT, UPDATE, INSERT, DELETE', databaseowner, 'custom_time_partitions');
ELSIF r.object_identity = 'pg_stat_statements' THEN
EXECUTE format('GRANT EXECUTE ON FUNCTION %I.pg_stat_statements_reset TO %I;', schemaname, databaseowner);
ELSIF r.object_identity = 'postgis' THEN
PERFORM _heroku.postgis_after_create();
ELSIF r.object_identity = 'postgis_raster' THEN
PERFORM _heroku.postgis_after_create();
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT', databaseowner, 'raster_columns');
PERFORM _heroku.grant_table_if_exists(schemaname, 'SELECT', databaseowner, 'raster_overviews');
ELSIF r.object_identity = 'postgis_topology' THEN
PERFORM _heroku.postgis_after_create();
EXECUTE format('GRANT USAGE ON SCHEMA topology TO %I;', databaseowner);
EXECUTE format('GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA topology TO %I;', databaseowner);
PERFORM _heroku.grant_table_if_exists('topology', 'SELECT, UPDATE, INSERT, DELETE', databaseowner);
EXECUTE format('GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA topology TO %I;', databaseowner);
ELSIF r.object_identity = 'postgis_tiger_geocoder' THEN
PERFORM _heroku.postgis_after_create();
EXECUTE format('GRANT USAGE ON SCHEMA tiger TO %I;', databaseowner);
EXECUTE format('GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA tiger TO %I;', databaseowner);
PERFORM _heroku.grant_table_if_exists('tiger', 'SELECT, UPDATE, INSERT, DELETE', databaseowner);
EXECUTE format('GRANT USAGE ON SCHEMA tiger_data TO %I;', databaseowner);
EXECUTE format('GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA tiger_data TO %I;', databaseowner);
PERFORM _heroku.grant_table_if_exists('tiger_data', 'SELECT, UPDATE, INSERT, DELETE', databaseowner);
END IF;
END LOOP;
END IF;
END;
$$;
ALTER FUNCTION _heroku.create_ext() OWNER TO chris;
--
-- Name: drop_ext(); Type: FUNCTION; Schema: _heroku; Owner: chris
--
CREATE FUNCTION _heroku.drop_ext() RETURNS event_trigger
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
schemaname TEXT;
databaseowner TEXT;
r RECORD;
BEGIN
IF tg_tag = 'DROP EXTENSION' and current_user != 'rds_superuser' THEN
FOR r IN SELECT * FROM pg_event_trigger_dropped_objects()
LOOP
CONTINUE WHEN r.object_type != 'extension';
databaseowner = (
SELECT pg_catalog.pg_get_userbyid(d.datdba)
FROM pg_catalog.pg_database d
WHERE d.datname = current_database()
);
--RAISE NOTICE 'Record for event trigger %, objid: %,tag: %, current_user: %, database_owner: %, schemaname: %', r.object_identity, r.objid, tg_tag, current_user, databaseowner, r.schema_name;
IF r.object_identity = 'postgis_topology' THEN
EXECUTE format('DROP SCHEMA IF EXISTS topology');
END IF;
END LOOP;
END IF;
END;
$$;
ALTER FUNCTION _heroku.drop_ext() OWNER TO chris;
--
-- Name: extension_before_drop(); Type: FUNCTION; Schema: _heroku; Owner: chris
--
CREATE FUNCTION _heroku.extension_before_drop() RETURNS event_trigger
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
query TEXT;
BEGIN
query = (SELECT current_query());
-- RAISE NOTICE 'executing extension_before_drop: tg_event: %, tg_tag: %, current_user: %, session_user: %, query: %', tg_event, tg_tag, current_user, session_user, query;
IF tg_tag = 'DROP EXTENSION' and not pg_has_role(session_user, 'rds_superuser', 'MEMBER') THEN
-- DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
IF (regexp_match(query, 'DROP\s+EXTENSION\s+(IF\s+EXISTS)?.*(plpgsql)', 'i') IS NOT NULL) THEN
RAISE EXCEPTION 'The plpgsql extension is required for database management and cannot be dropped.';
END IF;
END IF;
END;
$$;
ALTER FUNCTION _heroku.extension_before_drop() OWNER TO chris;
--
-- Name: grant_table_if_exists(text, text, text, text); Type: FUNCTION; Schema: _heroku; Owner: chris
--
CREATE FUNCTION _heroku.grant_table_if_exists(alias_schemaname text, grants text, databaseowner text, alias_tablename text DEFAULT NULL::text) RETURNS void
LANGUAGE plpgsql SECURITY DEFINER
AS $$
BEGIN
IF alias_tablename IS NULL THEN
EXECUTE format('GRANT %s ON ALL TABLES IN SCHEMA %I TO %I;', grants, alias_schemaname, databaseowner);
ELSE
IF EXISTS (SELECT 1 FROM pg_tables WHERE pg_tables.schemaname = alias_schemaname AND pg_tables.tablename = alias_tablename) THEN
EXECUTE format('GRANT %s ON TABLE %I.%I TO %I;', grants, alias_schemaname, alias_tablename, databaseowner);
END IF;
END IF;
END;
$$;
ALTER FUNCTION _heroku.grant_table_if_exists(alias_schemaname text, grants text, databaseowner text, alias_tablename text) OWNER TO chris;
--
-- Name: postgis_after_create(); Type: FUNCTION; Schema: _heroku; Owner: chris
--
CREATE FUNCTION _heroku.postgis_after_create() RETURNS void
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
schemaname TEXT;
databaseowner TEXT;
BEGIN
schemaname = (
SELECT n.nspname
FROM pg_catalog.pg_extension AS e
INNER JOIN pg_catalog.pg_namespace AS n ON e.extnamespace = n.oid
WHERE e.extname = 'postgis'
);
databaseowner = (
SELECT pg_catalog.pg_get_userbyid(d.datdba)
FROM pg_catalog.pg_database d
WHERE d.datname = current_database()
);
EXECUTE format('GRANT EXECUTE ON FUNCTION %I.st_tileenvelope TO %I;', schemaname, databaseowner);
EXECUTE format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.spatial_ref_sys TO %I;', schemaname, databaseowner);
END;
$$;
ALTER FUNCTION _heroku.postgis_after_create() OWNER TO chris;
--
-- Name: validate_extension(); Type: FUNCTION; Schema: _heroku; Owner: chris
--
CREATE FUNCTION _heroku.validate_extension() RETURNS event_trigger
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
schemaname TEXT;
r RECORD;
BEGIN
IF tg_tag = 'CREATE EXTENSION' and current_user != 'rds_superuser' THEN
FOR r IN SELECT * FROM pg_event_trigger_ddl_commands()
LOOP
CONTINUE WHEN r.command_tag != 'CREATE EXTENSION' OR r.object_type != 'extension';
schemaname = (
SELECT n.nspname
FROM pg_catalog.pg_extension AS e
INNER JOIN pg_catalog.pg_namespace AS n
ON e.extnamespace = n.oid
WHERE e.oid = r.objid
);
IF schemaname = '_heroku' THEN
RAISE EXCEPTION 'Creating extensions in the _heroku schema is not allowed';
END IF;
END LOOP;
END IF;
END;
$$;
ALTER FUNCTION _heroku.validate_extension() OWNER TO chris;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: blocked; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.blocked (
user_id integer NOT NULL,
blocked_id integer NOT NULL
);
ALTER TABLE public.blocked OWNER TO chris;
--
-- Name: conversation_participants; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.conversation_participants (
id integer NOT NULL,
conversation_id integer,
user_id integer,
added_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE public.conversation_participants OWNER TO chris;
--
-- Name: conversation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: chris
--
CREATE SEQUENCE public.conversation_participants_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.conversation_participants_id_seq OWNER TO chris;
--
-- Name: conversation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: chris
--
ALTER SEQUENCE public.conversation_participants_id_seq OWNED BY public.conversation_participants.id;
--
-- Name: conversations; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.conversations (
id integer NOT NULL,
name character varying(100),
is_group boolean DEFAULT false,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE public.conversations OWNER TO chris;
--
-- Name: conversations_id_seq; Type: SEQUENCE; Schema: public; Owner: chris
--
CREATE SEQUENCE public.conversations_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.conversations_id_seq OWNER TO chris;
--
-- Name: conversations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: chris
--
ALTER SEQUENCE public.conversations_id_seq OWNED BY public.conversations.id;
--
-- Name: friend_requests; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.friend_requests (
user_id integer NOT NULL,
request_id integer NOT NULL,
status character varying(10),
CONSTRAINT friend_requests_status_check CHECK (((status)::text = ANY ((ARRAY['pending'::character varying, 'accepted'::character varying, 'rejected'::character varying])::text[])))
);
ALTER TABLE public.friend_requests OWNER TO chris;
--
-- Name: friends; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.friends (
user_id integer NOT NULL,
friend_id integer NOT NULL,
CONSTRAINT friends_check CHECK ((user_id < friend_id))
);
ALTER TABLE public.friends OWNER TO chris;
--
-- Name: messages; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.messages (
id integer NOT NULL,
conversation_id integer,
sender_id integer,
content text NOT NULL,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
is_read boolean DEFAULT false
);
ALTER TABLE public.messages OWNER TO chris;
--
-- Name: messages_id_seq; Type: SEQUENCE; Schema: public; Owner: chris
--
CREATE SEQUENCE public.messages_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.messages_id_seq OWNER TO chris;
--
-- Name: messages_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: chris
--
ALTER SEQUENCE public.messages_id_seq OWNED BY public.messages.id;
--
-- Name: sessions; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.sessions (
session_id character varying(255) NOT NULL,
user_id integer,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
expires_at timestamp without time zone
);
ALTER TABLE public.sessions OWNER TO chris;
--
-- Name: users; Type: TABLE; Schema: public; Owner: chris
--
CREATE TABLE public.users (
id integer NOT NULL,
username character varying(50) NOT NULL,
password character varying(255) NOT NULL,
email character varying(100),
is_admin boolean DEFAULT false,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
is_public boolean DEFAULT true,
profile_picture character varying(500) DEFAULT NULL::character varying,
about_me character varying(500)
);
ALTER TABLE public.users OWNER TO chris;
--
-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: chris
--
CREATE SEQUENCE public.users_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.users_id_seq OWNER TO chris;
--
-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: chris
--
ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id;
--
-- Name: conversation_participants id; Type: DEFAULT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.conversation_participants ALTER COLUMN id SET DEFAULT nextval('public.conversation_participants_id_seq'::regclass);
--
-- Name: conversations id; Type: DEFAULT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.conversations ALTER COLUMN id SET DEFAULT nextval('public.conversations_id_seq'::regclass);
--
-- Name: messages id; Type: DEFAULT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.messages ALTER COLUMN id SET DEFAULT nextval('public.messages_id_seq'::regclass);
--
-- Name: users id; Type: DEFAULT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass);
--
-- Name: blocked blocked_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.blocked
ADD CONSTRAINT blocked_pkey PRIMARY KEY (user_id, blocked_id);
--
-- Name: conversation_participants conversation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.conversation_participants
ADD CONSTRAINT conversation_participants_pkey PRIMARY KEY (id);
--
-- Name: conversations conversations_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.conversations
ADD CONSTRAINT conversations_pkey PRIMARY KEY (id);
--
-- Name: friend_requests friend_requests_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.friend_requests
ADD CONSTRAINT friend_requests_pkey PRIMARY KEY (user_id, request_id);
--
-- Name: friends friends_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.friends
ADD CONSTRAINT friends_pkey PRIMARY KEY (user_id, friend_id);
--
-- Name: messages messages_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.messages
ADD CONSTRAINT messages_pkey PRIMARY KEY (id);
--
-- Name: sessions sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.sessions
ADD CONSTRAINT sessions_pkey PRIMARY KEY (session_id);
--
-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_email_key UNIQUE (email);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: users users_username_key; Type: CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_username_key UNIQUE (username);
--
-- Name: blocked blocked_blocked_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.blocked
ADD CONSTRAINT blocked_blocked_id_fkey FOREIGN KEY (blocked_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: blocked blocked_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.blocked
ADD CONSTRAINT blocked_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: conversation_participants conversation_participants_conversation_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.conversation_participants
ADD CONSTRAINT conversation_participants_conversation_id_fkey FOREIGN KEY (conversation_id) REFERENCES public.conversations(id) ON DELETE CASCADE;
--
-- Name: conversation_participants conversation_participants_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.conversation_participants
ADD CONSTRAINT conversation_participants_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: friend_requests friend_requests_request_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.friend_requests
ADD CONSTRAINT friend_requests_request_id_fkey FOREIGN KEY (request_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: friend_requests friend_requests_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.friend_requests
ADD CONSTRAINT friend_requests_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: friends friends_friend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.friends
ADD CONSTRAINT friends_friend_id_fkey FOREIGN KEY (friend_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: friends friends_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.friends
ADD CONSTRAINT friends_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: messages messages_conversation_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.messages
ADD CONSTRAINT messages_conversation_id_fkey FOREIGN KEY (conversation_id) REFERENCES public.conversations(id) ON DELETE CASCADE;
--
-- Name: messages messages_sender_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.messages
ADD CONSTRAINT messages_sender_id_fkey FOREIGN KEY (sender_id) REFERENCES public.users(id) ON DELETE SET NULL;
--
-- Name: sessions sessions_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: chris
--
ALTER TABLE ONLY public.sessions
ADD CONSTRAINT sessions_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: pg_database_owner
--
REVOKE USAGE ON SCHEMA public FROM PUBLIC;
--
-- Name: extension_before_drop; Type: EVENT TRIGGER; Schema: -; Owner: chris
--
CREATE EVENT TRIGGER extension_before_drop ON ddl_command_start
EXECUTE FUNCTION _heroku.extension_before_drop();
ALTER EVENT TRIGGER extension_before_drop OWNER TO chris;
--
-- Name: log_create_ext; Type: EVENT TRIGGER; Schema: -; Owner: chris
--
CREATE EVENT TRIGGER log_create_ext ON ddl_command_end
EXECUTE FUNCTION _heroku.create_ext();
ALTER EVENT TRIGGER log_create_ext OWNER TO chris;
--
-- Name: log_drop_ext; Type: EVENT TRIGGER; Schema: -; Owner: chris
--
CREATE EVENT TRIGGER log_drop_ext ON sql_drop
EXECUTE FUNCTION _heroku.drop_ext();
ALTER EVENT TRIGGER log_drop_ext OWNER TO chris;
--
-- Name: validate_extension; Type: EVENT TRIGGER; Schema: -; Owner: chris
--
CREATE EVENT TRIGGER validate_extension ON ddl_command_end
EXECUTE FUNCTION _heroku.validate_extension();
ALTER EVENT TRIGGER validate_extension OWNER TO chris;
--
-- PostgreSQL database dump complete
--