diff options
author | Marko Kreen | 2012-07-11 15:42:58 +0000 |
---|---|---|
committer | Marko Kreen | 2012-07-13 19:44:28 +0000 |
commit | 6d588d82097532ade8040a2f2ecf3fcc286c931a (patch) | |
tree | e13ca6871f37e047a00c77c1b575f2de2e088fe4 | |
parent | 65ab2946e8f1a52ac47ff830cd4e335af3df6daa (diff) |
Convert DB modules to extensions
Keep installing old module files under contrib/ still.
53 files changed, 625 insertions, 170 deletions
diff --git a/debian/genpg.sh b/debian/genpg.sh index dab7866b..35514926 100755 --- a/debian/genpg.sh +++ b/debian/genpg.sh @@ -38,4 +38,15 @@ usr/share/postgresql/$v/contrib/oldgrants_pgq_node.sql usr/share/postgresql/$v/contrib/oldgrants_pgq.sql EOF +if test "$v" = "9.1" -o "$v" = "9.2"; then + modver="3.1" + for mod in pgq pgq_node pgq_coop pgq_ext londiste; do + ( + echo "usr/share/postgresql/$v/extension/${mod}.control" + echo "usr/share/postgresql/$v/extension/${mod}--${modver}.sql" + echo "usr/share/postgresql/$v/extension/${mod}--unpackaged--${modver}.sql" + ) >> "postgresql-$v-pgq3.install" + done +fi + done diff --git a/debian/postgresql-9.1-pgq3.install b/debian/postgresql-9.1-pgq3.install index 6072e698..f9708aa5 100644 --- a/debian/postgresql-9.1-pgq3.install +++ b/debian/postgresql-9.1-pgq3.install @@ -22,3 +22,18 @@ usr/share/postgresql/9.1/contrib/oldgrants_pgq_coop.sql usr/share/postgresql/9.1/contrib/oldgrants_pgq_ext.sql usr/share/postgresql/9.1/contrib/oldgrants_pgq_node.sql usr/share/postgresql/9.1/contrib/oldgrants_pgq.sql +usr/share/postgresql/9.1/extension/pgq.control +usr/share/postgresql/9.1/extension/pgq--3.1.sql +usr/share/postgresql/9.1/extension/pgq--unpackaged--3.1.sql +usr/share/postgresql/9.1/extension/pgq_node.control +usr/share/postgresql/9.1/extension/pgq_node--3.1.sql +usr/share/postgresql/9.1/extension/pgq_node--unpackaged--3.1.sql +usr/share/postgresql/9.1/extension/pgq_coop.control +usr/share/postgresql/9.1/extension/pgq_coop--3.1.sql +usr/share/postgresql/9.1/extension/pgq_coop--unpackaged--3.1.sql +usr/share/postgresql/9.1/extension/pgq_ext.control +usr/share/postgresql/9.1/extension/pgq_ext--3.1.sql +usr/share/postgresql/9.1/extension/pgq_ext--unpackaged--3.1.sql +usr/share/postgresql/9.1/extension/londiste.control +usr/share/postgresql/9.1/extension/londiste--3.1.sql +usr/share/postgresql/9.1/extension/londiste--unpackaged--3.1.sql diff --git a/debian/postgresql-9.2-pgq3.install b/debian/postgresql-9.2-pgq3.install index 31627a69..50bc2e38 100644 --- a/debian/postgresql-9.2-pgq3.install +++ b/debian/postgresql-9.2-pgq3.install @@ -22,3 +22,18 @@ usr/share/postgresql/9.2/contrib/oldgrants_pgq_coop.sql usr/share/postgresql/9.2/contrib/oldgrants_pgq_ext.sql usr/share/postgresql/9.2/contrib/oldgrants_pgq_node.sql usr/share/postgresql/9.2/contrib/oldgrants_pgq.sql +usr/share/postgresql/9.2/extension/pgq.control +usr/share/postgresql/9.2/extension/pgq--3.1.sql +usr/share/postgresql/9.2/extension/pgq--unpackaged--3.1.sql +usr/share/postgresql/9.2/extension/pgq_node.control +usr/share/postgresql/9.2/extension/pgq_node--3.1.sql +usr/share/postgresql/9.2/extension/pgq_node--unpackaged--3.1.sql +usr/share/postgresql/9.2/extension/pgq_coop.control +usr/share/postgresql/9.2/extension/pgq_coop--3.1.sql +usr/share/postgresql/9.2/extension/pgq_coop--unpackaged--3.1.sql +usr/share/postgresql/9.2/extension/pgq_ext.control +usr/share/postgresql/9.2/extension/pgq_ext--3.1.sql +usr/share/postgresql/9.2/extension/pgq_ext--unpackaged--3.1.sql +usr/share/postgresql/9.2/extension/londiste.control +usr/share/postgresql/9.2/extension/londiste--3.1.sql +usr/share/postgresql/9.2/extension/londiste--unpackaged--3.1.sql diff --git a/sql/common-pgxs.mk b/sql/common-pgxs.mk new file mode 100644 index 00000000..22534504 --- /dev/null +++ b/sql/common-pgxs.mk @@ -0,0 +1,73 @@ + +# PGXS does not support modules that are supposed +# to run on different Postgres versions very well. +# Here are some workarounds for them. + +# Variables that are used when extensions are available +Extension_data ?= +Extension_data_built ?= +Extension_regress ?= + +# Variables that are used when extensions are not available +Contrib_data ?= +Contrib_data_built ?= +Contrib_regress ?= + +# Should the Contrib* files installed (under ../contrib/) +# even when extensions are available? +Contrib_install_always ?= no + +# +# switch variables +# + +IfExt = $(if $(filter 8.% 9.0%,$(MAJORVERSION)8.3),$(2),$(1)) + +DATA = $(call IfExt,$(Extension_data),$(Contrib_data)) +DATA_built = $(call IfExt,$(Extension_data_built),$(Contrib_data_built)) +REGRESS = $(call IfExt,$(Extension_regress),$(Contrib_regress)) + +EXTRA_CLEAN += $(call IfExt,$(Contrib_data_built),$(Extension_data_built)) test.dump + +# have deterministic dbname for regtest database +override CONTRIB_TESTDB = regression +REGRESS_OPTS = --load-language=plpgsql --dbname=$(CONTRIB_TESTDB) + +# +# load PGXS +# + +PG_CONFIG ?= pg_config +PGXS = $(shell $(PG_CONFIG) --pgxs) +include $(PGXS) + +# +# build rules, in case Contrib data must be always installed +# + +ifeq ($(call IfExt,$(Contrib_install_always),no),yes) + +all: $(Contrib_data) $(Contrib_data_built) +installdirs: installdirs-old-contrib +install: install-old-contrib + +installdirs-old-contrib: + $(MKDIR_P) '$(DESTDIR)$(datadir)/contrib' + +install-old-contrib: $(Contrib_data) $(Contrib_data_built) installdirs-old-contrib + $(INSTALL_DATA) $(addprefix $(srcdir)/, $(Contrib_data)) $(Contrib_data_built) '$(DESTDIR)$(datadir)/contrib/' + +endif + +# +# regtest shortcuts +# + +test: install + $(MAKE) installcheck || { filterdiff --format=unified regression.diffs | less; exit 1; } + pg_dump regression > test.dump + +ack: + cp results/*.out expected/ + +.PHONY: test ack installdirs-old-contrib install-old-contrib diff --git a/sql/londiste/Makefile b/sql/londiste/Makefile index d44c6193..31ff8b43 100644 --- a/sql/londiste/Makefile +++ b/sql/londiste/Makefile @@ -1,8 +1,21 @@ -DATA_built = londiste.sql londiste.upgrade.sql \ +EXTENSION = londiste + +Contrib_data_built = londiste.sql londiste.upgrade.sql \ structure/oldgrants_londiste.sql \ structure/newgrants_londiste.sql +Extension_data_built = londiste--3.1.sql londiste--unpackaged--3.1.sql + +base_regress = londiste_provider londiste_subscriber \ + londiste_fkeys londiste_execute londiste_seqs londiste_merge \ + londiste_leaf londiste_create_part + +Contrib_regress = init_noext $(base_regress) +Extension_regress = init_ext $(base_regress) + +Contrib_install_always = yes + SQLS = $(shell sed -e 's/^[^\\].*//' -e 's/\\i //' structure/install.sql) FUNCS = $(shell sed -e 's/^[^\\].*//' -e 's/\\i //' $(SQLS)) SRCS = $(SQLS) $(FUNCS) @@ -12,17 +25,13 @@ NDOCARGS = -r -o html docs/html -p docs -i docs/sql CATSQL = ../../scripts/catsql.py GRANTFU = ../../scripts/grantfu.py -REGRESS = londiste_install londiste_provider londiste_subscriber \ - londiste_fkeys londiste_execute londiste_seqs londiste_merge \ - londiste_leaf londiste_create_part -# londiste_denytrigger +include ../common-pgxs.mk -REGRESS_OPTS = --dbname=regression -override CONTRIB_TESTDB=regression +londiste--3.1.sql: londiste.sql structure/ext_postproc.sql + cat $^ > $@ -PG_CONFIG = pg_config -PGXS = $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) +londiste--unpackaged--3.1.sql: londiste.upgrade.sql structure/ext_unpackaged.sql structure/ext_postproc.sql + cat $^ > $@ londiste.sql: $(SRCS) $(CATSQL) $(SQLS) > $@ @@ -39,12 +48,6 @@ structure/oldgrants_londiste.sql: structure/grants.ini cat structure/grants.sql >> $@ echo "commit;" >> $@ -test: londiste.sql - $(MAKE) installcheck || { filterdiff --format=unified regression.diffs | less; exit 1; } - -ack: - cp results/* expected/ - dox: cleandox mkdir -p docs/html mkdir -p docs/sql diff --git a/sql/londiste/expected/init_ext.out b/sql/londiste/expected/init_ext.out new file mode 100644 index 00000000..db6ebeef --- /dev/null +++ b/sql/londiste/expected/init_ext.out @@ -0,0 +1,21 @@ +\set ECHO off + upgrade_schema +---------------- + 0 +(1 row) + +create extension londiste from 'unpackaged'; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'londiste'; + dumpable +---------- + 4 +(1 row) + +drop extension londiste; +create extension londiste; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'londiste'; + dumpable +---------- + 4 +(1 row) + diff --git a/sql/londiste/expected/init_noext.out b/sql/londiste/expected/init_noext.out new file mode 100644 index 00000000..3cc747e5 --- /dev/null +++ b/sql/londiste/expected/init_noext.out @@ -0,0 +1,16 @@ +\set ECHO off + upgrade_schema +---------------- + 0 +(1 row) + + upgrade_schema +---------------- + 0 +(1 row) + + upgrade_schema +---------------- + 0 +(1 row) + diff --git a/sql/londiste/expected/londiste_execute.out b/sql/londiste/expected/londiste_execute.out index c1e9745f..fae6cbd1 100644 --- a/sql/londiste/expected/londiste_execute.out +++ b/sql/londiste/expected/londiste_execute.out @@ -6,9 +6,9 @@ select * from londiste.execute_start('branch_set', 'DDL-A.sql', 'drop all', fals (1 row) select * from londiste.execute_start('branch_set', 'DDL-A.sql', 'drop all', false); - ret_code | ret_note -----------+------------------------------------ - 301 | EXECUTE(DDL-A.sql) already applied + ret_code | ret_note +----------+------------------------------------------------ + 201 | EXECUTE: "DDL-A.sql" already applied, skipping (1 row) select * from londiste.execute_finish('branch_set', 'DDL-A.sql'); @@ -48,9 +48,9 @@ select * from londiste.execute_start('aset', 'DDL-root.sql', 'drop all', true); (1 row) select * from londiste.execute_start('aset', 'DDL-root.sql', 'drop all', true); - ret_code | ret_note -----------+--------------------------------------- - 301 | EXECUTE(DDL-root.sql) already applied + ret_code | ret_note +----------+--------------------------------------------------- + 201 | EXECUTE: "DDL-root.sql" already applied, skipping (1 row) select * from londiste.execute_finish('aset', 'DDL-root.sql'); diff --git a/sql/londiste/londiste.control b/sql/londiste/londiste.control new file mode 100644 index 00000000..96c0e96f --- /dev/null +++ b/sql/londiste/londiste.control @@ -0,0 +1,8 @@ +# Londiste extensions +comment = 'Londiste Replication' +default_version = '3.1' +relocatable = false +superuser = true +schema = 'pg_catalog' +requires = 'pgq_node' + diff --git a/sql/londiste/sql/init_ext.sql b/sql/londiste/sql/init_ext.sql new file mode 100644 index 00000000..fdae9503 --- /dev/null +++ b/sql/londiste/sql/init_ext.sql @@ -0,0 +1,22 @@ +\set ECHO off + +set log_error_verbosity = 'terse'; +set client_min_messages = 'fatal'; +create language plpgsql; +set client_min_messages = 'warning'; + +create extension pgq; +create extension pgq_node; + +\i londiste.sql + +\set ECHO all + +create extension londiste from 'unpackaged'; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'londiste'; + +drop extension londiste; + +create extension londiste; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'londiste'; + diff --git a/sql/londiste/sql/init_noext.sql b/sql/londiste/sql/init_noext.sql new file mode 100644 index 00000000..c11550cf --- /dev/null +++ b/sql/londiste/sql/init_noext.sql @@ -0,0 +1,15 @@ +\set ECHO off + +set log_error_verbosity = 'terse'; +set client_min_messages = 'fatal'; +create language plpgsql; +set client_min_messages = 'warning'; + +-- \i ../txid/txid.sql +\i ../pgq/pgq.sql +\i ../pgq_node/pgq_node.sql + +\i londiste.sql + +\set ECHO all + diff --git a/sql/londiste/structure/ext_postproc.sql b/sql/londiste/structure/ext_postproc.sql new file mode 100644 index 00000000..34bd45cd --- /dev/null +++ b/sql/londiste/structure/ext_postproc.sql @@ -0,0 +1,9 @@ + +-- tag data objects as dumpable + +SELECT pg_catalog.pg_extension_config_dump('londiste.table_info', ''); +SELECT pg_catalog.pg_extension_config_dump('londiste.seq_info', ''); +SELECT pg_catalog.pg_extension_config_dump('londiste.applied_execute', ''); +SELECT pg_catalog.pg_extension_config_dump('londiste.pending_fkeys', ''); + + diff --git a/sql/londiste/structure/ext_unpackaged.sql b/sql/londiste/structure/ext_unpackaged.sql new file mode 100644 index 00000000..71714e89 --- /dev/null +++ b/sql/londiste/structure/ext_unpackaged.sql @@ -0,0 +1,7 @@ +ALTER EXTENSION londiste ADD SCHEMA londiste; + +ALTER EXTENSION londiste ADD TABLE londiste.table_info; +ALTER EXTENSION londiste ADD TABLE londiste.seq_info; +ALTER EXTENSION londiste ADD TABLE londiste.applied_execute; +ALTER EXTENSION londiste ADD TABLE londiste.pending_fkeys; + diff --git a/sql/pgq/Makefile b/sql/pgq/Makefile index 487f92c9..1a21df42 100644 --- a/sql/pgq/Makefile +++ b/sql/pgq/Makefile @@ -1,7 +1,20 @@ +EXTENSION = pgq + DOCS = README.pgq -DATA_built = pgq.sql pgq.upgrade.sql structure/oldgrants_pgq.sql structure/newgrants_pgq.sql -DATA = structure/uninstall_pgq.sql + +Extension_data_built = pgq--3.1.sql pgq--unpackaged--3.1.sql + +Contrib_data_built = pgq.sql pgq.upgrade.sql structure/oldgrants_pgq.sql structure/newgrants_pgq.sql +Contrib_data = structure/uninstall_pgq.sql + +Contrib_regress = pgq_init_noext pgq_core pgq_perms logutriga sqltriga $(trunc_test) +Extension_regress = pgq_init_ext pgq_core pgq_perms logutriga sqltriga $(trunc_test) + +Contrib_install_always = yes + +# MAJORVERSION was defined in 8.4 +trunc_test = $(if $(MAJORVERSION),trunctrg) # scripts that load other sql files LDRS = structure/func_internal.sql structure/func_public.sql structure/triggers.sql @@ -9,12 +22,7 @@ FUNCS = $(shell sed -e 's/^[^\\].*//' -e 's/\\i //' $(LDRS)) SRCS = structure/tables.sql structure/grants.sql structure/install.sql \ structure/uninstall_pgq.sql $(FUNCS) -REGRESS = pgq_init pgq_core pgq_perms logutriga sqltriga trunctrg -REGRESS_OPTS = --load-language=plpgsql - -PG_CONFIG = pg_config -PGXS = $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) +include ../common-pgxs.mk NDOC = NaturalDocs NDOCARGS = -r -o html docs/html -p docs -i docs/sql @@ -43,6 +51,12 @@ triggers/pgq_triggers.sql: sub-all # combined SQL files # +pgq--3.1.sql: pgq.sql structure/ext_postproc.sql + cat $^ > $@ + +pgq--unpackaged--3.1.sql: pgq.upgrade.sql structure/ext_unpackaged.sql structure/ext_postproc.sql + cat $^ > $@ + pgq.sql: $(SRCS) $(CATSQL) structure/install.sql > $@ @@ -76,17 +90,6 @@ cleandox: clean: cleandox -upload: dox - rsync -az --delete docs/html/* data1:public_html/pgq-new/ - -# -# regtest shortcuts -# - -test: pgq.sql - $(MAKE) install installcheck || { filterdiff --format=unified regression.diffs | less; exit 1; } - -ack: - cp results/*.out expected/ +test: $(Contrib_data_built) -.PHONY: test ack upload cleandox dox +.PHONY: cleandox dox diff --git a/sql/pgq/expected/logutriga.out b/sql/pgq/expected/logutriga.out index c0017c4d..21bc1bce 100644 --- a/sql/pgq/expected/logutriga.out +++ b/sql/pgq/expected/logutriga.out @@ -6,11 +6,10 @@ select 1 from (select set_config(name, 'escape', false) as ignore ---------- (0 rows) -drop function pgq.insert_event(text, text, text, text, text, text, text); -create or replace function pgq.insert_event(que text, ev_type text, ev_data text, x1 text, x2 text, x3 text, x4 text) +create or replace function pgq.insert_event(queue_name text, ev_type text, ev_data text, ev_extra1 text, ev_extra2 text, ev_extra3 text, ev_extra4 text) returns bigint as $$ begin - raise notice 'insert_event(%, %, %, %)', que, ev_type, ev_data, x1; + raise notice 'insert_event(%, %, %, %)', queue_name, ev_type, ev_data, ev_extra1; return 1; end; $$ language plpgsql; diff --git a/sql/pgq/expected/pgq_init_ext.out b/sql/pgq/expected/pgq_init_ext.out new file mode 100644 index 00000000..814ed056 --- /dev/null +++ b/sql/pgq/expected/pgq_init_ext.out @@ -0,0 +1,49 @@ +-- create noext schema +\set ECHO none + upgrade_schema +---------------- + 0 +(1 row) + + create_queue +-------------- + 1 +(1 row) + +-- convert to extension +create extension pgq from 'unpackaged'; +select array_length(extconfig, 1) from pg_catalog.pg_extension where extname = 'pgq'; + array_length +-------------- + 7 +(1 row) + +select pgq.create_queue('testqueue2'); + create_queue +-------------- + 1 +(1 row) + +--drop extension pgq; -- will fail +select pgq.drop_queue('testqueue2'); + drop_queue +------------ + 1 +(1 row) + +select pgq.drop_queue('testqueue1'); + drop_queue +------------ + 1 +(1 row) + +-- drop schema failure +drop extension pgq; +-- create clean schema +create extension pgq; +select array_length(extconfig, 1) from pg_catalog.pg_extension where extname = 'pgq'; + array_length +-------------- + 7 +(1 row) + diff --git a/sql/pgq/expected/pgq_init.out b/sql/pgq/expected/pgq_init_noext.out index 6460c411..6460c411 100644 --- a/sql/pgq/expected/pgq_init.out +++ b/sql/pgq/expected/pgq_init_noext.out diff --git a/sql/pgq/pgq.control b/sql/pgq/pgq.control new file mode 100644 index 00000000..f02c27d5 --- /dev/null +++ b/sql/pgq/pgq.control @@ -0,0 +1,7 @@ +# pgq extension +comment = 'Generic queue for PostgreSQL' +default_version = '3.1' +relocatable = false +superuser = true +schema = 'pg_catalog' + diff --git a/sql/pgq/sql/logutriga.sql b/sql/pgq/sql/logutriga.sql index 5f8e7aa0..e97b2dce 100644 --- a/sql/pgq/sql/logutriga.sql +++ b/sql/pgq/sql/logutriga.sql @@ -4,11 +4,10 @@ select 1 from (select set_config(name, 'escape', false) as ignore from pg_settings where name = 'bytea_output') x where x.ignore = 'foo'; -drop function pgq.insert_event(text, text, text, text, text, text, text); -create or replace function pgq.insert_event(que text, ev_type text, ev_data text, x1 text, x2 text, x3 text, x4 text) +create or replace function pgq.insert_event(queue_name text, ev_type text, ev_data text, ev_extra1 text, ev_extra2 text, ev_extra3 text, ev_extra4 text) returns bigint as $$ begin - raise notice 'insert_event(%, %, %, %)', que, ev_type, ev_data, x1; + raise notice 'insert_event(%, %, %, %)', queue_name, ev_type, ev_data, ev_extra1; return 1; end; $$ language plpgsql; diff --git a/sql/pgq/sql/pgq_init_ext.sql b/sql/pgq/sql/pgq_init_ext.sql new file mode 100644 index 00000000..3ed13776 --- /dev/null +++ b/sql/pgq/sql/pgq_init_ext.sql @@ -0,0 +1,24 @@ + +-- create noext schema +\set ECHO none +\set VERBOSITY 'terse' +\i structure/install.sql +select pgq.create_queue('testqueue1'); +\set ECHO all +-- convert to extension +create extension pgq from 'unpackaged'; +select array_length(extconfig, 1) from pg_catalog.pg_extension where extname = 'pgq'; + +select pgq.create_queue('testqueue2'); +--drop extension pgq; -- will fail +select pgq.drop_queue('testqueue2'); +select pgq.drop_queue('testqueue1'); + +-- drop schema failure +drop extension pgq; + +-- create clean schema +create extension pgq; + +select array_length(extconfig, 1) from pg_catalog.pg_extension where extname = 'pgq'; + diff --git a/sql/pgq/sql/pgq_init.sql b/sql/pgq/sql/pgq_init_noext.sql index d33cd9c7..d33cd9c7 100644 --- a/sql/pgq/sql/pgq_init.sql +++ b/sql/pgq/sql/pgq_init_noext.sql diff --git a/sql/pgq/structure/ext_postproc.sql b/sql/pgq/structure/ext_postproc.sql new file mode 100644 index 00000000..dbe92b7d --- /dev/null +++ b/sql/pgq/structure/ext_postproc.sql @@ -0,0 +1,12 @@ + +-- tag data objects as dumpable + +SELECT pg_catalog.pg_extension_config_dump('pgq.queue', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq.consumer', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq.tick', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq.subscription', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq.event_template', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq.retry_queue', ''); + +SELECT pg_catalog.pg_extension_config_dump('pgq.batch_id_seq', ''); + diff --git a/sql/pgq/structure/ext_unpackaged.sql b/sql/pgq/structure/ext_unpackaged.sql new file mode 100644 index 00000000..06971142 --- /dev/null +++ b/sql/pgq/structure/ext_unpackaged.sql @@ -0,0 +1,12 @@ + +ALTER EXTENSION pgq ADD SCHEMA pgq; + +ALTER EXTENSION pgq ADD TABLE pgq.queue; +ALTER EXTENSION pgq ADD TABLE pgq.consumer; +ALTER EXTENSION pgq ADD TABLE pgq.tick; +ALTER EXTENSION pgq ADD TABLE pgq.subscription; +ALTER EXTENSION pgq ADD TABLE pgq.event_template; +ALTER EXTENSION pgq ADD TABLE pgq.retry_queue; + +ALTER EXTENSION pgq ADD SEQUENCE pgq.batch_id_seq; + diff --git a/sql/pgq/structure/upgrade.sql b/sql/pgq/structure/upgrade.sql index 1b898d11..94ae6c75 100644 --- a/sql/pgq/structure/upgrade.sql +++ b/sql/pgq/structure/upgrade.sql @@ -1,2 +1,3 @@ \i structure/func_internal.sql \i structure/func_public.sql +\i structure/triggers.sql diff --git a/sql/pgq_coop/Makefile b/sql/pgq_coop/Makefile index 5561ef71..6d88236d 100644 --- a/sql/pgq_coop/Makefile +++ b/sql/pgq_coop/Makefile @@ -1,19 +1,21 @@ -DATA_built = pgq_coop.sql pgq_coop.upgrade.sql \ +EXTENSION = pgq_coop + +Extension_data_built = pgq_coop--3.1.sql pgq_coop--unpackaged--3.1.sql +Contrib_data_built = pgq_coop.sql pgq_coop.upgrade.sql \ structure/newgrants_pgq_coop.sql \ structure/oldgrants_pgq_coop.sql -SQL_FULL = structure/schema.sql structure/functions.sql structure/grants.sql +Contrib_regress = pgq_coop_init_noext pgq_coop_test +Extension_regress = pgq_coop_init_ext pgq_coop_test +Contrib_install_always = yes + +SQL_FULL = structure/schema.sql structure/functions.sql structure/grants.sql FUNCS = $(shell sed -n -e '/^\\/{s/\\i //;p}' structure/functions.sql) SRCS = $(SQL_FULL) $(FUNCS) -REGRESS = pgq_coop_test -REGRESS_OPTS = --load-language=plpgsql - -PG_CONFIG = pg_config -PGXS = $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) +include ../common-pgxs.mk NDOC = NaturalDocs NDOCARGS = -r -o html docs/html -p docs -i docs/sql @@ -25,6 +27,13 @@ GRANTFU = ../../scripts/grantfu.py # combined SQL files # +pgq_coop--3.1.sql: pgq_coop.sql + cat $< > $@ + +#pgq_coop--unpackaged--3.1.sql: structure/ext_unpackaged.sql pgq_coop.upgrade.sql +pgq_coop--unpackaged--3.1.sql: pgq_coop.upgrade.sql structure/ext_unpackaged.sql + cat $< > $@ + pgq_coop.sql: $(SRCS) $(CATSQL) structure/install.sql > $@ @@ -54,16 +63,3 @@ cleandox: clean: cleandox -upload: dox - rsync -az --delete docs/html/* data1:public_html/pgq-set/ - -# -# regtest shortcuts -# - -test: pgq_coop.sql - $(MAKE) installcheck || { less regression.diffs; exit 1; } - -ack: - cp results/*.out expected/ - diff --git a/sql/pgq_coop/expected/pgq_coop_init_ext.out b/sql/pgq_coop/expected/pgq_coop_init_ext.out new file mode 100644 index 00000000..3fa4077f --- /dev/null +++ b/sql/pgq_coop/expected/pgq_coop_init_ext.out @@ -0,0 +1,2 @@ +create extension pgq; +create extension pgq_coop; diff --git a/sql/pgq_coop/expected/pgq_coop_init_noext.out b/sql/pgq_coop/expected/pgq_coop_init_noext.out new file mode 100644 index 00000000..6460c411 --- /dev/null +++ b/sql/pgq_coop/expected/pgq_coop_init_noext.out @@ -0,0 +1,6 @@ +\set ECHO none + upgrade_schema +---------------- + 0 +(1 row) + diff --git a/sql/pgq_coop/expected/pgq_coop_test.out b/sql/pgq_coop/expected/pgq_coop_test.out index f821d766..11e8424e 100644 --- a/sql/pgq_coop/expected/pgq_coop_test.out +++ b/sql/pgq_coop/expected/pgq_coop_test.out @@ -1,9 +1,3 @@ -\set ECHO none - upgrade_schema ----------------- - 0 -(1 row) - select pgq.create_queue('testqueue'); create_queue -------------- diff --git a/sql/pgq_coop/pgq_coop.control b/sql/pgq_coop/pgq_coop.control new file mode 100644 index 00000000..804e1f51 --- /dev/null +++ b/sql/pgq_coop/pgq_coop.control @@ -0,0 +1,7 @@ +# pgq_coop +comment = 'Cooperative queue consuming for PgQ' +default_version = '3.1' +relocatable = false +superuser = true +schema = 'pg_catalog' +requires = 'pgq' diff --git a/sql/pgq_coop/sql/pgq_coop_init_ext.sql b/sql/pgq_coop/sql/pgq_coop_init_ext.sql new file mode 100644 index 00000000..88f031d5 --- /dev/null +++ b/sql/pgq_coop/sql/pgq_coop_init_ext.sql @@ -0,0 +1,12 @@ + +create extension pgq; + +\set ECHO none +\i structure/install.sql +\set ECHO all + +create extension pgq_coop from 'unpackaged'; +drop extension pgq_coop; + +create extension pgq_coop; + diff --git a/sql/pgq_coop/sql/pgq_coop_init_noext.sql b/sql/pgq_coop/sql/pgq_coop_init_noext.sql new file mode 100644 index 00000000..e1e6e56e --- /dev/null +++ b/sql/pgq_coop/sql/pgq_coop_init_noext.sql @@ -0,0 +1,7 @@ + +\set ECHO none +\i ../pgq/pgq.sql +\i structure/schema.sql +\i structure/functions.sql +\set ECHO all + diff --git a/sql/pgq_coop/sql/pgq_coop_test.sql b/sql/pgq_coop/sql/pgq_coop_test.sql index 93f583f1..0801a9d9 100644 --- a/sql/pgq_coop/sql/pgq_coop_test.sql +++ b/sql/pgq_coop/sql/pgq_coop_test.sql @@ -1,10 +1,4 @@ -\set ECHO none -\i ../pgq/pgq.sql -\i structure/schema.sql -\i structure/functions.sql -\set ECHO all - select pgq.create_queue('testqueue'); update pgq.queue set queue_ticker_max_count = 1 where queue_name = 'testqueue'; diff --git a/sql/pgq_coop/structure/ext_unpackaged.sql b/sql/pgq_coop/structure/ext_unpackaged.sql new file mode 100644 index 00000000..2755d8a2 --- /dev/null +++ b/sql/pgq_coop/structure/ext_unpackaged.sql @@ -0,0 +1,3 @@ + +ALTER EXTENSION pgq_coop ADD SCHEMA pgq_coop; + diff --git a/sql/pgq_ext/Makefile b/sql/pgq_ext/Makefile index 8fec6e61..92ddbfbc 100644 --- a/sql/pgq_ext/Makefile +++ b/sql/pgq_ext/Makefile @@ -1,22 +1,32 @@ -DOCS = README.pgq_ext -DATA_built = pgq_ext.sql pgq_ext.upgrade.sql \ +EXTENSION = pgq_ext + +Contrib_data_built = pgq_ext.sql pgq_ext.upgrade.sql \ structure/oldgrants_pgq_ext.sql \ structure/newgrants_pgq_ext.sql +Contrib_regress = init_noext test_pgq_ext test_upgrade -SRCS = $(wildcard functions/*.sql structure/*.sql) +Extension_regress = init_ext test_pgq_ext +Extension_data_built = pgq_ext--3.1.sql pgq_ext--unpackaged--3.1.sql -REGRESS = test_pgq_ext test_upgrade -REGRESS_OPTS = --load-language=plpgsql +Contrib_install_always = yes + +DOCS = README.pgq_ext + +SRCS = $(wildcard functions/*.sql structure/*.sql) GRANTFU = ../../scripts/grantfu.py CATSQL = ../../scripts/catsql.py NDOC = NaturalDocs NDOCARGS = -r -o html docs/html -p docs -i docs/sql -PG_CONFIG = pg_config -PGXS = $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) +include ../common-pgxs.mk + +pgq_ext--3.1.sql: pgq_ext.sql structure/ext_postproc.sql + cat $^ > $@ + +pgq_ext--unpackaged--3.1.sql: pgq_ext.upgrade.sql structure/ext_unpackaged.sql structure/ext_postproc.sql + cat $^ > $@ pgq_ext.sql: $(SRCS) $(CATSQL) structure/install.sql > $@ @@ -33,12 +43,6 @@ structure/oldgrants_pgq_ext.sql: structure/grants.ini structure/grants.sql cat structure/grants.sql >> $@ echo "commit;" >> $@ -test: pgq_ext.sql - make installcheck || { less regression.diffs ; exit 1; } - -ack: - cp results/* expected/ - cleandox: rm -rf docs/html docs/Data docs/sql diff --git a/sql/pgq_ext/expected/init_ext.out b/sql/pgq_ext/expected/init_ext.out new file mode 100644 index 00000000..921f10b0 --- /dev/null +++ b/sql/pgq_ext/expected/init_ext.out @@ -0,0 +1,21 @@ +\set ECHO off + upgrade_schema +---------------- + 4 +(1 row) + +create extension pgq_ext from 'unpackaged'; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_ext'; + dumpable +---------- + 4 +(1 row) + +drop extension pgq_ext; +create extension pgq_ext; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_ext'; + dumpable +---------- + 4 +(1 row) + diff --git a/sql/pgq_ext/expected/init_noext.out b/sql/pgq_ext/expected/init_noext.out new file mode 100644 index 00000000..48a00a35 --- /dev/null +++ b/sql/pgq_ext/expected/init_noext.out @@ -0,0 +1,6 @@ +\set ECHO off + upgrade_schema +---------------- + 4 +(1 row) + diff --git a/sql/pgq_ext/expected/test_pgq_ext.out b/sql/pgq_ext/expected/test_pgq_ext.out index ad1ea437..668b8c87 100644 --- a/sql/pgq_ext/expected/test_pgq_ext.out +++ b/sql/pgq_ext/expected/test_pgq_ext.out @@ -1,9 +1,3 @@ -\set ECHO off - upgrade_schema ----------------- - 0 -(1 row) - -- -- test batch tracking -- diff --git a/sql/pgq_ext/pgq_ext.control b/sql/pgq_ext/pgq_ext.control new file mode 100644 index 00000000..9a224f2b --- /dev/null +++ b/sql/pgq_ext/pgq_ext.control @@ -0,0 +1,7 @@ +# pgq_ext +comment = 'Target-side batch tracking infrastructure' +default_version = '3.1' +relocatable = false +superuser = true +schema = 'pg_catalog' + diff --git a/sql/pgq_ext/sql/init_ext.sql b/sql/pgq_ext/sql/init_ext.sql new file mode 100644 index 00000000..bea94d26 --- /dev/null +++ b/sql/pgq_ext/sql/init_ext.sql @@ -0,0 +1,11 @@ + +\set ECHO off +\i structure/install.sql +\set ECHO all +create extension pgq_ext from 'unpackaged'; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_ext'; +drop extension pgq_ext; + +create extension pgq_ext; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_ext'; + diff --git a/sql/pgq_ext/sql/init_noext.sql b/sql/pgq_ext/sql/init_noext.sql new file mode 100644 index 00000000..23803bd3 --- /dev/null +++ b/sql/pgq_ext/sql/init_noext.sql @@ -0,0 +1,3 @@ +\set ECHO off +\i structure/install.sql + diff --git a/sql/pgq_ext/sql/test_pgq_ext.sql b/sql/pgq_ext/sql/test_pgq_ext.sql index 9ceee599..2d94e041 100644 --- a/sql/pgq_ext/sql/test_pgq_ext.sql +++ b/sql/pgq_ext/sql/test_pgq_ext.sql @@ -1,7 +1,3 @@ -\set ECHO off -\i structure/install.sql -\set ECHO all - -- -- test batch tracking -- diff --git a/sql/pgq_ext/structure/ext_postproc.sql b/sql/pgq_ext/structure/ext_postproc.sql new file mode 100644 index 00000000..ce254032 --- /dev/null +++ b/sql/pgq_ext/structure/ext_postproc.sql @@ -0,0 +1,8 @@ + +-- tag data objects as dumpable + +SELECT pg_catalog.pg_extension_config_dump('pgq_ext.completed_tick', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq_ext.completed_batch', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq_ext.completed_event', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq_ext.partial_batch', ''); + diff --git a/sql/pgq_ext/structure/ext_unpackaged.sql b/sql/pgq_ext/structure/ext_unpackaged.sql new file mode 100644 index 00000000..51fbeb42 --- /dev/null +++ b/sql/pgq_ext/structure/ext_unpackaged.sql @@ -0,0 +1,8 @@ + +ALTER EXTENSION pgq_ext ADD SCHEMA pgq_ext; + +ALTER EXTENSION pgq_ext ADD TABLE pgq_ext.completed_tick; +ALTER EXTENSION pgq_ext ADD TABLE pgq_ext.completed_batch; +ALTER EXTENSION pgq_ext ADD TABLE pgq_ext.completed_event; +ALTER EXTENSION pgq_ext ADD TABLE pgq_ext.partial_batch; + diff --git a/sql/pgq_node/Makefile b/sql/pgq_node/Makefile index c735587a..a42a7fad 100644 --- a/sql/pgq_node/Makefile +++ b/sql/pgq_node/Makefile @@ -1,19 +1,22 @@ -DATA_built = pgq_node.sql pgq_node.upgrade.sql \ +EXTENSION = pgq_node + +Extension_data_built = pgq_node--3.1.sql pgq_node--unpackaged--3.1.sql +Contrib_data_built = pgq_node.sql pgq_node.upgrade.sql \ structure/newgrants_pgq_node.sql \ structure/oldgrants_pgq_node.sql +Extension_regress = pgq_node_init_ext pgq_node_test +Contrib_regress = pgq_node_init_noext pgq_node_test + +Contrib_install_always = yes + LDRS = structure/functions.sql FUNCS = $(shell sed -e 's/^[^\\].*//' -e 's/\\i //' $(LDRS)) SRCS = structure/tables.sql structure/functions.sql structure/grants.sql \ $(FUNCS) -REGRESS = pgq_node_test -REGRESS_OPTS = --load-language=plpgsql - -PG_CONFIG = pg_config -PGXS = $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) +include ../common-pgxs.mk NDOC = NaturalDocs NDOCARGS = -r -o html docs/html -p docs -i docs/sql @@ -24,6 +27,12 @@ GRANTFU = ../../scripts/grantfu.py # combined SQL files # +pgq_node--3.1.sql: pgq_node.sql structure/ext_postproc.sql + cat $^ > $@ + +pgq_node--unpackaged--3.1.sql: pgq_node.upgrade.sql structure/ext_unpackaged.sql structure/ext_postproc.sql + cat $^ > $@ + pgq_node.sql: $(SRCS) $(CATSQL) structure/install.sql > $@ @@ -55,16 +64,3 @@ cleandox: clean: cleandox -upload: dox - rsync -az --delete docs/html/* data1:public_html/pgq-set/ - -# -# regtest shortcuts -# - -test: pgq_node.sql - $(MAKE) installcheck || { filterdiff --format=unified regression.diffs | less; exit 1; } - -ack: - cp results/*.out expected/ - diff --git a/sql/pgq_node/expected/pgq_node_init_ext.out b/sql/pgq_node/expected/pgq_node_init_ext.out new file mode 100644 index 00000000..778c35d2 --- /dev/null +++ b/sql/pgq_node/expected/pgq_node_init_ext.out @@ -0,0 +1,22 @@ +create extension pgq; +\set ECHO none + upgrade_schema +---------------- + 0 +(1 row) + +create extension pgq_node from unpackaged; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_node'; + dumpable +---------- + 4 +(1 row) + +drop extension pgq_node; +create extension pgq_node; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_node'; + dumpable +---------- + 4 +(1 row) + diff --git a/sql/pgq_node/expected/pgq_node_init_noext.out b/sql/pgq_node/expected/pgq_node_init_noext.out new file mode 100644 index 00000000..65817072 --- /dev/null +++ b/sql/pgq_node/expected/pgq_node_init_noext.out @@ -0,0 +1,11 @@ +\set ECHO none + upgrade_schema +---------------- + 0 +(1 row) + + upgrade_schema +---------------- + 0 +(1 row) + diff --git a/sql/pgq_node/expected/pgq_node_test.out b/sql/pgq_node/expected/pgq_node_test.out index 71e9e068..a19549db 100644 --- a/sql/pgq_node/expected/pgq_node_test.out +++ b/sql/pgq_node/expected/pgq_node_test.out @@ -1,14 +1,3 @@ -\set ECHO none - upgrade_schema ----------------- - 0 -(1 row) - - upgrade_schema ----------------- - 0 -(1 row) - select * from pgq_node.register_location('aqueue', 'node1', 'dbname=node1', false); ret_code | ret_note ----------+--------------------- @@ -427,57 +416,57 @@ select * from pgq_node.get_worker_state('mqueue'); (1 row) select * from pgq_node.drop_node('asd', 'asd'); - ret_code | ret_note -----------+-------------------- - 304 | No such queue: asd + ret_code | ret_note +----------+------------------- + 200 | Node dropped: asd (1 row) select * from pgq_node.drop_node('mqueue', 'node3'); - ret_code | ret_note -----------+-------------- - 200 | Node dropped + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node3 (1 row) select * from pgq_node.drop_node('mqueue', 'node2'); - ret_code | ret_note -----------+-------------- - 200 | Node dropped + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node2 (1 row) select * from pgq_node.drop_node('mqueue', 'node1'); - ret_code | ret_note -----------+----------------------- - 304 | No such queue: mqueue + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node1 (1 row) select * from pgq_node.drop_node('aqueue', 'node5'); - ret_code | ret_note -----------+-------------- - 200 | Node dropped + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node5 (1 row) select * from pgq_node.drop_node('aqueue', 'node4'); - ret_code | ret_note -----------+-------------- - 200 | Node dropped + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node4 (1 row) select * from pgq_node.drop_node('aqueue', 'node1'); - ret_code | ret_note -----------+-------------- - 200 | Node dropped + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node1 (1 row) select * from pgq_node.drop_node('aqueue', 'node2'); - ret_code | ret_note -----------+----------------------- - 304 | No such queue: aqueue + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node2 (1 row) select * from pgq_node.drop_node('aqueue', 'node3'); - ret_code | ret_note -----------+----------------------- - 304 | No such queue: aqueue + ret_code | ret_note +----------+--------------------- + 200 | Node dropped: node3 (1 row) \q diff --git a/sql/pgq_node/pgq_node.control b/sql/pgq_node/pgq_node.control new file mode 100644 index 00000000..a214cee6 --- /dev/null +++ b/sql/pgq_node/pgq_node.control @@ -0,0 +1,7 @@ +# pgq_node +comment = 'Cascaded queue infrastructure' +default_version = '3.1' +relocatable = false +superuser = true +schema = 'pg_catalog' +requires = 'pgq' diff --git a/sql/pgq_node/sql/pgq_node_init_ext.sql b/sql/pgq_node/sql/pgq_node_init_ext.sql new file mode 100644 index 00000000..9bc55793 --- /dev/null +++ b/sql/pgq_node/sql/pgq_node_init_ext.sql @@ -0,0 +1,13 @@ + +create extension pgq; + +\set ECHO none +\i structure/install.sql +\set ECHO all +create extension pgq_node from unpackaged; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_node'; +drop extension pgq_node; + +create extension pgq_node; +select array_length(extconfig, 1) as dumpable from pg_catalog.pg_extension where extname = 'pgq_node'; + diff --git a/sql/pgq_node/sql/pgq_node_init_noext.sql b/sql/pgq_node/sql/pgq_node_init_noext.sql new file mode 100644 index 00000000..12c0109e --- /dev/null +++ b/sql/pgq_node/sql/pgq_node_init_noext.sql @@ -0,0 +1,6 @@ + +\set ECHO none +\i ../pgq/pgq.sql +\i structure/tables.sql +\i structure/functions.sql + diff --git a/sql/pgq_node/sql/pgq_node_test.sql b/sql/pgq_node/sql/pgq_node_test.sql index 1b2e1b92..2a312a26 100644 --- a/sql/pgq_node/sql/pgq_node_test.sql +++ b/sql/pgq_node/sql/pgq_node_test.sql @@ -1,10 +1,4 @@ -\set ECHO none -\i ../pgq/pgq.sql -\i structure/tables.sql -\i structure/functions.sql -\set ECHO all - select * from pgq_node.register_location('aqueue', 'node1', 'dbname=node1', false); select * from pgq_node.register_location('aqueue', 'node2', 'dbname=node2', false); select * from pgq_node.register_location('aqueue', 'node3', 'dbname=node3', false); diff --git a/sql/pgq_node/structure/ext_postproc.sql b/sql/pgq_node/structure/ext_postproc.sql new file mode 100644 index 00000000..2e3b2e39 --- /dev/null +++ b/sql/pgq_node/structure/ext_postproc.sql @@ -0,0 +1,9 @@ + +-- tag data objects as dumpable + +SELECT pg_catalog.pg_extension_config_dump('pgq_node.node_location', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq_node.node_info', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq_node.local_state', ''); +SELECT pg_catalog.pg_extension_config_dump('pgq_node.subscriber_info', ''); + + diff --git a/sql/pgq_node/structure/ext_unpackaged.sql b/sql/pgq_node/structure/ext_unpackaged.sql new file mode 100644 index 00000000..524e75ad --- /dev/null +++ b/sql/pgq_node/structure/ext_unpackaged.sql @@ -0,0 +1,8 @@ + +ALTER EXTENSION pgq_node ADD SCHEMA pgq_node; + +ALTER EXTENSION pgq_node ADD TABLE pgq_node.node_location; +ALTER EXTENSION pgq_node ADD TABLE pgq_node.node_info; +ALTER EXTENSION pgq_node ADD TABLE pgq_node.local_state; +ALTER EXTENSION pgq_node ADD TABLE pgq_node.subscriber_info; + |