|
13 | 13 | #include"funcapi.h"
|
14 | 14 | #include"fmgr.h"
|
15 | 15 | #include"miscadmin.h"
|
| 16 | + |
16 | 17 | #include"libpq-fe.h"
|
| 18 | +#include"common/username.h" |
| 19 | + |
17 | 20 | #include"postmaster/postmaster.h"
|
18 | 21 | #include"postmaster/bgworker.h"
|
19 | 22 | #include"storage/lwlock.h"
|
@@ -1931,21 +1934,31 @@ static void MtmSplitConnStrs(void)
|
1931 | 1934 | elog(ERROR,"Database is not specified in connection string: '%s'",connStr);
|
1932 | 1935 |
|
1933 | 1936 | if (dbUser==NULL)
|
1934 |
| -elog(ERROR,"Database user is not specified in connection string: '%s'",connStr); |
| 1937 | +{ |
| 1938 | +char*errstr; |
| 1939 | +constchar*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 | +} |
1935 | 1955 |
|
1936 | 1956 | 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); |
1938 | 1960 | 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); |
1949 | 1962 | }
|
1950 | 1963 | connStr=p+1;
|
1951 | 1964 | }
|
|