0x1A in control file on Windows

Поиск
Список
Период
Сортировка
От ITAGAKI Takahiro
Тема 0x1A in control file on Windows
Дата
Msg-id 20080918112547.80C7.52131E4D@oss.ntt.co.jp
обсуждение исходный текст
Ответы Re: 0x1A in control file on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I found a bug that pg_controldata ends with error if control files
contain 0x1A (Ctrl+Z) on Windows.

We probably need to add PG_BINARY when we open control files
because 0x1A is an end-of-file marker on Windows.
This fix needs to be applied in back versions (8.2, 8.3 and HEAD).


Index: src/bin/pg_controldata/pg_controldata.c
===================================================================
--- src/bin/pg_controldata/pg_controldata.c    (head)
+++ src/bin/pg_controldata/pg_controldata.c    (pg_control_0x1A)
@@ -107,7 +107,7 @@    snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
-    if ((fd = open(ControlFilePath, O_RDONLY, 0)) == -1)
+    if ((fd = open(ControlFilePath, O_RDONLY | PG_BINARY, 0)) == -1)    {        fprintf(stderr, _("%s: could not open
file\"%s\" for reading: %s\n"),                progname, ControlFilePath, strerror(errno));
 
Index: src/bin/pg_resetxlog/pg_resetxlog.c
===================================================================
--- src/bin/pg_resetxlog/pg_resetxlog.c    (head)
+++ src/bin/pg_resetxlog/pg_resetxlog.c    (pg_control_0x1A)
@@ -373,7 +373,7 @@    char       *buffer;    pg_crc32    crc;
-    if ((fd = open(XLOG_CONTROL_FILE, O_RDONLY, 0)) < 0)
+    if ((fd = open(XLOG_CONTROL_FILE, O_RDONLY | PG_BINARY, 0)) < 0)    {        /*         * If pg_control is not
thereat all, or we can't read it, the odds
 

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Decibel!
Дата:
Сообщение: Re: New FSM patch
Следующее
От: "Zhe He"
Дата:
Сообщение: Where is Aggregation Attribute