mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-26 12:45:20 +03:00
it fails to build with postgresql 12. move to unmaintained to unblock the builders til someone has time to look at it.
51 lines
1.6 KiB
Diff
51 lines
1.6 KiB
Diff
diff --git a/pglogical_apply_spi.c b/pglogical_apply_spi.c
|
|
index 3eaccc4..111a4eb 100644
|
|
--- a/pglogical_apply_spi.c
|
|
+++ b/pglogical_apply_spi.c
|
|
@@ -454,7 +454,7 @@ static void
|
|
pglogical_proccess_copy(pglogical_copyState *pglcstate)
|
|
{
|
|
uint64 processed;
|
|
- FILE *save_stdin;
|
|
+ int save_stdin;
|
|
|
|
if (!pglcstate->copy_parsetree || !pglcstate->copy_buffered_tuples)
|
|
return;
|
|
@@ -489,8 +489,16 @@ pglogical_proccess_copy(pglogical_copyState *pglcstate)
|
|
* for this relation. Before that we save the current 'stdin' stream and
|
|
* restore it back when the COPY is done
|
|
*/
|
|
- save_stdin = stdin;
|
|
- stdin = pglcstate->copy_read_file;
|
|
+ save_stdin = dup(fileno(stdin));
|
|
+ if (save_stdin < 0)
|
|
+ ereport(FATAL,
|
|
+ (errcode_for_file_access(),
|
|
+ errmsg("could not save stdin: %m")));
|
|
+
|
|
+ if (dup2(fileno(pglcstate->copy_read_file), fileno(stdin)) < 0)
|
|
+ ereport(FATAL,
|
|
+ (errcode_for_file_access(),
|
|
+ errmsg("could not redirect stdin: %m")));
|
|
|
|
/* COPY may call into SPI (triggers, ...) and we already are in SPI. */
|
|
SPI_push();
|
|
@@ -501,10 +509,17 @@ pglogical_proccess_copy(pglogical_copyState *pglcstate)
|
|
|
|
/* Clean up SPI state */
|
|
SPI_pop();
|
|
+ /*
|
|
+ * Also close the read end of the pipe and restore 'stdin' to its original
|
|
+ * value
|
|
+ */
|
|
+ if (dup2(save_stdin, fileno(stdin)) < 0)
|
|
+ ereport(FATAL,
|
|
+ (errcode_for_file_access(),
|
|
+ errmsg("could not restore stdin: %m")));
|
|
|
|
fclose(pglcstate->copy_read_file);
|
|
pglcstate->copy_read_file = NULL;
|
|
- stdin = save_stdin;
|
|
|
|
/* Ensure we processed correct number of tuples */
|
|
Assert(processed == pglcstate->copy_buffered_tuples);
|