@@ -134,20 +134,27 @@ PGconn *
134
134
pglogical_connect (const char * connstring , const char * connname )
135
135
{
136
136
PGconn * conn ;
137
- StringInfoData dsn ;
137
+ const char * keys [3 ];
138
+ const char * vals [3 ];
138
139
139
- initStringInfo (& dsn );
140
- appendStringInfo (& dsn ,
141
- "%s fallback_application_name='%s'" ,
142
- connstring , connname );
143
-
144
- conn = PQconnectdb (dsn .data );
140
+ /*
141
+ * We use the expand_dbname parameter to process the connection string
142
+ * (or URI), and pass some extra options.
143
+ */
144
+ keys [0 ] = "dbname" ;
145
+ vals [0 ] = connstring ;
146
+ keys [1 ] = "fallback_application_name" ;
147
+ vals [1 ] = connname ;
148
+ keys [2 ] = NULL ;
149
+ vals [2 ] = NULL ;
150
+
151
+ conn = PQconnectdbParams (keys , vals , /* expand_dbname = */ true);
145
152
if (PQstatus (conn ) != CONNECTION_OK )
146
153
{
147
154
ereport (ERROR ,
148
155
(errmsg ("could not connect to the postgresql server: %s" ,
149
156
PQerrorMessage (conn )),
150
- errdetail ("dsn was: %s" , dsn . data )));
157
+ errdetail ("dsn was: %s" , connstring )));
151
158
}
152
159
153
160
return conn ;
@@ -160,20 +167,29 @@ PGconn *
160
167
pglogical_connect_replica (const char * connstring , const char * connname )
161
168
{
162
169
PGconn * conn ;
163
- StringInfoData dsn ;
170
+ const char * keys [4 ];
171
+ const char * vals [4 ];
164
172
165
- initStringInfo (& dsn );
166
- appendStringInfo (& dsn ,
167
- "%s replication=database fallback_application_name='%s'" ,
168
- connstring , connname );
169
-
170
- conn = PQconnectdb (dsn .data );
173
+ /*
174
+ * We use the expand_dbname parameter to process the connection string
175
+ * (or URI), and pass some extra options.
176
+ */
177
+ keys [0 ] = "dbname" ;
178
+ vals [0 ] = connstring ;
179
+ keys [1 ] = "replication" ;
180
+ vals [1 ] = "database" ;
181
+ keys [2 ] = "fallback_application_name" ;
182
+ vals [2 ] = connname ;
183
+ keys [3 ] = NULL ;
184
+ vals [3 ] = NULL ;
185
+
186
+ conn = PQconnectdbParams (keys , vals , /* expand_dbname = */ true);
171
187
if (PQstatus (conn ) != CONNECTION_OK )
172
188
{
173
189
ereport (ERROR ,
174
190
(errmsg ("could not connect to the postgresql server in replication mode: %s" ,
175
191
PQerrorMessage (conn )),
176
- errdetail ("dsn was: %s" , dsn . data )));
192
+ errdetail ("dsn was: %s" , connstring )));
177
193
}
178
194
179
195
return conn ;
0 commit comments