diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2023-08-29 19:36:18 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2023-08-30 01:14:59 +0300 |
commit | a05826a29a408f0c7122d7b5b63ae686bdb53c7e (patch) | |
tree | 8de87c7bec203c098c38f419f8731570d50447db /contrib/libs/postgresql/src/backend | |
parent | 7563368187b7c65f64abbf2418713fd3ebd51949 (diff) | |
download | ydb-a05826a29a408f0c7122d7b5b63ae686bdb53c7e.tar.gz |
Update contrib/libs/postgresql to 15.1
Diffstat (limited to 'contrib/libs/postgresql/src/backend')
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; +} |