|
|
@ -287,9 +287,12 @@ pg_tablespace_location(PG_FUNCTION_ARGS) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
snprintf(sourcepath, sizeof(sourcepath), "pg_tblspc/%u", tablespaceOid); |
|
|
|
snprintf(sourcepath, sizeof(sourcepath), "pg_tblspc/%u", tablespaceOid); |
|
|
|
rllen =readlink(sourcepath, targetpath, sizeof(targetpath)); |
|
|
|
rllen =readlink(sourcepath, targetpath, sizeof(targetpath)); |
|
|
|
if (rllen < 0 || rllen >= sizeof(targetpath)) |
|
|
|
if (rllen < 0) |
|
|
|
ereport(ERROR, |
|
|
|
ereport(ERROR, |
|
|
|
(errmsg("could not read symbolic link \"%s\": %m", sourcepath))); |
|
|
|
(errmsg("could not read symbolic link \"%s\": %m", sourcepath))); |
|
|
|
|
|
|
|
else if (rllen >= sizeof(targetpath)) |
|
|
|
|
|
|
|
ereport(ERROR, |
|
|
|
|
|
|
|
(errmsg("symbolic link \"%s\" target is too long", sourcepath))); |
|
|
|
targetpath[rllen] = '\0'; |
|
|
|
targetpath[rllen] = '\0'; |
|
|
|
|
|
|
|
|
|
|
|
PG_RETURN_TEXT_P(cstring_to_text(targetpath)); |
|
|
|
PG_RETURN_TEXT_P(cstring_to_text(targetpath)); |
|
|
|