@@ -4596,16 +4596,17 @@ getSubscriptions(Archive *fout)
45964596 int i_oid;
45974597 int i_subname;
45984598 int i_subowner;
4599+ int i_subbinary;
45994600 int i_substream;
46004601 int i_subtwophasestate;
46014602 int i_subdisableonerr;
4602- int i_suborigin;
4603+ int i_subpasswordrequired;
4604+ int i_subrunasowner;
46034605 int i_subconninfo;
46044606 int i_subslotname;
46054607 int i_subsynccommit;
46064608 int i_subpublications;
4607- int i_subbinary;
4608- int i_subpasswordrequired;
4609+ int i_suborigin;
46094610 int i,
46104611 ntups;
46114612
@@ -4659,12 +4660,14 @@ getSubscriptions(Archive *fout)
46594660
46604661 if (fout->remoteVersion >= 160000)
46614662 appendPQExpBufferStr(query,
4662- " s.suborigin,\n"
4663- " s.subpasswordrequired\n");
4663+ " s.subpasswordrequired,\n"
4664+ " s.subrunasowner,\n"
4665+ " s.suborigin\n");
46644666 else
46654667 appendPQExpBuffer(query,
4666- " '%s' AS suborigin,\n"
4667- " 't' AS subpasswordrequired\n",
4668+ " 't' AS subpasswordrequired,\n"
4669+ " 't' AS subrunasowner,\n"
4670+ " '%s' AS suborigin\n",
46684671 LOGICALREP_ORIGIN_ANY);
46694672
46704673 appendPQExpBufferStr(query,
@@ -4684,16 +4687,17 @@ getSubscriptions(Archive *fout)
46844687 i_oid = PQfnumber(res, "oid");
46854688 i_subname = PQfnumber(res, "subname");
46864689 i_subowner = PQfnumber(res, "subowner");
4687- i_subconninfo = PQfnumber(res, "subconninfo");
4688- i_subslotname = PQfnumber(res, "subslotname");
4689- i_subsynccommit = PQfnumber(res, "subsynccommit");
4690- i_subpublications = PQfnumber(res, "subpublications");
46914690 i_subbinary = PQfnumber(res, "subbinary");
46924691 i_substream = PQfnumber(res, "substream");
46934692 i_subtwophasestate = PQfnumber(res, "subtwophasestate");
46944693 i_subdisableonerr = PQfnumber(res, "subdisableonerr");
4695- i_suborigin = PQfnumber(res, "suborigin");
46964694 i_subpasswordrequired = PQfnumber(res, "subpasswordrequired");
4695+ i_subrunasowner = PQfnumber(res, "subrunasowner");
4696+ i_subconninfo = PQfnumber(res, "subconninfo");
4697+ i_subslotname = PQfnumber(res, "subslotname");
4698+ i_subsynccommit = PQfnumber(res, "subsynccommit");
4699+ i_subpublications = PQfnumber(res, "subpublications");
4700+ i_suborigin = PQfnumber(res, "suborigin");
46974701
46984702 subinfo = pg_malloc(ntups * sizeof(SubscriptionInfo));
46994703
@@ -4706,15 +4710,7 @@ getSubscriptions(Archive *fout)
47064710 AssignDumpId(&subinfo[i].dobj);
47074711 subinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_subname));
47084712 subinfo[i].rolname = getRoleName(PQgetvalue(res, i, i_subowner));
4709- subinfo[i].subconninfo = pg_strdup(PQgetvalue(res, i, i_subconninfo));
4710- if (PQgetisnull(res, i, i_subslotname))
4711- subinfo[i].subslotname = NULL;
4712- else
4713- subinfo[i].subslotname = pg_strdup(PQgetvalue(res, i, i_subslotname));
4714- subinfo[i].subsynccommit =
4715- pg_strdup(PQgetvalue(res, i, i_subsynccommit));
4716- subinfo[i].subpublications =
4717- pg_strdup(PQgetvalue(res, i, i_subpublications));
4713+
47184714 subinfo[i].subbinary =
47194715 pg_strdup(PQgetvalue(res, i, i_subbinary));
47204716 subinfo[i].substream =
@@ -4723,9 +4719,22 @@ getSubscriptions(Archive *fout)
47234719 pg_strdup(PQgetvalue(res, i, i_subtwophasestate));
47244720 subinfo[i].subdisableonerr =
47254721 pg_strdup(PQgetvalue(res, i, i_subdisableonerr));
4726- subinfo[i].suborigin = pg_strdup(PQgetvalue(res, i, i_suborigin));
47274722 subinfo[i].subpasswordrequired =
47284723 pg_strdup(PQgetvalue(res, i, i_subpasswordrequired));
4724+ subinfo[i].subrunasowner =
4725+ pg_strdup(PQgetvalue(res, i, i_subrunasowner));
4726+ subinfo[i].subconninfo =
4727+ pg_strdup(PQgetvalue(res, i, i_subconninfo));
4728+ if (PQgetisnull(res, i, i_subslotname))
4729+ subinfo[i].subslotname = NULL;
4730+ else
4731+ subinfo[i].subslotname =
4732+ pg_strdup(PQgetvalue(res, i, i_subslotname));
4733+ subinfo[i].subsynccommit =
4734+ pg_strdup(PQgetvalue(res, i, i_subsynccommit));
4735+ subinfo[i].subpublications =
4736+ pg_strdup(PQgetvalue(res, i, i_subpublications));
4737+ subinfo[i].suborigin = pg_strdup(PQgetvalue(res, i, i_suborigin));
47294738
47304739 /* Decide whether we want to dump it */
47314740 selectDumpableObject(&(subinfo[i].dobj), fout);
@@ -4801,14 +4810,17 @@ dumpSubscription(Archive *fout, const SubscriptionInfo *subinfo)
48014810 if (strcmp(subinfo->subdisableonerr, "t") == 0)
48024811 appendPQExpBufferStr(query, ", disable_on_error = true");
48034812
4804- if (pg_strcasecmp(subinfo->suborigin, LOGICALREP_ORIGIN_ANY) != 0)
4805- appendPQExpBuffer(query, ", origin = %s", subinfo->suborigin);
4813+ if (strcmp(subinfo->subpasswordrequired, "t") != 0)
4814+ appendPQExpBuffer(query, ", password_required = false");
4815+
4816+ if (strcmp(subinfo->subrunasowner, "t") == 0)
4817+ appendPQExpBufferStr(query, ", run_as_owner = true");
48064818
48074819 if (strcmp(subinfo->subsynccommit, "off") != 0)
48084820 appendPQExpBuffer(query, ", synchronous_commit = %s", fmtId(subinfo->subsynccommit));
48094821
4810- if (strcmp (subinfo->subpasswordrequired, "t" ) != 0)
4811- appendPQExpBuffer(query, ", password_required = false" );
4822+ if (pg_strcasecmp (subinfo->suborigin, LOGICALREP_ORIGIN_ANY ) != 0)
4823+ appendPQExpBuffer(query, ", origin = %s", subinfo->suborigin );
48124824
48134825 appendPQExpBufferStr(query, ");\n");
48144826
0 commit comments