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

Commit 7463957

Browse files
kvapkelvich
authored andcommitted
Make 'user=' optional in mmts conninfo strings.
1 parent fb67c0b commit 7463957

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

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"
@@ -1931,21 +1934,31 @@ static void MtmSplitConnStrs(void)
19311934
elog(ERROR, "Database is not specified in connection string: '%s'", connStr);
19321935

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

19361956
dbName += 7;
1937-
for (end = dbName; *end != ' ' && *end != '\0'; end++);
1957+
end = strchr(dbName, ' ');
1958+
if (!end) end = strchr(dbName, '\0');
1959+
Assert(end != NULL);
19381960
len = end - dbName;
1939-
MtmDatabaseName = (char*)palloc(len + 1);
1940-
memcpy(MtmDatabaseName, dbName, len);
1941-
MtmDatabaseName[len] = '\0';
1942-
1943-
dbUser += 5;
1944-
for (end = dbUser; *end != ' ' && *end != '\0'; end++);
1945-
len = end - dbUser;
1946-
MtmDatabaseUser = (char*)palloc(len + 1);
1947-
memcpy(MtmDatabaseUser, dbUser, len);
1948-
MtmDatabaseUser[len] = '\0';
1961+
MtmDatabaseName = pnstrdup(dbName, len);
19491962
}
19501963
connStr = p + 1;
19511964
}

0 commit comments

Comments
 (0)