Skip to main content

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 and schema-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;"