aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/postgresql/src/backend
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2023-08-29 19:36:18 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2023-08-30 01:14:59 +0300
commita05826a29a408f0c7122d7b5b63ae686bdb53c7e (patch)
tree8de87c7bec203c098c38f419f8731570d50447db /contrib/libs/postgresql/src/backend
parent7563368187b7c65f64abbf2418713fd3ebd51949 (diff)
downloadydb-a05826a29a408f0c7122d7b5b63ae686bdb53c7e.tar.gz
Update contrib/libs/postgresql to 15.1
Diffstat (limited to 'contrib/libs/postgresql/src/backend')
-rw-r--r--contrib/libs/postgresql/src/backend/port/posix_sema.c2
-rw-r--r--contrib/libs/postgresql/src/backend/port/sysv_shmem.c51
-rw-r--r--contrib/libs/postgresql/src/backend/port/win32/crashdump.c4
-rw-r--r--contrib/libs/postgresql/src/backend/port/win32/signal.c14
-rw-r--r--contrib/libs/postgresql/src/backend/port/win32/socket.c13
-rw-r--r--contrib/libs/postgresql/src/backend/port/win32/timer.c2
-rw-r--r--contrib/libs/postgresql/src/backend/port/win32_sema.c2
-rw-r--r--contrib/libs/postgresql/src/backend/port/win32_shmem.c16
8 files changed, 74 insertions, 30 deletions
diff --git a/contrib/libs/postgresql/src/backend/port/posix_sema.c b/contrib/libs/postgresql/src/backend/port/posix_sema.c
index 114da3b30cb..a97a3ed99ee 100644
--- a/contrib/libs/postgresql/src/backend/port/posix_sema.c
+++ b/contrib/libs/postgresql/src/backend/port/posix_sema.c
@@ -15,7 +15,7 @@
* forked backends, but they could not be accessed by exec'd backends.
*
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
diff --git a/contrib/libs/postgresql/src/backend/port/sysv_shmem.c b/contrib/libs/postgresql/src/backend/port/sysv_shmem.c
index 35cce89e9c9..ea287c733df 100644
--- a/contrib/libs/postgresql/src/backend/port/sysv_shmem.c
+++ b/contrib/libs/postgresql/src/backend/port/sysv_shmem.c
@@ -9,7 +9,7 @@
* exist, though, because mmap'd shmem provides no way to find out how
* many processes are attached, which we need for interlocking purposes.
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
@@ -289,7 +289,7 @@ static void
IpcMemoryDetach(int status, Datum shmaddr)
{
/* Detach System V shared memory block. */
- if (shmdt(DatumGetPointer(shmaddr)) < 0)
+ if (shmdt((void *) DatumGetPointer(shmaddr)) < 0)
elog(LOG, "shmdt(%p) failed: %m", DatumGetPointer(shmaddr));
}
@@ -323,7 +323,7 @@ PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2)
IpcMemoryState state;
state = PGSharedMemoryAttach((IpcMemoryId) id2, NULL, &memAddress);
- if (memAddress && shmdt(memAddress) < 0)
+ if (memAddress && shmdt((void *) memAddress) < 0)
elog(LOG, "shmdt(%p) failed: %m", memAddress);
switch (state)
{
@@ -456,8 +456,6 @@ PGSharedMemoryAttach(IpcMemoryId shmId,
return shmStat.shm_nattch == 0 ? SHMSTATE_UNATTACHED : SHMSTATE_ATTACHED;
}
-#ifdef MAP_HUGETLB
-
/*
* Identify the huge page size to use, and compute the related mmap flags.
*
@@ -475,13 +473,19 @@ PGSharedMemoryAttach(IpcMemoryId shmId,
* hugepage sizes, we might want to think about more invasive strategies,
* such as increasing shared_buffers to absorb the extra space.
*
- * Returns the (real, assumed or config provided) page size into *hugepagesize,
- * and the hugepage-related mmap flags to use into *mmap_flags.
+ * Returns the (real, assumed or config provided) page size into
+ * *hugepagesize, and the hugepage-related mmap flags to use into
+ * *mmap_flags if requested by the caller. If huge pages are not supported,
+ * *hugepagesize and *mmap_flags are set to 0.
*/
-static void
+void
GetHugePageSize(Size *hugepagesize, int *mmap_flags)
{
+#ifdef MAP_HUGETLB
+
Size default_hugepagesize = 0;
+ Size hugepagesize_local = 0;
+ int mmap_flags_local = 0;
/*
* System-dependent code to find out the default huge page size.
@@ -519,12 +523,12 @@ GetHugePageSize(Size *hugepagesize, int *mmap_flags)
if (huge_page_size != 0)
{
/* If huge page size is requested explicitly, use that. */
- *hugepagesize = (Size) huge_page_size * 1024;
+ hugepagesize_local = (Size) huge_page_size * 1024;
}
else if (default_hugepagesize != 0)
{
/* Otherwise use the system default, if we have it. */
- *hugepagesize = default_hugepagesize;
+ hugepagesize_local = default_hugepagesize;
}
else
{
@@ -536,26 +540,39 @@ GetHugePageSize(Size *hugepagesize, int *mmap_flags)
* writing, there are no reports of any non-Linux systems being picky
* about that.
*/
- *hugepagesize = 2 * 1024 * 1024;
+ hugepagesize_local = 2 * 1024 * 1024;
}
- *mmap_flags = MAP_HUGETLB;
+ mmap_flags_local = MAP_HUGETLB;
/*
* On recent enough Linux, also include the explicit page size, if
* necessary.
*/
#if defined(MAP_HUGE_MASK) && defined(MAP_HUGE_SHIFT)
- if (*hugepagesize != default_hugepagesize)
+ if (hugepagesize_local != default_hugepagesize)
{
- int shift = pg_ceil_log2_64(*hugepagesize);
+ int shift = pg_ceil_log2_64(hugepagesize_local);
- *mmap_flags |= (shift & MAP_HUGE_MASK) << MAP_HUGE_SHIFT;
+ mmap_flags_local |= (shift & MAP_HUGE_MASK) << MAP_HUGE_SHIFT;
}
#endif
-}
+
+ /* assign the results found */
+ if (mmap_flags)
+ *mmap_flags = mmap_flags_local;
+ if (hugepagesize)
+ *hugepagesize = hugepagesize_local;
+
+#else
+
+ if (hugepagesize)
+ *hugepagesize = 0;
+ if (mmap_flags)
+ *mmap_flags = 0;
#endif /* MAP_HUGETLB */
+}
/*
* Creates an anonymous mmap()ed shared memory segment.
@@ -790,7 +807,7 @@ PGSharedMemoryCreate(Size size,
break;
}
- if (oldhdr && shmdt(oldhdr) < 0)
+ if (oldhdr && shmdt((void *) oldhdr) < 0)
elog(LOG, "shmdt(%p) failed: %m", oldhdr);
}
diff --git a/contrib/libs/postgresql/src/backend/port/win32/crashdump.c b/contrib/libs/postgresql/src/backend/port/win32/crashdump.c
index 45b6696ba17..cea7be2896c 100644
--- a/contrib/libs/postgresql/src/backend/port/win32/crashdump.c
+++ b/contrib/libs/postgresql/src/backend/port/win32/crashdump.c
@@ -28,7 +28,7 @@
* be added, though at the cost of a greater chance of the crash dump failing.
*
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/port/win32/crashdump.c
@@ -38,8 +38,6 @@
#include "postgres.h"
-#define WIN32_LEAN_AND_MEAN
-
/*
* Some versions of the MS SDK contain "typedef enum { ... } ;" which the MS
* compiler quite sanely complains about. Well done, Microsoft.
diff --git a/contrib/libs/postgresql/src/backend/port/win32/signal.c b/contrib/libs/postgresql/src/backend/port/win32/signal.c
index 580a517f3f5..b71164d8dbd 100644
--- a/contrib/libs/postgresql/src/backend/port/win32/signal.c
+++ b/contrib/libs/postgresql/src/backend/port/win32/signal.c
@@ -3,7 +3,7 @@
* signal.c
* Microsoft Windows Win32 Signal Emulation Functions
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/port/win32/signal.c
@@ -52,7 +52,17 @@ static BOOL WINAPI pg_console_handler(DWORD dwCtrlType);
void
pg_usleep(long microsec)
{
- Assert(pgwin32_signal_event != NULL);
+ if (unlikely(pgwin32_signal_event == NULL))
+ {
+ /*
+ * If we're reached by pgwin32_open_handle() early in startup before
+ * the signal event is set up, just fall back to a regular
+ * non-interruptible sleep.
+ */
+ SleepEx((microsec < 500 ? 1 : (microsec + 500) / 1000), FALSE);
+ return;
+ }
+
if (WaitForSingleObject(pgwin32_signal_event,
(microsec < 500 ? 1 : (microsec + 500) / 1000))
== WAIT_OBJECT_0)
diff --git a/contrib/libs/postgresql/src/backend/port/win32/socket.c b/contrib/libs/postgresql/src/backend/port/win32/socket.c
index af151e84709..52944a0d332 100644
--- a/contrib/libs/postgresql/src/backend/port/win32/socket.c
+++ b/contrib/libs/postgresql/src/backend/port/win32/socket.c
@@ -3,7 +3,7 @@
* socket.c
* Microsoft Windows Win32 Socket Functions
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/port/win32/socket.c
@@ -47,8 +47,8 @@ int pgwin32_noblock = 0;
*
* Note: where there is a direct correspondence between a WSAxxx error code
* and a Berkeley error symbol, this mapping is actually a no-op, because
- * in win32.h we redefine the network-related Berkeley error symbols to have
- * the values of their WSAxxx counterparts. The point of the switch is
+ * in win32_port.h we redefine the network-related Berkeley error symbols to
+ * have the values of their WSAxxx counterparts. The point of the switch is
* mostly to translate near-miss error codes into something that's sensible
* in the Berkeley universe.
*/
@@ -141,10 +141,15 @@ TranslateSocketError(void)
case WSAEDISCON:
errno = ENOTCONN;
break;
+ case WSAETIMEDOUT:
+ errno = ETIMEDOUT;
+ break;
default:
ereport(NOTICE,
- (errmsg_internal("unrecognized win32 socket error code: %d", WSAGetLastError())));
+ (errmsg_internal("unrecognized win32 socket error code: %d",
+ WSAGetLastError())));
errno = EINVAL;
+ break;
}
}
diff --git a/contrib/libs/postgresql/src/backend/port/win32/timer.c b/contrib/libs/postgresql/src/backend/port/win32/timer.c
index 53fdae9468b..3405253af30 100644
--- a/contrib/libs/postgresql/src/backend/port/win32/timer.c
+++ b/contrib/libs/postgresql/src/backend/port/win32/timer.c
@@ -8,7 +8,7 @@
* - Does not support interval timer (value->it_interval)
* - Only supports ITIMER_REAL
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/port/win32/timer.c
diff --git a/contrib/libs/postgresql/src/backend/port/win32_sema.c b/contrib/libs/postgresql/src/backend/port/win32_sema.c
index 858b88adae8..8e9c0f93074 100644
--- a/contrib/libs/postgresql/src/backend/port/win32_sema.c
+++ b/contrib/libs/postgresql/src/backend/port/win32_sema.c
@@ -3,7 +3,7 @@
* win32_sema.c
* Microsoft Windows Win32 Semaphores Emulation
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/port/win32_sema.c
diff --git a/contrib/libs/postgresql/src/backend/port/win32_shmem.c b/contrib/libs/postgresql/src/backend/port/win32_shmem.c
index d7a71992d81..6cf69411db1 100644
--- a/contrib/libs/postgresql/src/backend/port/win32_shmem.c
+++ b/contrib/libs/postgresql/src/backend/port/win32_shmem.c
@@ -3,7 +3,7 @@
* win32_shmem.c
* Implement shared memory using win32 facilities
*
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/port/win32_shmem.c
@@ -605,3 +605,17 @@ pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
return true;
}
+
+/*
+ * This function is provided for consistency with sysv_shmem.c and does not
+ * provide any useful information for Windows. To obtain the large page size,
+ * use GetLargePageMinimum() instead.
+ */
+void
+GetHugePageSize(Size *hugepagesize, int *mmap_flags)
+{
+ if (hugepagesize)
+ *hugepagesize = 0;
+ if (mmap_flags)
+ *mmap_flags = 0;
+}