Files
haikuports/dev-db/postgresql/patches/postgresql-16.10.patchset
2025-09-05 05:29:20 +00:00

698 lines
19 KiB
Plaintext

From 4352aee748a215e2e23be897c7baee39785d63c9 Mon Sep 17 00:00:00 2001
From: Augustin Cavalier <waddlesplash@gmail.com>
Date: Thu, 3 Oct 2019 17:36:43 +0000
Subject: Changes to make Postgresql run on Haiku.
Adapted from Mark Hellegers' 9.3.5 patch.
diff --git a/configure.ac b/configure.ac
index 456c541..ca1e3d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,6 +67,7 @@ case $host_os in
darwin*) template=darwin ;;
dragonfly*) template=netbsd ;;
freebsd*) template=freebsd ;;
+ haiku*) template=haiku ;;
linux*|gnu*|k*bsd*-gnu)
template=linux ;;
mingw*) template=win32 ;;
@@ -1300,12 +1301,12 @@ AC_SEARCH_LIBS(setproctitle, util)
# gcc/clang's sanitizer helper library provides dlopen but not dlsym, thus
# when enabling asan the dlopen check doesn't notice that -ldl is actually
# required. Just checking for dlsym() ought to suffice.
-AC_SEARCH_LIBS(dlsym, dl)
-AC_SEARCH_LIBS(socket, [socket ws2_32])
+AC_SEARCH_LIBS(dlopen, [rt root])
+AC_SEARCH_LIBS(socket, [socket ws2_32 network])
AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
-AC_SEARCH_LIBS(shm_open, rt)
-AC_SEARCH_LIBS(shm_unlink, rt)
-AC_SEARCH_LIBS(clock_gettime, [rt posix4])
+AC_SEARCH_LIBS(shm_open, [rt root])
+AC_SEARCH_LIBS(shm_unlink, [rt root])
+AC_SEARCH_LIBS(clock_gettime, [rt posix4 root])
# Solaris:
AC_SEARCH_LIBS(fdatasync, [rt posix4])
# Cygwin:
@@ -2066,7 +2067,10 @@ AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignme
# Some platforms predefine the types int8, int16, etc. Only check
# a (hopefully) representative subset.
AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [],
-[#include <stdio.h>])
+[#include <stdio.h>
+#ifdef __HAIKU__
+#include <SupportDefs.h>
+#endif])
# Some compilers offer a 128-bit integer scalar type.
PGAC_TYPE_128BIT_INT
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index ce05cc1..9a6ce21 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -773,6 +773,20 @@ endif
# Not really standard libc functions, used by the backend.
TAS = @TAS@
+##########################################################################
+#
+# Packaging on Haiku puts everything in a postgresql directory
+# Force the override into postgresql directory
+
+ifndef PGXS
+ifeq ($(PORTNAME), haiku)
+override datadir := $(datadir)/postgresql
+override sysconfdir := $(sysconfdir)/postgresql
+override pkglibdir := $(pkglibdir)/postgresql
+override pkgincludedir := $(pkgincludedir)/postgresql
+override docdir := $(docdir)/postgresql
+endif
+endif
##########################################################################
#
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index f94d59d..b8af31b 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -219,6 +219,12 @@ ifeq ($(PORTNAME), win32)
haslibarule = yes
endif
+ifeq ($(PORTNAME), haiku)
+ ifdef SO_MAJOR_VERSION
+ shlib = lib$(NAME)$(DLSUFFIX)
+ endif
+ LINK.shared = $(CC) -shared
+endif
# If the shared library doesn't have an export file, mark all symbols not
# explicitly exported using PGDLLEXPORT as hidden. We can't pass these flags
@@ -272,6 +278,7 @@ $(stlib): $(shlib)
endif # aix
ifeq (,$(filter cygwin win32,$(PORTNAME)))
+ifneq ($(PORTNAME), haiku)
# Normal case
$(shlib): $(OBJS) | $(SHLIB_PREREQS)
@@ -305,6 +312,14 @@ $(exports_file): $(SHLIB_EXPORTS)
endif
endif
+else # PORTNAME == haiku
+
+# Haiku case
+$(shlib): $(OBJS)
+ $(LINK.shared) $(LDFLAGS_SL) -o $@ $(OBJS) $(SHLIB_LINK)
+
+endif # PORTNAME == haiku
+
else # PORTNAME == cygwin || PORTNAME == win32
ifeq ($(PORTNAME), cygwin)
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 4947388..61c8e4a 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1299,7 +1299,7 @@ DropObjectById(const ObjectAddress *object)
* *depRel is the already-open pg_depend relation.
*/
static void
-deleteOneObject(const ObjectAddress *object, Relation *depRel, int flags)
+deleteOneObject(const ObjectAddress *object, Relation *depRel, int32 flags)
{
ScanKeyData key[3];
int nkeys;
diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c
index 21b5726..653ae98 100644
--- a/src/backend/executor/nodeMergeAppend.c
+++ b/src/backend/executor/nodeMergeAppend.c
@@ -52,7 +52,7 @@
typedef int32 SlotNumber;
static TupleTableSlot *ExecMergeAppend(PlanState *pstate);
-static int heap_compare_slots(Datum a, Datum b, void *arg);
+static int32 heap_compare_slots(Datum a, Datum b, void *arg);
/* ----------------------------------------------------------------
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index 84d65aa..8a47589 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -387,7 +387,7 @@ help(const char *progname)
static void
check_root(const char *progname)
{
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__HAIKU__)
if (geteuid() == 0)
{
write_stderr("\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -411,7 +411,10 @@ check_root(const char *progname)
progname);
exit(1);
}
-#else /* WIN32 */
+#elif defined(__HAIKU__)
+ {
+ }
+#else /* WIN32 or HAIKU */
if (pgwin32_is_admin())
{
write_stderr("Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -421,7 +424,7 @@ check_root(const char *progname)
"more information on how to properly start the server.\n");
exit(1);
}
-#endif /* WIN32 */
+#endif /* WIN32 or HAIKU */
}
/*
diff --git a/src/backend/port/Makefile b/src/backend/port/Makefile
index 2d00b4f..f67d1d9 100644
--- a/src/backend/port/Makefile
+++ b/src/backend/port/Makefile
@@ -31,6 +31,10 @@ ifeq ($(PORTNAME), win32)
SUBDIRS += win32
endif
+ifeq ($(PORTNAME), haiku)
+SUBDIRS += haiku
+endif
+
include $(top_srcdir)/src/backend/common.mk
tas.o: tas.s
diff --git a/src/backend/port/dynloader/haiku.c b/src/backend/port/dynloader/haiku.c
new file mode 100644
index 0000000..db24966
--- /dev/null
+++ b/src/backend/port/dynloader/haiku.c
@@ -0,0 +1,6 @@
+/* src/backend/port/dynloader/haiku.c */
+
+/* Dummy file used for nothing at this point
+ *
+ * see haiku.h
+ */
diff --git a/src/backend/port/dynloader/haiku.h b/src/backend/port/dynloader/haiku.h
new file mode 100644
index 0000000..61ffb51
--- /dev/null
+++ b/src/backend/port/dynloader/haiku.h
@@ -0,0 +1,33 @@
+/*-------------------------------------------------------------------------
+ *
+ * haiku.h
+ * port-specific prototypes for Haiku
+ *
+ *
+ * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/backend/port/dynloader/haiku.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PORT_PROTOS_H
+#define PORT_PROTOS_H
+
+#include <dlfcn.h>
+#include "utils/dynamic_loader.h" /* pgrminclude ignore */
+
+/*
+ * Dynamic Loader on Haiku.
+ *
+ * this dynamic loader uses the system dynamic loading interface for shared
+ * libraries (ie. dlopen/dlsym/dlclose). The user must specify a shared
+ * library as the file to be dynamically loaded.
+ */
+
+#define pg_dlopen(f) dlopen((f), RTLD_NOW | RTLD_GLOBAL)
+#define pg_dlsym dlsym
+#define pg_dlclose dlclose
+#define pg_dlerror dlerror
+
+#endif /* PORT_PROTOS_H */
diff --git a/src/backend/port/haiku/Makefile b/src/backend/port/haiku/Makefile
new file mode 100644
index 0000000..f0664c0
--- /dev/null
+++ b/src/backend/port/haiku/Makefile
@@ -0,0 +1,14 @@
+#-------------------------------------------------------------------------
+#
+# Makefile--
+# Makefile for port/haiku
+#
+#-------------------------------------------------------------------------
+
+subdir = src/backend/port/haiku
+top_builddir = ../../../..
+include $(top_builddir)/src/Makefile.global
+
+OBJS = shm.o
+
+include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/port/haiku/shm.c b/src/backend/port/haiku/shm.c
new file mode 100644
index 0000000..55a9dc7
--- /dev/null
+++ b/src/backend/port/haiku/shm.c
@@ -0,0 +1,144 @@
+/*-------------------------------------------------------------------------
+ *
+ * shm.c
+ * Haiku System V Shared Memory Emulation
+ *
+ * Copyright (c) 1999-2001, Cyril VELTER
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#include <OS.h>
+#include "postgres.h"
+#include <errno.h>
+#include <sys/ipc.h>
+
+/* Emulating SYS shared memory with beos areas. WARNING : fork clone
+areas in copy on write mode */
+
+/* Detach from a shared mem area based on its address */
+int
+shmdt(char *shmaddr)
+{
+ /* Find area id for this address */
+ area_id s;
+
+ s = area_for(shmaddr);
+
+ /* Delete area */
+ return delete_area(s);
+}
+
+/* Attach to an existing area */
+int *
+shmat(int memId, int m1, int m2)
+{
+ /* Get our team id */
+ thread_info thinfo;
+ team_info teinfo;
+ area_info ainfo;
+
+ get_thread_info(find_thread(NULL), &thinfo);
+ get_team_info(thinfo.team, &teinfo);
+
+ /* Get area teamid */
+ if (get_area_info(memId, &ainfo) != B_OK)
+ printf("AREA %d Invalide\n", memId);
+
+ if (ainfo.team == teinfo.team)
+ {
+ /*
+ * the area is already in our address space, just return the address
+ */
+ return (int *) ainfo.address;
+ }
+ else
+ {
+ /*
+ * the area is not in our address space, clone it before and return
+ * the address
+ */
+ area_id narea;
+
+ narea = clone_area(ainfo.name, &(ainfo.address), B_CLONE_ADDRESS, B_READ_AREA | B_WRITE_AREA, memId);
+ get_area_info(narea, &ainfo);
+ return (int *) ainfo.address;
+ }
+}
+
+/* Control a shared mem area */
+int
+shmctl(int shmid, int flag, struct shmid_ds * dummy)
+{
+ if (flag == IPC_RMID)
+ {
+ /* Delete the area */
+ delete_area(shmid);
+ return 0;
+ }
+ if (flag == IPC_STAT)
+ {
+ /* Find any SYSV area with the shmid in its name */
+
+ area_info inf;
+ team_info infteam;
+ int32 cookteam = 0;
+ char name[50];
+
+ sprintf(name, "SYSV_IPC %d", shmid);
+
+ dummy->shm_nattch = 0;
+
+ while (get_next_team_info(&cookteam, &infteam) == B_OK)
+ {
+ int32 cook = 0;
+
+ while (get_next_area_info(infteam.team, &cook, &inf) == B_OK)
+ {
+ if (strcmp(name, inf.name) == 0)
+ dummy->shm_nattch++;
+ }
+ }
+
+ errno = 0;
+ return 0;
+ }
+ errno = EINVAL;
+ return -1;
+}
+
+/* Get an area based on the IPC key */
+int
+shmget(int memKey, int size, int flag)
+{
+ char nom[50];
+ void *Address;
+ area_id parea;
+ area_id original;
+ area_id clone;
+
+ /* Area name */
+ sprintf(nom, "SYSV_IPC_SHM : %d", memKey);
+
+ /* Find area */
+ parea = find_area(nom);
+
+ /* area exist, just return its id */
+ if (parea != B_NAME_NOT_FOUND)
+ return parea;
+
+ /* area does not exist and no creation is requested : error */
+ if (flag == 0)
+ return -1;
+
+ /*
+ * area does not exist and its creation is requested, create it (be sure
+ * to have a 4ko multiple size
+ */
+ original = create_area(nom, &Address, B_ANY_ADDRESS, ((size / 4096) + 1) * 4096, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
+
+ clone = clone_area(nom, &Address, B_CLONE_ADDRESS, B_READ_AREA | B_WRITE_AREA, original);
+
+ return original;
+
+}
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 73d6a61..4aa25eb 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -5091,7 +5091,7 @@ ShowUsage(const char *title)
(long) user.tv_usec,
(long) sys.tv_sec,
(long) sys.tv_usec);
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__HAIKU__)
/*
* The following rusage fields are not defined by POSIX, but they're
diff --git a/src/backend/tsearch/ts_parse.c b/src/backend/tsearch/ts_parse.c
index c347129..d6b6fbc 100644
--- a/src/backend/tsearch/ts_parse.c
+++ b/src/backend/tsearch/ts_parse.c
@@ -352,7 +352,7 @@ LexizeExec(LexizeData *ld, ParsedLex **correspondLexem)
* prs will be filled in.
*/
void
-parsetext(Oid cfgId, ParsedText *prs, char *buf, int buflen)
+parsetext(Oid cfgId, ParsedText *prs, char *buf, int32 buflen)
{
int type,
lenlemm = 0; /* silence compiler warning */
@@ -537,7 +537,7 @@ addHLParsedLex(HeadlineParsedText *prs, TSQuery query, ParsedLex *lexs, TSLexeme
}
void
-hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query, char *buf, int buflen)
+hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query, char *buf, int32 buflen)
{
int type,
lenlemm = 0; /* silence compiler warning */
diff --git a/src/backend/utils/adt/tsquery_cleanup.c b/src/backend/utils/adt/tsquery_cleanup.c
index dc31665..eb8f463 100644
--- a/src/backend/utils/adt/tsquery_cleanup.c
+++ b/src/backend/utils/adt/tsquery_cleanup.c
@@ -187,7 +187,7 @@ clean_NOT_intree(NODE *node)
}
QueryItem *
-clean_NOT(QueryItem *ptr, int *len)
+clean_NOT(QueryItem *ptr, int32 *len)
{
NODE *root = maketree(ptr);
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 3dbade0..e5e6af3 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -809,7 +809,7 @@ get_id(void)
{
const char *username;
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__HAIKU__)
if (geteuid() == 0) /* 0 is root's uid */
{
pg_log_error("cannot be run as root");
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 1465b19..1a65c8b 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -2244,7 +2244,7 @@ main(int argc, char **argv)
/*
* Disallow running as root, to forestall any possible security holes.
*/
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__HAIKU__)
if (geteuid() == 0)
{
write_stderr(_("%s: cannot be run as root\n"
diff --git a/src/include/c.h b/src/include/c.h
index a7258cc..47d5599 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -55,6 +55,11 @@
#include "pg_config_manual.h" /* must be after pg_config.h */
#include "pg_config_os.h" /* must be before any system header files */
+#if defined(__HAIKU__)
+// Haiku defines int (int8, int64, etc) types in SupportDefs.h
+#include <SupportDefs.h>
+#endif
+
/* System header files that should be available everywhere in Postgres */
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/include/port/haiku.h b/src/include/port/haiku.h
new file mode 100644
index 0000000..772a3fe
--- /dev/null
+++ b/src/include/port/haiku.h
@@ -0,0 +1,16 @@
+/* src/include/port/haiku.h */
+
+/* Haiku doesn't have all the required getrusage fields */
+//#undef HAVE_GETRUSAGE
+
+/* Haiku doesn't implement shared memory as needed*/
+struct shmid_ds
+{
+ int dummy;
+ int shm_nattch;
+};
+
+int shmdt(char *shmaddr);
+int *shmat(int memId, int m1, int m2);
+int shmctl(int shmid, int flag, struct shmid_ds * dummy);
+int shmget(int memKey, int size, int flag);
diff --git a/src/include/storage/dsm_impl.h b/src/include/storage/dsm_impl.h
index daf07bd..60ecf2e 100644
--- a/src/include/storage/dsm_impl.h
+++ b/src/include/storage/dsm_impl.h
@@ -31,10 +31,12 @@
#define USE_DSM_POSIX
#define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE DSM_IMPL_POSIX
#endif
+#ifndef __HAIKU__
#define USE_DSM_SYSV
#ifndef DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE
#define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE DSM_IMPL_SYSV
#endif
+#endif
#define USE_DSM_MMAP
#endif
diff --git a/src/makefiles/Makefile.haiku b/src/makefiles/Makefile.haiku
new file mode 100644
index 0000000..249d6c3
--- /dev/null
+++ b/src/makefiles/Makefile.haiku
@@ -0,0 +1,7 @@
+AROPT = crs
+
+DLSUFFIX = .so
+
+# Rule for building a shared library from a single .o file
+%.so: %.o
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
diff --git a/src/template/haiku b/src/template/haiku
new file mode 100644
index 0000000..e69de29
--
2.50.1
From 695f1d11255ebafa6d14ead86d2c0fd002af154a Mon Sep 17 00:00:00 2001
From: begasus <begasus@gmail.com>
Date: Mon, 26 Dec 2022 17:35:12 +0100
Subject: adjust autoconf required version
diff --git a/configure.ac b/configure.ac
index ca1e3d6..59cc28c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,7 @@ m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
AC_INIT([PostgreSQL], [16.10], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
-m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
+m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.71], [], [m4_fatal([Autoconf version 2.69 is required.
Untested combinations of 'autoconf' and PostgreSQL versions are not
recommended. You can remove the check from 'configure.ac' but it is then
your responsibility whether the result works or not.])])
--
2.50.1
From 248c7108341e063eed1c10dad3b23764eae87d4d Mon Sep 17 00:00:00 2001
From: Schrijvers Luc <begasus@gmail.com>
Date: Fri, 30 Aug 2024 17:54:01 +0200
Subject: Fix 32bit build
diff --git a/src/include/c.h b/src/include/c.h
index 47d5599..5d03ebe 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -477,6 +477,9 @@ typedef char *Pointer;
* used for numerical computations and the
* frontend/backend protocol.
*/
+#ifdef __HAIKU__
+#include <SupportDefs.h>
+#else
#ifndef HAVE_INT8
typedef signed char int8; /* == 8 bits */
typedef signed short int16; /* == 16 bits */
@@ -494,7 +497,7 @@ typedef unsigned char uint8; /* == 8 bits */
typedef unsigned short uint16; /* == 16 bits */
typedef unsigned int uint32; /* == 32 bits */
#endif /* not HAVE_UINT8 */
-
+#endif
/*
* bitsN
* Unit of bitwise operation, AT LEAST N BITS IN SIZE.
--
2.50.1
From a6bed08d630682e0c97e3d95ae1a68951cecaebf Mon Sep 17 00:00:00 2001
From: Luc Schrijvers <begasus@gmail.com>
Date: Sun, 31 Aug 2025 08:59:11 +0200
Subject: Disable #include <sys/shm.h>
diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c
index eaba244..7e0fd71 100644
--- a/src/backend/port/sysv_shmem.c
+++ b/src/backend/port/sysv_shmem.c
@@ -24,7 +24,9 @@
#include <sys/file.h>
#include <sys/ipc.h>
#include <sys/mman.h>
+#ifndef __HAIKU__
#include <sys/shm.h>
+#endif
#include <sys/stat.h>
#include "miscadmin.h"
diff --git a/src/backend/storage/ipc/dsm_impl.c b/src/backend/storage/ipc/dsm_impl.c
index 0ac0035..6bdd42d 100644
--- a/src/backend/storage/ipc/dsm_impl.c
+++ b/src/backend/storage/ipc/dsm_impl.c
@@ -54,7 +54,9 @@
#ifndef WIN32
#include <sys/mman.h>
#include <sys/ipc.h>
+#ifndef __HAIKU__
#include <sys/shm.h>
+#endif
#include <sys/stat.h>
#endif
--
2.50.1
From a2daae78bcf41114edd67aafc34b38be2ca9185c Mon Sep 17 00:00:00 2001
From: Luc Schrijvers <begasus@gmail.com>
Date: Sun, 31 Aug 2025 09:02:48 +0200
Subject: Fix(?) for fdatasync
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index ee91bb7..1421be6 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -459,7 +459,7 @@ pg_fdatasync(int fd)
return 0;
retry:
- rc = fdatasync(fd);
+ rc = fsync(fd);
if (rc == -1 && errno == EINTR)
goto retry;
diff --git a/src/bin/pg_test_fsync/pg_test_fsync.c b/src/bin/pg_test_fsync/pg_test_fsync.c
index 435df8d..eb81094 100644
--- a/src/bin/pg_test_fsync/pg_test_fsync.c
+++ b/src/bin/pg_test_fsync/pg_test_fsync.c
@@ -328,7 +328,7 @@ test_sync(int writes_per_op)
/*
* Test fdatasync if available
*/
- printf(LABEL_FORMAT, "fdatasync");
+ printf(LABEL_FORMAT, "fsync");
fflush(stdout);
if ((tmpfile = open(filename, O_RDWR | PG_BINARY, 0)) == -1)
@@ -342,7 +342,7 @@ test_sync(int writes_per_op)
XLOG_BLCKSZ,
writes * XLOG_BLCKSZ) != XLOG_BLCKSZ)
die("write failed");
- fdatasync(tmpfile);
+ fsync(tmpfile);
}
STOP_TIMER;
close(tmpfile);
--
2.50.1