Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3efb347

Browse files
committed
2 parents 6c22363 + a60f67c commit 3efb347

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

contrib/mmts/multimaster.c

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
#include "funcapi.h"
1414
#include "fmgr.h"
1515
#include "miscadmin.h"
16+
1617
#include "libpq-fe.h"
18+
#include "common/username.h"
19+
1720
#include "postmaster/postmaster.h"
1821
#include "postmaster/bgworker.h"
1922
#include "storage/lwlock.h"
@@ -1933,21 +1936,31 @@ static void MtmSplitConnStrs(void)
19331936
elog(ERROR, "Database is not specified in connection string: '%s'", connStr);
19341937

19351938
if (dbUser == NULL)
1936-
elog(ERROR, "Database user is not specified in connection string: '%s'", connStr);
1939+
{
1940+
char *errstr;
1941+
const char *username = get_user_name(&errstr);
1942+
if (!username)
1943+
elog(FATAL, "Database user is not specified in connection string '%s', fallback failed: %s", connStr, errstr);
1944+
else
1945+
elog(WARNING, "Database user is not specified in connection string '%s', fallback to '%s'", connStr, username);
1946+
MtmDatabaseUser = pstrdup(username);
1947+
}
1948+
else
1949+
{
1950+
dbUser += 5;
1951+
end = strchr(dbUser, ' ');
1952+
if (!end) end = strchr(dbUser, '\0');
1953+
Assert(end != NULL);
1954+
len = end - dbUser;
1955+
MtmDatabaseUser = pnstrdup(dbUser, len);
1956+
}
19371957

19381958
dbName += 7;
1939-
for (end = dbName; *end != ' ' && *end != '\0'; end++);
1959+
end = strchr(dbName, ' ');
1960+
if (!end) end = strchr(dbName, '\0');
1961+
Assert(end != NULL);
19401962
len = end - dbName;
1941-
MtmDatabaseName = (char*)palloc(len + 1);
1942-
memcpy(MtmDatabaseName, dbName, len);
1943-
MtmDatabaseName[len] = '\0';
1944-
1945-
dbUser += 5;
1946-
for (end = dbUser; *end != ' ' && *end != '\0'; end++);
1947-
len = end - dbUser;
1948-
MtmDatabaseUser = (char*)palloc(len + 1);
1949-
memcpy(MtmDatabaseUser, dbUser, len);
1950-
MtmDatabaseUser[len] = '\0';
1963+
MtmDatabaseName = pnstrdup(dbName, len);
19511964
}
19521965
connStr = p + 1;
19531966
}

0 commit comments

Comments
 (0)