Creating Publication
To create a publication for the dataset, run the following commands:
Replace the following variables:
publication-name
,database-name
,container-name
with the parameters used in database setup.pg-user
with postgres user for replication role.schema-1
andschema-2
with schemas for creating publication.
DATABASE_NAME=<database-name>
PUBLICATION=<publication-name>
CONTAINER_NAME=<host-name>
USER=<pg-user>
SCHEMA1=<schema-1>
SCHEMA2=<schema-2>
- Create publication for dataset:
docker exec -it $CONTAINER_NAME psql -h localhost -U postgres -d $DATABASE_NAME -c "CREATE PUBLICATION $PUBLICATION FOR TABLES IN SCHEMA <replace-with-schema-1>, <replace-with-schema-2>;"
docker exec -it $CONTAINER_NAME psql -h localhost -U postgres -d $DATABASE_NAME -c "ALTER TABLE <replace-with-schema-1>.COHORT REPLICA IDENTITY FULL; ALTER TABLE <replace-with-schema-1>.COHORT_DEFINITION REPLICA IDENTITY FULL; ALTER TABLE <replace-with-schema-2>.COHORT REPLICA IDENTITY FULL; ALTER TABLE <replace-with-schema-2>.COHORT_DEFINITION REPLICA IDENTITY FULL;"
docker exec -it $CONTAINER_NAME psql -h localhost -U postgres -d $DATABASE_NAME -c "ALTER ROLE <replace-with-user> REPLICATION;"
(Example for synpuf1k setup)
GIT_BASE_DIR=$(pwd)
PROJECT_NAME=$(grep -E '^PROJECT_NAME=' .env 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"')
PROJECT_NAME=${PROJECT_NAME:-"d2e"}
CONTAINER_NAME=$PROJECT_NAME-minerva-postgres-1
DATABASE_NAME=alpdev_pg
PUBLICATION=alpdev_pg_publication
docker exec -it $CONTAINER_NAME psql -h localhost -U postgres -d $DATABASE_NAME -c "CREATE PUBLICATION $PUBLICATION FOR TABLES IN SCHEMA cdmdefault, cdmvocab;"
docker exec -it $CONTAINER_NAME psql -h localhost -U postgres -d $DATABASE_NAME -c "ALTER ROLE postgres_tenant_admin_user REPLICATION;"