mirror of
https://github.com/postgres/postgres.git
synced 2025-07-21 00:01:45 -04:00
Compare commits
2 Commits
bf1c21c4fa
...
3090213690
Author | SHA1 | Date | |
---|---|---|---|
|
3090213690 | ||
|
2371432cd6 |
@ -1803,10 +1803,10 @@ ReleaseBulkInsertStatePin(BulkInsertState bistate)
|
|||||||
bistate->current_buf = InvalidBuffer;
|
bistate->current_buf = InvalidBuffer;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Despite the name, we also reset bulk relation extension
|
* Despite the name, we also reset bulk relation extension state.
|
||||||
* state. Otherwise we can end up erroring out due to looking for free
|
* Otherwise we can end up erroring out due to looking for free space in
|
||||||
* space in ->next_free of one partition, even though ->next_free was set
|
* ->next_free of one partition, even though ->next_free was set when
|
||||||
* when extending another partition. It's obviously also could be bad for
|
* extending another partition. It could obviously also be bad for
|
||||||
* efficiency to look at existing blocks at offsets from another
|
* efficiency to look at existing blocks at offsets from another
|
||||||
* partition, even if we don't error out.
|
* partition, even if we don't error out.
|
||||||
*/
|
*/
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "common/controldata_utils.h"
|
#include "common/controldata_utils.h"
|
||||||
#include "funcapi.h"
|
#include "funcapi.h"
|
||||||
#include "miscadmin.h"
|
#include "miscadmin.h"
|
||||||
|
#include "storage/lwlock.h"
|
||||||
#include "utils/builtins.h"
|
#include "utils/builtins.h"
|
||||||
#include "utils/pg_lsn.h"
|
#include "utils/pg_lsn.h"
|
||||||
#include "utils/timestamp.h"
|
#include "utils/timestamp.h"
|
||||||
@ -42,7 +43,9 @@ pg_control_system(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "return type must be a row type");
|
elog(ERROR, "return type must be a row type");
|
||||||
|
|
||||||
/* read the control file */
|
/* read the control file */
|
||||||
|
LWLockAcquire(ControlFileLock, LW_SHARED);
|
||||||
ControlFile = get_controlfile(DataDir, &crc_ok);
|
ControlFile = get_controlfile(DataDir, &crc_ok);
|
||||||
|
LWLockRelease(ControlFileLock);
|
||||||
if (!crc_ok)
|
if (!crc_ok)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||||
@ -80,7 +83,9 @@ pg_control_checkpoint(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "return type must be a row type");
|
elog(ERROR, "return type must be a row type");
|
||||||
|
|
||||||
/* Read the control file. */
|
/* Read the control file. */
|
||||||
|
LWLockAcquire(ControlFileLock, LW_SHARED);
|
||||||
ControlFile = get_controlfile(DataDir, &crc_ok);
|
ControlFile = get_controlfile(DataDir, &crc_ok);
|
||||||
|
LWLockRelease(ControlFileLock);
|
||||||
if (!crc_ok)
|
if (!crc_ok)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||||
@ -169,7 +174,9 @@ pg_control_recovery(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "return type must be a row type");
|
elog(ERROR, "return type must be a row type");
|
||||||
|
|
||||||
/* read the control file */
|
/* read the control file */
|
||||||
|
LWLockAcquire(ControlFileLock, LW_SHARED);
|
||||||
ControlFile = get_controlfile(DataDir, &crc_ok);
|
ControlFile = get_controlfile(DataDir, &crc_ok);
|
||||||
|
LWLockRelease(ControlFileLock);
|
||||||
if (!crc_ok)
|
if (!crc_ok)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||||
@ -208,7 +215,9 @@ pg_control_init(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "return type must be a row type");
|
elog(ERROR, "return type must be a row type");
|
||||||
|
|
||||||
/* read the control file */
|
/* read the control file */
|
||||||
|
LWLockAcquire(ControlFileLock, LW_SHARED);
|
||||||
ControlFile = get_controlfile(DataDir, &crc_ok);
|
ControlFile = get_controlfile(DataDir, &crc_ok);
|
||||||
|
LWLockRelease(ControlFileLock);
|
||||||
if (!crc_ok)
|
if (!crc_ok)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user