diff --git a/ansible/files/postgresql_extension_custom_scripts/pgmq/after-create.sql b/ansible/files/postgresql_extension_custom_scripts/pgmq/after-create.sql index 1581d93ca8..13369dc812 100644 --- a/ansible/files/postgresql_extension_custom_scripts/pgmq/after-create.sql +++ b/ansible/files/postgresql_extension_custom_scripts/pgmq/after-create.sql @@ -18,17 +18,22 @@ begin this update is backwards compatible with version 1.4.4 but should be removed once we're on physical backups everywhere */ --- Detach and delete the official function -if extversion = '1.4.4' then - alter extension pgmq drop function pgmq.drop_queue; - drop function pgmq.drop_queue; -else -- 1.5.1+ - alter extension pgmq drop function pgmq.drop_queue(TEXT); - drop function pgmq.drop_queue(TEXT); -end if; + -- detach and drop both historical drop_queue signatures (1.4.4 only ever + -- has (text, boolean); 1.5.0+ has both (text) and (text, boolean)) + begin + alter extension pgmq drop function pgmq.drop_queue(text); + exception when others then null; + end; + begin + alter extension pgmq drop function pgmq.drop_queue(text, boolean); + exception when others then null; + end; + + drop function if exists pgmq.drop_queue(text); + drop function if exists pgmq.drop_queue(text, boolean); -- Create and reattach the patched function -CREATE FUNCTION pgmq.drop_queue(queue_name TEXT) +CREATE FUNCTION pgmq.drop_queue(queue_name TEXT, partitioned BOOLEAN DEFAULT FALSE) RETURNS BOOLEAN AS $func$ DECLARE qtable TEXT := pgmq.format_table_name(queue_name, 'q'); @@ -36,7 +41,6 @@ DECLARE fq_qtable TEXT := 'pgmq.' || qtable; atable TEXT := pgmq.format_table_name(queue_name, 'a'); fq_atable TEXT := 'pgmq.' || atable; - partitioned BOOLEAN; BEGIN EXECUTE FORMAT( $QUERY$ @@ -140,11 +144,7 @@ BEGIN END; $func$ LANGUAGE plpgsql; -if extversion = '1.4.4' then - alter extension pgmq add function pgmq.drop_queue; -else -- 1.5.1+ - alter extension pgmq add function pgmq.drop_queue(TEXT); -end if; + alter extension pgmq add function pgmq.drop_queue(text, boolean); update pg_extension set extowner = 'postgres'::regrole where extname = 'pgmq'; diff --git a/nix/ext/pgmq/default.nix b/nix/ext/pgmq/default.nix index 7e2076a2f5..3be0a3d97b 100644 --- a/nix/ext/pgmq/default.nix +++ b/nix/ext/pgmq/default.nix @@ -36,7 +36,7 @@ let inherit pname version; buildInputs = [ postgresql ]; src = fetchFromGitHub { - owner = "tembo-io"; + owner = "pgmq"; repo = pname; rev = "v${version}"; inherit hash; @@ -69,19 +69,6 @@ let echo "default_version = '${version}'" cat $out/share/postgresql/extension/${pname}--${version}.control } > $out/share/postgresql/extension/${pname}.control - cat >> sql/pgmq--1.5.0--1.5.1.sql < '{qname}_d', partitioned => true);" + ) + + start_all() + server.wait_for_unit("supabase-db-init.service") + + for version in versions: + with subtest(f"install pgmq {version}"): + server.succeed("psql -U supabase_admin -d postgres -c 'DROP EXTENSION IF EXISTS pgmq;'") + server.succeed( + f"psql -U supabase_admin -d postgres -c \"CREATE EXTENSION pgmq WITH VERSION '{version}' CASCADE;\"" + ) + + overloads = drop_queue_overloads() + print(f"[{version}] drop_queue overloads: {overloads}") + assert len(overloads) == 1, ( + f"[{version}] expected exactly one drop_queue overload, got: {overloads}" + ) + assert overloads[0][0] == "t", ( + f"[{version}] drop_queue is not extension-owned: {overloads}" + ) + assert overloads[0][1] == "queue_name text, partitioned boolean", ( + f"[{version}] expected merged text,boolean signature, got: {overloads[0][1]}" + ) + + check_callers(f"q_{version.replace('.', '_')}") + ''; +} diff --git a/nix/ext/versions.json b/nix/ext/versions.json index 78a51b5f64..474fdc9756 100644 --- a/nix/ext/versions.json +++ b/nix/ext/versions.json @@ -409,6 +409,13 @@ "17" ], "hash": "sha256-IU+i6ONPwtgsFKdzya6E+222ualR66gkbb0lDr+7Rb8=" + }, + "1.13.0": { + "postgresql": [ + "15", + "17" + ], + "hash": "sha256-0/L/ic6WZ64Uc6JDNnKGVFVpQa2a+3OGIeyQwPFTJ5U=" } }, "pgroonga": { diff --git a/nix/tests/expected/pgmq.out b/nix/tests/expected/pgmq.out index 5314e226c5..0f16bf722b 100644 --- a/nix/tests/expected/pgmq.out +++ b/nix/tests/expected/pgmq.out @@ -156,49 +156,84 @@ where n.nspname = 'pgmq' order by p.proname; - schema_name | function_name | owner --------------+-------------------------------+---------- - pgmq | _belongs_to_pgmq | postgres - pgmq | _ensure_pg_partman_installed | postgres - pgmq | _extension_exists | postgres - pgmq | _get_partition_col | postgres - pgmq | _get_pg_partman_major_version | postgres - pgmq | _get_pg_partman_schema | postgres - pgmq | archive | postgres - pgmq | archive | postgres - pgmq | convert_archive_partitioned | postgres - pgmq | create | postgres - pgmq | create_non_partitioned | postgres - pgmq | create_partitioned | postgres - pgmq | create_unlogged | postgres - pgmq | delete | postgres - pgmq | delete | postgres - pgmq | detach_archive | postgres - pgmq | drop_queue | postgres - pgmq | drop_queue | postgres - pgmq | format_table_name | postgres - pgmq | list_queues | postgres - pgmq | metrics | postgres - pgmq | metrics_all | postgres - pgmq | pop | postgres - pgmq | purge_queue | postgres - pgmq | read | postgres - pgmq | read_with_poll | postgres - pgmq | send | postgres - pgmq | send | postgres - pgmq | send | postgres - pgmq | send | postgres - pgmq | send | postgres - pgmq | send | postgres - pgmq | send_batch | postgres - pgmq | send_batch | postgres - pgmq | send_batch | postgres - pgmq | send_batch | postgres - pgmq | send_batch | postgres - pgmq | send_batch | postgres - pgmq | set_vt | postgres - pgmq | validate_queue_name | postgres -(40 rows) + schema_name | function_name | owner +-------------+----------------------------------+---------- + pgmq | _belongs_to_pgmq | postgres + pgmq | _create_fifo_index_if_not_exists | postgres + pgmq | _ensure_pg_partman_installed | postgres + pgmq | _extension_exists | postgres + pgmq | _get_partition_col | postgres + pgmq | _get_pg_partman_major_version | postgres + pgmq | _get_pg_partman_schema | postgres + pgmq | _send_batch | postgres + pgmq | _validate_batch_params | postgres + pgmq | acquire_queue_lock | postgres + pgmq | archive | postgres + pgmq | archive | postgres + pgmq | bind_topic | postgres + pgmq | convert_archive_partitioned | postgres + pgmq | create | postgres + pgmq | create_fifo_index | postgres + pgmq | create_fifo_indexes_all | postgres + pgmq | create_non_partitioned | postgres + pgmq | create_partitioned | postgres + pgmq | create_unlogged | postgres + pgmq | delete | postgres + pgmq | delete | postgres + pgmq | detach_archive | postgres + pgmq | disable_notify_insert | postgres + pgmq | drop_queue | postgres + pgmq | enable_notify_insert | postgres + pgmq | format_table_name | postgres + pgmq | list_notify_insert_throttles | postgres + pgmq | list_queues | postgres + pgmq | list_topic_bindings | postgres + pgmq | list_topic_bindings | postgres + pgmq | metrics | postgres + pgmq | metrics_all | postgres + pgmq | notify_queue_listeners | postgres + pgmq | pop | postgres + pgmq | purge_queue | postgres + pgmq | read | postgres + pgmq | read_grouped | postgres + pgmq | read_grouped_head | postgres + pgmq | read_grouped_head_with_poll | postgres + pgmq | read_grouped_rr | postgres + pgmq | read_grouped_rr_with_poll | postgres + pgmq | read_grouped_with_poll | postgres + pgmq | read_with_poll | postgres + pgmq | send | postgres + pgmq | send | postgres + pgmq | send | postgres + pgmq | send | postgres + pgmq | send | postgres + pgmq | send | postgres + pgmq | send_batch | postgres + pgmq | send_batch | postgres + pgmq | send_batch | postgres + pgmq | send_batch | postgres + pgmq | send_batch | postgres + pgmq | send_batch | postgres + pgmq | send_batch_topic | postgres + pgmq | send_batch_topic | postgres + pgmq | send_batch_topic | postgres + pgmq | send_batch_topic | postgres + pgmq | send_batch_topic | postgres + pgmq | send_batch_topic | postgres + pgmq | send_topic | postgres + pgmq | send_topic | postgres + pgmq | send_topic | postgres + pgmq | set_vt | postgres + pgmq | set_vt | postgres + pgmq | set_vt | postgres + pgmq | set_vt | postgres + pgmq | test_routing | postgres + pgmq | unbind_topic | postgres + pgmq | update_notify_insert | postgres + pgmq | validate_queue_name | postgres + pgmq | validate_routing_key | postgres + pgmq | validate_topic_pattern | postgres +(75 rows) -- assert search_path is preserved after after-create script is run show search_path; diff --git a/nix/tests/expected/z_15_ext_interface.out b/nix/tests/expected/z_15_ext_interface.out index e53086bdec..ea72557b64 100644 --- a/nix/tests/expected/z_15_ext_interface.out +++ b/nix/tests/expected/z_15_ext_interface.out @@ -1363,30 +1363,48 @@ order by pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text | bytea pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text, text | bytea pgmq | pgmq | _belongs_to_pgmq | table_name text | boolean + pgmq | pgmq | _create_fifo_index_if_not_exists | queue_name text | void pgmq | pgmq | _ensure_pg_partman_installed | | void pgmq | pgmq | _extension_exists | extension_name text | boolean pgmq | pgmq | _get_partition_col | partition_interval text | text pgmq | pgmq | _get_pg_partman_major_version | | integer pgmq | pgmq | _get_pg_partman_schema | | text + pgmq | pgmq | _send_batch | queue_name text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | SETOF bigint + pgmq | pgmq | _validate_batch_params | msgs jsonb[], headers jsonb[] | void + pgmq | pgmq | acquire_queue_lock | queue_name text | void pgmq | pgmq | archive | queue_name text, msg_id bigint | boolean pgmq | pgmq | archive | queue_name text, msg_ids bigint[] | SETOF bigint + pgmq | pgmq | bind_topic | pattern text, queue_name text | void pgmq | pgmq | convert_archive_partitioned | table_name text, partition_interval text, retention_interval text, leading_partition integer | void pgmq | pgmq | create | queue_name text | void + pgmq | pgmq | create_fifo_index | queue_name text | void + pgmq | pgmq | create_fifo_indexes_all | | void pgmq | pgmq | create_non_partitioned | queue_name text | void - pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text | void + pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text, premake integer | void pgmq | pgmq | create_unlogged | queue_name text | void pgmq | pgmq | delete | queue_name text, msg_id bigint | boolean pgmq | pgmq | delete | queue_name text, msg_ids bigint[] | SETOF bigint pgmq | pgmq | detach_archive | queue_name text | void + pgmq | pgmq | disable_notify_insert | queue_name text | void pgmq | pgmq | drop_queue | queue_name text, partitioned boolean | boolean - pgmq | pgmq | drop_queue | queue_name text | boolean + pgmq | pgmq | enable_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | format_table_name | queue_name text, prefix text | text + pgmq | pgmq | list_notify_insert_throttles | | TABLE(queue_name text, throttle_interval_ms integer, last_notified_at timestamp with time zone) pgmq | pgmq | list_queues | | SETOF pgmq.queue_record + pgmq | pgmq | list_topic_bindings | queue_name text | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) + pgmq | pgmq | list_topic_bindings | | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) pgmq | pgmq | metrics | queue_name text | pgmq.metrics_result pgmq | pgmq | metrics_all | | SETOF pgmq.metrics_result - pgmq | pgmq | pop | queue_name text | SETOF pgmq.message_record + pgmq | pgmq | notify_queue_listeners | | trigger + pgmq | pgmq | pop | queue_name text, qty integer | SETOF pgmq.message_record pgmq | pgmq | purge_queue | queue_name text | bigint pgmq | pgmq | read | queue_name text, vt integer, qty integer, conditional jsonb | SETOF pgmq.message_record + pgmq | pgmq | read_grouped | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record pgmq | pgmq | read_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer, conditional jsonb | SETOF pgmq.message_record pgmq | pgmq | send | queue_name text, msg jsonb, headers jsonb | SETOF bigint pgmq | pgmq | send | queue_name text, msg jsonb, delay integer | SETOF bigint @@ -1400,8 +1418,25 @@ order by pgmq | pgmq | send_batch | queue_name text, msgs jsonb[] | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay timestamp with time zone | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay integer | SETOF bigint + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_topic | routing_key text, msg jsonb, headers jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb | integer + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt timestamp with time zone | SETOF pgmq.message_record pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt timestamp with time zone | SETOF pgmq.message_record + pgmq | pgmq | test_routing | routing_key text | TABLE(pattern text, queue_name text, compiled_regex text) + pgmq | pgmq | unbind_topic | pattern text, queue_name text | boolean + pgmq | pgmq | update_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | validate_queue_name | queue_name text | void + pgmq | pgmq | validate_routing_key | routing_key text | boolean + pgmq | pgmq | validate_topic_pattern | pattern text | boolean pgroonga | pgroonga | command | groongacommand text | text pgroonga | pgroonga | command | groongacommand text, arguments text[] | text pgroonga | pgroonga | command_escape_value | value text | text @@ -5307,7 +5342,7 @@ order by xml2 | public | xpath_table | text, text, text, text, text | SETOF record xml2 | public | xslt_process | text, text | text xml2 | public | xslt_process | text, text, text | text -(5135 rows) +(5170 rows) /* @@ -5590,23 +5625,17 @@ order by pg_tle | pgtle | feature_info | obj_identity pg_tle | pgtle | feature_info | proname pg_tle | pgtle | feature_info | schema_name - pgmq | pgmq | a_foo | archived_at - pgmq | pgmq | a_foo | enqueued_at - pgmq | pgmq | a_foo | headers - pgmq | pgmq | a_foo | message - pgmq | pgmq | a_foo | msg_id - pgmq | pgmq | a_foo | read_ct - pgmq | pgmq | a_foo | vt pgmq | pgmq | meta | created_at pgmq | pgmq | meta | is_partitioned pgmq | pgmq | meta | is_unlogged pgmq | pgmq | meta | queue_name - pgmq | pgmq | q_foo | enqueued_at - pgmq | pgmq | q_foo | headers - pgmq | pgmq | q_foo | message - pgmq | pgmq | q_foo | msg_id - pgmq | pgmq | q_foo | read_ct - pgmq | pgmq | q_foo | vt + pgmq | pgmq | notify_insert_throttle | last_notified_at + pgmq | pgmq | notify_insert_throttle | queue_name + pgmq | pgmq | notify_insert_throttle | throttle_interval_ms + pgmq | pgmq | topic_bindings | bound_at + pgmq | pgmq | topic_bindings | compiled_regex + pgmq | pgmq | topic_bindings | pattern + pgmq | pgmq | topic_bindings | queue_name pgsodium | pgsodium | decrypted_key | associated_data pgsodium | pgsodium | decrypted_key | comment pgsodium | pgsodium | decrypted_key | created @@ -6509,5 +6538,5 @@ order by wrappers | public | wrappers_fdw_stats | rows_in wrappers | public | wrappers_fdw_stats | rows_out wrappers | public | wrappers_fdw_stats | updated_at -(1168 rows) +(1162 rows) diff --git a/nix/tests/expected/z_17_ext_interface.out b/nix/tests/expected/z_17_ext_interface.out index d589b8a6d1..ae40f176e0 100644 --- a/nix/tests/expected/z_17_ext_interface.out +++ b/nix/tests/expected/z_17_ext_interface.out @@ -1348,30 +1348,48 @@ order by pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text | bytea pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text, text | bytea pgmq | pgmq | _belongs_to_pgmq | table_name text | boolean + pgmq | pgmq | _create_fifo_index_if_not_exists | queue_name text | void pgmq | pgmq | _ensure_pg_partman_installed | | void pgmq | pgmq | _extension_exists | extension_name text | boolean pgmq | pgmq | _get_partition_col | partition_interval text | text pgmq | pgmq | _get_pg_partman_major_version | | integer pgmq | pgmq | _get_pg_partman_schema | | text + pgmq | pgmq | _send_batch | queue_name text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | SETOF bigint + pgmq | pgmq | _validate_batch_params | msgs jsonb[], headers jsonb[] | void + pgmq | pgmq | acquire_queue_lock | queue_name text | void pgmq | pgmq | archive | queue_name text, msg_id bigint | boolean pgmq | pgmq | archive | queue_name text, msg_ids bigint[] | SETOF bigint + pgmq | pgmq | bind_topic | pattern text, queue_name text | void pgmq | pgmq | convert_archive_partitioned | table_name text, partition_interval text, retention_interval text, leading_partition integer | void pgmq | pgmq | create | queue_name text | void + pgmq | pgmq | create_fifo_index | queue_name text | void + pgmq | pgmq | create_fifo_indexes_all | | void pgmq | pgmq | create_non_partitioned | queue_name text | void - pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text | void + pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text, premake integer | void pgmq | pgmq | create_unlogged | queue_name text | void pgmq | pgmq | delete | queue_name text, msg_id bigint | boolean pgmq | pgmq | delete | queue_name text, msg_ids bigint[] | SETOF bigint pgmq | pgmq | detach_archive | queue_name text | void + pgmq | pgmq | disable_notify_insert | queue_name text | void pgmq | pgmq | drop_queue | queue_name text, partitioned boolean | boolean - pgmq | pgmq | drop_queue | queue_name text | boolean + pgmq | pgmq | enable_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | format_table_name | queue_name text, prefix text | text + pgmq | pgmq | list_notify_insert_throttles | | TABLE(queue_name text, throttle_interval_ms integer, last_notified_at timestamp with time zone) pgmq | pgmq | list_queues | | SETOF pgmq.queue_record + pgmq | pgmq | list_topic_bindings | queue_name text | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) + pgmq | pgmq | list_topic_bindings | | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) pgmq | pgmq | metrics | queue_name text | pgmq.metrics_result pgmq | pgmq | metrics_all | | SETOF pgmq.metrics_result - pgmq | pgmq | pop | queue_name text | SETOF pgmq.message_record + pgmq | pgmq | notify_queue_listeners | | trigger + pgmq | pgmq | pop | queue_name text, qty integer | SETOF pgmq.message_record pgmq | pgmq | purge_queue | queue_name text | bigint pgmq | pgmq | read | queue_name text, vt integer, qty integer, conditional jsonb | SETOF pgmq.message_record + pgmq | pgmq | read_grouped | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record pgmq | pgmq | read_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer, conditional jsonb | SETOF pgmq.message_record pgmq | pgmq | send | queue_name text, msg jsonb, headers jsonb | SETOF bigint pgmq | pgmq | send | queue_name text, msg jsonb, delay integer | SETOF bigint @@ -1385,8 +1403,25 @@ order by pgmq | pgmq | send_batch | queue_name text, msgs jsonb[] | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay timestamp with time zone | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay integer | SETOF bigint + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_topic | routing_key text, msg jsonb, headers jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb | integer + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt timestamp with time zone | SETOF pgmq.message_record pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt timestamp with time zone | SETOF pgmq.message_record + pgmq | pgmq | test_routing | routing_key text | TABLE(pattern text, queue_name text, compiled_regex text) + pgmq | pgmq | unbind_topic | pattern text, queue_name text | boolean + pgmq | pgmq | update_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | validate_queue_name | queue_name text | void + pgmq | pgmq | validate_routing_key | routing_key text | boolean + pgmq | pgmq | validate_topic_pattern | pattern text | boolean pgroonga | pgroonga | command | groongacommand text | text pgroonga | pgroonga | command | groongacommand text, arguments text[] | text pgroonga | pgroonga | command_escape_value | value text | text @@ -4951,7 +4986,7 @@ order by xml2 | public | xpath_table | text, text, text, text, text | SETOF record xml2 | public | xslt_process | text, text | text xml2 | public | xslt_process | text, text, text | text -(4792 rows) +(4827 rows) /* @@ -5246,23 +5281,17 @@ order by pg_tle | pgtle | feature_info | obj_identity pg_tle | pgtle | feature_info | proname pg_tle | pgtle | feature_info | schema_name - pgmq | pgmq | a_foo | archived_at - pgmq | pgmq | a_foo | enqueued_at - pgmq | pgmq | a_foo | headers - pgmq | pgmq | a_foo | message - pgmq | pgmq | a_foo | msg_id - pgmq | pgmq | a_foo | read_ct - pgmq | pgmq | a_foo | vt pgmq | pgmq | meta | created_at pgmq | pgmq | meta | is_partitioned pgmq | pgmq | meta | is_unlogged pgmq | pgmq | meta | queue_name - pgmq | pgmq | q_foo | enqueued_at - pgmq | pgmq | q_foo | headers - pgmq | pgmq | q_foo | message - pgmq | pgmq | q_foo | msg_id - pgmq | pgmq | q_foo | read_ct - pgmq | pgmq | q_foo | vt + pgmq | pgmq | notify_insert_throttle | last_notified_at + pgmq | pgmq | notify_insert_throttle | queue_name + pgmq | pgmq | notify_insert_throttle | throttle_interval_ms + pgmq | pgmq | topic_bindings | bound_at + pgmq | pgmq | topic_bindings | compiled_regex + pgmq | pgmq | topic_bindings | pattern + pgmq | pgmq | topic_bindings | queue_name pgsodium | pgsodium | decrypted_key | associated_data pgsodium | pgsodium | decrypted_key | comment pgsodium | pgsodium | decrypted_key | created @@ -5434,5 +5463,5 @@ order by wrappers | public | wrappers_fdw_stats | rows_in wrappers | public | wrappers_fdw_stats | rows_out wrappers | public | wrappers_fdw_stats | updated_at -(449 rows) +(443 rows) diff --git a/nix/tests/expected/z_multigres-17_ext_interface.out b/nix/tests/expected/z_multigres-17_ext_interface.out index 978d6adffe..8e9ddcfe96 100644 --- a/nix/tests/expected/z_multigres-17_ext_interface.out +++ b/nix/tests/expected/z_multigres-17_ext_interface.out @@ -1348,30 +1348,48 @@ order by pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text | bytea pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text, text | bytea pgmq | pgmq | _belongs_to_pgmq | table_name text | boolean + pgmq | pgmq | _create_fifo_index_if_not_exists | queue_name text | void pgmq | pgmq | _ensure_pg_partman_installed | | void pgmq | pgmq | _extension_exists | extension_name text | boolean pgmq | pgmq | _get_partition_col | partition_interval text | text pgmq | pgmq | _get_pg_partman_major_version | | integer pgmq | pgmq | _get_pg_partman_schema | | text + pgmq | pgmq | _send_batch | queue_name text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | SETOF bigint + pgmq | pgmq | _validate_batch_params | msgs jsonb[], headers jsonb[] | void + pgmq | pgmq | acquire_queue_lock | queue_name text | void pgmq | pgmq | archive | queue_name text, msg_id bigint | boolean pgmq | pgmq | archive | queue_name text, msg_ids bigint[] | SETOF bigint + pgmq | pgmq | bind_topic | pattern text, queue_name text | void pgmq | pgmq | convert_archive_partitioned | table_name text, partition_interval text, retention_interval text, leading_partition integer | void pgmq | pgmq | create | queue_name text | void + pgmq | pgmq | create_fifo_index | queue_name text | void + pgmq | pgmq | create_fifo_indexes_all | | void pgmq | pgmq | create_non_partitioned | queue_name text | void - pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text | void + pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text, premake integer | void pgmq | pgmq | create_unlogged | queue_name text | void pgmq | pgmq | delete | queue_name text, msg_id bigint | boolean pgmq | pgmq | delete | queue_name text, msg_ids bigint[] | SETOF bigint pgmq | pgmq | detach_archive | queue_name text | void + pgmq | pgmq | disable_notify_insert | queue_name text | void pgmq | pgmq | drop_queue | queue_name text, partitioned boolean | boolean - pgmq | pgmq | drop_queue | queue_name text | boolean + pgmq | pgmq | enable_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | format_table_name | queue_name text, prefix text | text + pgmq | pgmq | list_notify_insert_throttles | | TABLE(queue_name text, throttle_interval_ms integer, last_notified_at timestamp with time zone) pgmq | pgmq | list_queues | | SETOF pgmq.queue_record + pgmq | pgmq | list_topic_bindings | queue_name text | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) + pgmq | pgmq | list_topic_bindings | | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) pgmq | pgmq | metrics | queue_name text | pgmq.metrics_result pgmq | pgmq | metrics_all | | SETOF pgmq.metrics_result - pgmq | pgmq | pop | queue_name text | SETOF pgmq.message_record + pgmq | pgmq | notify_queue_listeners | | trigger + pgmq | pgmq | pop | queue_name text, qty integer | SETOF pgmq.message_record pgmq | pgmq | purge_queue | queue_name text | bigint pgmq | pgmq | read | queue_name text, vt integer, qty integer, conditional jsonb | SETOF pgmq.message_record + pgmq | pgmq | read_grouped | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record pgmq | pgmq | read_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer, conditional jsonb | SETOF pgmq.message_record pgmq | pgmq | send | queue_name text, msg jsonb, headers jsonb | SETOF bigint pgmq | pgmq | send | queue_name text, msg jsonb, delay integer | SETOF bigint @@ -1385,8 +1403,25 @@ order by pgmq | pgmq | send_batch | queue_name text, msgs jsonb[] | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay timestamp with time zone | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay integer | SETOF bigint + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_topic | routing_key text, msg jsonb, headers jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb | integer + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt timestamp with time zone | SETOF pgmq.message_record pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt timestamp with time zone | SETOF pgmq.message_record + pgmq | pgmq | test_routing | routing_key text | TABLE(pattern text, queue_name text, compiled_regex text) + pgmq | pgmq | unbind_topic | pattern text, queue_name text | boolean + pgmq | pgmq | update_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | validate_queue_name | queue_name text | void + pgmq | pgmq | validate_routing_key | routing_key text | boolean + pgmq | pgmq | validate_topic_pattern | pattern text | boolean pgroonga | pgroonga | command | groongacommand text | text pgroonga | pgroonga | command | groongacommand text, arguments text[] | text pgroonga | pgroonga | command_escape_value | value text | text @@ -4814,7 +4849,7 @@ order by xml2 | public | xpath_table | text, text, text, text, text | SETOF record xml2 | public | xslt_process | text, text | text xml2 | public | xslt_process | text, text, text | text -(4655 rows) +(4690 rows) /* @@ -5109,23 +5144,17 @@ order by pg_tle | pgtle | feature_info | obj_identity pg_tle | pgtle | feature_info | proname pg_tle | pgtle | feature_info | schema_name - pgmq | pgmq | a_foo | archived_at - pgmq | pgmq | a_foo | enqueued_at - pgmq | pgmq | a_foo | headers - pgmq | pgmq | a_foo | message - pgmq | pgmq | a_foo | msg_id - pgmq | pgmq | a_foo | read_ct - pgmq | pgmq | a_foo | vt pgmq | pgmq | meta | created_at pgmq | pgmq | meta | is_partitioned pgmq | pgmq | meta | is_unlogged pgmq | pgmq | meta | queue_name - pgmq | pgmq | q_foo | enqueued_at - pgmq | pgmq | q_foo | headers - pgmq | pgmq | q_foo | message - pgmq | pgmq | q_foo | msg_id - pgmq | pgmq | q_foo | read_ct - pgmq | pgmq | q_foo | vt + pgmq | pgmq | notify_insert_throttle | last_notified_at + pgmq | pgmq | notify_insert_throttle | queue_name + pgmq | pgmq | notify_insert_throttle | throttle_interval_ms + pgmq | pgmq | topic_bindings | bound_at + pgmq | pgmq | topic_bindings | compiled_regex + pgmq | pgmq | topic_bindings | pattern + pgmq | pgmq | topic_bindings | queue_name pgtap | public | pg_all_foreign_keys | fk_columns pgtap | public | pg_all_foreign_keys | fk_constraint_name pgtap | public | pg_all_foreign_keys | fk_schema_name @@ -5239,5 +5268,5 @@ order by wrappers | public | wrappers_fdw_stats | rows_in wrappers | public | wrappers_fdw_stats | rows_out wrappers | public | wrappers_fdw_stats | updated_at -(391 rows) +(385 rows) diff --git a/nix/tests/expected/z_orioledb-17_ext_interface.out b/nix/tests/expected/z_orioledb-17_ext_interface.out index 0482d0b86b..b352fd8bf8 100644 --- a/nix/tests/expected/z_orioledb-17_ext_interface.out +++ b/nix/tests/expected/z_orioledb-17_ext_interface.out @@ -1400,30 +1400,48 @@ order by pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text | bytea pgcrypto | extensions | pgp_sym_encrypt_bytea | bytea, text, text | bytea pgmq | pgmq | _belongs_to_pgmq | table_name text | boolean + pgmq | pgmq | _create_fifo_index_if_not_exists | queue_name text | void pgmq | pgmq | _ensure_pg_partman_installed | | void pgmq | pgmq | _extension_exists | extension_name text | boolean pgmq | pgmq | _get_partition_col | partition_interval text | text pgmq | pgmq | _get_pg_partman_major_version | | integer pgmq | pgmq | _get_pg_partman_schema | | text + pgmq | pgmq | _send_batch | queue_name text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | SETOF bigint + pgmq | pgmq | _validate_batch_params | msgs jsonb[], headers jsonb[] | void + pgmq | pgmq | acquire_queue_lock | queue_name text | void pgmq | pgmq | archive | queue_name text, msg_id bigint | boolean pgmq | pgmq | archive | queue_name text, msg_ids bigint[] | SETOF bigint + pgmq | pgmq | bind_topic | pattern text, queue_name text | void pgmq | pgmq | convert_archive_partitioned | table_name text, partition_interval text, retention_interval text, leading_partition integer | void pgmq | pgmq | create | queue_name text | void + pgmq | pgmq | create_fifo_index | queue_name text | void + pgmq | pgmq | create_fifo_indexes_all | | void pgmq | pgmq | create_non_partitioned | queue_name text | void - pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text | void + pgmq | pgmq | create_partitioned | queue_name text, partition_interval text, retention_interval text, premake integer | void pgmq | pgmq | create_unlogged | queue_name text | void pgmq | pgmq | delete | queue_name text, msg_id bigint | boolean pgmq | pgmq | delete | queue_name text, msg_ids bigint[] | SETOF bigint pgmq | pgmq | detach_archive | queue_name text | void + pgmq | pgmq | disable_notify_insert | queue_name text | void pgmq | pgmq | drop_queue | queue_name text, partitioned boolean | boolean - pgmq | pgmq | drop_queue | queue_name text | boolean + pgmq | pgmq | enable_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | format_table_name | queue_name text, prefix text | text + pgmq | pgmq | list_notify_insert_throttles | | TABLE(queue_name text, throttle_interval_ms integer, last_notified_at timestamp with time zone) pgmq | pgmq | list_queues | | SETOF pgmq.queue_record + pgmq | pgmq | list_topic_bindings | queue_name text | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) + pgmq | pgmq | list_topic_bindings | | TABLE(pattern text, queue_name text, bound_at timestamp with time zone, compiled_regex text) pgmq | pgmq | metrics | queue_name text | pgmq.metrics_result pgmq | pgmq | metrics_all | | SETOF pgmq.metrics_result - pgmq | pgmq | pop | queue_name text | SETOF pgmq.message_record + pgmq | pgmq | notify_queue_listeners | | trigger + pgmq | pgmq | pop | queue_name text, qty integer | SETOF pgmq.message_record pgmq | pgmq | purge_queue | queue_name text | bigint pgmq | pgmq | read | queue_name text, vt integer, qty integer, conditional jsonb | SETOF pgmq.message_record + pgmq | pgmq | read_grouped | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_head_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr | queue_name text, vt integer, qty integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_rr_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record + pgmq | pgmq | read_grouped_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer | SETOF pgmq.message_record pgmq | pgmq | read_with_poll | queue_name text, vt integer, qty integer, max_poll_seconds integer, poll_interval_ms integer, conditional jsonb | SETOF pgmq.message_record pgmq | pgmq | send | queue_name text, msg jsonb, headers jsonb | SETOF bigint pgmq | pgmq | send | queue_name text, msg jsonb, delay integer | SETOF bigint @@ -1437,8 +1455,25 @@ order by pgmq | pgmq | send_batch | queue_name text, msgs jsonb[] | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay timestamp with time zone | SETOF bigint pgmq | pgmq | send_batch | queue_name text, msgs jsonb[], delay integer | SETOF bigint + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], headers jsonb[], delay timestamp with time zone | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[], delay integer | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_batch_topic | routing_key text, msgs jsonb[] | TABLE(queue_name text, msg_id bigint) + pgmq | pgmq | send_topic | routing_key text, msg jsonb, headers jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb, delay integer | integer + pgmq | pgmq | send_topic | routing_key text, msg jsonb | integer + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_ids bigint[], vt timestamp with time zone | SETOF pgmq.message_record pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt integer | SETOF pgmq.message_record + pgmq | pgmq | set_vt | queue_name text, msg_id bigint, vt timestamp with time zone | SETOF pgmq.message_record + pgmq | pgmq | test_routing | routing_key text | TABLE(pattern text, queue_name text, compiled_regex text) + pgmq | pgmq | unbind_topic | pattern text, queue_name text | boolean + pgmq | pgmq | update_notify_insert | queue_name text, throttle_interval_ms integer | void pgmq | pgmq | validate_queue_name | queue_name text | void + pgmq | pgmq | validate_routing_key | routing_key text | boolean + pgmq | pgmq | validate_topic_pattern | pattern text | boolean pgroonga | pgroonga | command | groongacommand text | text pgroonga | pgroonga | command | groongacommand text, arguments text[] | text pgroonga | pgroonga | command_escape_value | value text | text @@ -5003,7 +5038,7 @@ order by xml2 | public | xpath_table | text, text, text, text, text | SETOF record xml2 | public | xslt_process | text, text | text xml2 | public | xslt_process | text, text, text | text -(4843 rows) +(4878 rows) /* @@ -5318,23 +5353,17 @@ order by pg_tle | pgtle | feature_info | obj_identity pg_tle | pgtle | feature_info | proname pg_tle | pgtle | feature_info | schema_name - pgmq | pgmq | a_foo | archived_at - pgmq | pgmq | a_foo | enqueued_at - pgmq | pgmq | a_foo | headers - pgmq | pgmq | a_foo | message - pgmq | pgmq | a_foo | msg_id - pgmq | pgmq | a_foo | read_ct - pgmq | pgmq | a_foo | vt pgmq | pgmq | meta | created_at pgmq | pgmq | meta | is_partitioned pgmq | pgmq | meta | is_unlogged pgmq | pgmq | meta | queue_name - pgmq | pgmq | q_foo | enqueued_at - pgmq | pgmq | q_foo | headers - pgmq | pgmq | q_foo | message - pgmq | pgmq | q_foo | msg_id - pgmq | pgmq | q_foo | read_ct - pgmq | pgmq | q_foo | vt + pgmq | pgmq | notify_insert_throttle | last_notified_at + pgmq | pgmq | notify_insert_throttle | queue_name + pgmq | pgmq | notify_insert_throttle | throttle_interval_ms + pgmq | pgmq | topic_bindings | bound_at + pgmq | pgmq | topic_bindings | compiled_regex + pgmq | pgmq | topic_bindings | pattern + pgmq | pgmq | topic_bindings | queue_name pgsodium | pgsodium | decrypted_key | associated_data pgsodium | pgsodium | decrypted_key | comment pgsodium | pgsodium | decrypted_key | created @@ -5506,5 +5535,5 @@ order by wrappers | public | wrappers_fdw_stats | rows_in wrappers | public | wrappers_fdw_stats | rows_out wrappers | public | wrappers_fdw_stats | updated_at -(469 rows) +(463 rows)