Open output file before sleeping in pg_recvlogical.

Let's complain about e.g an invalid path or permission problem sooner rather
than later. Before this patch, we would only try to open the output file
after receiving the first decoded message from the server.
This commit is contained in:
Heikki Linnakangas 2014-05-16 10:10:45 +03:00
parent 07a4a93a0e
commit e7873b74d9
1 changed files with 17 additions and 17 deletions

View File

@ -315,6 +315,23 @@ StreamLog(void)
}
output_reopen = false;
/* open the output file, if not open yet */
if (outfd == -1)
{
if (strcmp(outfile, "-") == 0)
outfd = fileno(stdout);
else
outfd = open(outfile, O_CREAT | O_APPEND | O_WRONLY | PG_BINARY,
S_IRUSR | S_IWUSR);
if (outfd == -1)
{
fprintf(stderr,
_("%s: could not open log file \"%s\": %s\n"),
progname, outfile, strerror(errno));
goto error;
}
}
r = PQgetCopyData(conn, &copybuf, 1);
if (r == 0)
{
@ -479,23 +496,6 @@ StreamLog(void)
output_written_lsn = Max(temp, output_written_lsn);
}
/* open the output file, if not open yet */
if (outfd == -1)
{
if (strcmp(outfile, "-") == 0)
outfd = fileno(stdout);
else
outfd = open(outfile, O_CREAT | O_APPEND | O_WRONLY | PG_BINARY,
S_IRUSR | S_IWUSR);
if (outfd == -1)
{
fprintf(stderr,
_("%s: could not open log file \"%s\": %s\n"),
progname, outfile, strerror(errno));
goto error;
}
}
bytes_left = r - hdr_len;
bytes_written = 0;