Nous avons également pour objectif d'utiliser la réplication logique pour une migration PG11 -> PG14 Où peut-on trouver les scripts/requêtes que vous avez utilisé ?
@Dalibo3 жыл бұрын
Bonjour Nico T, nous transmettons votre question à Cédric et vous répondrons ici dès que possible.
@Dalibo3 жыл бұрын
Selon Cédric, les requêtes figurent sur sa présentation. Voici où trouver le support : www.pgsessions.com/assets/archives/pgs13_utiliser_replication_logique_pour_montee_version_majeure.html#/
@Dalibo3 жыл бұрын
Concernant la requête détectant les clés primaires manquantes, il signale un bug récemment repéré. Voici une meilleure requête : WITH cles_abs AS ( SELECT tbl.table_schema, tbl.table_name FROM information_schema.tables tbl WHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema') AND NOT EXISTS ( SELECT 1 FROM information_schema.key_column_usage kcu WHERE kcu.table_name = tbl.table_name AND kcu.table_schema = tbl.table_schema AND kcu.position_in_unique_constraint IS NULL ) ) SELECT 'ALTER TABLE ' || table_schema || '.' || table_name || ' DROP COLUMN id;' FROM cles_abs ORDER BY table_schema, table_name; En espérant que sa réponse vous sera utile, À bientôt !
@furydonnico3 жыл бұрын
@@Dalibo Les requêtes ont été très utiles mais il semble que la requête de recherche puisse être améliorée. En effet, dès lors qu'une clé existe la table n'est pas remontée, dans le cas d'une clé étrangère la condition n'est toutefois pas suffisante pour qu'elle puisse être intégrée à la réplication logique. Dans notre cas, la requête suivante remonte toutes les tables dépourvues de clé primaire : SELECT tbl.table_schema, tbl.table_name FROM information_schema.tables tbl WHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema') AND NOT EXISTS ( SELECT 1 FROM information_schema.table_constraints tco WHERE tbl.table_schema = tco.table_schema AND tbl.table_name = tco.table_name AND tco.constraint_type = 'PRIMARY KEY' );