mirror of https://github.com/citusdata/citus.git
73 lines
2.7 KiB
SQL
73 lines
2.7 KiB
SQL
-- citus--11.2-1--11.3-1
|
|
|
|
-- bump version to 11.3-1
|
|
|
|
#include "udfs/citus_prepare_pg_upgrade/11.3-1.sql"
|
|
#include "udfs/citus_finish_pg_upgrade/11.3-1.sql"
|
|
|
|
CREATE TABLE citus.pg_dist_shardgroup (
|
|
shardgroupid bigint PRIMARY KEY,
|
|
colocationid integer NOT NULL,
|
|
shardminvalue text,
|
|
shardmaxvalue text
|
|
);
|
|
ALTER TABLE citus.pg_dist_shardgroup SET SCHEMA pg_catalog;
|
|
|
|
CREATE SEQUENCE citus.pg_dist_shardgroupid_seq
|
|
MINVALUE 100000 -- TO BO DECIDED
|
|
NO CYCLE;
|
|
ALTER SEQUENCE citus.pg_dist_shardgroupid_seq SET SCHEMA pg_catalog;
|
|
|
|
INSERT INTO pg_catalog.pg_dist_shardgroup
|
|
SELECT min(shardid) as shardgroupid,
|
|
colocationid,
|
|
shardminvalue,
|
|
shardmaxvalue
|
|
FROM pg_dist_shard
|
|
JOIN pg_dist_partition USING (logicalrelid)
|
|
GROUP BY colocationid, shardminvalue, shardmaxvalue;
|
|
|
|
ALTER TABLE pg_catalog.pg_dist_shard ADD COLUMN shardgroupid bigint;
|
|
|
|
-- backfill shardgroupid field by finding the generated shardgroup above by joining the colocationid, shardminvalue and
|
|
-- shardmaxvalue (for the shardvalues we want to treat NULL values as equal, hence the complex conditions for those).
|
|
-- After this operation _all_ shards should have a shardgroupid associated which satisfies the colocation invariant of
|
|
-- the shards in the same colocationid.
|
|
UPDATE pg_catalog.pg_dist_shard AS shard
|
|
SET shardgroupid = shardgroup.shardgroupid
|
|
FROM (
|
|
SELECT shardgroupid,
|
|
colocationid,
|
|
shardminvalue,
|
|
shardmaxvalue,
|
|
logicalrelid
|
|
FROM pg_catalog.pg_dist_shardgroup
|
|
JOIN pg_dist_partition USING (colocationid)
|
|
) AS shardgroup
|
|
WHERE shard.logicalrelid = shardgroup.logicalrelid
|
|
AND (
|
|
shard.shardminvalue = shardgroup.shardminvalue
|
|
OR ( shard.shardminvalue IS NULL
|
|
AND shardgroup.shardminvalue IS NULL)
|
|
)
|
|
AND (
|
|
shard.shardmaxvalue = shardgroup.shardmaxvalue
|
|
OR ( shard.shardmaxvalue IS NULL
|
|
AND shardgroup.shardmaxvalue IS NULL)
|
|
);
|
|
|
|
-- risky, but we want to fail quickly here. If there are cases where a shard is not associated correctly with a
|
|
-- shardgroup we would not want the setup to use the new Citus version as it hard relies on the shardgroups being
|
|
-- correctly associated.
|
|
ALTER TABLE pg_catalog.pg_dist_shard ALTER COLUMN shardgroupid SET NOT NULL;
|
|
|
|
#include "udfs/citus_internal_add_shard_metadata/11.3-1.sql"
|
|
DROP FUNCTION pg_catalog.citus_internal_add_shard_metadata(
|
|
relation_id regclass, shard_id bigint,
|
|
storage_type "char", shard_min_value text,
|
|
shard_max_value text
|
|
);
|
|
|
|
#include "udfs/citus_internal_add_shardgroup_metadata/11.3-1.sql"
|
|
#include "udfs/citus_internal_delete_shardgroup_metadata/11.3-1.sql"
|