Hello Patrick

I did a review of your patch.

Initial Run
===========
The patch applies cleanly to HEAD (196063d6761). All tests successfully
pass on MacOS 15.7.

Comments
===========
1) Instead of `malloc` and `free` it should be `palloc` and `pfree`.

2) In fact `archiveFileno` is a file descriptor, and the first variable one
is not. I think it's worth to rename them to `archiveFile` and `archiveFd`.
Or maybe even just `file` and `fd` as the scope there is not so big.
>
> FILE   *archiveFd = NULL;
> int archiveFileno;


3)  Variable name `bytesRead` is rare in PG code base. It is used only two
times, while `readBytes` is used four times. Other variants, like `nbytes`
are more common. Let's pick some popular name.

4) Variable name `dwRc` is unique for the PG codebase and not really clear
as for me. How about name it just `exitcode`?

5) `return` is redundant here as it will never be reached.

ereport(FATAL,
>         (errmsg_internal("Failed to malloc win32cmd %m")));
> return false;


6) Same here, `free` and `return` are unreachable due ereport with fatal
level.

> ereport(FATAL,
>         (errmsg("CreateProcess() call failed: %m (error code %lu)",
>                 GetLastError())));
> free(win32cmd);
> return false;


7) This loop can be stuck forever as `WaitForSingleObject` may
return `WAIT_FAILED*` *and it's not always retriable.

> while (true)
> {
>     CHECK_FOR_INTERRUPTS();
>     if (WaitForSingleObject(pi.hProcess, POLL_TIMEOUT_MSEC) ==
> WAIT_OBJECT_0)
>         break;
> }

-- 

<https://www.percona.com/>

Artem Gavrilov
Senior Software Engineer, Percona

[email protected]

Reply via email to