shardman.broadcast_all_sql(statement text
)
Executes statement on every replication group.
shardman.broadcast_sql(statement text)
Executes statement on every replication group but the
current one.
shardman.get_partition_for_value(relid oid,
val variadic "any")
→ shardman.get_partition_for_value_type
( rgid int,
local_nspname text,
local_relname text,
remote_nspname text,
remote_relname text)
Finds out which partition of a sharded table with oid relid the
val belongs to. Returns NULL if the sharded table with
oid relid does not exist. Returns the local schema name
and relation names. If the value belongs to a partition stored in
another replication group, also returns the remote schema and relation name.
Returns only rgid if second-level partitioning is used.
Example:
select * from shardman.get_partition_for_value('pgbench_branches'::regclass, 20);
rgid | local_nspname | local_relname | remote_nspname | remote_relname
------+---------------+-------------------------+----------------+---------------------
3 | public | pgbench_branches_17_fdw | public | pgbench_branches_17
shardman.global_analyze()
Performs cluster-wide analysis of sharded and global tables.
First, this function executes ANALYZE on all local partitions
of sharded tables on each node, then sends this statistics to other
nodes. Next, it selects one node per global table and runs
ANALYZE of this table on the selected node. Gathered statistics
is broadcast to all other nodes in the cluster.
Example:
select shardman.global_analyze();
shardman.attach_subpart(relid regclass,
snum int, partition_bound
text[])
Attaches a previously detached subpartition number snum
to a locally-partitioned table relid as a partition for
the values within partition_bound. All subpartition
tables and foreign tables should already exist.
The partition_bound parameter is a pair of lower and upper
bounds for the partition. If lower and upper bounds are both NULL, the
subpartition is attached as the default one.
The operation is performed cluster-wide.
Example:
select shardman.attach_subpart('pgbench_history'::regclass, 1,$${'2021-01-01 00:00', '2022-01-01 00:00'}$$);
shardman.create_subpart(relid regclass,
snum int, partition_bound
text[])
Creates a subpartition number snum for
a locally-partitioned table relid as a partition for
the values within partition_bound.
The partition_bound parameter is a pair of lower
and upper bounds for the partition. If lower and upper bounds are both NULL, the
subpartition is created as the default one. If the subpartition number is not
specified, it will be selected as the next available partition number.
The operation is performed cluster-wide.
Examples:
select shardman.create_subpart('pgbench_history'::regclass, 1, $${'2021-01-01 00:00', '2022-01-01 00:00'}$$);
select shardman.create_subpart('pgbench_history'::regclass, partition_bound:=$${'2022-01-01 00:00', '2023-01-01 00:00'}$$);
shardman.detach_subpart(relid regclass,
snum int)
Detaches a subpartition number snum from
a locally-partitioned table relid. The partition number can be
determined from the shardman.subparts view.
The operation is performed cluster-wide.
Example:
select shardman.detach_subpart('pgbench_history'::regclass, 1);
shardman.drop_subpart(relid regclass,
snum int)
Drops subpartition number snum from
locally-partitioned table relid. Partition number can be
determined from the shardman.subparts view.
The operation is performed cluster-wide.
Example:
select shardman.drop_subpart('pgbench_history'::regclass, 1);