2010-02-26 02:55:35 +01:00
|
|
|
ABITVEC
|
|
|
|
ACCESS_ALLOWED_ACE
|
2018-04-26 20:45:04 +02:00
|
|
|
ACL
|
2010-02-26 02:55:35 +01:00
|
|
|
ACL_SIZE_INFORMATION
|
|
|
|
AFFIX
|
|
|
|
ASN1_INTEGER
|
2016-05-02 15:23:55 +02:00
|
|
|
ASN1_OBJECT
|
2010-02-26 02:55:35 +01:00
|
|
|
ASN1_STRING
|
|
|
|
AV
|
|
|
|
A_ArrayExpr
|
|
|
|
A_Const
|
|
|
|
A_Expr
|
|
|
|
A_Expr_Kind
|
|
|
|
A_Indices
|
|
|
|
A_Indirection
|
|
|
|
A_Star
|
|
|
|
AbsoluteTime
|
2016-04-27 17:47:28 +02:00
|
|
|
AccessMethodInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
AccessPriv
|
|
|
|
Acl
|
|
|
|
AclItem
|
|
|
|
AclMaskHow
|
|
|
|
AclMode
|
|
|
|
AclResult
|
2012-06-10 21:15:31 +02:00
|
|
|
AcquireSampleRowsFunc
|
2010-02-26 02:55:35 +01:00
|
|
|
ActiveSnapshotElt
|
2013-05-29 22:58:43 +02:00
|
|
|
AddForeignUpdateTargets_function
|
2010-02-26 02:55:35 +01:00
|
|
|
AffixNode
|
|
|
|
AffixNodeData
|
|
|
|
AfterTriggerEvent
|
|
|
|
AfterTriggerEventChunk
|
|
|
|
AfterTriggerEventData
|
|
|
|
AfterTriggerEventList
|
|
|
|
AfterTriggerShared
|
|
|
|
AfterTriggerSharedData
|
|
|
|
AfterTriggersData
|
2017-11-29 15:24:24 +01:00
|
|
|
AfterTriggersQueryData
|
|
|
|
AfterTriggersTableData
|
|
|
|
AfterTriggersTransData
|
2010-02-26 02:55:35 +01:00
|
|
|
Agg
|
2011-06-09 20:01:49 +02:00
|
|
|
AggClauseCosts
|
2010-02-26 02:55:35 +01:00
|
|
|
AggInfo
|
2016-04-27 17:47:28 +02:00
|
|
|
AggPath
|
2016-08-15 19:42:51 +02:00
|
|
|
AggSplit
|
2010-02-26 02:55:35 +01:00
|
|
|
AggState
|
|
|
|
AggStatePerAgg
|
|
|
|
AggStatePerGroup
|
2017-05-17 21:52:16 +02:00
|
|
|
AggStatePerHash
|
2015-05-24 03:20:37 +02:00
|
|
|
AggStatePerPhase
|
2016-05-02 15:23:55 +02:00
|
|
|
AggStatePerTrans
|
2010-02-26 02:55:35 +01:00
|
|
|
AggStrategy
|
|
|
|
Aggref
|
|
|
|
AggrefExprState
|
2013-05-29 22:58:43 +02:00
|
|
|
AlenState
|
2010-02-26 02:55:35 +01:00
|
|
|
Alias
|
|
|
|
AllocBlock
|
|
|
|
AllocChunk
|
|
|
|
AllocPointer
|
|
|
|
AllocSet
|
|
|
|
AllocSetContext
|
2018-04-26 20:45:04 +02:00
|
|
|
AllocSetFreeList
|
2010-02-26 02:55:35 +01:00
|
|
|
AllocateDesc
|
|
|
|
AllocateDescKind
|
2017-05-17 21:52:16 +02:00
|
|
|
AlterCollationStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterDatabaseSetStmt
|
|
|
|
AlterDatabaseStmt
|
|
|
|
AlterDefaultPrivilegesStmt
|
|
|
|
AlterDomainStmt
|
2011-04-09 05:11:37 +02:00
|
|
|
AlterEnumStmt
|
2013-05-29 22:58:43 +02:00
|
|
|
AlterEventTrigStmt
|
2011-04-09 05:11:37 +02:00
|
|
|
AlterExtensionContentsStmt
|
|
|
|
AlterExtensionStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterFdwStmt
|
|
|
|
AlterForeignServerStmt
|
|
|
|
AlterFunctionStmt
|
2016-04-05 23:38:54 +02:00
|
|
|
AlterObjectDependsStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterObjectSchemaStmt
|
|
|
|
AlterOpFamilyStmt
|
2016-04-27 17:47:28 +02:00
|
|
|
AlterOperatorStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterOwnerStmt
|
2015-05-24 03:20:37 +02:00
|
|
|
AlterPolicyStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
AlterPublicationStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterRoleSetStmt
|
|
|
|
AlterRoleStmt
|
|
|
|
AlterSeqStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
AlterSubscriptionStmt
|
|
|
|
AlterSubscriptionType
|
2014-05-06 15:08:14 +02:00
|
|
|
AlterSystemStmt
|
2015-05-24 03:20:37 +02:00
|
|
|
AlterTSConfigType
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterTSConfigurationStmt
|
|
|
|
AlterTSDictionaryStmt
|
|
|
|
AlterTableCmd
|
2014-08-22 01:06:17 +02:00
|
|
|
AlterTableMoveAllStmt
|
2014-05-06 15:08:14 +02:00
|
|
|
AlterTableSpaceOptionsStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
AlterTableStmt
|
|
|
|
AlterTableType
|
|
|
|
AlterUserMappingStmt
|
|
|
|
AlteredTableInfo
|
|
|
|
AlternativeSubPlan
|
|
|
|
AlternativeSubPlanState
|
2012-06-10 21:15:31 +02:00
|
|
|
AnalyzeAttrComputeStatsFunc
|
2010-02-26 02:55:35 +01:00
|
|
|
AnalyzeAttrFetchFunc
|
2012-06-10 21:15:31 +02:00
|
|
|
AnalyzeForeignTable_function
|
2010-02-26 02:55:35 +01:00
|
|
|
AnlIndexData
|
2015-05-24 03:20:37 +02:00
|
|
|
AnyArrayType
|
2010-02-26 02:55:35 +01:00
|
|
|
Append
|
|
|
|
AppendPath
|
|
|
|
AppendRelInfo
|
|
|
|
AppendState
|
|
|
|
Archive
|
2017-05-17 21:52:16 +02:00
|
|
|
ArchiveEntryPtrType
|
2010-02-26 02:55:35 +01:00
|
|
|
ArchiveFormat
|
|
|
|
ArchiveHandle
|
|
|
|
ArchiveMode
|
2012-06-10 21:15:31 +02:00
|
|
|
ArchiverOutput
|
2010-02-26 02:55:35 +01:00
|
|
|
ArchiverStage
|
2012-06-10 21:15:31 +02:00
|
|
|
ArrayAnalyzeExtraData
|
2010-02-26 02:55:35 +01:00
|
|
|
ArrayBuildState
|
2015-05-24 03:20:37 +02:00
|
|
|
ArrayBuildStateAny
|
|
|
|
ArrayBuildStateArr
|
2010-02-26 02:55:35 +01:00
|
|
|
ArrayCoerceExpr
|
|
|
|
ArrayConstIterState
|
|
|
|
ArrayExpr
|
|
|
|
ArrayExprIterState
|
2017-05-17 21:52:16 +02:00
|
|
|
ArrayIOData
|
2011-04-09 05:11:37 +02:00
|
|
|
ArrayIterator
|
2010-02-26 02:55:35 +01:00
|
|
|
ArrayMapState
|
|
|
|
ArrayMetaState
|
|
|
|
ArrayParseState
|
|
|
|
ArrayRef
|
Faster expression evaluation and targetlist projection.
This replaces the old, recursive tree-walk based evaluation, with
non-recursive, opcode dispatch based, expression evaluation.
Projection is now implemented as part of expression evaluation.
This both leads to significant performance improvements, and makes
future just-in-time compilation of expressions easier.
The speed gains primarily come from:
- non-recursive implementation reduces stack usage / overhead
- simple sub-expressions are implemented with a single jump, without
function calls
- sharing some state between different sub-expressions
- reduced amount of indirect/hard to predict memory accesses by laying
out operation metadata sequentially; including the avoidance of
nearly all of the previously used linked lists
- more code has been moved to expression initialization, avoiding
constant re-checks at evaluation time
Future just-in-time compilation (JIT) has become easier, as
demonstrated by released patches intended to be merged in a later
release, for primarily two reasons: Firstly, due to a stricter split
between expression initialization and evaluation, less code has to be
handled by the JIT. Secondly, due to the non-recursive nature of the
generated "instructions", less performance-critical code-paths can
easily be shared between interpreted and compiled evaluation.
The new framework allows for significant future optimizations. E.g.:
- basic infrastructure for to later reduce the per executor-startup
overhead of expression evaluation, by caching state in prepared
statements. That'd be helpful in OLTPish scenarios where
initialization overhead is measurable.
- optimizing the generated "code". A number of proposals for potential
work has already been made.
- optimizing the interpreter. Similarly a number of proposals have
been made here too.
The move of logic into the expression initialization step leads to some
backward-incompatible changes:
- Function permission checks are now done during expression
initialization, whereas previously they were done during
execution. In edge cases this can lead to errors being raised that
previously wouldn't have been, e.g. a NULL array being coerced to a
different array type previously didn't perform checks.
- The set of domain constraints to be checked, is now evaluated once
during expression initialization, previously it was re-built
every time a domain check was evaluated. For normal queries this
doesn't change much, but e.g. for plpgsql functions, which caches
ExprStates, the old set could stick around longer. The behavior
around might still change.
Author: Andres Freund, with significant changes by Tom Lane,
changes by Heikki Linnakangas
Reviewed-By: Tom Lane, Heikki Linnakangas
Discussion: https://postgr.es/m/20161206034955.bh33paeralxbtluv@alap3.anarazel.de
2017-03-14 23:45:36 +01:00
|
|
|
ArrayRefState
|
2010-02-26 02:55:35 +01:00
|
|
|
ArrayType
|
|
|
|
AsyncQueueControl
|
|
|
|
AsyncQueueEntry
|
|
|
|
AttInMetadata
|
2017-05-17 21:52:16 +02:00
|
|
|
AttStatsSlot
|
2010-02-26 02:55:35 +01:00
|
|
|
AttoptCacheEntry
|
|
|
|
AttoptCacheKey
|
|
|
|
AttrDefInfo
|
|
|
|
AttrDefault
|
2018-04-26 20:45:04 +02:00
|
|
|
AttrMissing
|
2010-02-26 02:55:35 +01:00
|
|
|
AttrNumber
|
|
|
|
AttributeOpts
|
|
|
|
AuthRequest
|
2017-08-21 20:43:00 +02:00
|
|
|
AutoPrewarmSharedState
|
2010-02-26 02:55:35 +01:00
|
|
|
AutoVacOpts
|
|
|
|
AutoVacuumShmemStruct
|
2017-05-17 21:52:16 +02:00
|
|
|
AutoVacuumWorkItem
|
|
|
|
AutoVacuumWorkItemType
|
2010-02-26 02:55:35 +01:00
|
|
|
AuxProcType
|
|
|
|
BF_ctx
|
|
|
|
BF_key
|
|
|
|
BF_word
|
2011-11-14 18:12:23 +01:00
|
|
|
BF_word_signed
|
2010-02-26 02:55:35 +01:00
|
|
|
BIGNUM
|
|
|
|
BIO
|
|
|
|
BIO_METHOD
|
|
|
|
BITVEC
|
|
|
|
BITVECP
|
2012-06-10 21:15:31 +02:00
|
|
|
BMS_Comparison
|
2010-02-26 02:55:35 +01:00
|
|
|
BMS_Membership
|
|
|
|
BN_CTX
|
|
|
|
BOOL
|
|
|
|
BOOLEAN
|
|
|
|
BOX
|
2011-11-14 18:12:23 +01:00
|
|
|
BTArrayKeyInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
BTBuildState
|
|
|
|
BTCycleId
|
|
|
|
BTIndexStat
|
Support parallel btree index builds.
To make this work, tuplesort.c and logtape.c must also support
parallelism, so this patch adds that infrastructure and then applies
it to the particular case of parallel btree index builds. Testing
to date shows that this can often be 2-3x faster than a serial
index build.
The model for deciding how many workers to use is fairly primitive
at present, but it's better than not having the feature. We can
refine it as we get more experience.
Peter Geoghegan with some help from Rushabh Lathia. While Heikki
Linnakangas is not an author of this patch, he wrote other patches
without which this feature would not have been possible, and
therefore the release notes should possibly credit him as an author
of this feature. Reviewed by Claudio Freire, Heikki Linnakangas,
Thomas Munro, Tels, Amit Kapila, me.
Discussion: http://postgr.es/m/CAM3SWZQKM=Pzc=CAHzRixKjp2eO5Q0Jg1SoFQqeXFQ647JiwqQ@mail.gmail.com
Discussion: http://postgr.es/m/CAH2-Wz=AxWqDoVvGU7dq856S4r6sJAj6DBn7VMtigkB33N5eyg@mail.gmail.com
2018-02-02 19:25:55 +01:00
|
|
|
BTLeader
|
2010-02-26 02:55:35 +01:00
|
|
|
BTMetaPageData
|
|
|
|
BTOneVacInfo
|
2017-05-17 21:52:16 +02:00
|
|
|
BTPS_State
|
2010-02-26 02:55:35 +01:00
|
|
|
BTPageOpaque
|
|
|
|
BTPageOpaqueData
|
|
|
|
BTPageStat
|
|
|
|
BTPageState
|
2017-02-15 13:41:14 +01:00
|
|
|
BTParallelScanDesc
|
2010-02-26 02:55:35 +01:00
|
|
|
BTScanOpaque
|
|
|
|
BTScanOpaqueData
|
2015-05-24 03:20:37 +02:00
|
|
|
BTScanPos
|
2010-02-26 02:55:35 +01:00
|
|
|
BTScanPosData
|
|
|
|
BTScanPosItem
|
Support parallel btree index builds.
To make this work, tuplesort.c and logtape.c must also support
parallelism, so this patch adds that infrastructure and then applies
it to the particular case of parallel btree index builds. Testing
to date shows that this can often be 2-3x faster than a serial
index build.
The model for deciding how many workers to use is fairly primitive
at present, but it's better than not having the feature. We can
refine it as we get more experience.
Peter Geoghegan with some help from Rushabh Lathia. While Heikki
Linnakangas is not an author of this patch, he wrote other patches
without which this feature would not have been possible, and
therefore the release notes should possibly credit him as an author
of this feature. Reviewed by Claudio Freire, Heikki Linnakangas,
Thomas Munro, Tels, Amit Kapila, me.
Discussion: http://postgr.es/m/CAM3SWZQKM=Pzc=CAHzRixKjp2eO5Q0Jg1SoFQqeXFQ647JiwqQ@mail.gmail.com
Discussion: http://postgr.es/m/CAH2-Wz=AxWqDoVvGU7dq856S4r6sJAj6DBn7VMtigkB33N5eyg@mail.gmail.com
2018-02-02 19:25:55 +01:00
|
|
|
BTShared
|
2011-11-14 18:12:23 +01:00
|
|
|
BTSortArrayContext
|
2010-02-26 02:55:35 +01:00
|
|
|
BTSpool
|
|
|
|
BTStack
|
|
|
|
BTStackData
|
|
|
|
BTVacInfo
|
|
|
|
BTVacState
|
|
|
|
BTWriteState
|
|
|
|
BYTE
|
|
|
|
Backend
|
|
|
|
BackendId
|
2011-04-09 05:11:37 +02:00
|
|
|
BackendParameters
|
2012-06-10 21:15:31 +02:00
|
|
|
BackendState
|
2017-05-17 21:52:16 +02:00
|
|
|
BackendType
|
2013-05-29 22:58:43 +02:00
|
|
|
BackgroundWorker
|
2014-05-06 15:08:14 +02:00
|
|
|
BackgroundWorkerArray
|
|
|
|
BackgroundWorkerHandle
|
|
|
|
BackgroundWorkerSlot
|
2018-04-26 20:45:04 +02:00
|
|
|
Barrier
|
2011-04-09 05:11:37 +02:00
|
|
|
BaseBackupCmd
|
2016-05-02 15:23:55 +02:00
|
|
|
BeginDirectModify_function
|
2018-04-26 20:45:04 +02:00
|
|
|
BeginForeignInsert_function
|
2013-05-29 22:58:43 +02:00
|
|
|
BeginForeignModify_function
|
2011-04-09 05:11:37 +02:00
|
|
|
BeginForeignScan_function
|
2016-05-02 15:23:55 +02:00
|
|
|
BeginSampleScan_function
|
2015-05-24 03:20:37 +02:00
|
|
|
BernoulliSamplerData
|
2013-05-29 22:58:43 +02:00
|
|
|
BgWorkerStartTime
|
2014-05-06 15:08:14 +02:00
|
|
|
BgwHandleStatus
|
2015-05-24 03:20:37 +02:00
|
|
|
BipartiteMatchState
|
2010-02-26 02:55:35 +01:00
|
|
|
BitmapAnd
|
|
|
|
BitmapAndPath
|
|
|
|
BitmapAndState
|
|
|
|
BitmapHeapPath
|
|
|
|
BitmapHeapScan
|
|
|
|
BitmapHeapScanState
|
|
|
|
BitmapIndexScan
|
|
|
|
BitmapIndexScanState
|
|
|
|
BitmapOr
|
|
|
|
BitmapOrPath
|
|
|
|
BitmapOrState
|
|
|
|
Bitmapset
|
|
|
|
BlobInfo
|
|
|
|
Block
|
|
|
|
BlockId
|
|
|
|
BlockIdData
|
2017-08-21 20:43:00 +02:00
|
|
|
BlockInfoRecord
|
2010-02-26 02:55:35 +01:00
|
|
|
BlockNumber
|
|
|
|
BlockSampler
|
|
|
|
BlockSamplerData
|
2016-04-27 17:47:28 +02:00
|
|
|
BlockedProcData
|
|
|
|
BlockedProcsData
|
|
|
|
BloomBuildState
|
2016-05-02 15:23:55 +02:00
|
|
|
BloomMetaPageData
|
2016-04-27 17:47:28 +02:00
|
|
|
BloomOptions
|
2016-05-02 15:23:55 +02:00
|
|
|
BloomPageOpaque
|
|
|
|
BloomPageOpaqueData
|
|
|
|
BloomScanOpaque
|
|
|
|
BloomScanOpaqueData
|
2016-06-09 18:15:33 +02:00
|
|
|
BloomSignatureWord
|
2016-04-27 17:47:28 +02:00
|
|
|
BloomState
|
|
|
|
BloomTuple
|
2010-02-26 02:55:35 +01:00
|
|
|
BlowfishContext
|
2014-05-06 15:08:14 +02:00
|
|
|
BoolAggState
|
2010-02-26 02:55:35 +01:00
|
|
|
BoolExpr
|
|
|
|
BoolExprType
|
|
|
|
BoolTestType
|
|
|
|
BooleanTest
|
|
|
|
BpChar
|
2015-05-24 03:20:37 +02:00
|
|
|
BrinBuildState
|
|
|
|
BrinDesc
|
|
|
|
BrinMemTuple
|
|
|
|
BrinMetaPageData
|
|
|
|
BrinOpaque
|
|
|
|
BrinOpcInfo
|
|
|
|
BrinOptions
|
|
|
|
BrinRevmap
|
|
|
|
BrinSpecialSpace
|
2017-05-17 21:52:16 +02:00
|
|
|
BrinStatsData
|
2015-05-24 03:20:37 +02:00
|
|
|
BrinTuple
|
|
|
|
BrinValues
|
Add amcheck extension to contrib.
This is the beginning of a collection of SQL-callable functions to
verify the integrity of data files. For now it only contains code to
verify B-Tree indexes.
This adds two SQL-callable functions, validating B-Tree consistency to
a varying degree. Check the, extensive, docs for details.
The goal is to later extend the coverage of the module to further
access methods, possibly including the heap. Once checks for
additional access methods exist, we'll likely add some "dispatch"
functions that cover multiple access methods.
Author: Peter Geoghegan, editorialized by Andres Freund
Reviewed-By: Andres Freund, Tomas Vondra, Thomas Munro,
Anastasia Lubennikova, Robert Haas, Amit Langote
Discussion: CAM3SWZQzLMhMwmBqjzK+pRKXrNUZ4w90wYMUWfkeV8mZ3Debvw@mail.gmail.com
2017-03-10 00:50:40 +01:00
|
|
|
BtreeCheckState
|
|
|
|
BtreeLevel
|
2010-02-26 02:55:35 +01:00
|
|
|
Bucket
|
|
|
|
BufFile
|
|
|
|
Buffer
|
|
|
|
BufferAccessStrategy
|
|
|
|
BufferAccessStrategyType
|
|
|
|
BufferCachePagesContext
|
|
|
|
BufferCachePagesRec
|
|
|
|
BufferDesc
|
2015-05-24 03:20:37 +02:00
|
|
|
BufferDescPadded
|
2010-02-26 02:55:35 +01:00
|
|
|
BufferLookupEnt
|
|
|
|
BufferStrategyControl
|
|
|
|
BufferTag
|
|
|
|
BufferUsage
|
|
|
|
BuildAccumulator
|
2016-04-27 17:47:28 +02:00
|
|
|
BuiltinScript
|
2010-02-26 02:55:35 +01:00
|
|
|
BulkInsertState
|
|
|
|
CACHESIGN
|
|
|
|
CAC_state
|
2017-11-29 15:24:24 +01:00
|
|
|
CCFastEqualFN
|
|
|
|
CCHashFN
|
2015-05-24 03:20:37 +02:00
|
|
|
CEOUC_WAIT_MODE
|
2010-02-26 02:55:35 +01:00
|
|
|
CFuncHashTabEntry
|
|
|
|
CHAR
|
2011-04-09 05:11:37 +02:00
|
|
|
CHECKPOINT
|
2010-02-26 02:55:35 +01:00
|
|
|
CHKVAL
|
|
|
|
CIRCLE
|
|
|
|
CMPDAffix
|
|
|
|
CONTEXT
|
|
|
|
COP
|
|
|
|
CRITICAL_SECTION
|
2017-05-17 21:52:16 +02:00
|
|
|
CRSSnapshotAction
|
2010-02-26 02:55:35 +01:00
|
|
|
CState
|
|
|
|
CV
|
2011-04-09 05:11:37 +02:00
|
|
|
C_block
|
2010-02-26 02:55:35 +01:00
|
|
|
CachedPlan
|
|
|
|
CachedPlanSource
|
2018-04-26 20:45:04 +02:00
|
|
|
CallContext
|
|
|
|
CallStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CancelRequestPacket
|
|
|
|
CaseExpr
|
|
|
|
CaseTestExpr
|
|
|
|
CaseWhen
|
|
|
|
Cash
|
|
|
|
CastInfo
|
|
|
|
CatCList
|
|
|
|
CatCTup
|
|
|
|
CatCache
|
|
|
|
CatCacheHeader
|
|
|
|
CatalogId
|
|
|
|
CatalogIndexState
|
|
|
|
ChangeVarNodes_context
|
|
|
|
CheckPoint
|
|
|
|
CheckPointStmt
|
|
|
|
CheckpointStatsData
|
2012-06-10 21:15:31 +02:00
|
|
|
CheckpointerRequest
|
|
|
|
CheckpointerShmemStruct
|
2010-02-26 02:55:35 +01:00
|
|
|
Chromosome
|
2016-02-19 21:17:51 +01:00
|
|
|
CkptSortItem
|
|
|
|
CkptTsStatus
|
2011-04-09 05:11:37 +02:00
|
|
|
ClientAuthentication_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
ClientData
|
2017-05-17 21:52:16 +02:00
|
|
|
ClonePtrType
|
2018-04-26 20:45:04 +02:00
|
|
|
ClonedConstraint
|
2010-02-26 02:55:35 +01:00
|
|
|
ClosePortalStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
ClosePtrType
|
2010-02-26 02:55:35 +01:00
|
|
|
Clump
|
2010-07-06 21:18:19 +02:00
|
|
|
ClusterInfo
|
2018-07-24 04:37:32 +02:00
|
|
|
ClusterOption
|
2010-02-26 02:55:35 +01:00
|
|
|
ClusterStmt
|
|
|
|
CmdType
|
|
|
|
CoalesceExpr
|
|
|
|
CoerceParamHook
|
|
|
|
CoerceToDomain
|
|
|
|
CoerceToDomainValue
|
|
|
|
CoerceViaIO
|
|
|
|
CoercionContext
|
|
|
|
CoercionForm
|
|
|
|
CoercionPathType
|
2017-08-14 23:29:33 +02:00
|
|
|
CollAliasData
|
2011-04-09 05:11:37 +02:00
|
|
|
CollInfo
|
|
|
|
CollateClause
|
|
|
|
CollateExpr
|
|
|
|
CollateStrength
|
2015-05-24 03:20:37 +02:00
|
|
|
CollectedATSubcmd
|
|
|
|
CollectedCommand
|
|
|
|
CollectedCommandType
|
2013-05-29 22:58:43 +02:00
|
|
|
ColorTrgm
|
|
|
|
ColorTrgmInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
ColumnCompareData
|
|
|
|
ColumnDef
|
|
|
|
ColumnIOData
|
|
|
|
ColumnRef
|
2017-11-29 15:24:24 +01:00
|
|
|
ColumnsHashData
|
2017-05-17 21:52:16 +02:00
|
|
|
CombinationGenerator
|
2010-02-26 02:55:35 +01:00
|
|
|
ComboCidEntry
|
|
|
|
ComboCidEntryData
|
|
|
|
ComboCidKey
|
|
|
|
ComboCidKeyData
|
|
|
|
Command
|
|
|
|
CommandDest
|
|
|
|
CommandId
|
|
|
|
CommentItem
|
|
|
|
CommentStmt
|
2015-05-24 03:20:37 +02:00
|
|
|
CommitTimestampEntry
|
|
|
|
CommitTimestampShared
|
2011-11-14 18:12:23 +01:00
|
|
|
CommonEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
CommonTableExpr
|
|
|
|
CompareScalarsContext
|
2018-03-20 10:20:46 +01:00
|
|
|
CompiledExprState
|
2017-05-17 21:52:16 +02:00
|
|
|
CompositeIOData
|
2010-02-26 02:55:35 +01:00
|
|
|
CompositeTypeStmt
|
2016-04-27 17:47:28 +02:00
|
|
|
CompoundAffixFlag
|
2011-04-09 05:11:37 +02:00
|
|
|
CompressionAlgorithm
|
|
|
|
CompressorState
|
2016-12-13 16:51:32 +01:00
|
|
|
ConditionVariable
|
2017-05-17 21:52:16 +02:00
|
|
|
ConditionalStack
|
2016-04-27 17:47:28 +02:00
|
|
|
ConfigData
|
2011-04-09 05:11:37 +02:00
|
|
|
ConfigVariable
|
2013-05-29 22:58:43 +02:00
|
|
|
ConnCacheEntry
|
|
|
|
ConnCacheKey
|
2010-02-26 02:55:35 +01:00
|
|
|
ConnStatusType
|
|
|
|
ConnType
|
2016-12-13 16:51:32 +01:00
|
|
|
ConnectionStateEnum
|
2011-11-14 18:12:23 +01:00
|
|
|
ConsiderSplitContext
|
2010-02-26 02:55:35 +01:00
|
|
|
Const
|
|
|
|
ConstrCheck
|
|
|
|
ConstrType
|
|
|
|
Constraint
|
|
|
|
ConstraintCategory
|
|
|
|
ConstraintInfo
|
|
|
|
ConstraintsSetStmt
|
2010-07-06 21:18:19 +02:00
|
|
|
ControlData
|
2010-02-26 02:55:35 +01:00
|
|
|
ControlFileData
|
|
|
|
ConvInfo
|
|
|
|
ConvProcInfo
|
2013-05-29 22:58:43 +02:00
|
|
|
ConversionLocation
|
2010-02-26 02:55:35 +01:00
|
|
|
ConvertRowtypeExpr
|
|
|
|
CookedConstraint
|
|
|
|
CopyDest
|
|
|
|
CopyState
|
|
|
|
CopyStateData
|
|
|
|
CopyStmt
|
|
|
|
Cost
|
|
|
|
CostSelector
|
|
|
|
Counters
|
2013-06-01 16:18:59 +02:00
|
|
|
CoverExt
|
2010-02-26 02:55:35 +01:00
|
|
|
CoverPos
|
2016-04-27 17:47:28 +02:00
|
|
|
CreateAmStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateCastStmt
|
|
|
|
CreateConversionStmt
|
|
|
|
CreateDomainStmt
|
|
|
|
CreateEnumStmt
|
2013-05-29 22:58:43 +02:00
|
|
|
CreateEventTrigStmt
|
2011-04-09 05:11:37 +02:00
|
|
|
CreateExtensionStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateFdwStmt
|
|
|
|
CreateForeignServerStmt
|
2011-04-09 05:11:37 +02:00
|
|
|
CreateForeignTableStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateFunctionStmt
|
|
|
|
CreateOpClassItem
|
|
|
|
CreateOpClassStmt
|
|
|
|
CreateOpFamilyStmt
|
|
|
|
CreatePLangStmt
|
2015-05-24 03:20:37 +02:00
|
|
|
CreatePolicyStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
CreatePublicationStmt
|
2011-11-14 18:12:23 +01:00
|
|
|
CreateRangeStmt
|
2014-05-06 15:08:14 +02:00
|
|
|
CreateReplicationSlotCmd
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateRoleStmt
|
|
|
|
CreateSchemaStmt
|
|
|
|
CreateSchemaStmtContext
|
|
|
|
CreateSeqStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
CreateStatsStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateStmt
|
|
|
|
CreateStmtContext
|
2017-05-17 21:52:16 +02:00
|
|
|
CreateSubscriptionStmt
|
2012-06-10 21:15:31 +02:00
|
|
|
CreateTableAsStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateTableSpaceStmt
|
2015-05-24 03:20:37 +02:00
|
|
|
CreateTransformStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
CreateTrigStmt
|
|
|
|
CreateUserMappingStmt
|
|
|
|
CreatedbStmt
|
2011-04-09 05:11:37 +02:00
|
|
|
CredHandle
|
2010-02-26 02:55:35 +01:00
|
|
|
CteItem
|
|
|
|
CteScan
|
|
|
|
CteScanState
|
|
|
|
CteState
|
|
|
|
CtlCommand
|
2011-04-09 05:11:37 +02:00
|
|
|
CtxtHandle
|
2010-02-26 02:55:35 +01:00
|
|
|
CurrentOfExpr
|
2015-05-24 03:20:37 +02:00
|
|
|
CustomExecMethods
|
2017-05-17 21:52:16 +02:00
|
|
|
CustomOutPtrType
|
2015-05-24 03:20:37 +02:00
|
|
|
CustomPath
|
|
|
|
CustomScan
|
|
|
|
CustomScanMethods
|
|
|
|
CustomScanState
|
2010-02-26 02:55:35 +01:00
|
|
|
CycleCtr
|
|
|
|
DBState
|
|
|
|
DCHCacheEntry
|
|
|
|
DEADLOCK_INFO
|
2012-06-10 21:15:31 +02:00
|
|
|
DECountItem
|
2010-02-26 02:55:35 +01:00
|
|
|
DH
|
|
|
|
DIR
|
2014-05-06 15:08:14 +02:00
|
|
|
DNSServiceErrorType
|
|
|
|
DNSServiceRef
|
2010-02-26 02:55:35 +01:00
|
|
|
DR_copy
|
|
|
|
DR_intorel
|
|
|
|
DR_printtup
|
|
|
|
DR_sqlfunction
|
2013-05-29 22:58:43 +02:00
|
|
|
DR_transientrel
|
2017-05-17 21:52:16 +02:00
|
|
|
DSA
|
2010-02-26 02:55:35 +01:00
|
|
|
DWORD
|
|
|
|
DataDumperPtr
|
|
|
|
DataPageDeleteStack
|
|
|
|
DateADT
|
|
|
|
Datum
|
|
|
|
DatumTupleFields
|
2010-07-06 21:18:19 +02:00
|
|
|
DbInfo
|
|
|
|
DbInfoArr
|
2017-05-17 21:52:16 +02:00
|
|
|
DeClonePtrType
|
2010-02-26 02:55:35 +01:00
|
|
|
DeadLockState
|
|
|
|
DeallocateStmt
|
|
|
|
DeclareCursorStmt
|
2015-05-24 03:20:37 +02:00
|
|
|
DecodedBkpBlock
|
2014-05-06 15:08:14 +02:00
|
|
|
DecodingOutputState
|
2010-02-26 02:55:35 +01:00
|
|
|
DefElem
|
|
|
|
DefElemAction
|
|
|
|
DefaultACLInfo
|
|
|
|
DefineStmt
|
|
|
|
DeleteStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
DependencyGenerator
|
|
|
|
DependencyGeneratorData
|
2010-02-26 02:55:35 +01:00
|
|
|
DependencyType
|
|
|
|
DestReceiver
|
|
|
|
DictISpell
|
|
|
|
DictInt
|
|
|
|
DictSimple
|
|
|
|
DictSnowball
|
|
|
|
DictSubState
|
|
|
|
DictSyn
|
|
|
|
DictThesaurus
|
2016-12-13 16:51:32 +01:00
|
|
|
DirectoryMethodData
|
|
|
|
DirectoryMethodFile
|
2013-05-29 22:58:43 +02:00
|
|
|
DisableTimeoutParams
|
2010-02-26 02:55:35 +01:00
|
|
|
DiscardMode
|
|
|
|
DiscardStmt
|
|
|
|
DistinctExpr
|
|
|
|
DoStmt
|
|
|
|
DocRepresentation
|
2015-05-24 03:20:37 +02:00
|
|
|
DomainConstraintCache
|
|
|
|
DomainConstraintRef
|
2010-02-26 02:55:35 +01:00
|
|
|
DomainConstraintState
|
|
|
|
DomainConstraintType
|
|
|
|
DomainIOData
|
|
|
|
DropBehavior
|
|
|
|
DropOwnedStmt
|
2014-02-01 04:45:17 +01:00
|
|
|
DropReplicationSlotCmd
|
2010-02-26 02:55:35 +01:00
|
|
|
DropRoleStmt
|
|
|
|
DropStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
DropSubscriptionStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
DropTableSpaceStmt
|
|
|
|
DropUserMappingStmt
|
|
|
|
DropdbStmt
|
2016-05-02 15:23:55 +02:00
|
|
|
DumpComponents
|
2010-02-26 02:55:35 +01:00
|
|
|
DumpId
|
2015-05-24 03:20:37 +02:00
|
|
|
DumpOptions
|
2016-06-09 18:15:33 +02:00
|
|
|
DumpSignalInformation
|
2010-02-26 02:55:35 +01:00
|
|
|
DumpableObject
|
|
|
|
DumpableObjectType
|
|
|
|
DynamicFileList
|
2015-05-24 03:20:37 +02:00
|
|
|
DynamicZoneAbbrev
|
2014-05-06 15:08:14 +02:00
|
|
|
EC_KEY
|
2010-02-26 02:55:35 +01:00
|
|
|
EDGE
|
|
|
|
ENGINE
|
2015-05-24 03:20:37 +02:00
|
|
|
EOM_flatten_into_method
|
|
|
|
EOM_get_flat_size_method
|
2010-02-26 02:55:35 +01:00
|
|
|
EPQState
|
|
|
|
EPlan
|
|
|
|
EState
|
2016-12-13 16:51:32 +01:00
|
|
|
EVP_CIPHER
|
|
|
|
EVP_CIPHER_CTX
|
2010-02-26 02:55:35 +01:00
|
|
|
EVP_MD
|
|
|
|
EVP_MD_CTX
|
|
|
|
EVP_PKEY
|
2013-05-29 22:58:43 +02:00
|
|
|
EachState
|
2010-02-26 02:55:35 +01:00
|
|
|
Edge
|
2016-04-27 17:47:28 +02:00
|
|
|
EditableObjectType
|
2013-05-29 22:58:43 +02:00
|
|
|
ElementsState
|
|
|
|
EnableTimeoutParams
|
2017-05-17 21:52:16 +02:00
|
|
|
EndBlobPtrType
|
|
|
|
EndBlobsPtrType
|
|
|
|
EndDataPtrType
|
2016-05-02 15:23:55 +02:00
|
|
|
EndDirectModify_function
|
2018-04-26 20:45:04 +02:00
|
|
|
EndForeignInsert_function
|
2013-05-29 22:58:43 +02:00
|
|
|
EndForeignModify_function
|
2011-04-09 05:11:37 +02:00
|
|
|
EndForeignScan_function
|
2016-05-02 15:23:55 +02:00
|
|
|
EndSampleScan_function
|
2011-04-09 05:11:37 +02:00
|
|
|
EnumItem
|
2010-02-26 02:55:35 +01:00
|
|
|
EolType
|
2017-05-17 21:52:16 +02:00
|
|
|
EphemeralNameRelationType
|
|
|
|
EphemeralNamedRelation
|
|
|
|
EphemeralNamedRelationData
|
|
|
|
EphemeralNamedRelationMetadata
|
|
|
|
EphemeralNamedRelationMetadataData
|
2010-02-26 02:55:35 +01:00
|
|
|
EquivalenceClass
|
|
|
|
EquivalenceMember
|
|
|
|
ErrorContextCallback
|
|
|
|
ErrorData
|
2016-05-02 15:23:55 +02:00
|
|
|
EstimateDSMForeignScan_function
|
2013-05-29 22:58:43 +02:00
|
|
|
EventTriggerCacheEntry
|
|
|
|
EventTriggerCacheItem
|
|
|
|
EventTriggerCacheStateType
|
|
|
|
EventTriggerData
|
|
|
|
EventTriggerEvent
|
|
|
|
EventTriggerInfo
|
|
|
|
EventTriggerQueryState
|
2010-02-26 02:55:35 +01:00
|
|
|
ExceptionLabelMap
|
2011-04-09 05:11:37 +02:00
|
|
|
ExceptionMap
|
2017-05-17 21:52:16 +02:00
|
|
|
ExclusiveBackupState
|
2011-04-09 05:11:37 +02:00
|
|
|
ExecAuxRowMark
|
2018-04-26 20:45:04 +02:00
|
|
|
ExecEvalSubroutine
|
2013-05-29 22:58:43 +02:00
|
|
|
ExecForeignDelete_function
|
|
|
|
ExecForeignInsert_function
|
|
|
|
ExecForeignUpdate_function
|
2016-04-27 17:47:28 +02:00
|
|
|
ExecParallelEstimateContext
|
|
|
|
ExecParallelInitializeDSMContext
|
|
|
|
ExecPhraseData
|
2017-08-14 23:29:33 +02:00
|
|
|
ExecProcNodeMtd
|
2010-02-26 02:55:35 +01:00
|
|
|
ExecRowMark
|
|
|
|
ExecScanAccessMtd
|
|
|
|
ExecScanRecheckMtd
|
|
|
|
ExecStatus
|
|
|
|
ExecStatusType
|
|
|
|
ExecuteStmt
|
2011-04-09 05:11:37 +02:00
|
|
|
ExecutorCheckPerms_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
ExecutorEnd_hook_type
|
2011-04-09 05:11:37 +02:00
|
|
|
ExecutorFinish_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
ExecutorRun_hook_type
|
|
|
|
ExecutorStart_hook_type
|
2015-05-24 03:20:37 +02:00
|
|
|
ExpandedArrayHeader
|
|
|
|
ExpandedObjectHeader
|
|
|
|
ExpandedObjectMethods
|
2018-04-26 20:45:04 +02:00
|
|
|
ExpandedRecordFieldInfo
|
|
|
|
ExpandedRecordHeader
|
2016-05-02 15:23:55 +02:00
|
|
|
ExplainDirectModify_function
|
2013-05-29 22:58:43 +02:00
|
|
|
ExplainForeignModify_function
|
2011-04-09 05:11:37 +02:00
|
|
|
ExplainForeignScan_function
|
2010-02-26 02:55:35 +01:00
|
|
|
ExplainFormat
|
|
|
|
ExplainOneQuery_hook_type
|
|
|
|
ExplainState
|
|
|
|
ExplainStmt
|
2017-06-21 20:09:24 +02:00
|
|
|
ExportedSnapshot
|
2010-02-26 02:55:35 +01:00
|
|
|
Expr
|
|
|
|
ExprContext
|
|
|
|
ExprContextCallbackFunction
|
|
|
|
ExprContext_CB
|
|
|
|
ExprDoneCond
|
Faster expression evaluation and targetlist projection.
This replaces the old, recursive tree-walk based evaluation, with
non-recursive, opcode dispatch based, expression evaluation.
Projection is now implemented as part of expression evaluation.
This both leads to significant performance improvements, and makes
future just-in-time compilation of expressions easier.
The speed gains primarily come from:
- non-recursive implementation reduces stack usage / overhead
- simple sub-expressions are implemented with a single jump, without
function calls
- sharing some state between different sub-expressions
- reduced amount of indirect/hard to predict memory accesses by laying
out operation metadata sequentially; including the avoidance of
nearly all of the previously used linked lists
- more code has been moved to expression initialization, avoiding
constant re-checks at evaluation time
Future just-in-time compilation (JIT) has become easier, as
demonstrated by released patches intended to be merged in a later
release, for primarily two reasons: Firstly, due to a stricter split
between expression initialization and evaluation, less code has to be
handled by the JIT. Secondly, due to the non-recursive nature of the
generated "instructions", less performance-critical code-paths can
easily be shared between interpreted and compiled evaluation.
The new framework allows for significant future optimizations. E.g.:
- basic infrastructure for to later reduce the per executor-startup
overhead of expression evaluation, by caching state in prepared
statements. That'd be helpful in OLTPish scenarios where
initialization overhead is measurable.
- optimizing the generated "code". A number of proposals for potential
work has already been made.
- optimizing the interpreter. Similarly a number of proposals have
been made here too.
The move of logic into the expression initialization step leads to some
backward-incompatible changes:
- Function permission checks are now done during expression
initialization, whereas previously they were done during
execution. In edge cases this can lead to errors being raised that
previously wouldn't have been, e.g. a NULL array being coerced to a
different array type previously didn't perform checks.
- The set of domain constraints to be checked, is now evaluated once
during expression initialization, previously it was re-built
every time a domain check was evaluated. For normal queries this
doesn't change much, but e.g. for plpgsql functions, which caches
ExprStates, the old set could stick around longer. The behavior
around might still change.
Author: Andres Freund, with significant changes by Tom Lane,
changes by Heikki Linnakangas
Reviewed-By: Tom Lane, Heikki Linnakangas
Discussion: https://postgr.es/m/20161206034955.bh33paeralxbtluv@alap3.anarazel.de
2017-03-14 23:45:36 +01:00
|
|
|
ExprEvalOp
|
2018-01-09 22:25:38 +01:00
|
|
|
ExprEvalOpLookup
|
Faster expression evaluation and targetlist projection.
This replaces the old, recursive tree-walk based evaluation, with
non-recursive, opcode dispatch based, expression evaluation.
Projection is now implemented as part of expression evaluation.
This both leads to significant performance improvements, and makes
future just-in-time compilation of expressions easier.
The speed gains primarily come from:
- non-recursive implementation reduces stack usage / overhead
- simple sub-expressions are implemented with a single jump, without
function calls
- sharing some state between different sub-expressions
- reduced amount of indirect/hard to predict memory accesses by laying
out operation metadata sequentially; including the avoidance of
nearly all of the previously used linked lists
- more code has been moved to expression initialization, avoiding
constant re-checks at evaluation time
Future just-in-time compilation (JIT) has become easier, as
demonstrated by released patches intended to be merged in a later
release, for primarily two reasons: Firstly, due to a stricter split
between expression initialization and evaluation, less code has to be
handled by the JIT. Secondly, due to the non-recursive nature of the
generated "instructions", less performance-critical code-paths can
easily be shared between interpreted and compiled evaluation.
The new framework allows for significant future optimizations. E.g.:
- basic infrastructure for to later reduce the per executor-startup
overhead of expression evaluation, by caching state in prepared
statements. That'd be helpful in OLTPish scenarios where
initialization overhead is measurable.
- optimizing the generated "code". A number of proposals for potential
work has already been made.
- optimizing the interpreter. Similarly a number of proposals have
been made here too.
The move of logic into the expression initialization step leads to some
backward-incompatible changes:
- Function permission checks are now done during expression
initialization, whereas previously they were done during
execution. In edge cases this can lead to errors being raised that
previously wouldn't have been, e.g. a NULL array being coerced to a
different array type previously didn't perform checks.
- The set of domain constraints to be checked, is now evaluated once
during expression initialization, previously it was re-built
every time a domain check was evaluated. For normal queries this
doesn't change much, but e.g. for plpgsql functions, which caches
ExprStates, the old set could stick around longer. The behavior
around might still change.
Author: Andres Freund, with significant changes by Tom Lane,
changes by Heikki Linnakangas
Reviewed-By: Tom Lane, Heikki Linnakangas
Discussion: https://postgr.es/m/20161206034955.bh33paeralxbtluv@alap3.anarazel.de
2017-03-14 23:45:36 +01:00
|
|
|
ExprEvalStep
|
2017-05-17 21:52:16 +02:00
|
|
|
ExprState
|
|
|
|
ExprStateEvalFunc
|
2016-04-27 17:47:28 +02:00
|
|
|
ExtensibleNode
|
|
|
|
ExtensibleNodeEntry
|
|
|
|
ExtensibleNodeMethods
|
2011-04-09 05:11:37 +02:00
|
|
|
ExtensionControlFile
|
|
|
|
ExtensionInfo
|
2016-04-27 17:47:28 +02:00
|
|
|
ExtensionMemberId
|
2011-04-09 05:11:37 +02:00
|
|
|
ExtensionVersionInfo
|
2013-05-29 22:58:43 +02:00
|
|
|
FDWCollateState
|
2011-04-09 05:11:37 +02:00
|
|
|
FD_SET
|
2010-02-26 02:55:35 +01:00
|
|
|
FILE
|
|
|
|
FILETIME
|
|
|
|
FSMAddress
|
|
|
|
FSMPage
|
|
|
|
FSMPageData
|
|
|
|
FakeRelCacheEntry
|
|
|
|
FakeRelCacheEntryData
|
2011-11-14 18:12:23 +01:00
|
|
|
FastPathStrongRelationLockData
|
2010-02-26 02:55:35 +01:00
|
|
|
FdwInfo
|
2011-04-09 05:11:37 +02:00
|
|
|
FdwRoutine
|
2010-02-26 02:55:35 +01:00
|
|
|
FetchDirection
|
|
|
|
FetchStmt
|
|
|
|
FieldNot
|
|
|
|
FieldSelect
|
|
|
|
FieldStore
|
|
|
|
File
|
2011-04-09 05:11:37 +02:00
|
|
|
FileFdwExecutionState
|
2012-06-10 21:15:31 +02:00
|
|
|
FileFdwPlanState
|
2010-07-06 21:18:19 +02:00
|
|
|
FileNameMap
|
2010-02-26 02:55:35 +01:00
|
|
|
FindSplitData
|
2017-11-29 15:24:24 +01:00
|
|
|
FixedParallelExecutorState
|
2015-05-24 03:20:37 +02:00
|
|
|
FixedParallelState
|
2010-02-26 02:55:35 +01:00
|
|
|
FixedParamState
|
2016-04-27 17:47:28 +02:00
|
|
|
FlagMode
|
2017-05-17 21:52:16 +02:00
|
|
|
FlushPosition
|
2010-02-26 02:55:35 +01:00
|
|
|
FmgrBuiltin
|
2011-04-09 05:11:37 +02:00
|
|
|
FmgrHookEventType
|
2010-02-26 02:55:35 +01:00
|
|
|
FmgrInfo
|
|
|
|
ForeignDataWrapper
|
2016-08-15 19:42:51 +02:00
|
|
|
ForeignKeyCacheInfo
|
|
|
|
ForeignKeyOptInfo
|
2011-04-09 05:11:37 +02:00
|
|
|
ForeignPath
|
|
|
|
ForeignScan
|
|
|
|
ForeignScanState
|
2010-02-26 02:55:35 +01:00
|
|
|
ForeignServer
|
|
|
|
ForeignServerInfo
|
2011-04-09 05:11:37 +02:00
|
|
|
ForeignTable
|
2010-02-26 02:55:35 +01:00
|
|
|
ForkNumber
|
|
|
|
FormData_pg_aggregate
|
|
|
|
FormData_pg_am
|
|
|
|
FormData_pg_amop
|
|
|
|
FormData_pg_amproc
|
|
|
|
FormData_pg_attrdef
|
|
|
|
FormData_pg_attribute
|
|
|
|
FormData_pg_auth_members
|
|
|
|
FormData_pg_authid
|
|
|
|
FormData_pg_cast
|
|
|
|
FormData_pg_class
|
2011-04-09 05:11:37 +02:00
|
|
|
FormData_pg_collation
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_constraint
|
|
|
|
FormData_pg_conversion
|
|
|
|
FormData_pg_database
|
|
|
|
FormData_pg_default_acl
|
|
|
|
FormData_pg_depend
|
|
|
|
FormData_pg_enum
|
2013-05-29 22:58:43 +02:00
|
|
|
FormData_pg_event_trigger
|
2011-04-09 05:11:37 +02:00
|
|
|
FormData_pg_extension
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_foreign_data_wrapper
|
|
|
|
FormData_pg_foreign_server
|
2011-04-09 05:11:37 +02:00
|
|
|
FormData_pg_foreign_table
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_index
|
|
|
|
FormData_pg_inherits
|
|
|
|
FormData_pg_language
|
|
|
|
FormData_pg_largeobject
|
|
|
|
FormData_pg_largeobject_metadata
|
|
|
|
FormData_pg_namespace
|
|
|
|
FormData_pg_opclass
|
|
|
|
FormData_pg_operator
|
|
|
|
FormData_pg_opfamily
|
2016-12-13 16:51:32 +01:00
|
|
|
FormData_pg_partitioned_table
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_pltemplate
|
2015-05-24 03:20:37 +02:00
|
|
|
FormData_pg_policy
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_proc
|
2017-05-17 21:52:16 +02:00
|
|
|
FormData_pg_publication
|
|
|
|
FormData_pg_publication_rel
|
2011-11-14 18:12:23 +01:00
|
|
|
FormData_pg_range
|
2015-05-24 03:20:37 +02:00
|
|
|
FormData_pg_replication_origin
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_rewrite
|
|
|
|
FormData_pg_sequence
|
2017-05-17 21:52:16 +02:00
|
|
|
FormData_pg_sequence_data
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_shdepend
|
|
|
|
FormData_pg_statistic
|
2017-05-17 21:52:16 +02:00
|
|
|
FormData_pg_statistic_ext
|
|
|
|
FormData_pg_subscription
|
|
|
|
FormData_pg_subscription_rel
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_tablespace
|
2015-05-24 03:20:37 +02:00
|
|
|
FormData_pg_transform
|
2010-02-26 02:55:35 +01:00
|
|
|
FormData_pg_trigger
|
|
|
|
FormData_pg_ts_config
|
|
|
|
FormData_pg_ts_config_map
|
|
|
|
FormData_pg_ts_dict
|
|
|
|
FormData_pg_ts_parser
|
|
|
|
FormData_pg_ts_template
|
|
|
|
FormData_pg_type
|
|
|
|
FormData_pg_user_mapping
|
|
|
|
Form_pg_aggregate
|
|
|
|
Form_pg_am
|
|
|
|
Form_pg_amop
|
|
|
|
Form_pg_amproc
|
|
|
|
Form_pg_attrdef
|
|
|
|
Form_pg_attribute
|
|
|
|
Form_pg_auth_members
|
|
|
|
Form_pg_authid
|
|
|
|
Form_pg_cast
|
|
|
|
Form_pg_class
|
2011-04-09 05:11:37 +02:00
|
|
|
Form_pg_collation
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_constraint
|
|
|
|
Form_pg_conversion
|
|
|
|
Form_pg_database
|
|
|
|
Form_pg_default_acl
|
|
|
|
Form_pg_depend
|
|
|
|
Form_pg_enum
|
2013-05-29 22:58:43 +02:00
|
|
|
Form_pg_event_trigger
|
2011-04-09 05:11:37 +02:00
|
|
|
Form_pg_extension
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_foreign_data_wrapper
|
|
|
|
Form_pg_foreign_server
|
2011-04-09 05:11:37 +02:00
|
|
|
Form_pg_foreign_table
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_index
|
|
|
|
Form_pg_inherits
|
|
|
|
Form_pg_language
|
|
|
|
Form_pg_largeobject
|
|
|
|
Form_pg_largeobject_metadata
|
|
|
|
Form_pg_namespace
|
|
|
|
Form_pg_opclass
|
|
|
|
Form_pg_operator
|
|
|
|
Form_pg_opfamily
|
2016-12-13 16:51:32 +01:00
|
|
|
Form_pg_partitioned_table
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_pltemplate
|
2015-05-24 03:20:37 +02:00
|
|
|
Form_pg_policy
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_proc
|
2017-05-17 21:52:16 +02:00
|
|
|
Form_pg_publication
|
|
|
|
Form_pg_publication_rel
|
2011-11-14 18:12:23 +01:00
|
|
|
Form_pg_range
|
2015-05-24 03:20:37 +02:00
|
|
|
Form_pg_replication_origin
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_rewrite
|
|
|
|
Form_pg_sequence
|
2017-05-17 21:52:16 +02:00
|
|
|
Form_pg_sequence_data
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_shdepend
|
|
|
|
Form_pg_statistic
|
2017-05-17 21:52:16 +02:00
|
|
|
Form_pg_statistic_ext
|
|
|
|
Form_pg_subscription
|
|
|
|
Form_pg_subscription_rel
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_tablespace
|
2015-05-24 03:20:37 +02:00
|
|
|
Form_pg_transform
|
2010-02-26 02:55:35 +01:00
|
|
|
Form_pg_trigger
|
|
|
|
Form_pg_ts_config
|
|
|
|
Form_pg_ts_config_map
|
|
|
|
Form_pg_ts_dict
|
|
|
|
Form_pg_ts_parser
|
|
|
|
Form_pg_ts_template
|
|
|
|
Form_pg_type
|
|
|
|
Form_pg_user_mapping
|
|
|
|
FormatNode
|
2016-05-02 15:23:55 +02:00
|
|
|
FreeBlockNumberArray
|
|
|
|
FreeListData
|
2016-12-02 18:03:30 +01:00
|
|
|
FreePageBtree
|
|
|
|
FreePageBtreeHeader
|
|
|
|
FreePageBtreeInternalKey
|
|
|
|
FreePageBtreeLeafKey
|
|
|
|
FreePageBtreeSearchResult
|
|
|
|
FreePageManager
|
|
|
|
FreePageSpanLeader
|
2010-02-26 02:55:35 +01:00
|
|
|
FromCharDateMode
|
|
|
|
FromExpr
|
|
|
|
FuncCall
|
|
|
|
FuncCallContext
|
|
|
|
FuncCandidateList
|
|
|
|
FuncDetailCode
|
|
|
|
FuncExpr
|
|
|
|
FuncInfo
|
2017-05-17 21:52:16 +02:00
|
|
|
Function
|
2010-02-26 02:55:35 +01:00
|
|
|
FunctionCallInfo
|
Change function call information to be variable length.
Before this change FunctionCallInfoData, the struct arguments etc for
V1 function calls are stored in, always had space for
FUNC_MAX_ARGS/100 arguments, storing datums and their nullness in two
arrays. For nearly every function call 100 arguments is far more than
needed, therefore wasting memory. Arg and argnull being two separate
arrays also guarantees that to access a single argument, two
cachelines have to be touched.
Change the layout so there's a single variable-length array with pairs
of value / isnull. That drastically reduces memory consumption for
most function calls (on x86-64 a two argument function now uses
64bytes, previously 936 bytes), and makes it very likely that argument
value and its nullness are on the same cacheline.
Arguments are stored in a new NullableDatum struct, which, due to
padding, needs more memory per argument than before. But as usually
far fewer arguments are stored, and individual arguments are cheaper
to access, that's still a clear win. It's likely that there's other
places where conversion to NullableDatum arrays would make sense,
e.g. TupleTableSlots, but that's for another commit.
Because the function call information is now variable-length
allocations have to take the number of arguments into account. For
heap allocations that can be done with SizeForFunctionCallInfoData(),
for on-stack allocations there's a new LOCAL_FCINFO(name, nargs) macro
that helps to allocate an appropriately sized and aligned variable.
Some places with stack allocation function call information don't know
the number of arguments at compile time, and currently variably sized
stack allocations aren't allowed in postgres. Therefore allow for
FUNC_MAX_ARGS space in these cases. They're not that common, so for
now that seems acceptable.
Because of the need to allocate FunctionCallInfo of the appropriate
size, older extensions may need to update their code. To avoid subtle
breakages, the FunctionCallInfoData struct has been renamed to
FunctionCallInfoBaseData. Most code only references FunctionCallInfo,
so that shouldn't cause much collateral damage.
This change is also a prerequisite for more efficient expression JIT
compilation (by allocating the function call information on the stack,
allowing LLVM to optimize it away); previously the size of the call
information caused problems inside LLVM's optimizer.
Author: Andres Freund
Reviewed-By: Tom Lane
Discussion: https://postgr.es/m/20180605172952.x34m5uz6ju6enaem@alap3.anarazel.de
2019-01-26 23:17:52 +01:00
|
|
|
FunctionCallInfoBaseData
|
2010-02-26 02:55:35 +01:00
|
|
|
FunctionParameter
|
|
|
|
FunctionParameterMode
|
|
|
|
FunctionScan
|
2014-05-06 15:08:14 +02:00
|
|
|
FunctionScanPerFuncState
|
2010-02-26 02:55:35 +01:00
|
|
|
FunctionScanState
|
2015-05-24 03:20:37 +02:00
|
|
|
FuzzyAttrMatchState
|
2010-02-26 02:55:35 +01:00
|
|
|
GBT_NUMKEY
|
|
|
|
GBT_NUMKEY_R
|
|
|
|
GBT_VARKEY
|
|
|
|
GBT_VARKEY_R
|
2015-05-24 03:20:37 +02:00
|
|
|
GENERAL_NAME
|
2011-11-14 18:12:23 +01:00
|
|
|
GISTBuildBuffers
|
2010-02-26 02:55:35 +01:00
|
|
|
GISTBuildState
|
|
|
|
GISTENTRY
|
|
|
|
GISTInsertStack
|
|
|
|
GISTInsertState
|
2011-11-14 18:12:23 +01:00
|
|
|
GISTNodeBuffer
|
|
|
|
GISTNodeBufferPage
|
2010-02-26 02:55:35 +01:00
|
|
|
GISTPageOpaque
|
|
|
|
GISTPageOpaqueData
|
2011-04-09 05:11:37 +02:00
|
|
|
GISTPageSplitInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
GISTSTATE
|
|
|
|
GISTScanOpaque
|
|
|
|
GISTScanOpaqueData
|
2011-04-09 05:11:37 +02:00
|
|
|
GISTSearchHeapItem
|
|
|
|
GISTSearchItem
|
2010-02-26 02:55:35 +01:00
|
|
|
GISTTYPE
|
|
|
|
GIST_SPLITVEC
|
2017-05-17 21:52:16 +02:00
|
|
|
GMReaderTupleBuffer
|
2010-02-26 02:55:35 +01:00
|
|
|
GV
|
2016-04-27 17:47:28 +02:00
|
|
|
Gather
|
2017-03-09 13:40:36 +01:00
|
|
|
GatherMerge
|
|
|
|
GatherMergePath
|
|
|
|
GatherMergeState
|
2017-05-17 21:52:16 +02:00
|
|
|
GatherPath
|
|
|
|
GatherState
|
2010-02-26 02:55:35 +01:00
|
|
|
Gene
|
2018-04-26 20:45:04 +02:00
|
|
|
GeneratePruningStepsContext
|
2017-11-29 15:24:24 +01:00
|
|
|
GenerationBlock
|
|
|
|
GenerationChunk
|
|
|
|
GenerationContext
|
|
|
|
GenerationPointer
|
2013-05-29 22:58:43 +02:00
|
|
|
GenericCosts
|
2018-04-26 20:45:04 +02:00
|
|
|
GenericIndexOpts
|
2016-04-27 17:47:28 +02:00
|
|
|
GenericXLogState
|
2010-02-26 02:55:35 +01:00
|
|
|
GeqoPrivateData
|
2015-05-24 03:20:37 +02:00
|
|
|
GetForeignJoinPaths_function
|
2012-06-10 21:15:31 +02:00
|
|
|
GetForeignPaths_function
|
|
|
|
GetForeignPlan_function
|
|
|
|
GetForeignRelSize_function
|
2015-05-24 03:20:37 +02:00
|
|
|
GetForeignRowMarkType_function
|
2016-05-02 15:23:55 +02:00
|
|
|
GetForeignUpperPaths_function
|
2013-05-29 22:58:43 +02:00
|
|
|
GetState
|
2011-11-14 18:12:23 +01:00
|
|
|
GiSTOptions
|
2010-02-26 02:55:35 +01:00
|
|
|
GinBtree
|
|
|
|
GinBtreeData
|
2014-05-06 15:08:14 +02:00
|
|
|
GinBtreeDataLeafInsertData
|
|
|
|
GinBtreeEntryInsertData
|
2010-02-26 02:55:35 +01:00
|
|
|
GinBtreeStack
|
|
|
|
GinBuildState
|
|
|
|
GinChkVal
|
2011-04-09 05:11:37 +02:00
|
|
|
GinEntryAccumulator
|
2013-05-29 22:58:43 +02:00
|
|
|
GinIndexStat
|
2010-02-26 02:55:35 +01:00
|
|
|
GinMetaPageData
|
2011-04-09 05:11:37 +02:00
|
|
|
GinNullCategory
|
2010-02-26 02:55:35 +01:00
|
|
|
GinOptions
|
|
|
|
GinPageOpaque
|
|
|
|
GinPageOpaqueData
|
2014-05-06 15:08:14 +02:00
|
|
|
GinPlaceToPageRC
|
|
|
|
GinPostingList
|
2012-06-10 21:15:31 +02:00
|
|
|
GinQualCounts
|
2010-02-26 02:55:35 +01:00
|
|
|
GinScanEntry
|
|
|
|
GinScanKey
|
|
|
|
GinScanOpaque
|
|
|
|
GinScanOpaqueData
|
|
|
|
GinState
|
2011-04-09 05:11:37 +02:00
|
|
|
GinStatsData
|
2014-05-06 15:08:14 +02:00
|
|
|
GinTernaryValue
|
2010-02-26 02:55:35 +01:00
|
|
|
GinTupleCollector
|
|
|
|
GinVacuumState
|
|
|
|
GistBDItem
|
2011-11-14 18:12:23 +01:00
|
|
|
GistBufferingMode
|
2010-02-26 02:55:35 +01:00
|
|
|
GistEntryVector
|
2014-05-06 15:08:14 +02:00
|
|
|
GistInetKey
|
2010-02-26 02:55:35 +01:00
|
|
|
GistNSN
|
|
|
|
GistSplitUnion
|
|
|
|
GistSplitVector
|
|
|
|
GlobalTransaction
|
|
|
|
GrantRoleStmt
|
|
|
|
GrantStmt
|
|
|
|
GrantTargetType
|
|
|
|
Group
|
2016-04-27 17:47:28 +02:00
|
|
|
GroupPath
|
Implement partition-wise grouping/aggregation.
If the partition keys of input relation are part of the GROUP BY
clause, all the rows belonging to a given group come from a single
partition. This allows aggregation/grouping over a partitioned
relation to be broken down * into aggregation/grouping on each
partition. This should be no worse, and often better, than the normal
approach.
If the GROUP BY clause does not contain all the partition keys, we can
still perform partial aggregation for each partition and then finalize
aggregation after appending the partial results. This is less certain
to be a win, but it's still useful.
Jeevan Chalke, Ashutosh Bapat, Robert Haas. The larger patch series
of which this patch is a part was also reviewed and tested by Antonin
Houska, Rajkumar Raghuwanshi, David Rowley, Dilip Kumar, Konstantin
Knizhnik, Pascal Legrand, and Rafia Sabih.
Discussion: http://postgr.es/m/CAM2+6=V64_xhstVHie0Rz=KPEQnLJMZt_e314P0jaT_oJ9MR8A@mail.gmail.com
2018-03-22 17:49:48 +01:00
|
|
|
GroupPathExtraData
|
2010-02-26 02:55:35 +01:00
|
|
|
GroupState
|
|
|
|
GroupVarInfo
|
2015-05-24 03:20:37 +02:00
|
|
|
GroupingFunc
|
|
|
|
GroupingSet
|
2017-05-17 21:52:16 +02:00
|
|
|
GroupingSetData
|
2015-05-24 03:20:37 +02:00
|
|
|
GroupingSetKind
|
2016-04-27 17:47:28 +02:00
|
|
|
GroupingSetsPath
|
2010-02-26 02:55:35 +01:00
|
|
|
GucAction
|
|
|
|
GucBoolAssignHook
|
2011-04-09 05:11:37 +02:00
|
|
|
GucBoolCheckHook
|
2010-02-26 02:55:35 +01:00
|
|
|
GucContext
|
|
|
|
GucEnumAssignHook
|
2011-04-09 05:11:37 +02:00
|
|
|
GucEnumCheckHook
|
2010-02-26 02:55:35 +01:00
|
|
|
GucIntAssignHook
|
2011-04-09 05:11:37 +02:00
|
|
|
GucIntCheckHook
|
2010-02-26 02:55:35 +01:00
|
|
|
GucRealAssignHook
|
2011-04-09 05:11:37 +02:00
|
|
|
GucRealCheckHook
|
2010-02-26 02:55:35 +01:00
|
|
|
GucShowHook
|
|
|
|
GucSource
|
|
|
|
GucStack
|
|
|
|
GucStackState
|
|
|
|
GucStringAssignHook
|
2011-04-09 05:11:37 +02:00
|
|
|
GucStringCheckHook
|
2010-02-26 02:55:35 +01:00
|
|
|
HANDLE
|
|
|
|
HASHACTION
|
|
|
|
HASHBUCKET
|
|
|
|
HASHCTL
|
|
|
|
HASHELEMENT
|
|
|
|
HASHHDR
|
|
|
|
HASHSEGMENT
|
|
|
|
HASH_SEQ_STATUS
|
2016-12-13 16:51:32 +01:00
|
|
|
HCRYPTPROV
|
2011-04-09 05:11:37 +02:00
|
|
|
HE
|
2010-02-26 02:55:35 +01:00
|
|
|
HEntry
|
|
|
|
HIST_ENTRY
|
|
|
|
HKEY
|
|
|
|
HLOCAL
|
|
|
|
HMODULE
|
|
|
|
HOldEntry
|
2011-11-14 18:12:23 +01:00
|
|
|
HRESULT
|
2010-02-26 02:55:35 +01:00
|
|
|
HSParser
|
|
|
|
HSpool
|
|
|
|
HStore
|
|
|
|
HTAB
|
|
|
|
HTSU_Result
|
|
|
|
HTSV_Result
|
|
|
|
HV
|
|
|
|
Hash
|
|
|
|
HashAllocFunc
|
|
|
|
HashBuildState
|
|
|
|
HashCompareFunc
|
|
|
|
HashCopyFunc
|
2017-05-17 21:52:16 +02:00
|
|
|
HashIndexStat
|
2018-04-26 20:45:04 +02:00
|
|
|
HashInstrumentation
|
2010-02-26 02:55:35 +01:00
|
|
|
HashJoin
|
|
|
|
HashJoinState
|
|
|
|
HashJoinTable
|
|
|
|
HashJoinTuple
|
2015-05-24 03:20:37 +02:00
|
|
|
HashMemoryChunk
|
2010-02-26 02:55:35 +01:00
|
|
|
HashMetaPage
|
|
|
|
HashMetaPageData
|
|
|
|
HashPageOpaque
|
|
|
|
HashPageOpaqueData
|
2017-05-17 21:52:16 +02:00
|
|
|
HashPageStat
|
2010-02-26 02:55:35 +01:00
|
|
|
HashPath
|
|
|
|
HashScanOpaque
|
|
|
|
HashScanOpaqueData
|
2017-11-29 15:24:24 +01:00
|
|
|
HashScanPosData
|
2017-05-17 21:52:16 +02:00
|
|
|
HashScanPosItem
|
2010-02-26 02:55:35 +01:00
|
|
|
HashSkewBucket
|
|
|
|
HashState
|
|
|
|
HashValueFunc
|
|
|
|
HbaLine
|
2011-11-14 18:12:23 +01:00
|
|
|
HbaToken
|
2017-05-17 21:52:16 +02:00
|
|
|
HeadlineJsonState
|
2010-02-26 02:55:35 +01:00
|
|
|
HeadlineParsedText
|
|
|
|
HeadlineWordEntry
|
|
|
|
HeapScanDesc
|
|
|
|
HeapTuple
|
|
|
|
HeapTupleData
|
|
|
|
HeapTupleFields
|
|
|
|
HeapTupleHeader
|
|
|
|
HeapTupleHeaderData
|
2013-05-29 22:58:43 +02:00
|
|
|
HeapUpdateFailureData
|
2010-02-26 02:55:35 +01:00
|
|
|
HistControl
|
|
|
|
HotStandbyState
|
|
|
|
I32
|
2017-05-17 21:52:16 +02:00
|
|
|
ICU_Convert_Func
|
2018-04-26 20:45:04 +02:00
|
|
|
ID
|
2010-02-26 02:55:35 +01:00
|
|
|
INFIX
|
2017-05-17 21:52:16 +02:00
|
|
|
INT128
|
2011-04-09 05:11:37 +02:00
|
|
|
INTERFACE_INFO
|
2010-02-26 02:55:35 +01:00
|
|
|
IOFuncSelector
|
|
|
|
IPCompareMethod
|
|
|
|
ITEM
|
|
|
|
IV
|
2013-05-29 22:58:43 +02:00
|
|
|
IdentLine
|
2010-02-26 02:55:35 +01:00
|
|
|
IdentifierLookup
|
2011-04-09 05:11:37 +02:00
|
|
|
IdentifySystemCmd
|
2017-05-17 21:52:16 +02:00
|
|
|
IfStackElem
|
2015-05-24 03:20:37 +02:00
|
|
|
ImportForeignSchemaStmt
|
|
|
|
ImportForeignSchemaType
|
|
|
|
ImportForeignSchema_function
|
|
|
|
ImportQual
|
2017-05-17 21:52:16 +02:00
|
|
|
IncludeWal
|
2015-05-24 03:20:37 +02:00
|
|
|
InclusionOpaque
|
2010-02-26 02:55:35 +01:00
|
|
|
IncrementVarSublevelsUp_context
|
|
|
|
Index
|
2016-08-15 19:42:51 +02:00
|
|
|
IndexAMProperty
|
2016-04-27 17:47:28 +02:00
|
|
|
IndexAmRoutine
|
2010-02-26 02:55:35 +01:00
|
|
|
IndexArrayKeyInfo
|
2018-04-26 20:45:04 +02:00
|
|
|
IndexAttachInfo
|
Add new wal_level, logical, sufficient for logical decoding.
When wal_level=logical, we'll log columns from the old tuple as
configured by the REPLICA IDENTITY facility added in commit
07cacba983ef79be4a84fcd0e0ca3b5fcb85dd65. This makes it possible
a properly-configured logical replication solution to correctly
follow table updates even if they change the chosen key columns,
or, with REPLICA IDENTITY FULL, even if the table has no key at
all. Note that updates which do not modify the replica identity
column won't log anything extra, making the choice of a good key
(i.e. one that will rarely be changed) important to performance
when wal_level=logical is configured.
Each insert, update, or delete to a catalog table will also log
the CMIN and/or CMAX values of stamped by the current transaction.
This is necessary because logical decoding will require access to
historical snapshots of the catalog in order to decode some data
types, and the CMIN/CMAX values that we may need in order to judge
row visibility may have been overwritten by the time we need them.
Andres Freund, reviewed in various versions by myself, Heikki
Linnakangas, KONDO Mitsumasa, and many others.
2013-12-11 00:33:45 +01:00
|
|
|
IndexAttrBitmapKind
|
2010-02-26 02:55:35 +01:00
|
|
|
IndexBuildCallback
|
|
|
|
IndexBuildResult
|
|
|
|
IndexBulkDeleteCallback
|
|
|
|
IndexBulkDeleteResult
|
2012-06-10 21:15:31 +02:00
|
|
|
IndexClauseSet
|
2010-02-26 02:55:35 +01:00
|
|
|
IndexElem
|
|
|
|
IndexInfo
|
|
|
|
IndexList
|
2011-11-14 18:12:23 +01:00
|
|
|
IndexOnlyScan
|
|
|
|
IndexOnlyScanState
|
2010-02-26 02:55:35 +01:00
|
|
|
IndexOptInfo
|
|
|
|
IndexPath
|
2015-05-24 03:20:37 +02:00
|
|
|
IndexQualInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
IndexRuntimeKeyInfo
|
|
|
|
IndexScan
|
|
|
|
IndexScanDesc
|
|
|
|
IndexScanState
|
2013-05-29 22:58:43 +02:00
|
|
|
IndexStateFlagsAction
|
2010-02-26 02:55:35 +01:00
|
|
|
IndexStmt
|
|
|
|
IndexTuple
|
|
|
|
IndexTupleData
|
|
|
|
IndexUniqueCheck
|
|
|
|
IndexVacuumInfo
|
|
|
|
IndxInfo
|
2015-05-24 03:20:37 +02:00
|
|
|
InferClause
|
|
|
|
InferenceElem
|
2010-02-26 02:55:35 +01:00
|
|
|
InfoItem
|
|
|
|
InhInfo
|
2011-04-09 05:11:37 +02:00
|
|
|
InheritableSocket
|
2018-04-26 20:45:04 +02:00
|
|
|
InheritanceKind
|
2016-05-02 15:23:55 +02:00
|
|
|
InitSampleScan_function
|
|
|
|
InitializeDSMForeignScan_function
|
|
|
|
InitializeWorkerForeignScan_function
|
2010-02-26 02:55:35 +01:00
|
|
|
InlineCodeBlock
|
|
|
|
InsertStmt
|
|
|
|
Instrumentation
|
2015-05-24 03:20:37 +02:00
|
|
|
Int128AggState
|
2010-02-26 02:55:35 +01:00
|
|
|
Int8TransTypeData
|
2017-11-29 15:24:24 +01:00
|
|
|
IntRBTreeNode
|
2010-02-26 02:55:35 +01:00
|
|
|
InternalDefaultACL
|
|
|
|
InternalGrant
|
|
|
|
Interval
|
|
|
|
IntoClause
|
|
|
|
InvalidationChunk
|
|
|
|
InvalidationListHeader
|
|
|
|
IpcMemoryId
|
|
|
|
IpcMemoryKey
|
|
|
|
IpcSemaphoreId
|
|
|
|
IpcSemaphoreKey
|
2014-05-06 15:08:14 +02:00
|
|
|
IsForeignRelUpdatable_function
|
2016-05-02 15:23:55 +02:00
|
|
|
IsForeignScanParallelSafe_function
|
2010-02-26 02:55:35 +01:00
|
|
|
IspellDict
|
|
|
|
Item
|
|
|
|
ItemId
|
|
|
|
ItemIdData
|
|
|
|
ItemPointer
|
|
|
|
ItemPointerData
|
2016-05-02 15:23:55 +02:00
|
|
|
IterateDirectModify_function
|
2011-04-09 05:11:37 +02:00
|
|
|
IterateForeignScan_function
|
2017-05-17 21:52:16 +02:00
|
|
|
IterateJsonStringValuesState
|
2014-05-06 15:08:14 +02:00
|
|
|
JEntry
|
2013-05-29 22:58:43 +02:00
|
|
|
JHashState
|
2010-02-26 02:55:35 +01:00
|
|
|
JOBOBJECTINFOCLASS
|
|
|
|
JOBOBJECT_BASIC_LIMIT_INFORMATION
|
|
|
|
JOBOBJECT_BASIC_UI_RESTRICTIONS
|
|
|
|
JOBOBJECT_SECURITY_LIMIT_INFORMATION
|
2018-04-26 20:45:04 +02:00
|
|
|
JitContext
|
|
|
|
JitProviderCallbacks
|
|
|
|
JitProviderCompileExprCB
|
|
|
|
JitProviderInit
|
|
|
|
JitProviderReleaseContextCB
|
|
|
|
JitProviderResetAfterErrorCB
|
2010-02-26 02:55:35 +01:00
|
|
|
Join
|
2012-06-10 21:15:31 +02:00
|
|
|
JoinCostWorkspace
|
2010-02-26 02:55:35 +01:00
|
|
|
JoinExpr
|
|
|
|
JoinHashEntry
|
|
|
|
JoinPath
|
2015-05-24 03:20:37 +02:00
|
|
|
JoinPathExtraData
|
2010-02-26 02:55:35 +01:00
|
|
|
JoinState
|
|
|
|
JoinType
|
2017-05-17 21:52:16 +02:00
|
|
|
JsObject
|
|
|
|
JsValue
|
2016-04-27 17:47:28 +02:00
|
|
|
JsonAggState
|
2013-05-29 22:58:43 +02:00
|
|
|
JsonHashEntry
|
2017-05-17 21:52:16 +02:00
|
|
|
JsonIterateStringValuesAction
|
2012-06-10 21:15:31 +02:00
|
|
|
JsonLexContext
|
2013-05-29 22:58:43 +02:00
|
|
|
JsonParseContext
|
|
|
|
JsonSemAction
|
|
|
|
JsonTokenType
|
2017-05-17 21:52:16 +02:00
|
|
|
JsonTransformStringValuesAction
|
2015-05-24 03:20:37 +02:00
|
|
|
JsonTypeCategory
|
2014-05-06 15:08:14 +02:00
|
|
|
Jsonb
|
2016-04-27 17:47:28 +02:00
|
|
|
JsonbAggState
|
2015-05-24 03:20:37 +02:00
|
|
|
JsonbContainer
|
2014-05-06 15:08:14 +02:00
|
|
|
JsonbInState
|
|
|
|
JsonbIterState
|
|
|
|
JsonbIterator
|
2015-05-24 03:20:37 +02:00
|
|
|
JsonbIteratorToken
|
2014-05-06 15:08:14 +02:00
|
|
|
JsonbPair
|
|
|
|
JsonbParseState
|
2015-05-24 03:20:37 +02:00
|
|
|
JsonbTypeCategory
|
2014-05-06 15:08:14 +02:00
|
|
|
JsonbValue
|
2010-02-26 02:55:35 +01:00
|
|
|
JunkFilter
|
2011-04-09 05:11:37 +02:00
|
|
|
KeyArray
|
2010-02-26 02:55:35 +01:00
|
|
|
KeySuffix
|
|
|
|
KeyWord
|
|
|
|
LARGE_INTEGER
|
|
|
|
LDAP
|
|
|
|
LDAPMessage
|
2013-05-29 22:58:43 +02:00
|
|
|
LDAPURLDesc
|
2010-02-26 02:55:35 +01:00
|
|
|
LDAP_TIMEVAL
|
|
|
|
LINE
|
2018-04-26 20:45:04 +02:00
|
|
|
LLVMAttributeRef
|
|
|
|
LLVMBasicBlockRef
|
2018-03-22 19:10:33 +01:00
|
|
|
LLVMBuilderRef
|
2018-04-26 20:45:04 +02:00
|
|
|
LLVMIntPredicate
|
2018-03-22 03:28:28 +01:00
|
|
|
LLVMJitContext
|
Support for optimizing and emitting code in LLVM JIT provider.
This commit introduces the ability to actually generate code using
LLVM. In particular, this adds:
- Ability to emit code both in heavily optimized and largely
unoptimized fashion
- Batching facility to allow functions to be defined in small
increments, but optimized and emitted in executable form in larger
batches (for performance and memory efficiency)
- Type and function declaration synchronization between runtime
generated code and normal postgres code. This is critical to be able
to access struct fields etc.
- Developer oriented jit_dump_bitcode GUC, for inspecting / debugging
the generated code.
- per JitContext statistics of number of functions, time spent
generating code, optimizing, and emitting it. This will later be
employed for EXPLAIN support.
This commit doesn't yet contain any code actually generating
functions. That'll follow in later commits.
Documentation for GUCs added, and for JIT in general, will be added in
later commits.
Author: Andres Freund, with contributions by Pierre Ducroquet
Testing-By: Thomas Munro, Peter Eisentraut
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
2018-03-22 19:05:22 +01:00
|
|
|
LLVMJitHandle
|
2018-04-26 20:45:04 +02:00
|
|
|
LLVMMemoryBufferRef
|
|
|
|
LLVMModuleRef
|
|
|
|
LLVMOrcJITStackRef
|
|
|
|
LLVMOrcModuleHandle
|
|
|
|
LLVMOrcTargetAddress
|
|
|
|
LLVMPassManagerBuilderRef
|
|
|
|
LLVMPassManagerRef
|
|
|
|
LLVMSharedModuleRef
|
|
|
|
LLVMTargetMachineRef
|
|
|
|
LLVMTargetRef
|
Support for optimizing and emitting code in LLVM JIT provider.
This commit introduces the ability to actually generate code using
LLVM. In particular, this adds:
- Ability to emit code both in heavily optimized and largely
unoptimized fashion
- Batching facility to allow functions to be defined in small
increments, but optimized and emitted in executable form in larger
batches (for performance and memory efficiency)
- Type and function declaration synchronization between runtime
generated code and normal postgres code. This is critical to be able
to access struct fields etc.
- Developer oriented jit_dump_bitcode GUC, for inspecting / debugging
the generated code.
- per JitContext statistics of number of functions, time spent
generating code, optimizing, and emitting it. This will later be
employed for EXPLAIN support.
This commit doesn't yet contain any code actually generating
functions. That'll follow in later commits.
Documentation for GUCs added, and for JIT in general, will be added in
later commits.
Author: Andres Freund, with contributions by Pierre Ducroquet
Testing-By: Thomas Munro, Peter Eisentraut
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
2018-03-22 19:05:22 +01:00
|
|
|
LLVMTypeRef
|
|
|
|
LLVMValueRef
|
2010-02-26 02:55:35 +01:00
|
|
|
LOCALLOCK
|
|
|
|
LOCALLOCKOWNER
|
|
|
|
LOCALLOCKTAG
|
Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.
To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.
A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.
Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.
We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.
Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.
Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-07 22:46:51 +01:00
|
|
|
LOCALPREDICATELOCK
|
2010-02-26 02:55:35 +01:00
|
|
|
LOCK
|
|
|
|
LOCKMASK
|
|
|
|
LOCKMETHODID
|
|
|
|
LOCKMODE
|
|
|
|
LOCKTAG
|
|
|
|
LONG
|
2018-04-26 20:45:04 +02:00
|
|
|
LONG_PTR
|
2011-04-09 05:11:37 +02:00
|
|
|
LOOP
|
2010-02-26 02:55:35 +01:00
|
|
|
LPBYTE
|
|
|
|
LPCTSTR
|
|
|
|
LPCWSTR
|
|
|
|
LPDWORD
|
|
|
|
LPSECURITY_ATTRIBUTES
|
|
|
|
LPSERVICE_STATUS
|
|
|
|
LPSTR
|
|
|
|
LPTHREAD_START_ROUTINE
|
|
|
|
LPTSTR
|
|
|
|
LPVOID
|
|
|
|
LPWSTR
|
|
|
|
LSEG
|
2018-04-26 20:45:04 +02:00
|
|
|
LUID
|
2010-02-26 02:55:35 +01:00
|
|
|
LVRelStats
|
|
|
|
LWLock
|
2015-05-24 03:20:37 +02:00
|
|
|
LWLockHandle
|
2015-12-15 19:32:54 +01:00
|
|
|
LWLockMinimallyPadded
|
2010-02-26 02:55:35 +01:00
|
|
|
LWLockMode
|
|
|
|
LWLockPadded
|
2011-04-09 05:11:37 +02:00
|
|
|
LabelProvider
|
2010-02-26 02:55:35 +01:00
|
|
|
LargeObjectDesc
|
Faster expression evaluation and targetlist projection.
This replaces the old, recursive tree-walk based evaluation, with
non-recursive, opcode dispatch based, expression evaluation.
Projection is now implemented as part of expression evaluation.
This both leads to significant performance improvements, and makes
future just-in-time compilation of expressions easier.
The speed gains primarily come from:
- non-recursive implementation reduces stack usage / overhead
- simple sub-expressions are implemented with a single jump, without
function calls
- sharing some state between different sub-expressions
- reduced amount of indirect/hard to predict memory accesses by laying
out operation metadata sequentially; including the avoidance of
nearly all of the previously used linked lists
- more code has been moved to expression initialization, avoiding
constant re-checks at evaluation time
Future just-in-time compilation (JIT) has become easier, as
demonstrated by released patches intended to be merged in a later
release, for primarily two reasons: Firstly, due to a stricter split
between expression initialization and evaluation, less code has to be
handled by the JIT. Secondly, due to the non-recursive nature of the
generated "instructions", less performance-critical code-paths can
easily be shared between interpreted and compiled evaluation.
The new framework allows for significant future optimizations. E.g.:
- basic infrastructure for to later reduce the per executor-startup
overhead of expression evaluation, by caching state in prepared
statements. That'd be helpful in OLTPish scenarios where
initialization overhead is measurable.
- optimizing the generated "code". A number of proposals for potential
work has already been made.
- optimizing the interpreter. Similarly a number of proposals have
been made here too.
The move of logic into the expression initialization step leads to some
backward-incompatible changes:
- Function permission checks are now done during expression
initialization, whereas previously they were done during
execution. In edge cases this can lead to errors being raised that
previously wouldn't have been, e.g. a NULL array being coerced to a
different array type previously didn't perform checks.
- The set of domain constraints to be checked, is now evaluated once
during expression initialization, previously it was re-built
every time a domain check was evaluated. For normal queries this
doesn't change much, but e.g. for plpgsql functions, which caches
ExprStates, the old set could stick around longer. The behavior
around might still change.
Author: Andres Freund, with significant changes by Tom Lane,
changes by Heikki Linnakangas
Reviewed-By: Tom Lane, Heikki Linnakangas
Discussion: https://postgr.es/m/20161206034955.bh33paeralxbtluv@alap3.anarazel.de
2017-03-14 23:45:36 +01:00
|
|
|
LastAttnumInfo
|
2011-04-09 05:11:37 +02:00
|
|
|
Latch
|
2014-05-06 15:08:14 +02:00
|
|
|
LerpFunc
|
2010-02-26 02:55:35 +01:00
|
|
|
LexDescr
|
|
|
|
LexemeEntry
|
|
|
|
LexemeHashKey
|
|
|
|
LexemeInfo
|
|
|
|
LexemeKey
|
|
|
|
LexizeData
|
|
|
|
Limit
|
2016-04-27 17:47:28 +02:00
|
|
|
LimitPath
|
2010-02-26 02:55:35 +01:00
|
|
|
LimitState
|
|
|
|
LimitStateCond
|
|
|
|
List
|
|
|
|
ListCell
|
|
|
|
ListDictionary
|
|
|
|
ListParsedLex
|
|
|
|
ListenAction
|
|
|
|
ListenActionKind
|
|
|
|
ListenStmt
|
|
|
|
LoadStmt
|
|
|
|
LocalBufferLookupEnt
|
2014-05-06 15:08:14 +02:00
|
|
|
LocalPgBackendStatus
|
2010-02-26 02:55:35 +01:00
|
|
|
LocalTransactionId
|
|
|
|
LocationIndex
|
|
|
|
LockAcquireResult
|
2013-05-29 22:58:43 +02:00
|
|
|
LockClauseStrength
|
2010-02-26 02:55:35 +01:00
|
|
|
LockData
|
|
|
|
LockInfoData
|
2011-11-14 18:12:23 +01:00
|
|
|
LockInstanceData
|
2010-02-26 02:55:35 +01:00
|
|
|
LockMethod
|
|
|
|
LockMethodData
|
|
|
|
LockRelId
|
|
|
|
LockRows
|
2016-04-27 17:47:28 +02:00
|
|
|
LockRowsPath
|
2010-02-26 02:55:35 +01:00
|
|
|
LockRowsState
|
|
|
|
LockStmt
|
|
|
|
LockTagType
|
|
|
|
LockTupleMode
|
2018-04-26 20:45:04 +02:00
|
|
|
LockViewRecurse_context
|
2015-05-24 03:20:37 +02:00
|
|
|
LockWaitPolicy
|
2010-02-26 02:55:35 +01:00
|
|
|
LockingClause
|
2011-04-09 05:11:37 +02:00
|
|
|
LogOpts
|
2010-02-26 02:55:35 +01:00
|
|
|
LogStmtLevel
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
LogicalDecodeBeginCB
|
|
|
|
LogicalDecodeChangeCB
|
|
|
|
LogicalDecodeCommitCB
|
2015-05-24 03:20:37 +02:00
|
|
|
LogicalDecodeFilterByOriginCB
|
2016-05-02 15:23:55 +02:00
|
|
|
LogicalDecodeMessageCB
|
2014-05-06 15:08:14 +02:00
|
|
|
LogicalDecodeShutdownCB
|
|
|
|
LogicalDecodeStartupCB
|
2018-04-26 20:45:04 +02:00
|
|
|
LogicalDecodeTruncateCB
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
LogicalDecodingContext
|
2014-05-06 15:08:14 +02:00
|
|
|
LogicalErrorCallbackState
|
|
|
|
LogicalOutputPluginInit
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
LogicalOutputPluginWriterPrepareWrite
|
2017-05-17 21:52:16 +02:00
|
|
|
LogicalOutputPluginWriterUpdateProgress
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
LogicalOutputPluginWriterWrite
|
2017-05-17 21:52:16 +02:00
|
|
|
LogicalRepBeginData
|
|
|
|
LogicalRepCommitData
|
|
|
|
LogicalRepCtxStruct
|
|
|
|
LogicalRepRelId
|
|
|
|
LogicalRepRelMapEntry
|
|
|
|
LogicalRepRelation
|
|
|
|
LogicalRepTupleData
|
|
|
|
LogicalRepTyp
|
|
|
|
LogicalRepWorker
|
2017-08-14 23:29:33 +02:00
|
|
|
LogicalRepWorkerId
|
2014-05-06 15:08:14 +02:00
|
|
|
LogicalRewriteMappingData
|
2010-02-26 02:55:35 +01:00
|
|
|
LogicalTape
|
|
|
|
LogicalTapeSet
|
|
|
|
MAGIC
|
|
|
|
MBuf
|
2014-05-06 15:08:14 +02:00
|
|
|
MEMORY_BASIC_INFORMATION
|
2011-04-09 05:11:37 +02:00
|
|
|
MINIDUMPWRITEDUMP
|
|
|
|
MINIDUMP_TYPE
|
2010-07-06 21:18:19 +02:00
|
|
|
MJEvalResult
|
2017-05-17 21:52:16 +02:00
|
|
|
MVDependencies
|
|
|
|
MVDependency
|
|
|
|
MVNDistinct
|
|
|
|
MVNDistinctItem
|
2010-02-26 02:55:35 +01:00
|
|
|
Material
|
|
|
|
MaterialPath
|
|
|
|
MaterialState
|
|
|
|
MdfdVec
|
|
|
|
MemoryContext
|
2015-05-24 03:20:37 +02:00
|
|
|
MemoryContextCallback
|
|
|
|
MemoryContextCallbackFunction
|
2016-04-27 17:47:28 +02:00
|
|
|
MemoryContextCounters
|
2010-02-26 02:55:35 +01:00
|
|
|
MemoryContextData
|
|
|
|
MemoryContextMethods
|
2018-04-26 20:45:04 +02:00
|
|
|
MemoryStatsPrintFunc
|
2011-04-09 05:11:37 +02:00
|
|
|
MergeAppend
|
|
|
|
MergeAppendPath
|
|
|
|
MergeAppendState
|
2010-02-26 02:55:35 +01:00
|
|
|
MergeJoin
|
|
|
|
MergeJoinClause
|
|
|
|
MergeJoinState
|
|
|
|
MergePath
|
|
|
|
MergeScanSelCache
|
2017-11-29 15:24:24 +01:00
|
|
|
MetaCommand
|
2010-02-26 02:55:35 +01:00
|
|
|
MinMaxAggInfo
|
2016-04-27 17:47:28 +02:00
|
|
|
MinMaxAggPath
|
2010-02-26 02:55:35 +01:00
|
|
|
MinMaxExpr
|
|
|
|
MinMaxOp
|
|
|
|
MinimalTuple
|
|
|
|
MinimalTupleData
|
2015-05-24 03:20:37 +02:00
|
|
|
MinmaxOpaque
|
2018-04-26 20:45:04 +02:00
|
|
|
MissingPtr
|
2010-02-26 02:55:35 +01:00
|
|
|
ModifyTable
|
2016-04-27 17:47:28 +02:00
|
|
|
ModifyTablePath
|
2010-02-26 02:55:35 +01:00
|
|
|
ModifyTableState
|
2016-04-27 17:47:28 +02:00
|
|
|
MorphOpaque
|
2010-02-26 02:55:35 +01:00
|
|
|
MsgType
|
2015-05-24 03:20:37 +02:00
|
|
|
MultiAssignRef
|
2017-05-17 21:52:16 +02:00
|
|
|
MultiSortSupport
|
|
|
|
MultiSortSupportData
|
2010-02-26 02:55:35 +01:00
|
|
|
MultiXactId
|
2013-05-29 22:58:43 +02:00
|
|
|
MultiXactMember
|
2010-02-26 02:55:35 +01:00
|
|
|
MultiXactOffset
|
|
|
|
MultiXactStateData
|
2013-05-29 22:58:43 +02:00
|
|
|
MultiXactStatus
|
2010-02-26 02:55:35 +01:00
|
|
|
MyData
|
|
|
|
NDBOX
|
|
|
|
NODE
|
|
|
|
NUMCacheEntry
|
|
|
|
NUMDesc
|
|
|
|
NUMProc
|
|
|
|
NV
|
|
|
|
Name
|
|
|
|
NameData
|
2016-04-27 17:47:28 +02:00
|
|
|
NameHashEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
NamedArgExpr
|
2016-04-27 17:47:28 +02:00
|
|
|
NamedLWLockTranche
|
|
|
|
NamedLWLockTrancheRequest
|
2017-05-17 21:52:16 +02:00
|
|
|
NamedTuplestoreScan
|
|
|
|
NamedTuplestoreScanState
|
2010-02-26 02:55:35 +01:00
|
|
|
NamespaceInfo
|
|
|
|
NestLoop
|
2011-04-09 05:11:37 +02:00
|
|
|
NestLoopParam
|
2010-02-26 02:55:35 +01:00
|
|
|
NestLoopState
|
|
|
|
NestPath
|
|
|
|
NewColumnValue
|
|
|
|
NewConstraint
|
2016-05-02 15:23:55 +02:00
|
|
|
NextSampleBlock_function
|
|
|
|
NextSampleTuple_function
|
2017-05-17 21:52:16 +02:00
|
|
|
NextValueExpr
|
2010-02-26 02:55:35 +01:00
|
|
|
Node
|
|
|
|
NodeTag
|
2012-06-10 21:15:31 +02:00
|
|
|
NonEmptyRange
|
2010-02-26 02:55:35 +01:00
|
|
|
Notification
|
|
|
|
NotifyStmt
|
|
|
|
Nsrt
|
Change function call information to be variable length.
Before this change FunctionCallInfoData, the struct arguments etc for
V1 function calls are stored in, always had space for
FUNC_MAX_ARGS/100 arguments, storing datums and their nullness in two
arrays. For nearly every function call 100 arguments is far more than
needed, therefore wasting memory. Arg and argnull being two separate
arrays also guarantees that to access a single argument, two
cachelines have to be touched.
Change the layout so there's a single variable-length array with pairs
of value / isnull. That drastically reduces memory consumption for
most function calls (on x86-64 a two argument function now uses
64bytes, previously 936 bytes), and makes it very likely that argument
value and its nullness are on the same cacheline.
Arguments are stored in a new NullableDatum struct, which, due to
padding, needs more memory per argument than before. But as usually
far fewer arguments are stored, and individual arguments are cheaper
to access, that's still a clear win. It's likely that there's other
places where conversion to NullableDatum arrays would make sense,
e.g. TupleTableSlots, but that's for another commit.
Because the function call information is now variable-length
allocations have to take the number of arguments into account. For
heap allocations that can be done with SizeForFunctionCallInfoData(),
for on-stack allocations there's a new LOCAL_FCINFO(name, nargs) macro
that helps to allocate an appropriately sized and aligned variable.
Some places with stack allocation function call information don't know
the number of arguments at compile time, and currently variably sized
stack allocations aren't allowed in postgres. Therefore allow for
FUNC_MAX_ARGS space in these cases. They're not that common, so for
now that seems acceptable.
Because of the need to allocate FunctionCallInfo of the appropriate
size, older extensions may need to update their code. To avoid subtle
breakages, the FunctionCallInfoData struct has been renamed to
FunctionCallInfoBaseData. Most code only references FunctionCallInfo,
so that shouldn't cause much collateral damage.
This change is also a prerequisite for more efficient expression JIT
compilation (by allocating the function call information on the stack,
allowing LLVM to optimize it away); previously the size of the call
information caused problems inside LLVM's optimizer.
Author: Andres Freund
Reviewed-By: Tom Lane
Discussion: https://postgr.es/m/20180605172952.x34m5uz6ju6enaem@alap3.anarazel.de
2019-01-26 23:17:52 +01:00
|
|
|
NullableDatum
|
2010-02-26 02:55:35 +01:00
|
|
|
NullIfExpr
|
|
|
|
NullTest
|
|
|
|
NullTestType
|
|
|
|
Numeric
|
2014-05-06 15:08:14 +02:00
|
|
|
NumericAggState
|
2010-02-26 02:55:35 +01:00
|
|
|
NumericDigit
|
2015-05-24 03:20:37 +02:00
|
|
|
NumericSortSupport
|
2016-12-13 16:51:32 +01:00
|
|
|
NumericSumAccum
|
2010-02-26 02:55:35 +01:00
|
|
|
NumericVar
|
2013-05-29 22:58:43 +02:00
|
|
|
OM_uint32
|
2010-02-26 02:55:35 +01:00
|
|
|
OP
|
2014-05-06 15:08:14 +02:00
|
|
|
OSAPerGroupState
|
|
|
|
OSAPerQueryState
|
2011-04-09 05:11:37 +02:00
|
|
|
OSInfo
|
2016-12-13 16:51:32 +01:00
|
|
|
OSSLCipher
|
2010-02-26 02:55:35 +01:00
|
|
|
OSSLDigest
|
|
|
|
OSVERSIONINFO
|
|
|
|
OVERLAPPED
|
2012-06-10 21:15:31 +02:00
|
|
|
ObjectAccessDrop
|
2013-05-29 22:58:43 +02:00
|
|
|
ObjectAccessNamespaceSearch
|
|
|
|
ObjectAccessPostAlter
|
|
|
|
ObjectAccessPostCreate
|
2011-04-09 05:11:37 +02:00
|
|
|
ObjectAccessType
|
2010-02-26 02:55:35 +01:00
|
|
|
ObjectAddress
|
|
|
|
ObjectAddressExtra
|
|
|
|
ObjectAddressStack
|
|
|
|
ObjectAddresses
|
|
|
|
ObjectClass
|
2011-11-14 18:12:23 +01:00
|
|
|
ObjectPropertyType
|
2010-02-26 02:55:35 +01:00
|
|
|
ObjectType
|
2016-12-28 18:00:00 +01:00
|
|
|
ObjectWithArgs
|
2010-02-26 02:55:35 +01:00
|
|
|
Offset
|
|
|
|
OffsetNumber
|
|
|
|
OffsetVarNodes_context
|
|
|
|
Oid
|
|
|
|
OidOptions
|
2013-05-29 22:58:43 +02:00
|
|
|
OkeysState
|
2011-04-09 05:11:37 +02:00
|
|
|
OldSerXidControl
|
2016-04-11 22:43:52 +02:00
|
|
|
OldSnapshotControlData
|
2010-02-26 02:55:35 +01:00
|
|
|
OldToNewMapping
|
|
|
|
OldToNewMappingData
|
|
|
|
OldTriggerInfo
|
|
|
|
OnCommitAction
|
|
|
|
OnCommitItem
|
2015-05-24 03:20:37 +02:00
|
|
|
OnConflictAction
|
|
|
|
OnConflictClause
|
|
|
|
OnConflictExpr
|
2018-04-26 20:45:04 +02:00
|
|
|
OnConflictSetState
|
2011-11-14 18:12:23 +01:00
|
|
|
OpBtreeInterpretation
|
2010-02-26 02:55:35 +01:00
|
|
|
OpClassCacheEnt
|
|
|
|
OpExpr
|
|
|
|
OpFamilyMember
|
2016-04-27 17:47:28 +02:00
|
|
|
OpFamilyOpFuncGroup
|
2010-02-26 02:55:35 +01:00
|
|
|
OpclassInfo
|
|
|
|
Operator
|
2016-08-15 19:42:51 +02:00
|
|
|
OperatorElement
|
2010-02-26 02:55:35 +01:00
|
|
|
OpfamilyInfo
|
|
|
|
OprCacheEntry
|
|
|
|
OprCacheKey
|
|
|
|
OprInfo
|
|
|
|
OprProofCacheEntry
|
|
|
|
OprProofCacheKey
|
|
|
|
OutputContext
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
OutputPluginCallbacks
|
2014-05-06 15:08:14 +02:00
|
|
|
OutputPluginOptions
|
|
|
|
OutputPluginOutputType
|
2010-02-26 02:55:35 +01:00
|
|
|
OverrideSearchPath
|
|
|
|
OverrideStackEntry
|
2017-05-17 21:52:16 +02:00
|
|
|
OverridingKind
|
2010-02-26 02:55:35 +01:00
|
|
|
PACE_HEADER
|
|
|
|
PACL
|
|
|
|
PATH
|
|
|
|
PBOOL
|
2011-04-09 05:11:37 +02:00
|
|
|
PCtxtHandle
|
2010-02-26 02:55:35 +01:00
|
|
|
PFN
|
|
|
|
PGAsyncStatusType
|
|
|
|
PGCALL2
|
2016-04-27 17:47:28 +02:00
|
|
|
PGContextVisibility
|
2010-02-26 02:55:35 +01:00
|
|
|
PGEvent
|
|
|
|
PGEventConnDestroy
|
|
|
|
PGEventConnReset
|
|
|
|
PGEventId
|
|
|
|
PGEventProc
|
|
|
|
PGEventRegister
|
|
|
|
PGEventResultCopy
|
|
|
|
PGEventResultCreate
|
|
|
|
PGEventResultDestroy
|
|
|
|
PGFInfoFunction
|
|
|
|
PGFunction
|
|
|
|
PGLZ_HistEntry
|
|
|
|
PGLZ_Strategy
|
|
|
|
PGMessageField
|
|
|
|
PGModuleMagicFunction
|
|
|
|
PGNoticeHooks
|
2017-05-17 21:52:16 +02:00
|
|
|
PGOutputData
|
2010-02-26 02:55:35 +01:00
|
|
|
PGPROC
|
|
|
|
PGP_CFB
|
|
|
|
PGP_Context
|
|
|
|
PGP_MPI
|
|
|
|
PGP_PubKey
|
|
|
|
PGP_S2K
|
2011-04-09 05:11:37 +02:00
|
|
|
PGPing
|
2010-02-26 02:55:35 +01:00
|
|
|
PGQueryClass
|
|
|
|
PGRUsage
|
|
|
|
PGSemaphore
|
|
|
|
PGSemaphoreData
|
|
|
|
PGSetenvStatusType
|
|
|
|
PGShmemHeader
|
|
|
|
PGTransactionStatusType
|
|
|
|
PGVerbosity
|
2012-06-10 21:15:31 +02:00
|
|
|
PGXACT
|
2011-06-09 20:01:49 +02:00
|
|
|
PG_Locale_Strategy
|
2010-02-26 02:55:35 +01:00
|
|
|
PG_Lock_Status
|
|
|
|
PG_init_t
|
|
|
|
PGcancel
|
|
|
|
PGconn
|
2012-06-10 21:15:31 +02:00
|
|
|
PGdataValue
|
2010-02-26 02:55:35 +01:00
|
|
|
PGlobjfuncs
|
|
|
|
PGnotify
|
|
|
|
PGresAttDesc
|
|
|
|
PGresAttValue
|
|
|
|
PGresParamDesc
|
|
|
|
PGresult
|
|
|
|
PGresult_data
|
|
|
|
PHANDLE
|
|
|
|
PLAINTREE
|
|
|
|
PLTemplate
|
|
|
|
PLUID_AND_ATTRIBUTES
|
|
|
|
PLcword
|
|
|
|
PLpgSQL_arrayelem
|
|
|
|
PLpgSQL_case_when
|
|
|
|
PLpgSQL_condition
|
|
|
|
PLpgSQL_datum
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_datum_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_diag_item
|
|
|
|
PLpgSQL_exception
|
|
|
|
PLpgSQL_exception_block
|
|
|
|
PLpgSQL_execstate
|
|
|
|
PLpgSQL_expr
|
|
|
|
PLpgSQL_func_hashkey
|
|
|
|
PLpgSQL_function
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_getdiag_kind
|
2011-11-14 18:12:23 +01:00
|
|
|
PLpgSQL_if_elsif
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_label_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_nsitem
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_nsitem_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_plugin
|
2018-04-26 20:45:04 +02:00
|
|
|
PLpgSQL_promise_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_raise_option
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_raise_option_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_rec
|
|
|
|
PLpgSQL_recfield
|
|
|
|
PLpgSQL_resolve_option
|
|
|
|
PLpgSQL_row
|
|
|
|
PLpgSQL_stmt
|
2015-05-24 03:20:37 +02:00
|
|
|
PLpgSQL_stmt_assert
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_stmt_assign
|
|
|
|
PLpgSQL_stmt_block
|
2018-04-26 20:45:04 +02:00
|
|
|
PLpgSQL_stmt_call
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_stmt_case
|
|
|
|
PLpgSQL_stmt_close
|
2018-04-26 20:45:04 +02:00
|
|
|
PLpgSQL_stmt_commit
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_stmt_dynexecute
|
|
|
|
PLpgSQL_stmt_dynfors
|
|
|
|
PLpgSQL_stmt_execsql
|
|
|
|
PLpgSQL_stmt_exit
|
|
|
|
PLpgSQL_stmt_fetch
|
|
|
|
PLpgSQL_stmt_forc
|
2011-04-09 05:11:37 +02:00
|
|
|
PLpgSQL_stmt_foreach_a
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_stmt_fori
|
|
|
|
PLpgSQL_stmt_forq
|
|
|
|
PLpgSQL_stmt_fors
|
|
|
|
PLpgSQL_stmt_getdiag
|
|
|
|
PLpgSQL_stmt_if
|
|
|
|
PLpgSQL_stmt_loop
|
|
|
|
PLpgSQL_stmt_open
|
|
|
|
PLpgSQL_stmt_perform
|
|
|
|
PLpgSQL_stmt_raise
|
|
|
|
PLpgSQL_stmt_return
|
|
|
|
PLpgSQL_stmt_return_next
|
|
|
|
PLpgSQL_stmt_return_query
|
2018-04-26 20:45:04 +02:00
|
|
|
PLpgSQL_stmt_rollback
|
|
|
|
PLpgSQL_stmt_set
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_stmt_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_stmt_while
|
2013-05-29 22:58:43 +02:00
|
|
|
PLpgSQL_trigtype
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_type
|
2016-12-13 16:51:32 +01:00
|
|
|
PLpgSQL_type_type
|
2010-02-26 02:55:35 +01:00
|
|
|
PLpgSQL_var
|
|
|
|
PLpgSQL_variable
|
|
|
|
PLwdatum
|
|
|
|
PLword
|
2017-11-29 15:24:24 +01:00
|
|
|
PLyArrayToOb
|
2012-06-10 21:15:31 +02:00
|
|
|
PLyCursorObject
|
2010-02-26 02:55:35 +01:00
|
|
|
PLyDatumToOb
|
|
|
|
PLyDatumToObFunc
|
2011-04-09 05:11:37 +02:00
|
|
|
PLyExceptionEntry
|
2012-06-10 21:15:31 +02:00
|
|
|
PLyExecutionContext
|
2017-11-29 15:24:24 +01:00
|
|
|
PLyObToArray
|
2010-02-26 02:55:35 +01:00
|
|
|
PLyObToDatum
|
|
|
|
PLyObToDatumFunc
|
2017-11-29 15:24:24 +01:00
|
|
|
PLyObToDomain
|
|
|
|
PLyObToScalar
|
|
|
|
PLyObToTransform
|
2010-02-26 02:55:35 +01:00
|
|
|
PLyObToTuple
|
2016-12-13 16:51:32 +01:00
|
|
|
PLyObject_AsString_t
|
2010-02-26 02:55:35 +01:00
|
|
|
PLyPlanObject
|
|
|
|
PLyProcedure
|
2011-04-09 05:11:37 +02:00
|
|
|
PLyProcedureEntry
|
2013-05-29 22:58:43 +02:00
|
|
|
PLyProcedureKey
|
2010-02-26 02:55:35 +01:00
|
|
|
PLyResultObject
|
2016-04-27 17:47:28 +02:00
|
|
|
PLySRFState
|
|
|
|
PLySavedArgs
|
2017-11-29 15:24:24 +01:00
|
|
|
PLyScalarToOb
|
2011-04-09 05:11:37 +02:00
|
|
|
PLySubtransactionData
|
|
|
|
PLySubtransactionObject
|
2017-11-29 15:24:24 +01:00
|
|
|
PLyTransformToOb
|
2010-02-26 02:55:35 +01:00
|
|
|
PLyTupleToOb
|
2016-12-13 16:51:32 +01:00
|
|
|
PLyUnicode_FromStringAndSize_t
|
2018-04-26 20:45:04 +02:00
|
|
|
PLy_elog_impl_t
|
2011-04-09 05:11:37 +02:00
|
|
|
PMINIDUMP_CALLBACK_INFORMATION
|
|
|
|
PMINIDUMP_EXCEPTION_INFORMATION
|
|
|
|
PMINIDUMP_USER_STREAM_INFORMATION
|
2010-02-26 02:55:35 +01:00
|
|
|
PMSignalData
|
|
|
|
PMSignalReason
|
|
|
|
PMState
|
|
|
|
POLYGON
|
|
|
|
PQArgBlock
|
|
|
|
PQEnvironmentOption
|
|
|
|
PQExpBuffer
|
|
|
|
PQExpBufferData
|
2015-05-24 03:20:37 +02:00
|
|
|
PQcommMethods
|
2010-02-26 02:55:35 +01:00
|
|
|
PQconninfoOption
|
|
|
|
PQnoticeProcessor
|
|
|
|
PQnoticeReceiver
|
|
|
|
PQprintOpt
|
Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.
To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.
A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.
Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.
We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.
Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.
Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-07 22:46:51 +01:00
|
|
|
PREDICATELOCK
|
|
|
|
PREDICATELOCKTAG
|
|
|
|
PREDICATELOCKTARGET
|
|
|
|
PREDICATELOCKTARGETTAG
|
2010-02-26 02:55:35 +01:00
|
|
|
PROCESS_INFORMATION
|
|
|
|
PROCLOCK
|
|
|
|
PROCLOCKTAG
|
|
|
|
PROC_HDR
|
|
|
|
PROC_QUEUE
|
|
|
|
PSID
|
|
|
|
PSID_AND_ATTRIBUTES
|
2015-05-24 03:20:37 +02:00
|
|
|
PSQL_COMP_CASE
|
2010-02-26 02:55:35 +01:00
|
|
|
PSQL_ECHO
|
|
|
|
PSQL_ECHO_HIDDEN
|
|
|
|
PSQL_ERROR_ROLLBACK
|
2017-05-17 21:52:16 +02:00
|
|
|
PTEntryArray
|
|
|
|
PTIterationArray
|
2018-04-26 20:45:04 +02:00
|
|
|
PTOKEN_PRIVILEGES
|
2010-02-26 02:55:35 +01:00
|
|
|
PTOKEN_USER
|
2018-04-26 20:45:04 +02:00
|
|
|
PULONG
|
2016-12-13 16:51:32 +01:00
|
|
|
PUTENVPROC
|
2010-02-26 02:55:35 +01:00
|
|
|
PVOID
|
|
|
|
PX_Alias
|
|
|
|
PX_Cipher
|
|
|
|
PX_Combo
|
|
|
|
PX_HMAC
|
|
|
|
PX_MD
|
|
|
|
Page
|
2016-04-27 17:47:28 +02:00
|
|
|
PageData
|
2013-05-29 22:58:43 +02:00
|
|
|
PageGistNSN
|
2010-02-26 02:55:35 +01:00
|
|
|
PageHeader
|
|
|
|
PageHeaderData
|
2013-05-29 22:58:43 +02:00
|
|
|
PageXLogRecPtr
|
2010-02-26 02:55:35 +01:00
|
|
|
PagetableEntry
|
|
|
|
Pairs
|
2018-04-26 20:45:04 +02:00
|
|
|
ParallelAppendState
|
2017-05-17 21:52:16 +02:00
|
|
|
ParallelBitmapHeapState
|
2016-12-13 16:51:32 +01:00
|
|
|
ParallelCompletionPtr
|
2015-05-24 03:20:37 +02:00
|
|
|
ParallelContext
|
2016-04-27 17:47:28 +02:00
|
|
|
ParallelExecutorInfo
|
Add parallel-aware hash joins.
Introduce parallel-aware hash joins that appear in EXPLAIN plans as Parallel
Hash Join with Parallel Hash. While hash joins could already appear in
parallel queries, they were previously always parallel-oblivious and had a
partial subplan only on the outer side, meaning that the work of the inner
subplan was duplicated in every worker.
After this commit, the planner will consider using a partial subplan on the
inner side too, using the Parallel Hash node to divide the work over the
available CPU cores and combine its results in shared memory. If the join
needs to be split into multiple batches in order to respect work_mem, then
workers process different batches as much as possible and then work together
on the remaining batches.
The advantages of a parallel-aware hash join over a parallel-oblivious hash
join used in a parallel query are that it:
* avoids wasting memory on duplicated hash tables
* avoids wasting disk space on duplicated batch files
* divides the work of building the hash table over the CPUs
One disadvantage is that there is some communication between the participating
CPUs which might outweigh the benefits of parallelism in the case of small
hash tables. This is avoided by the planner's existing reluctance to supply
partial plans for small scans, but it may be necessary to estimate
synchronization costs in future if that situation changes. Another is that
outer batch 0 must be written to disk if multiple batches are required.
A potential future advantage of parallel-aware hash joins is that right and
full outer joins could be supported, since there is a single set of matched
bits for each hashtable, but that is not yet implemented.
A new GUC enable_parallel_hash is defined to control the feature, defaulting
to on.
Author: Thomas Munro
Reviewed-By: Andres Freund, Robert Haas
Tested-By: Rafia Sabih, Prabhat Sahu
Discussion:
https://postgr.es/m/CAEepm=2W=cOkiZxcg6qiFQP-dHUe09aqTrEMM7yJDrHMhDv_RA@mail.gmail.com
https://postgr.es/m/CAEepm=37HKyJ4U6XOLi=JgfSHM3o6B-GaeO-6hkOmneTDkH+Uw@mail.gmail.com
2017-12-21 08:39:21 +01:00
|
|
|
ParallelHashGrowth
|
|
|
|
ParallelHashJoinBatch
|
|
|
|
ParallelHashJoinBatchAccessor
|
|
|
|
ParallelHashJoinState
|
2016-05-02 15:23:55 +02:00
|
|
|
ParallelHeapScanDesc
|
2018-04-26 20:45:04 +02:00
|
|
|
ParallelHeapScanDescData
|
2017-05-17 21:52:16 +02:00
|
|
|
ParallelIndexScanDesc
|
2010-02-26 02:55:35 +01:00
|
|
|
ParallelSlot
|
2012-06-10 21:15:31 +02:00
|
|
|
ParallelState
|
2017-11-17 02:28:11 +01:00
|
|
|
ParallelWorkerContext
|
2015-05-24 03:20:37 +02:00
|
|
|
ParallelWorkerInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
Param
|
2018-04-26 20:45:04 +02:00
|
|
|
ParamCompileHook
|
2010-02-26 02:55:35 +01:00
|
|
|
ParamExecData
|
|
|
|
ParamExternData
|
|
|
|
ParamFetchHook
|
|
|
|
ParamKind
|
|
|
|
ParamListInfo
|
2012-06-10 21:15:31 +02:00
|
|
|
ParamPathInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
ParamRef
|
2012-06-10 21:15:31 +02:00
|
|
|
ParentMapEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
ParseCallbackState
|
2013-05-29 22:58:43 +02:00
|
|
|
ParseExprKind
|
|
|
|
ParseNamespaceItem
|
2010-02-26 02:55:35 +01:00
|
|
|
ParseParamRefHook
|
|
|
|
ParseState
|
|
|
|
ParsedLex
|
2016-04-27 17:47:28 +02:00
|
|
|
ParsedScript
|
2010-02-26 02:55:35 +01:00
|
|
|
ParsedText
|
|
|
|
ParsedWord
|
|
|
|
ParserSetupHook
|
|
|
|
ParserState
|
2018-04-26 20:45:04 +02:00
|
|
|
PartClauseInfo
|
|
|
|
PartClauseMatchStatus
|
2016-12-13 16:51:32 +01:00
|
|
|
PartitionBoundInfo
|
Implement table partitioning.
Table partitioning is like table inheritance and reuses much of the
existing infrastructure, but there are some important differences.
The parent is called a partitioned table and is always empty; it may
not have indexes or non-inherited constraints, since those make no
sense for a relation with no data of its own. The children are called
partitions and contain all of the actual data. Each partition has an
implicit partitioning constraint. Multiple inheritance is not
allowed, and partitioning and inheritance can't be mixed. Partitions
can't have extra columns and may not allow nulls unless the parent
does. Tuples inserted into the parent are automatically routed to the
correct partition, so tuple-routing ON INSERT triggers are not needed.
Tuple routing isn't yet supported for partitions which are foreign
tables, and it doesn't handle updates that cross partition boundaries.
Currently, tables can be range-partitioned or list-partitioned. List
partitioning is limited to a single column, but range partitioning can
involve multiple columns. A partitioning "column" can be an
expression.
Because table partitioning is less general than table inheritance, it
is hoped that it will be easier to reason about properties of
partitions, and therefore that this will serve as a better foundation
for a variety of possible optimizations, including query planner
optimizations. The tuple routing based which this patch does based on
the implicit partitioning constraints is an example of this, but it
seems likely that many other useful optimizations are also possible.
Amit Langote, reviewed and tested by Robert Haas, Ashutosh Bapat,
Amit Kapila, Rajkumar Raghuwanshi, Corey Huinker, Jaime Casanova,
Rushabh Lathia, Erik Rijkers, among others. Minor revisions by me.
2016-12-07 19:17:43 +01:00
|
|
|
PartitionBoundInfoData
|
|
|
|
PartitionBoundSpec
|
|
|
|
PartitionCmd
|
2016-12-13 16:51:32 +01:00
|
|
|
PartitionDesc
|
|
|
|
PartitionDescData
|
|
|
|
PartitionDispatch
|
|
|
|
PartitionDispatchData
|
|
|
|
PartitionElem
|
Add hash partitioning.
Hash partitioning is useful when you want to partition a growing data
set evenly. This can be useful to keep table sizes reasonable, which
makes maintenance operations such as VACUUM faster, or to enable
partition-wise join.
At present, we still depend on constraint exclusion for partitioning
pruning, and the shape of the partition constraints for hash
partitioning is such that that doesn't work. Work is underway to fix
that, which should both improve performance and make partitioning
pruning work with hash partitioning.
Amul Sul, reviewed and tested by Dilip Kumar, Ashutosh Bapat, Yugo
Nagata, Rajkumar Raghuwanshi, Jesper Pedersen, and by me. A few
final tweaks also by me.
Discussion: http://postgr.es/m/CAAJ_b96fhpJAP=ALbETmeLk1Uni_GFZD938zgenhF49qgDTjaQ@mail.gmail.com
2017-11-10 00:07:25 +01:00
|
|
|
PartitionHashBound
|
2017-11-29 15:24:24 +01:00
|
|
|
PartitionKey
|
Implement table partitioning.
Table partitioning is like table inheritance and reuses much of the
existing infrastructure, but there are some important differences.
The parent is called a partitioned table and is always empty; it may
not have indexes or non-inherited constraints, since those make no
sense for a relation with no data of its own. The children are called
partitions and contain all of the actual data. Each partition has an
implicit partitioning constraint. Multiple inheritance is not
allowed, and partitioning and inheritance can't be mixed. Partitions
can't have extra columns and may not allow nulls unless the parent
does. Tuples inserted into the parent are automatically routed to the
correct partition, so tuple-routing ON INSERT triggers are not needed.
Tuple routing isn't yet supported for partitions which are foreign
tables, and it doesn't handle updates that cross partition boundaries.
Currently, tables can be range-partitioned or list-partitioned. List
partitioning is limited to a single column, but range partitioning can
involve multiple columns. A partitioning "column" can be an
expression.
Because table partitioning is less general than table inheritance, it
is hoped that it will be easier to reason about properties of
partitions, and therefore that this will serve as a better foundation
for a variety of possible optimizations, including query planner
optimizations. The tuple routing based which this patch does based on
the implicit partitioning constraints is an example of this, but it
seems likely that many other useful optimizations are also possible.
Amit Langote, reviewed and tested by Robert Haas, Ashutosh Bapat,
Amit Kapila, Rajkumar Raghuwanshi, Corey Huinker, Jaime Casanova,
Rushabh Lathia, Erik Rijkers, among others. Minor revisions by me.
2016-12-07 19:17:43 +01:00
|
|
|
PartitionListValue
|
2018-04-26 20:45:04 +02:00
|
|
|
PartitionPruneCombineOp
|
|
|
|
PartitionPruneContext
|
|
|
|
PartitionPruneInfo
|
|
|
|
PartitionPruneState
|
|
|
|
PartitionPruneStep
|
|
|
|
PartitionPruneStepCombine
|
|
|
|
PartitionPruneStepOp
|
|
|
|
PartitionPruningData
|
Implement table partitioning.
Table partitioning is like table inheritance and reuses much of the
existing infrastructure, but there are some important differences.
The parent is called a partitioned table and is always empty; it may
not have indexes or non-inherited constraints, since those make no
sense for a relation with no data of its own. The children are called
partitions and contain all of the actual data. Each partition has an
implicit partitioning constraint. Multiple inheritance is not
allowed, and partitioning and inheritance can't be mixed. Partitions
can't have extra columns and may not allow nulls unless the parent
does. Tuples inserted into the parent are automatically routed to the
correct partition, so tuple-routing ON INSERT triggers are not needed.
Tuple routing isn't yet supported for partitions which are foreign
tables, and it doesn't handle updates that cross partition boundaries.
Currently, tables can be range-partitioned or list-partitioned. List
partitioning is limited to a single column, but range partitioning can
involve multiple columns. A partitioning "column" can be an
expression.
Because table partitioning is less general than table inheritance, it
is hoped that it will be easier to reason about properties of
partitions, and therefore that this will serve as a better foundation
for a variety of possible optimizations, including query planner
optimizations. The tuple routing based which this patch does based on
the implicit partitioning constraints is an example of this, but it
seems likely that many other useful optimizations are also possible.
Amit Langote, reviewed and tested by Robert Haas, Ashutosh Bapat,
Amit Kapila, Rajkumar Raghuwanshi, Corey Huinker, Jaime Casanova,
Rushabh Lathia, Erik Rijkers, among others. Minor revisions by me.
2016-12-07 19:17:43 +01:00
|
|
|
PartitionRangeBound
|
2016-12-13 16:51:32 +01:00
|
|
|
PartitionRangeDatum
|
Use MINVALUE/MAXVALUE instead of UNBOUNDED for range partition bounds.
Previously, UNBOUNDED meant no lower bound when used in the FROM list,
and no upper bound when used in the TO list, which was OK for
single-column range partitioning, but problematic with multiple
columns. For example, an upper bound of (10.0, UNBOUNDED) would not be
collocated with a lower bound of (10.0, UNBOUNDED), thus making it
difficult or impossible to define contiguous multi-column range
partitions in some cases.
Fix this by using MINVALUE and MAXVALUE instead of UNBOUNDED to
represent a partition column that is unbounded below or above
respectively. This syntax removes any ambiguity, and ensures that if
one partition's lower bound equals another partition's upper bound,
then the partitions are contiguous.
Also drop the constraint prohibiting finite values after an unbounded
column, and just document the fact that any values after MINVALUE or
MAXVALUE are ignored. Previously it was necessary to repeat UNBOUNDED
multiple times, which was needlessly verbose.
Note: Forces a post-PG 10 beta2 initdb.
Report by Amul Sul, original patch by Amit Langote with some
additional hacking by me.
Discussion: https://postgr.es/m/CAAJ_b947mowpLdxL3jo3YLKngRjrq9+Ej4ymduQTfYR+8=YAYQ@mail.gmail.com
2017-07-21 10:20:47 +02:00
|
|
|
PartitionRangeDatumKind
|
2017-11-29 15:24:24 +01:00
|
|
|
PartitionScheme
|
2016-12-13 16:51:32 +01:00
|
|
|
PartitionSpec
|
Allow UPDATE to move rows between partitions.
When an UPDATE causes a row to no longer match the partition
constraint, try to move it to a different partition where it does
match the partition constraint. In essence, the UPDATE is split into
a DELETE from the old partition and an INSERT into the new one. This
can lead to surprising behavior in concurrency scenarios because
EvalPlanQual rechecks won't work as they normally did; the known
problems are documented. (There is a pending patch to improve the
situation further, but it needs more review.)
Amit Khandekar, reviewed and tested by Amit Langote, David Rowley,
Rajkumar Raghuwanshi, Dilip Kumar, Amul Sul, Thomas Munro, Álvaro
Herrera, Amit Kapila, and me. A few final revisions by me.
Discussion: http://postgr.es/m/CAJ3gD9do9o2ccQ7j7+tSgiE1REY65XRiMb=yJO3u3QhyP8EEPQ@mail.gmail.com
2018-01-19 21:33:06 +01:00
|
|
|
PartitionTupleRouting
|
Implement partition-wise grouping/aggregation.
If the partition keys of input relation are part of the GROUP BY
clause, all the rows belonging to a given group come from a single
partition. This allows aggregation/grouping over a partitioned
relation to be broken down * into aggregation/grouping on each
partition. This should be no worse, and often better, than the normal
approach.
If the GROUP BY clause does not contain all the partition keys, we can
still perform partial aggregation for each partition and then finalize
aggregation after appending the partial results. This is less certain
to be a win, but it's still useful.
Jeevan Chalke, Ashutosh Bapat, Robert Haas. The larger patch series
of which this patch is a part was also reviewed and tested by Antonin
Houska, Rajkumar Raghuwanshi, David Rowley, Dilip Kumar, Konstantin
Knizhnik, Pascal Legrand, and Rafia Sabih.
Discussion: http://postgr.es/m/CAM2+6=V64_xhstVHie0Rz=KPEQnLJMZt_e314P0jaT_oJ9MR8A@mail.gmail.com
2018-03-22 17:49:48 +01:00
|
|
|
PartitionwiseAggregateType
|
2017-05-17 21:52:16 +02:00
|
|
|
PasswordType
|
2010-02-26 02:55:35 +01:00
|
|
|
Path
|
|
|
|
PathClauseUsage
|
2012-06-10 21:15:31 +02:00
|
|
|
PathCostComparison
|
2014-05-06 15:08:14 +02:00
|
|
|
PathHashStack
|
2010-02-26 02:55:35 +01:00
|
|
|
PathKey
|
|
|
|
PathKeysComparison
|
2016-04-27 17:47:28 +02:00
|
|
|
PathTarget
|
2010-02-26 02:55:35 +01:00
|
|
|
Pattern_Prefix_Status
|
|
|
|
Pattern_Type
|
|
|
|
PendingOperationEntry
|
|
|
|
PendingRelDelete
|
|
|
|
PendingUnlinkEntry
|
Allow to trigger kernel writeback after a configurable number of writes.
Currently writes to the main data files of postgres all go through the
OS page cache. This means that some operating systems can end up
collecting a large number of dirty buffers in their respective page
caches. When these dirty buffers are flushed to storage rapidly, be it
because of fsync(), timeouts, or dirty ratios, latency for other reads
and writes can increase massively. This is the primary reason for
regular massive stalls observed in real world scenarios and artificial
benchmarks; on rotating disks stalls on the order of hundreds of seconds
have been observed.
On linux it is possible to control this by reducing the global dirty
limits significantly, reducing the above problem. But global
configuration is rather problematic because it'll affect other
applications; also PostgreSQL itself doesn't always generally want this
behavior, e.g. for temporary files it's undesirable.
Several operating systems allow some control over the kernel page
cache. Linux has sync_file_range(2), several posix systems have msync(2)
and posix_fadvise(2). sync_file_range(2) is preferable because it
requires no special setup, whereas msync() requires the to-be-flushed
range to be mmap'ed. For the purpose of flushing dirty data
posix_fadvise(2) is the worst alternative, as flushing dirty data is
just a side-effect of POSIX_FADV_DONTNEED, which also removes the pages
from the page cache. Thus the feature is enabled by default only on
linux, but can be enabled on all systems that have any of the above
APIs.
While desirable and likely possible this patch does not contain an
implementation for windows.
With the infrastructure added, writes made via checkpointer, bgwriter
and normal user backends can be flushed after a configurable number of
writes. Each of these sources of writes controlled by a separate GUC,
checkpointer_flush_after, bgwriter_flush_after and backend_flush_after
respectively; they're separate because the number of flushes that are
good are separate, and because the performance considerations of
controlled flushing for each of these are different.
A later patch will add checkpoint sorting - after that flushes from the
ckeckpoint will almost always be desirable. Bgwriter flushes are most of
the time going to be random, which are slow on lots of storage hardware.
Flushing in backends works well if the storage and bgwriter can keep up,
but if not it can have negative consequences. This patch is likely to
have negative performance consequences without checkpoint sorting, but
unfortunately so has sorting without flush control.
Discussion: alpine.DEB.2.10.1506011320000.28433@sto
Author: Fabien Coelho and Andres Freund
2016-02-19 21:13:05 +01:00
|
|
|
PendingWriteback
|
2010-02-26 02:55:35 +01:00
|
|
|
PerlInterpreter
|
2017-05-17 21:52:16 +02:00
|
|
|
Perl_check_t
|
2012-06-10 21:15:31 +02:00
|
|
|
Perl_ppaddr_t
|
2014-05-06 15:08:14 +02:00
|
|
|
Permutation
|
2015-05-24 03:20:37 +02:00
|
|
|
PgBackendSSLStatus
|
2010-02-26 02:55:35 +01:00
|
|
|
PgBackendStatus
|
2015-05-24 03:20:37 +02:00
|
|
|
PgBenchExpr
|
2016-05-02 15:23:55 +02:00
|
|
|
PgBenchExprLink
|
|
|
|
PgBenchExprList
|
2015-05-24 03:20:37 +02:00
|
|
|
PgBenchExprType
|
2016-04-27 17:47:28 +02:00
|
|
|
PgBenchFunction
|
|
|
|
PgBenchValue
|
|
|
|
PgBenchValueType
|
2013-05-29 22:58:43 +02:00
|
|
|
PgFdwAnalyzeState
|
2016-04-27 17:47:28 +02:00
|
|
|
PgFdwDirectModifyState
|
2013-05-29 22:58:43 +02:00
|
|
|
PgFdwModifyState
|
|
|
|
PgFdwOption
|
|
|
|
PgFdwRelationInfo
|
|
|
|
PgFdwScanState
|
2010-02-26 02:55:35 +01:00
|
|
|
PgIfAddrCallback
|
2014-05-06 15:08:14 +02:00
|
|
|
PgStat_ArchiverStats
|
2010-02-26 02:55:35 +01:00
|
|
|
PgStat_BackendFunctionEntry
|
|
|
|
PgStat_Counter
|
|
|
|
PgStat_FunctionCallUsage
|
|
|
|
PgStat_FunctionCounts
|
|
|
|
PgStat_FunctionEntry
|
|
|
|
PgStat_GlobalStats
|
|
|
|
PgStat_Msg
|
|
|
|
PgStat_MsgAnalyze
|
2014-05-06 15:08:14 +02:00
|
|
|
PgStat_MsgArchiver
|
2010-02-26 02:55:35 +01:00
|
|
|
PgStat_MsgAutovacStart
|
|
|
|
PgStat_MsgBgWriter
|
2012-06-10 21:15:31 +02:00
|
|
|
PgStat_MsgDeadlock
|
2010-02-26 02:55:35 +01:00
|
|
|
PgStat_MsgDropdb
|
|
|
|
PgStat_MsgDummy
|
|
|
|
PgStat_MsgFuncpurge
|
|
|
|
PgStat_MsgFuncstat
|
|
|
|
PgStat_MsgHdr
|
|
|
|
PgStat_MsgInquiry
|
2011-04-09 05:11:37 +02:00
|
|
|
PgStat_MsgRecoveryConflict
|
2010-02-26 02:55:35 +01:00
|
|
|
PgStat_MsgResetcounter
|
|
|
|
PgStat_MsgResetsharedcounter
|
|
|
|
PgStat_MsgResetsinglecounter
|
|
|
|
PgStat_MsgTabpurge
|
|
|
|
PgStat_MsgTabstat
|
2012-06-10 21:15:31 +02:00
|
|
|
PgStat_MsgTempFile
|
2010-02-26 02:55:35 +01:00
|
|
|
PgStat_MsgVacuum
|
|
|
|
PgStat_Shared_Reset_Target
|
|
|
|
PgStat_Single_Reset_Type
|
|
|
|
PgStat_StatDBEntry
|
|
|
|
PgStat_StatFuncEntry
|
|
|
|
PgStat_StatTabEntry
|
|
|
|
PgStat_SubXactStatus
|
|
|
|
PgStat_TableCounts
|
|
|
|
PgStat_TableEntry
|
|
|
|
PgStat_TableStatus
|
|
|
|
PgStat_TableXactStatus
|
2011-11-14 18:12:23 +01:00
|
|
|
PgXmlErrorContext
|
|
|
|
PgXmlStrictness
|
2010-02-26 02:55:35 +01:00
|
|
|
Pg_finfo_record
|
|
|
|
Pg_magic_struct
|
|
|
|
PipeProtoChunk
|
|
|
|
PipeProtoHeader
|
|
|
|
PlaceHolderInfo
|
|
|
|
PlaceHolderVar
|
|
|
|
Plan
|
2016-05-02 15:23:55 +02:00
|
|
|
PlanDirectModify_function
|
2013-05-29 22:58:43 +02:00
|
|
|
PlanForeignModify_function
|
2010-02-26 02:55:35 +01:00
|
|
|
PlanInvalItem
|
|
|
|
PlanRowMark
|
|
|
|
PlanState
|
|
|
|
PlannedStmt
|
|
|
|
PlannerGlobal
|
|
|
|
PlannerInfo
|
|
|
|
PlannerParamItem
|
|
|
|
Point
|
|
|
|
Pointer
|
2015-05-24 03:20:37 +02:00
|
|
|
PolicyInfo
|
|
|
|
PolyNumAggState
|
2010-02-26 02:55:35 +01:00
|
|
|
Pool
|
2017-05-17 21:52:16 +02:00
|
|
|
PopulateArrayContext
|
|
|
|
PopulateArrayState
|
|
|
|
PopulateRecordCache
|
2017-11-29 15:24:24 +01:00
|
|
|
PopulateRecordsetCache
|
2013-05-29 22:58:43 +02:00
|
|
|
PopulateRecordsetState
|
2010-02-26 02:55:35 +01:00
|
|
|
Port
|
|
|
|
Portal
|
|
|
|
PortalHashEnt
|
|
|
|
PortalStatus
|
|
|
|
PortalStrategy
|
|
|
|
PostParseColumnRefHook
|
|
|
|
PostgresPollingStatusType
|
|
|
|
PostingItem
|
2014-05-06 15:08:14 +02:00
|
|
|
PostponedQual
|
2010-02-26 02:55:35 +01:00
|
|
|
PreParseColumnRefHook
|
|
|
|
PredClass
|
|
|
|
PredIterInfo
|
|
|
|
PredIterInfoData
|
2011-04-09 05:11:37 +02:00
|
|
|
PredXactList
|
|
|
|
PredXactListElement
|
Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.
To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.
A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.
Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.
We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.
Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.
Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-07 22:46:51 +01:00
|
|
|
PredicateLockData
|
2011-04-09 05:11:37 +02:00
|
|
|
PredicateLockTargetType
|
2010-02-26 02:55:35 +01:00
|
|
|
PrepareStmt
|
|
|
|
PreparedParamsData
|
|
|
|
PreparedStatement
|
2014-05-06 15:08:14 +02:00
|
|
|
PrewarmType
|
2017-05-17 21:52:16 +02:00
|
|
|
PrintExtraTocPtrType
|
|
|
|
PrintTocDataPtrType
|
2011-04-09 05:11:37 +02:00
|
|
|
PrintfArgType
|
|
|
|
PrintfArgValue
|
|
|
|
PrintfTarget
|
2010-02-26 02:55:35 +01:00
|
|
|
PrinttupAttrInfo
|
|
|
|
PrivTarget
|
2015-05-24 03:20:37 +02:00
|
|
|
PrivateRefCountEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
ProcArrayStruct
|
|
|
|
ProcLangInfo
|
|
|
|
ProcSignalReason
|
|
|
|
ProcSignalSlot
|
|
|
|
ProcState
|
2013-05-29 22:58:43 +02:00
|
|
|
ProcessUtilityContext
|
2010-02-26 02:55:35 +01:00
|
|
|
ProcessUtility_hook_type
|
|
|
|
ProcessingMode
|
2016-05-02 15:23:55 +02:00
|
|
|
ProgressCommandType
|
2017-05-17 21:52:16 +02:00
|
|
|
ProjectSet
|
|
|
|
ProjectSetPath
|
|
|
|
ProjectSetState
|
2010-02-26 02:55:35 +01:00
|
|
|
ProjectionInfo
|
2016-04-27 17:47:28 +02:00
|
|
|
ProjectionPath
|
2010-02-26 02:55:35 +01:00
|
|
|
ProtocolVersion
|
|
|
|
PrsStorage
|
|
|
|
PruneState
|
2018-04-26 20:45:04 +02:00
|
|
|
PruneStepResult
|
2016-04-27 17:47:28 +02:00
|
|
|
PsqlScanCallbacks
|
2017-05-17 21:52:16 +02:00
|
|
|
PsqlScanQuoteType
|
2010-02-26 02:55:35 +01:00
|
|
|
PsqlScanResult
|
|
|
|
PsqlScanState
|
|
|
|
PsqlScanStateData
|
|
|
|
PsqlSettings
|
2017-05-17 21:52:16 +02:00
|
|
|
Publication
|
|
|
|
PublicationActions
|
|
|
|
PublicationInfo
|
|
|
|
PublicationRelInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
PullFilter
|
|
|
|
PullFilterOps
|
|
|
|
PushFilter
|
|
|
|
PushFilterOps
|
|
|
|
PushFunction
|
2016-05-02 15:23:55 +02:00
|
|
|
PyCFunction
|
2011-04-09 05:11:37 +02:00
|
|
|
PyCodeObject
|
2012-06-10 21:15:31 +02:00
|
|
|
PyMappingMethods
|
2010-02-26 02:55:35 +01:00
|
|
|
PyMethodDef
|
2016-05-02 15:23:55 +02:00
|
|
|
PyModuleDef
|
2010-02-26 02:55:35 +01:00
|
|
|
PyObject
|
|
|
|
PySequenceMethods
|
|
|
|
PyTypeObject
|
|
|
|
Py_ssize_t
|
|
|
|
QPRS_STATE
|
|
|
|
QTN2QTState
|
|
|
|
QTNode
|
|
|
|
QUERYTYPE
|
|
|
|
QualCost
|
|
|
|
QualItem
|
|
|
|
Query
|
|
|
|
QueryDesc
|
2017-05-17 21:52:16 +02:00
|
|
|
QueryEnvironment
|
2010-02-26 02:55:35 +01:00
|
|
|
QueryInfo
|
|
|
|
QueryItem
|
|
|
|
QueryItemType
|
|
|
|
QueryMode
|
|
|
|
QueryOperand
|
|
|
|
QueryOperator
|
|
|
|
QueryRepresentation
|
2016-04-27 17:47:28 +02:00
|
|
|
QueryRepresentationOperand
|
2010-02-26 02:55:35 +01:00
|
|
|
QuerySource
|
|
|
|
QueueBackendStatus
|
|
|
|
QueuePosition
|
|
|
|
RBNode
|
|
|
|
RBOrderControl
|
|
|
|
RBTree
|
2016-12-13 16:51:32 +01:00
|
|
|
RBTreeIterator
|
2011-04-09 05:11:37 +02:00
|
|
|
REPARSE_JUNCTION_DATA_BUFFER
|
2010-02-26 02:55:35 +01:00
|
|
|
RIX
|
|
|
|
RI_CompareHashEntry
|
|
|
|
RI_CompareKey
|
|
|
|
RI_ConstraintInfo
|
|
|
|
RI_QueryHashEntry
|
|
|
|
RI_QueryKey
|
|
|
|
RTEKind
|
2011-04-09 05:11:37 +02:00
|
|
|
RWConflict
|
|
|
|
RWConflictPoolHeader
|
2016-04-27 17:47:28 +02:00
|
|
|
Range
|
2011-11-14 18:12:23 +01:00
|
|
|
RangeBound
|
2016-04-27 17:47:28 +02:00
|
|
|
RangeBox
|
2010-02-26 02:55:35 +01:00
|
|
|
RangeFunction
|
2012-06-10 21:15:31 +02:00
|
|
|
RangeIOData
|
2010-02-26 02:55:35 +01:00
|
|
|
RangeQueryClause
|
|
|
|
RangeSubselect
|
2017-05-17 21:52:16 +02:00
|
|
|
RangeTableFunc
|
|
|
|
RangeTableFuncCol
|
2015-05-24 03:20:37 +02:00
|
|
|
RangeTableSample
|
2010-02-26 02:55:35 +01:00
|
|
|
RangeTblEntry
|
2014-05-06 15:08:14 +02:00
|
|
|
RangeTblFunction
|
2010-02-26 02:55:35 +01:00
|
|
|
RangeTblRef
|
2011-11-14 18:12:23 +01:00
|
|
|
RangeType
|
2010-02-26 02:55:35 +01:00
|
|
|
RangeVar
|
2012-06-10 21:15:31 +02:00
|
|
|
RangeVarGetRelidCallback
|
2010-02-26 02:55:35 +01:00
|
|
|
RawColumnDefault
|
2017-05-17 21:52:16 +02:00
|
|
|
RawStmt
|
2017-11-29 15:24:24 +01:00
|
|
|
ReInitializeDSMForeignScan_function
|
2011-04-09 05:11:37 +02:00
|
|
|
ReScanForeignScan_function
|
2017-05-17 21:52:16 +02:00
|
|
|
ReadBufPtrType
|
2010-02-26 02:55:35 +01:00
|
|
|
ReadBufferMode
|
2017-05-17 21:52:16 +02:00
|
|
|
ReadBytePtrType
|
|
|
|
ReadExtraTocPtrType
|
2011-04-09 05:11:37 +02:00
|
|
|
ReadFunc
|
2010-02-26 02:55:35 +01:00
|
|
|
ReassignOwnedStmt
|
2016-05-02 15:23:55 +02:00
|
|
|
RecheckForeignScan_function
|
2010-02-26 02:55:35 +01:00
|
|
|
RecordCacheEntry
|
|
|
|
RecordCompareData
|
|
|
|
RecordIOData
|
2018-06-30 18:07:27 +02:00
|
|
|
RecoveryLockListsEntry
|
2015-05-24 03:20:37 +02:00
|
|
|
RecoveryTargetAction
|
2010-07-06 21:18:19 +02:00
|
|
|
RecoveryTargetType
|
2016-04-27 17:47:28 +02:00
|
|
|
RectBox
|
2010-02-26 02:55:35 +01:00
|
|
|
RecursionContext
|
|
|
|
RecursiveUnion
|
2016-04-27 17:47:28 +02:00
|
|
|
RecursiveUnionPath
|
2010-02-26 02:55:35 +01:00
|
|
|
RecursiveUnionState
|
2015-05-24 03:20:37 +02:00
|
|
|
RefetchForeignRow_function
|
2013-05-29 22:58:43 +02:00
|
|
|
RefreshMatViewStmt
|
2010-02-26 02:55:35 +01:00
|
|
|
RegProcedure
|
|
|
|
Regis
|
|
|
|
RegisNode
|
2013-05-29 22:58:43 +02:00
|
|
|
RegisteredBgWorker
|
2015-05-24 03:20:37 +02:00
|
|
|
ReindexObjectType
|
2010-02-26 02:55:35 +01:00
|
|
|
ReindexStmt
|
|
|
|
RelFileNode
|
2011-04-09 05:11:37 +02:00
|
|
|
RelFileNodeBackend
|
2010-02-26 02:55:35 +01:00
|
|
|
RelIdCacheEnt
|
2010-07-06 21:18:19 +02:00
|
|
|
RelInfo
|
|
|
|
RelInfoArr
|
2010-02-26 02:55:35 +01:00
|
|
|
RelMapFile
|
|
|
|
RelMapping
|
|
|
|
RelOptInfo
|
|
|
|
RelOptKind
|
|
|
|
RelToCheck
|
|
|
|
RelToCluster
|
|
|
|
RelabelType
|
|
|
|
Relation
|
|
|
|
RelationData
|
|
|
|
RelationPtr
|
2017-05-17 21:52:16 +02:00
|
|
|
RelationSyncEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
RelativeTime
|
|
|
|
RelcacheCallbackFunction
|
2014-05-06 15:08:14 +02:00
|
|
|
RelfilenodeMapEntry
|
|
|
|
RelfilenodeMapKey
|
2010-02-26 02:55:35 +01:00
|
|
|
Relids
|
2011-11-14 18:12:23 +01:00
|
|
|
RelocationBufferInfo
|
2016-12-13 16:51:32 +01:00
|
|
|
RelptrFreePageBtree
|
|
|
|
RelptrFreePageManager
|
|
|
|
RelptrFreePageSpanLeader
|
2010-02-26 02:55:35 +01:00
|
|
|
RenameStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
ReopenPtrType
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
ReorderBuffer
|
|
|
|
ReorderBufferApplyChangeCB
|
2018-04-26 20:45:04 +02:00
|
|
|
ReorderBufferApplyTruncateCB
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
ReorderBufferBeginCB
|
|
|
|
ReorderBufferChange
|
|
|
|
ReorderBufferCommitCB
|
|
|
|
ReorderBufferDiskChange
|
|
|
|
ReorderBufferIterTXNEntry
|
|
|
|
ReorderBufferIterTXNState
|
2016-05-02 15:23:55 +02:00
|
|
|
ReorderBufferMessageCB
|
2014-05-06 15:08:14 +02:00
|
|
|
ReorderBufferTXN
|
|
|
|
ReorderBufferTXNByIdEnt
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
ReorderBufferToastEnt
|
|
|
|
ReorderBufferTupleBuf
|
|
|
|
ReorderBufferTupleCidEnt
|
|
|
|
ReorderBufferTupleCidKey
|
2015-05-24 03:20:37 +02:00
|
|
|
ReorderTuple
|
|
|
|
RepOriginId
|
2017-11-29 15:24:24 +01:00
|
|
|
ReparameterizeForeignPathByChild_function
|
2013-05-29 22:58:43 +02:00
|
|
|
ReplaceVarsFromTargetList_context
|
|
|
|
ReplaceVarsNoMatchOption
|
2014-05-06 15:08:14 +02:00
|
|
|
ReplicaIdentityStmt
|
|
|
|
ReplicationKind
|
|
|
|
ReplicationSlot
|
|
|
|
ReplicationSlotCtlData
|
|
|
|
ReplicationSlotOnDisk
|
|
|
|
ReplicationSlotPersistency
|
|
|
|
ReplicationSlotPersistentData
|
2015-05-24 03:20:37 +02:00
|
|
|
ReplicationState
|
|
|
|
ReplicationStateCtl
|
|
|
|
ReplicationStateOnDisk
|
2010-02-26 02:55:35 +01:00
|
|
|
ResTarget
|
2015-05-24 03:20:37 +02:00
|
|
|
ReservoirState
|
|
|
|
ReservoirStateData
|
2016-04-27 17:47:28 +02:00
|
|
|
ResourceArray
|
2010-02-26 02:55:35 +01:00
|
|
|
ResourceOwner
|
|
|
|
ResourceReleaseCallback
|
|
|
|
ResourceReleaseCallbackItem
|
|
|
|
ResourceReleasePhase
|
|
|
|
RestoreOptions
|
2017-08-14 23:29:33 +02:00
|
|
|
RestorePass
|
2010-02-26 02:55:35 +01:00
|
|
|
RestrictInfo
|
|
|
|
Result
|
|
|
|
ResultPath
|
|
|
|
ResultRelInfo
|
|
|
|
ResultState
|
|
|
|
ReturnSetInfo
|
2015-05-24 03:20:37 +02:00
|
|
|
RevmapContents
|
2014-05-06 15:08:14 +02:00
|
|
|
RewriteMappingDataEntry
|
|
|
|
RewriteMappingFile
|
2010-02-26 02:55:35 +01:00
|
|
|
RewriteRule
|
|
|
|
RewriteState
|
|
|
|
RmgrData
|
2013-05-29 22:58:43 +02:00
|
|
|
RmgrDescData
|
2010-02-26 02:55:35 +01:00
|
|
|
RmgrId
|
2014-05-06 15:08:14 +02:00
|
|
|
RmgrIds
|
2015-05-24 03:20:37 +02:00
|
|
|
RoleSpec
|
|
|
|
RoleSpecType
|
2010-02-26 02:55:35 +01:00
|
|
|
RoleStmtType
|
2017-05-17 21:52:16 +02:00
|
|
|
RollupData
|
2010-02-26 02:55:35 +01:00
|
|
|
RowCompareExpr
|
|
|
|
RowCompareType
|
|
|
|
RowExpr
|
|
|
|
RowMarkClause
|
|
|
|
RowMarkType
|
2015-05-24 03:20:37 +02:00
|
|
|
RowSecurityDesc
|
|
|
|
RowSecurityPolicy
|
2010-02-26 02:55:35 +01:00
|
|
|
RuleInfo
|
|
|
|
RuleLock
|
|
|
|
RuleStmt
|
|
|
|
RunningTransactions
|
|
|
|
RunningTransactionsData
|
|
|
|
SC_HANDLE
|
|
|
|
SECURITY_ATTRIBUTES
|
2011-04-09 05:11:37 +02:00
|
|
|
SECURITY_STATUS
|
2010-02-26 02:55:35 +01:00
|
|
|
SEG
|
Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.
To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.
A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.
Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.
We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.
Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.
Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-07 22:46:51 +01:00
|
|
|
SERIALIZABLEXACT
|
|
|
|
SERIALIZABLEXID
|
|
|
|
SERIALIZABLEXIDTAG
|
2010-02-26 02:55:35 +01:00
|
|
|
SERVICE_STATUS
|
|
|
|
SERVICE_STATUS_HANDLE
|
|
|
|
SERVICE_TABLE_ENTRY
|
|
|
|
SHA1_CTX
|
|
|
|
SHA256_CTX
|
|
|
|
SHA512_CTX
|
|
|
|
SHM_QUEUE
|
|
|
|
SID_AND_ATTRIBUTES
|
|
|
|
SID_IDENTIFIER_AUTHORITY
|
|
|
|
SID_NAME_USE
|
|
|
|
SISeg
|
2018-04-26 20:45:04 +02:00
|
|
|
SIZE_T
|
2010-02-26 02:55:35 +01:00
|
|
|
SMgrRelation
|
|
|
|
SMgrRelationData
|
2013-05-29 22:58:43 +02:00
|
|
|
SOCKADDR
|
2011-04-09 05:11:37 +02:00
|
|
|
SOCKET
|
2010-02-26 02:55:35 +01:00
|
|
|
SPELL
|
|
|
|
SPIPlanPtr
|
|
|
|
SPITupleTable
|
|
|
|
SPLITCOST
|
|
|
|
SPNode
|
|
|
|
SPNodeData
|
2012-06-10 21:15:31 +02:00
|
|
|
SPPageDesc
|
2017-05-17 21:52:16 +02:00
|
|
|
SQLCmd
|
2013-05-29 22:58:43 +02:00
|
|
|
SQLDropObject
|
2010-02-26 02:55:35 +01:00
|
|
|
SQLFunctionCache
|
|
|
|
SQLFunctionCachePtr
|
2011-04-09 05:11:37 +02:00
|
|
|
SQLFunctionParseInfoPtr
|
2016-12-13 16:51:32 +01:00
|
|
|
SQLValueFunction
|
|
|
|
SQLValueFunctionOp
|
2010-02-26 02:55:35 +01:00
|
|
|
SSL
|
2016-04-27 17:47:28 +02:00
|
|
|
SSLExtensionInfoContext
|
2010-02-26 02:55:35 +01:00
|
|
|
SSL_CTX
|
|
|
|
STARTUPINFO
|
|
|
|
STRLEN
|
|
|
|
SV
|
2015-05-24 03:20:37 +02:00
|
|
|
SampleScan
|
2016-05-02 15:23:55 +02:00
|
|
|
SampleScanGetSampleSize_function
|
2015-05-24 03:20:37 +02:00
|
|
|
SampleScanState
|
|
|
|
SamplerRandomState
|
2010-02-26 02:55:35 +01:00
|
|
|
ScalarArrayOpExpr
|
2017-05-17 21:52:16 +02:00
|
|
|
ScalarIOData
|
2010-02-26 02:55:35 +01:00
|
|
|
ScalarItem
|
|
|
|
ScalarMCVItem
|
|
|
|
Scan
|
|
|
|
ScanDirection
|
|
|
|
ScanKey
|
|
|
|
ScanKeyData
|
|
|
|
ScanKeyword
|
2012-06-10 21:15:31 +02:00
|
|
|
ScanStackEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
ScanState
|
|
|
|
ScanTypeControl
|
|
|
|
SchemaQuery
|
2011-04-09 05:11:37 +02:00
|
|
|
SecBuffer
|
|
|
|
SecBufferDesc
|
|
|
|
SecLabelItem
|
|
|
|
SecLabelStmt
|
2017-05-17 21:52:16 +02:00
|
|
|
SeenRelsEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
SelectStmt
|
|
|
|
Selectivity
|
2012-06-10 21:15:31 +02:00
|
|
|
SemiAntiJoinFactors
|
2010-02-26 02:55:35 +01:00
|
|
|
SeqScan
|
|
|
|
SeqScanState
|
|
|
|
SeqTable
|
|
|
|
SeqTableData
|
2011-04-09 05:11:37 +02:00
|
|
|
SerCommitSeqNo
|
2018-04-26 20:45:04 +02:00
|
|
|
SerializedReindexState
|
2015-05-24 03:20:37 +02:00
|
|
|
SerializedSnapshotData
|
2014-05-06 15:08:14 +02:00
|
|
|
Session
|
2017-05-17 21:52:16 +02:00
|
|
|
SessionBackupState
|
2010-02-26 02:55:35 +01:00
|
|
|
SetConstraintState
|
|
|
|
SetConstraintStateData
|
|
|
|
SetConstraintTriggerData
|
Faster expression evaluation and targetlist projection.
This replaces the old, recursive tree-walk based evaluation, with
non-recursive, opcode dispatch based, expression evaluation.
Projection is now implemented as part of expression evaluation.
This both leads to significant performance improvements, and makes
future just-in-time compilation of expressions easier.
The speed gains primarily come from:
- non-recursive implementation reduces stack usage / overhead
- simple sub-expressions are implemented with a single jump, without
function calls
- sharing some state between different sub-expressions
- reduced amount of indirect/hard to predict memory accesses by laying
out operation metadata sequentially; including the avoidance of
nearly all of the previously used linked lists
- more code has been moved to expression initialization, avoiding
constant re-checks at evaluation time
Future just-in-time compilation (JIT) has become easier, as
demonstrated by released patches intended to be merged in a later
release, for primarily two reasons: Firstly, due to a stricter split
between expression initialization and evaluation, less code has to be
handled by the JIT. Secondly, due to the non-recursive nature of the
generated "instructions", less performance-critical code-paths can
easily be shared between interpreted and compiled evaluation.
The new framework allows for significant future optimizations. E.g.:
- basic infrastructure for to later reduce the per executor-startup
overhead of expression evaluation, by caching state in prepared
statements. That'd be helpful in OLTPish scenarios where
initialization overhead is measurable.
- optimizing the generated "code". A number of proposals for potential
work has already been made.
- optimizing the interpreter. Similarly a number of proposals have
been made here too.
The move of logic into the expression initialization step leads to some
backward-incompatible changes:
- Function permission checks are now done during expression
initialization, whereas previously they were done during
execution. In edge cases this can lead to errors being raised that
previously wouldn't have been, e.g. a NULL array being coerced to a
different array type previously didn't perform checks.
- The set of domain constraints to be checked, is now evaluated once
during expression initialization, previously it was re-built
every time a domain check was evaluated. For normal queries this
doesn't change much, but e.g. for plpgsql functions, which caches
ExprStates, the old set could stick around longer. The behavior
around might still change.
Author: Andres Freund, with significant changes by Tom Lane,
changes by Heikki Linnakangas
Reviewed-By: Tom Lane, Heikki Linnakangas
Discussion: https://postgr.es/m/20161206034955.bh33paeralxbtluv@alap3.anarazel.de
2017-03-14 23:45:36 +01:00
|
|
|
SetExprState
|
2010-02-26 02:55:35 +01:00
|
|
|
SetFunctionReturnMode
|
|
|
|
SetOp
|
|
|
|
SetOpCmd
|
2016-04-27 17:47:28 +02:00
|
|
|
SetOpPath
|
2010-02-26 02:55:35 +01:00
|
|
|
SetOpState
|
|
|
|
SetOpStatePerGroup
|
|
|
|
SetOpStrategy
|
|
|
|
SetOperation
|
|
|
|
SetOperationStmt
|
|
|
|
SetToDefault
|
2017-05-17 21:52:16 +02:00
|
|
|
SetupWorkerPtrType
|
|
|
|
SharedBitmapState
|
2016-04-27 17:47:28 +02:00
|
|
|
SharedDependencyObjectType
|
2010-02-26 02:55:35 +01:00
|
|
|
SharedDependencyType
|
2016-04-27 17:47:28 +02:00
|
|
|
SharedExecutorInstrumentation
|
2017-12-02 01:30:56 +01:00
|
|
|
SharedFileSet
|
2018-04-26 20:45:04 +02:00
|
|
|
SharedHashInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
SharedInvalCatalogMsg
|
|
|
|
SharedInvalCatcacheMsg
|
|
|
|
SharedInvalRelcacheMsg
|
|
|
|
SharedInvalRelmapMsg
|
|
|
|
SharedInvalSmgrMsg
|
2014-05-06 15:08:14 +02:00
|
|
|
SharedInvalSnapshotMsg
|
2010-02-26 02:55:35 +01:00
|
|
|
SharedInvalidationMessage
|
2017-09-15 04:59:21 +02:00
|
|
|
SharedRecordTableEntry
|
2017-11-29 15:24:24 +01:00
|
|
|
SharedRecordTableKey
|
2017-09-15 04:59:21 +02:00
|
|
|
SharedRecordTypmodRegistry
|
2017-11-29 15:24:24 +01:00
|
|
|
SharedSortInfo
|
2017-12-18 23:23:19 +01:00
|
|
|
SharedTuplestore
|
|
|
|
SharedTuplestoreAccessor
|
2018-04-26 20:45:04 +02:00
|
|
|
SharedTuplestoreChunk
|
|
|
|
SharedTuplestoreParticipant
|
2017-09-15 04:59:21 +02:00
|
|
|
SharedTypmodTableEntry
|
Support parallel btree index builds.
To make this work, tuplesort.c and logtape.c must also support
parallelism, so this patch adds that infrastructure and then applies
it to the particular case of parallel btree index builds. Testing
to date shows that this can often be 2-3x faster than a serial
index build.
The model for deciding how many workers to use is fairly primitive
at present, but it's better than not having the feature. We can
refine it as we get more experience.
Peter Geoghegan with some help from Rushabh Lathia. While Heikki
Linnakangas is not an author of this patch, he wrote other patches
without which this feature would not have been possible, and
therefore the release notes should possibly credit him as an author
of this feature. Reviewed by Claudio Freire, Heikki Linnakangas,
Thomas Munro, Tels, Amit Kapila, me.
Discussion: http://postgr.es/m/CAM3SWZQKM=Pzc=CAHzRixKjp2eO5Q0Jg1SoFQqeXFQ647JiwqQ@mail.gmail.com
Discussion: http://postgr.es/m/CAH2-Wz=AxWqDoVvGU7dq856S4r6sJAj6DBn7VMtigkB33N5eyg@mail.gmail.com
2018-02-02 19:25:55 +01:00
|
|
|
Sharedsort
|
2010-02-26 02:55:35 +01:00
|
|
|
ShellTypeInfo
|
2016-04-27 17:47:28 +02:00
|
|
|
ShippableCacheEntry
|
|
|
|
ShippableCacheKey
|
2010-02-26 02:55:35 +01:00
|
|
|
ShmemIndexEnt
|
2017-05-17 21:52:16 +02:00
|
|
|
ShutdownForeignScan_function
|
2012-06-10 21:15:31 +02:00
|
|
|
ShutdownInformation
|
2010-02-26 02:55:35 +01:00
|
|
|
ShutdownMode
|
|
|
|
SignTSVector
|
2016-04-27 17:47:28 +02:00
|
|
|
SimpleActionList
|
|
|
|
SimpleActionListCell
|
2010-02-26 02:55:35 +01:00
|
|
|
SimpleEcontextStackEntry
|
|
|
|
SimpleOidList
|
|
|
|
SimpleOidListCell
|
2016-04-27 17:47:28 +02:00
|
|
|
SimpleStats
|
2010-02-26 02:55:35 +01:00
|
|
|
SimpleStringList
|
|
|
|
SimpleStringListCell
|
2012-06-10 21:15:31 +02:00
|
|
|
SingleBoundSortItem
|
2010-02-26 02:55:35 +01:00
|
|
|
Size
|
Add "Slab" MemoryContext implementation for efficient equal-sized allocations.
The default general purpose aset.c style memory context is not a great
choice for allocations that are all going to be evenly sized,
especially when those objects aren't small, and have varying
lifetimes. There tends to be a lot of fragmentation, larger
allocations always directly go to libc rather than have their cost
amortized over several pallocs.
These problems lead to the introduction of ad-hoc slab allocators in
reorderbuffer.c. But it turns out that the simplistic implementation
leads to problems when a lot of objects are allocated and freed, as
aset.c is still the underlying implementation. Especially freeing can
easily run into O(n^2) behavior in aset.c.
While the O(n^2) behavior in aset.c can, and probably will, be
addressed, custom allocators for this behavior are more efficient
both in space and time.
This allocator is for evenly sized allocations, and supports both
cheap allocations and freeing, without fragmenting significantly. It
does so by allocating evenly sized blocks via malloc(), and carves
them into chunks that can be used for allocations. In order to
release blocks to the OS as early as possible, chunks are allocated
from the fullest block that still has free objects, increasing the
likelihood of a block being entirely unused.
A subsequent commit uses this in reorderbuffer.c, but a further
allocator is needed to resolve the performance problems triggering
this work.
There likely are further potentialy uses of this allocator besides
reorderbuffer.c.
There's potential further optimizations of the new slab.c, in
particular the array of freelists could be replaced by a more
intelligent structure - but for now this looks more than good enough.
Author: Tomas Vondra, editorialized by Andres Freund
Reviewed-By: Andres Freund, Petr Jelinek, Robert Haas, Jim Nasby
Discussion: https://postgr.es/m/d15dff83-0b37-28ed-0809-95a5cc7292ad@2ndquadrant.com
2017-02-27 12:41:44 +01:00
|
|
|
SlabBlock
|
|
|
|
SlabChunk
|
2017-05-17 21:52:16 +02:00
|
|
|
SlabContext
|
2016-12-13 16:51:32 +01:00
|
|
|
SlabSlot
|
2017-05-17 21:52:16 +02:00
|
|
|
SlotErrCallbackArg
|
2011-04-09 05:11:37 +02:00
|
|
|
SlotNumber
|
2010-02-26 02:55:35 +01:00
|
|
|
SlruCtl
|
|
|
|
SlruCtlData
|
|
|
|
SlruErrorCause
|
|
|
|
SlruFlush
|
|
|
|
SlruFlushData
|
|
|
|
SlruPageStatus
|
2011-11-14 18:12:23 +01:00
|
|
|
SlruScanCallback
|
2010-02-26 02:55:35 +01:00
|
|
|
SlruShared
|
|
|
|
SlruSharedData
|
2014-05-06 15:08:14 +02:00
|
|
|
SnapBuild
|
|
|
|
SnapBuildOnDisk
|
|
|
|
SnapBuildState
|
2010-02-26 02:55:35 +01:00
|
|
|
Snapshot
|
|
|
|
SnapshotData
|
2019-01-22 02:03:15 +01:00
|
|
|
SnapshotType
|
2010-02-26 02:55:35 +01:00
|
|
|
SockAddr
|
|
|
|
Sort
|
|
|
|
SortBy
|
|
|
|
SortByDir
|
|
|
|
SortByNulls
|
Support parallel btree index builds.
To make this work, tuplesort.c and logtape.c must also support
parallelism, so this patch adds that infrastructure and then applies
it to the particular case of parallel btree index builds. Testing
to date shows that this can often be 2-3x faster than a serial
index build.
The model for deciding how many workers to use is fairly primitive
at present, but it's better than not having the feature. We can
refine it as we get more experience.
Peter Geoghegan with some help from Rushabh Lathia. While Heikki
Linnakangas is not an author of this patch, he wrote other patches
without which this feature would not have been possible, and
therefore the release notes should possibly credit him as an author
of this feature. Reviewed by Claudio Freire, Heikki Linnakangas,
Thomas Munro, Tels, Amit Kapila, me.
Discussion: http://postgr.es/m/CAM3SWZQKM=Pzc=CAHzRixKjp2eO5Q0Jg1SoFQqeXFQ647JiwqQ@mail.gmail.com
Discussion: http://postgr.es/m/CAH2-Wz=AxWqDoVvGU7dq856S4r6sJAj6DBn7VMtigkB33N5eyg@mail.gmail.com
2018-02-02 19:25:55 +01:00
|
|
|
SortCoordinate
|
2010-02-26 02:55:35 +01:00
|
|
|
SortGroupClause
|
2017-05-17 21:52:16 +02:00
|
|
|
SortItem
|
2016-04-27 17:47:28 +02:00
|
|
|
SortPath
|
2012-06-10 21:15:31 +02:00
|
|
|
SortShimExtra
|
2010-02-26 02:55:35 +01:00
|
|
|
SortState
|
2012-06-10 21:15:31 +02:00
|
|
|
SortSupport
|
|
|
|
SortSupportData
|
2010-02-26 02:55:35 +01:00
|
|
|
SortTuple
|
2012-06-10 21:15:31 +02:00
|
|
|
SortTupleComparator
|
|
|
|
SortedPoint
|
|
|
|
SpGistBuildState
|
|
|
|
SpGistCache
|
|
|
|
SpGistDeadTuple
|
|
|
|
SpGistDeadTupleData
|
|
|
|
SpGistInnerTuple
|
|
|
|
SpGistInnerTupleData
|
|
|
|
SpGistLUPCache
|
|
|
|
SpGistLastUsedPage
|
|
|
|
SpGistLeafTuple
|
|
|
|
SpGistLeafTupleData
|
|
|
|
SpGistMetaPageData
|
|
|
|
SpGistNodeTuple
|
|
|
|
SpGistNodeTupleData
|
|
|
|
SpGistPageOpaque
|
|
|
|
SpGistPageOpaqueData
|
|
|
|
SpGistScanOpaque
|
|
|
|
SpGistScanOpaqueData
|
|
|
|
SpGistState
|
|
|
|
SpGistTypeDesc
|
2010-02-26 02:55:35 +01:00
|
|
|
SpecialJoinInfo
|
Allow Pin/UnpinBuffer to operate in a lockfree manner.
Pinning/Unpinning a buffer is a very frequent operation; especially in
read-mostly cache resident workloads. Benchmarking shows that in various
scenarios the spinlock protecting a buffer header's state becomes a
significant bottleneck. The problem can be reproduced with pgbench -S on
larger machines, but can be considerably worse for queries which touch
the same buffers over and over at a high frequency (e.g. nested loops
over a small inner table).
To allow atomic operations to be used, cram BufferDesc's flags,
usage_count, buf_hdr_lock, refcount into a single 32bit atomic variable;
that allows to manipulate them together using 32bit compare-and-swap
operations. This requires reducing MAX_BACKENDS to 2^18-1 (which could
be lifted by using a 64bit field, but it's not a realistic configuration
atm).
As not all operations can easily implemented in a lockfree manner,
implement the previous buf_hdr_lock via a flag bit in the atomic
variable. That way we can continue to lock the header in places where
it's needed, but can get away without acquiring it in the more frequent
hot-paths. There's some additional operations which can be done without
the lock, but aren't in this patch; but the most important places are
covered.
As bufmgr.c now essentially re-implements spinlocks, abstract the delay
logic from s_lock.c into something more generic. It now has already two
users, and more are coming up; there's a follupw patch for lwlock.c at
least.
This patch is based on a proof-of-concept written by me, which Alexander
Korotkov made into a fully working patch; the committed version is again
revised by me. Benchmarking and testing has, amongst others, been
provided by Dilip Kumar, Alexander Korotkov, Robert Haas.
On a large x86 system improvements for readonly pgbench, with a high
client count, of a factor of 8 have been observed.
Author: Alexander Korotkov and Andres Freund
Discussion: 2400449.GjM57CE0Yg@dinodell
2016-04-11 05:12:32 +02:00
|
|
|
SpinDelayStatus
|
2011-11-14 18:12:23 +01:00
|
|
|
SplitInterval
|
2012-06-10 21:15:31 +02:00
|
|
|
SplitLR
|
2010-02-26 02:55:35 +01:00
|
|
|
SplitVar
|
|
|
|
SplitedPageLayout
|
|
|
|
StackElem
|
2017-05-17 21:52:16 +02:00
|
|
|
StartBlobPtrType
|
|
|
|
StartBlobsPtrType
|
|
|
|
StartDataPtrType
|
2011-04-09 05:11:37 +02:00
|
|
|
StartReplicationCmd
|
2010-02-26 02:55:35 +01:00
|
|
|
StartupPacket
|
2016-04-27 17:47:28 +02:00
|
|
|
StartupStatusEnum
|
2010-02-26 02:55:35 +01:00
|
|
|
StatEntry
|
2017-05-17 21:52:16 +02:00
|
|
|
StatExtEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
StatMsgType
|
2015-05-24 03:20:37 +02:00
|
|
|
StateFileChunk
|
2017-05-17 21:52:16 +02:00
|
|
|
StatisticExtInfo
|
2015-05-24 03:20:37 +02:00
|
|
|
Stats
|
2016-04-27 17:47:28 +02:00
|
|
|
StatsData
|
2017-05-17 21:52:16 +02:00
|
|
|
StatsExtInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
StdAnalyzeData
|
|
|
|
StdRdOptions
|
2014-05-06 15:08:14 +02:00
|
|
|
Step
|
2010-02-26 02:55:35 +01:00
|
|
|
StopList
|
2018-07-16 23:33:22 +02:00
|
|
|
StopWorkersData
|
2010-02-26 02:55:35 +01:00
|
|
|
StrategyNumber
|
2016-04-27 17:47:28 +02:00
|
|
|
StreamCtl
|
2010-02-26 02:55:35 +01:00
|
|
|
StringInfo
|
|
|
|
StringInfoData
|
2015-05-24 03:20:37 +02:00
|
|
|
StripnullState
|
2010-02-26 02:55:35 +01:00
|
|
|
SubLink
|
|
|
|
SubLinkType
|
|
|
|
SubPlan
|
|
|
|
SubPlanState
|
|
|
|
SubTransactionId
|
|
|
|
SubXactCallback
|
|
|
|
SubXactCallbackItem
|
|
|
|
SubXactEvent
|
|
|
|
SubqueryScan
|
2016-04-27 17:47:28 +02:00
|
|
|
SubqueryScanPath
|
2010-02-26 02:55:35 +01:00
|
|
|
SubqueryScanState
|
2017-05-17 21:52:16 +02:00
|
|
|
Subscription
|
|
|
|
SubscriptionInfo
|
|
|
|
SubscriptionRelState
|
2010-02-26 02:55:35 +01:00
|
|
|
Syn
|
2016-04-27 17:47:28 +02:00
|
|
|
SyncRepConfigData
|
2010-02-26 02:55:35 +01:00
|
|
|
SysScanDesc
|
|
|
|
SyscacheCallbackFunction
|
2016-04-27 17:47:28 +02:00
|
|
|
SystemRowsSamplerData
|
2015-05-24 03:20:37 +02:00
|
|
|
SystemSamplerData
|
2016-04-27 17:47:28 +02:00
|
|
|
SystemTimeSamplerData
|
2010-02-26 02:55:35 +01:00
|
|
|
TAR_MEMBER
|
|
|
|
TBMIterateResult
|
2017-05-17 21:52:16 +02:00
|
|
|
TBMIteratingState
|
2010-02-26 02:55:35 +01:00
|
|
|
TBMIterator
|
2017-05-17 21:52:16 +02:00
|
|
|
TBMSharedIterator
|
|
|
|
TBMSharedIteratorState
|
2010-02-26 02:55:35 +01:00
|
|
|
TBMStatus
|
|
|
|
TBlockState
|
|
|
|
TIDBitmap
|
|
|
|
TOKEN_DEFAULT_DACL
|
|
|
|
TOKEN_INFORMATION_CLASS
|
2018-04-26 20:45:04 +02:00
|
|
|
TOKEN_PRIVILEGES
|
2010-02-26 02:55:35 +01:00
|
|
|
TOKEN_USER
|
|
|
|
TParser
|
|
|
|
TParserCharTest
|
|
|
|
TParserPosition
|
|
|
|
TParserSpecial
|
|
|
|
TParserState
|
|
|
|
TParserStateAction
|
|
|
|
TParserStateActionItem
|
2016-05-02 15:23:55 +02:00
|
|
|
TQueueDestReceiver
|
2010-02-26 02:55:35 +01:00
|
|
|
TRGM
|
|
|
|
TSAnyCacheEntry
|
|
|
|
TSConfigCacheEntry
|
|
|
|
TSConfigInfo
|
|
|
|
TSDictInfo
|
|
|
|
TSDictionaryCacheEntry
|
2017-05-17 21:52:16 +02:00
|
|
|
TSExecuteCallback
|
2010-02-26 02:55:35 +01:00
|
|
|
TSLexeme
|
|
|
|
TSParserCacheEntry
|
|
|
|
TSParserInfo
|
|
|
|
TSQuery
|
|
|
|
TSQueryData
|
|
|
|
TSQueryParserState
|
|
|
|
TSQuerySign
|
|
|
|
TSReadPointer
|
|
|
|
TSTemplateInfo
|
|
|
|
TSTokenTypeStorage
|
|
|
|
TSVector
|
2017-05-17 21:52:16 +02:00
|
|
|
TSVectorBuildState
|
2010-02-26 02:55:35 +01:00
|
|
|
TSVectorData
|
|
|
|
TSVectorParseState
|
|
|
|
TSVectorStat
|
|
|
|
TState
|
|
|
|
TStoreState
|
|
|
|
TTOffList
|
|
|
|
TYPCATEGORY
|
2013-05-29 22:58:43 +02:00
|
|
|
T_Action
|
|
|
|
T_WorkerStatus
|
2017-05-17 21:52:16 +02:00
|
|
|
TabStatHashEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
TabStatusArray
|
tableam: introduce table AM infrastructure.
This introduces the concept of table access methods, i.e. CREATE
ACCESS METHOD ... TYPE TABLE and
CREATE TABLE ... USING (storage-engine).
No table access functionality is delegated to table AMs as of this
commit, that'll be done in following commits.
Subsequent commits will incrementally abstract table access
functionality to be routed through table access methods. That change
is too large to be reviewed & committed at once, so it'll be done
incrementally.
Docs will be updated at the end, as adding them incrementally would
likely make them less coherent, and definitely is a lot more work,
without a lot of benefit.
Table access methods are specified similar to index access methods,
i.e. pg_am.amhandler returns, as INTERNAL, a pointer to a struct with
callbacks. In contrast to index AMs that struct needs to live as long
as a backend, typically that's achieved by just returning a pointer to
a constant struct.
Psql's \d+ now displays a table's access method. That can be disabled
with HIDE_TABLEAM=true, which is mainly useful so regression tests can
be run against different AMs. It's quite possible that this behaviour
still needs to be fine tuned.
For now it's not allowed to set a table AM for a partitioned table, as
we've not resolved how partitions would inherit that. Disallowing
allows us to introduce, if we decide that's the way forward, such a
behaviour without a compatibility break.
Catversion bumped, to add the heap table AM and references to it.
Author: Haribabu Kommi, Andres Freund, Alvaro Herrera, Dimitri Golgov and others
Discussion:
https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
https://postgr.es/m/20160812231527.GA690404@alvherre.pgsql
https://postgr.es/m/20190107235616.6lur25ph22u5u5av@alap3.anarazel.de
https://postgr.es/m/20190304234700.w5tmhducs5wxgzls@alap3.anarazel.de
2019-03-06 18:54:38 +01:00
|
|
|
TableAmRoutine
|
2010-02-26 02:55:35 +01:00
|
|
|
TableDataInfo
|
2017-05-17 21:52:16 +02:00
|
|
|
TableFunc
|
|
|
|
TableFuncRoutine
|
|
|
|
TableFuncScan
|
|
|
|
TableFuncScanState
|
2010-02-26 02:55:35 +01:00
|
|
|
TableInfo
|
2012-06-10 21:15:31 +02:00
|
|
|
TableLikeClause
|
2015-05-24 03:20:37 +02:00
|
|
|
TableSampleClause
|
2010-02-26 02:55:35 +01:00
|
|
|
TableSpaceCacheEntry
|
|
|
|
TableSpaceOpts
|
2014-05-06 15:08:14 +02:00
|
|
|
TablespaceList
|
|
|
|
TablespaceListCell
|
2017-05-17 21:52:16 +02:00
|
|
|
TapeBlockTrailer
|
Support parallel btree index builds.
To make this work, tuplesort.c and logtape.c must also support
parallelism, so this patch adds that infrastructure and then applies
it to the particular case of parallel btree index builds. Testing
to date shows that this can often be 2-3x faster than a serial
index build.
The model for deciding how many workers to use is fairly primitive
at present, but it's better than not having the feature. We can
refine it as we get more experience.
Peter Geoghegan with some help from Rushabh Lathia. While Heikki
Linnakangas is not an author of this patch, he wrote other patches
without which this feature would not have been possible, and
therefore the release notes should possibly credit him as an author
of this feature. Reviewed by Claudio Freire, Heikki Linnakangas,
Thomas Munro, Tels, Amit Kapila, me.
Discussion: http://postgr.es/m/CAM3SWZQKM=Pzc=CAHzRixKjp2eO5Q0Jg1SoFQqeXFQ647JiwqQ@mail.gmail.com
Discussion: http://postgr.es/m/CAH2-Wz=AxWqDoVvGU7dq856S4r6sJAj6DBn7VMtigkB33N5eyg@mail.gmail.com
2018-02-02 19:25:55 +01:00
|
|
|
TapeShare
|
2016-12-13 16:51:32 +01:00
|
|
|
TarMethodData
|
|
|
|
TarMethodFile
|
2010-02-26 02:55:35 +01:00
|
|
|
TargetEntry
|
2016-04-27 17:47:28 +02:00
|
|
|
TclExceptionNameMap
|
2010-02-26 02:55:35 +01:00
|
|
|
Tcl_DString
|
|
|
|
Tcl_FileProc
|
|
|
|
Tcl_HashEntry
|
|
|
|
Tcl_HashTable
|
|
|
|
Tcl_Interp
|
|
|
|
Tcl_NotifierProcs
|
2016-04-27 17:47:28 +02:00
|
|
|
Tcl_Obj
|
2010-02-26 02:55:35 +01:00
|
|
|
Tcl_Time
|
2014-05-06 15:08:14 +02:00
|
|
|
TestDecodingData
|
|
|
|
TestSpec
|
2010-02-26 02:55:35 +01:00
|
|
|
TextFreq
|
|
|
|
TextPositionState
|
|
|
|
TheLexeme
|
|
|
|
TheSubstitute
|
2017-05-17 21:52:16 +02:00
|
|
|
TidExpr
|
2010-02-26 02:55:35 +01:00
|
|
|
TidHashKey
|
|
|
|
TidPath
|
|
|
|
TidScan
|
|
|
|
TidScanState
|
|
|
|
TimeADT
|
|
|
|
TimeInterval
|
|
|
|
TimeIntervalData
|
2013-05-29 22:58:43 +02:00
|
|
|
TimeLineHistoryCmd
|
|
|
|
TimeLineHistoryEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
TimeLineID
|
|
|
|
TimeOffset
|
2011-04-09 05:11:37 +02:00
|
|
|
TimeStamp
|
2010-02-26 02:55:35 +01:00
|
|
|
TimeTzADT
|
2011-04-09 05:11:37 +02:00
|
|
|
TimeZoneAbbrevTable
|
2013-05-29 22:58:43 +02:00
|
|
|
TimeoutId
|
|
|
|
TimeoutType
|
2010-02-26 02:55:35 +01:00
|
|
|
Timestamp
|
|
|
|
TimestampTz
|
|
|
|
TmFromChar
|
|
|
|
TmToChar
|
|
|
|
TocEntry
|
|
|
|
TokenAuxData
|
2017-05-17 21:52:16 +02:00
|
|
|
TokenizedLine
|
2010-02-26 02:55:35 +01:00
|
|
|
TrackItem
|
|
|
|
TransInvalidationInfo
|
|
|
|
TransState
|
|
|
|
TransactionId
|
|
|
|
TransactionState
|
|
|
|
TransactionStateData
|
|
|
|
TransactionStmt
|
|
|
|
TransactionStmtKind
|
2015-05-24 03:20:37 +02:00
|
|
|
TransformInfo
|
2017-05-17 21:52:16 +02:00
|
|
|
TransformJsonStringValuesState
|
2017-08-14 23:29:33 +02:00
|
|
|
TransitionCaptureState
|
2013-05-29 22:58:43 +02:00
|
|
|
TrgmArc
|
|
|
|
TrgmArcInfo
|
2018-04-26 20:45:04 +02:00
|
|
|
TrgmBound
|
2013-05-29 22:58:43 +02:00
|
|
|
TrgmColor
|
|
|
|
TrgmColorInfo
|
|
|
|
TrgmNFA
|
|
|
|
TrgmPackArcInfo
|
|
|
|
TrgmPackedArc
|
|
|
|
TrgmPackedGraph
|
|
|
|
TrgmPackedState
|
|
|
|
TrgmPrefix
|
|
|
|
TrgmState
|
|
|
|
TrgmStateKey
|
|
|
|
TrieChar
|
2010-02-26 02:55:35 +01:00
|
|
|
Trigger
|
|
|
|
TriggerData
|
|
|
|
TriggerDesc
|
|
|
|
TriggerEvent
|
|
|
|
TriggerFlags
|
|
|
|
TriggerInfo
|
2016-12-13 16:51:32 +01:00
|
|
|
TriggerTransition
|
2010-02-26 02:55:35 +01:00
|
|
|
TruncateStmt
|
2016-04-27 17:47:28 +02:00
|
|
|
TsmRoutine
|
2010-02-26 02:55:35 +01:00
|
|
|
TupOutputState
|
|
|
|
TupSortStatus
|
|
|
|
TupStoreStatus
|
|
|
|
TupleConstr
|
|
|
|
TupleConversionMap
|
|
|
|
TupleDesc
|
|
|
|
TupleHashEntry
|
|
|
|
TupleHashEntryData
|
|
|
|
TupleHashIterator
|
|
|
|
TupleHashTable
|
Modify tqueue infrastructure to support transient record types.
Commit 4a4e6893aa080b9094dadbe0e65f8a75fee41ac6, which introduced this
mechanism, failed to account for the fact that the RECORD pseudo-type
uses transient typmods that are only meaningful within a single
backend. Transferring such tuples without modification between two
cooperating backends does not work. This commit installs a system
for passing the tuple descriptors over the same shm_mq being used to
send the tuples themselves. The two sides might not assign the same
transient typmod to any given tuple descriptor, so we must also
substitute the appropriate receiver-side typmod for the one used by
the sender. That adds some CPU overhead, but still seems better than
being unable to pass records between cooperating parallel processes.
Along the way, move the logic for handling multiple tuple queues from
tqueue.c to nodeGather.c; tqueue.c now provides a TupleQueueReader,
which reads from a single queue, rather than a TupleQueueFunnel, which
potentially reads from multiple queues. This change was suggested
previously as a way to make sure that nodeGather.c rather than tqueue.c
had policy control over the order in which to read from queues, but
it wasn't clear to me until now how good an idea it was. typmod
mapping needs to be performed separately for each queue, and it is
much simpler if the tqueue.c code handles that and leaves multiplexing
multiple queues to higher layers of the stack.
2015-11-06 22:58:45 +01:00
|
|
|
TupleQueueReader
|
2010-02-26 02:55:35 +01:00
|
|
|
TupleTableSlot
|
2017-11-29 15:24:24 +01:00
|
|
|
TuplesortInstrumentation
|
|
|
|
TuplesortMethod
|
|
|
|
TuplesortSpaceType
|
2010-02-26 02:55:35 +01:00
|
|
|
Tuplesortstate
|
|
|
|
Tuplestorestate
|
|
|
|
TwoPhaseCallback
|
|
|
|
TwoPhaseFileHeader
|
|
|
|
TwoPhaseLockRecord
|
|
|
|
TwoPhasePgStatRecord
|
Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.
To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.
A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.
Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.
We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.
Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.
Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-07 22:46:51 +01:00
|
|
|
TwoPhasePredicateLockRecord
|
|
|
|
TwoPhasePredicateRecord
|
2011-04-09 05:11:37 +02:00
|
|
|
TwoPhasePredicateRecordType
|
Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.
To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.
A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.
Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.
We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.
Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.
Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-07 22:46:51 +01:00
|
|
|
TwoPhasePredicateXactRecord
|
2010-02-26 02:55:35 +01:00
|
|
|
TwoPhaseRecordOnDisk
|
|
|
|
TwoPhaseRmgrId
|
|
|
|
TwoPhaseStateData
|
|
|
|
TxidEpoch
|
|
|
|
TxidSnapshot
|
|
|
|
Type
|
|
|
|
TypeCacheEntry
|
2011-04-09 05:11:37 +02:00
|
|
|
TypeCacheEnumData
|
2010-02-26 02:55:35 +01:00
|
|
|
TypeCast
|
2017-05-17 21:52:16 +02:00
|
|
|
TypeCat
|
2010-02-26 02:55:35 +01:00
|
|
|
TypeFuncClass
|
|
|
|
TypeInfo
|
|
|
|
TypeName
|
2018-04-26 20:45:04 +02:00
|
|
|
U
|
2010-02-26 02:55:35 +01:00
|
|
|
U32
|
|
|
|
U8
|
2017-05-17 21:52:16 +02:00
|
|
|
UChar
|
|
|
|
UCharIterator
|
|
|
|
UCollator
|
|
|
|
UConverter
|
|
|
|
UErrorCode
|
2010-02-26 02:55:35 +01:00
|
|
|
UINT
|
|
|
|
ULARGE_INTEGER
|
|
|
|
ULONG
|
|
|
|
ULONG_PTR
|
|
|
|
UV
|
2017-05-17 21:52:16 +02:00
|
|
|
UVersionInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
Unique
|
|
|
|
UniquePath
|
|
|
|
UniquePathMethod
|
|
|
|
UniqueState
|
|
|
|
UnlistenStmt
|
|
|
|
UnresolvedTup
|
|
|
|
UnresolvedTupData
|
|
|
|
UpdateStmt
|
2016-04-27 17:47:28 +02:00
|
|
|
UpperRelationKind
|
|
|
|
UpperUniquePath
|
2010-02-26 02:55:35 +01:00
|
|
|
UserAuth
|
|
|
|
UserMapping
|
2011-04-09 05:11:37 +02:00
|
|
|
UserOpts
|
2010-02-26 02:55:35 +01:00
|
|
|
VacAttrStats
|
|
|
|
VacAttrStatsP
|
2015-05-24 03:20:37 +02:00
|
|
|
VacuumParams
|
2017-11-29 15:24:24 +01:00
|
|
|
VacuumRelation
|
2010-02-26 02:55:35 +01:00
|
|
|
VacuumStmt
|
|
|
|
Value
|
|
|
|
ValuesScan
|
|
|
|
ValuesScanState
|
|
|
|
Var
|
|
|
|
VarBit
|
|
|
|
VarChar
|
|
|
|
VarParamState
|
2016-05-02 15:23:55 +02:00
|
|
|
VarString
|
2016-04-27 17:47:28 +02:00
|
|
|
VarStringSortSupport
|
2010-02-26 02:55:35 +01:00
|
|
|
Variable
|
|
|
|
VariableAssignHook
|
|
|
|
VariableCache
|
|
|
|
VariableCacheData
|
|
|
|
VariableSetKind
|
|
|
|
VariableSetStmt
|
|
|
|
VariableShowStmt
|
|
|
|
VariableSpace
|
|
|
|
VariableStatData
|
2017-05-17 21:52:16 +02:00
|
|
|
VariableSubstituteHook
|
2018-04-26 20:45:04 +02:00
|
|
|
VersionedQuery
|
2010-02-26 02:55:35 +01:00
|
|
|
Vfd
|
2014-05-06 15:08:14 +02:00
|
|
|
ViewCheckOption
|
2014-07-14 23:24:40 +02:00
|
|
|
ViewOptions
|
2010-02-26 02:55:35 +01:00
|
|
|
ViewStmt
|
|
|
|
VirtualTransactionId
|
|
|
|
Vsrt
|
2011-04-09 05:11:37 +02:00
|
|
|
WAITORTIMERCALLBACK
|
2010-02-26 02:55:35 +01:00
|
|
|
WAIT_ORDER
|
2014-05-06 15:08:14 +02:00
|
|
|
WALInsertLock
|
|
|
|
WALInsertLockPadded
|
2010-02-26 02:55:35 +01:00
|
|
|
WCHAR
|
2015-05-24 03:20:37 +02:00
|
|
|
WCOKind
|
2016-12-13 16:51:32 +01:00
|
|
|
WFW_WaitOption
|
2014-05-06 15:08:14 +02:00
|
|
|
WIDGET
|
2010-02-26 02:55:35 +01:00
|
|
|
WIN32_FILE_ATTRIBUTE_DATA
|
|
|
|
WORD
|
|
|
|
WORKSTATE
|
2011-04-09 05:11:37 +02:00
|
|
|
WSABUF
|
|
|
|
WSADATA
|
|
|
|
WSANETWORKEVENTS
|
|
|
|
WSAPROTOCOL_INFO
|
2016-04-27 17:47:28 +02:00
|
|
|
WaitEvent
|
2016-12-13 16:51:32 +01:00
|
|
|
WaitEventActivity
|
|
|
|
WaitEventClient
|
2017-05-17 21:52:16 +02:00
|
|
|
WaitEventIO
|
2016-12-13 16:51:32 +01:00
|
|
|
WaitEventIPC
|
2016-04-27 17:47:28 +02:00
|
|
|
WaitEventSet
|
2016-12-13 16:51:32 +01:00
|
|
|
WaitEventTimeout
|
2017-08-14 23:29:33 +02:00
|
|
|
WaitPMResult
|
2016-12-13 16:51:32 +01:00
|
|
|
WalCloseMethod
|
2010-07-06 21:18:19 +02:00
|
|
|
WalLevel
|
2010-02-26 02:55:35 +01:00
|
|
|
WalRcvData
|
2017-05-17 21:52:16 +02:00
|
|
|
WalRcvExecResult
|
|
|
|
WalRcvExecStatus
|
2010-02-26 02:55:35 +01:00
|
|
|
WalRcvState
|
2017-05-17 21:52:16 +02:00
|
|
|
WalRcvStreamOptions
|
2016-12-13 16:51:32 +01:00
|
|
|
WalReceiverConn
|
|
|
|
WalReceiverFunctionsType
|
2010-02-26 02:55:35 +01:00
|
|
|
WalSnd
|
|
|
|
WalSndCtlData
|
2014-03-10 18:50:28 +01:00
|
|
|
WalSndSendDataCallback
|
2011-04-09 05:11:37 +02:00
|
|
|
WalSndState
|
2017-05-17 21:52:16 +02:00
|
|
|
WalTimeSample
|
2016-12-13 16:51:32 +01:00
|
|
|
WalWriteMethod
|
|
|
|
Walfile
|
2010-02-26 02:55:35 +01:00
|
|
|
WindowAgg
|
2016-04-27 17:47:28 +02:00
|
|
|
WindowAggPath
|
2010-02-26 02:55:35 +01:00
|
|
|
WindowAggState
|
|
|
|
WindowClause
|
|
|
|
WindowDef
|
|
|
|
WindowFunc
|
|
|
|
WindowFuncExprState
|
|
|
|
WindowFuncLists
|
|
|
|
WindowObject
|
|
|
|
WindowObjectData
|
|
|
|
WindowStatePerAgg
|
|
|
|
WindowStatePerAggData
|
|
|
|
WindowStatePerFunc
|
2014-05-06 15:08:14 +02:00
|
|
|
WithCheckOption
|
2010-02-26 02:55:35 +01:00
|
|
|
WithClause
|
|
|
|
WordEntry
|
|
|
|
WordEntryIN
|
|
|
|
WordEntryPos
|
|
|
|
WordEntryPosVector
|
2015-05-24 03:20:37 +02:00
|
|
|
WordEntryPosVector1
|
2010-02-26 02:55:35 +01:00
|
|
|
WorkTableScan
|
|
|
|
WorkTableScanState
|
|
|
|
WorkerInfo
|
2013-05-29 22:58:43 +02:00
|
|
|
WorkerInfoData
|
2016-04-27 17:47:28 +02:00
|
|
|
WorkerInstrumentation
|
2017-05-17 21:52:16 +02:00
|
|
|
WorkerJobDumpPtrType
|
|
|
|
WorkerJobRestorePtrType
|
2010-02-26 02:55:35 +01:00
|
|
|
Working_State
|
2017-05-17 21:52:16 +02:00
|
|
|
WriteBufPtrType
|
|
|
|
WriteBytePtrType
|
|
|
|
WriteDataPtrType
|
|
|
|
WriteExtraTocPtrType
|
2011-04-09 05:11:37 +02:00
|
|
|
WriteFunc
|
Allow to trigger kernel writeback after a configurable number of writes.
Currently writes to the main data files of postgres all go through the
OS page cache. This means that some operating systems can end up
collecting a large number of dirty buffers in their respective page
caches. When these dirty buffers are flushed to storage rapidly, be it
because of fsync(), timeouts, or dirty ratios, latency for other reads
and writes can increase massively. This is the primary reason for
regular massive stalls observed in real world scenarios and artificial
benchmarks; on rotating disks stalls on the order of hundreds of seconds
have been observed.
On linux it is possible to control this by reducing the global dirty
limits significantly, reducing the above problem. But global
configuration is rather problematic because it'll affect other
applications; also PostgreSQL itself doesn't always generally want this
behavior, e.g. for temporary files it's undesirable.
Several operating systems allow some control over the kernel page
cache. Linux has sync_file_range(2), several posix systems have msync(2)
and posix_fadvise(2). sync_file_range(2) is preferable because it
requires no special setup, whereas msync() requires the to-be-flushed
range to be mmap'ed. For the purpose of flushing dirty data
posix_fadvise(2) is the worst alternative, as flushing dirty data is
just a side-effect of POSIX_FADV_DONTNEED, which also removes the pages
from the page cache. Thus the feature is enabled by default only on
linux, but can be enabled on all systems that have any of the above
APIs.
While desirable and likely possible this patch does not contain an
implementation for windows.
With the infrastructure added, writes made via checkpointer, bgwriter
and normal user backends can be flushed after a configurable number of
writes. Each of these sources of writes controlled by a separate GUC,
checkpointer_flush_after, bgwriter_flush_after and backend_flush_after
respectively; they're separate because the number of flushes that are
good are separate, and because the performance considerations of
controlled flushing for each of these are different.
A later patch will add checkpoint sorting - after that flushes from the
ckeckpoint will almost always be desirable. Bgwriter flushes are most of
the time going to be random, which are slow on lots of storage hardware.
Flushing in backends works well if the storage and bgwriter can keep up,
but if not it can have negative consequences. This patch is likely to
have negative performance consequences without checkpoint sorting, but
unfortunately so has sorting without flush control.
Discussion: alpine.DEB.2.10.1506011320000.28433@sto
Author: Fabien Coelho and Andres Freund
2016-02-19 21:13:05 +01:00
|
|
|
WritebackContext
|
2010-02-26 02:55:35 +01:00
|
|
|
X509
|
2016-05-02 15:23:55 +02:00
|
|
|
X509_EXTENSION
|
2010-02-26 02:55:35 +01:00
|
|
|
X509_NAME
|
|
|
|
X509_NAME_ENTRY
|
|
|
|
X509_STORE
|
|
|
|
X509_STORE_CTX
|
2014-05-06 15:08:14 +02:00
|
|
|
XLTW_Oper
|
2010-02-26 02:55:35 +01:00
|
|
|
XLogCtlData
|
|
|
|
XLogCtlInsert
|
2013-05-29 22:58:43 +02:00
|
|
|
XLogDumpConfig
|
|
|
|
XLogDumpPrivate
|
2015-05-24 03:20:37 +02:00
|
|
|
XLogDumpStats
|
2010-02-26 02:55:35 +01:00
|
|
|
XLogLongPageHeader
|
|
|
|
XLogLongPageHeaderData
|
|
|
|
XLogPageHeader
|
|
|
|
XLogPageHeaderData
|
2013-05-29 22:58:43 +02:00
|
|
|
XLogPageReadCB
|
|
|
|
XLogPageReadPrivate
|
|
|
|
XLogReaderState
|
2010-02-26 02:55:35 +01:00
|
|
|
XLogRecData
|
|
|
|
XLogRecPtr
|
|
|
|
XLogRecord
|
2015-05-24 03:20:37 +02:00
|
|
|
XLogRecordBlockCompressHeader
|
|
|
|
XLogRecordBlockHeader
|
|
|
|
XLogRecordBlockImageHeader
|
Introduce logical decoding.
This feature, building on previous commits, allows the write-ahead log
stream to be decoded into a series of logical changes; that is,
inserts, updates, and deletes and the transactions which contain them.
It is capable of handling decoding even across changes to the schema
of the effected tables. The output format is controlled by a
so-called "output plugin"; an example is included. To make use of
this in a real replication system, the output plugin will need to be
modified to produce output in the format appropriate to that system,
and to perform filtering.
Currently, information can be extracted from the logical decoding
system only via SQL; future commits will add the ability to stream
changes via walsender.
Andres Freund, with review and other contributions from many other
people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan,
Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit
Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve
Singer.
2014-03-03 22:32:18 +01:00
|
|
|
XLogRecordBuffer
|
2015-05-24 03:20:37 +02:00
|
|
|
XLogRedoAction
|
2013-05-29 22:58:43 +02:00
|
|
|
XLogSegNo
|
|
|
|
XLogSource
|
2010-02-26 02:55:35 +01:00
|
|
|
XLogwrtResult
|
|
|
|
XLogwrtRqst
|
|
|
|
XPVIV
|
|
|
|
XactCallback
|
|
|
|
XactCallbackItem
|
|
|
|
XactEvent
|
2014-05-06 15:08:14 +02:00
|
|
|
XactLockTableWaitInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
XidStatus
|
|
|
|
XmlExpr
|
|
|
|
XmlExprOp
|
|
|
|
XmlOptionType
|
|
|
|
XmlSerialize
|
2017-05-17 21:52:16 +02:00
|
|
|
XmlTableBuilderData
|
2010-02-26 02:55:35 +01:00
|
|
|
YYLTYPE
|
|
|
|
YYSTYPE
|
|
|
|
YY_BUFFER_STATE
|
2018-04-26 20:45:04 +02:00
|
|
|
ZipfCache
|
|
|
|
ZipfCell
|
2010-02-26 02:55:35 +01:00
|
|
|
_SPI_connection
|
|
|
|
_SPI_plan
|
|
|
|
__AssignProcessToJobObject
|
|
|
|
__CreateJobObject
|
|
|
|
__CreateRestrictedToken
|
|
|
|
__IsProcessInJob
|
|
|
|
__QueryInformationJobObject
|
2011-04-09 05:11:37 +02:00
|
|
|
__RegisterWaitForSingleObject
|
2010-02-26 02:55:35 +01:00
|
|
|
__SetInformationJobObject
|
2014-05-06 15:08:14 +02:00
|
|
|
_resultmap
|
|
|
|
_stringlist
|
2018-04-26 20:45:04 +02:00
|
|
|
abs
|
2014-05-06 15:08:14 +02:00
|
|
|
acquireLocksOnSubLinks_context
|
2012-06-10 21:15:31 +02:00
|
|
|
adjust_appendrel_attrs_context
|
2011-04-09 05:11:37 +02:00
|
|
|
allocfunc
|
2016-05-02 15:23:55 +02:00
|
|
|
ambeginscan_function
|
|
|
|
ambuild_function
|
|
|
|
ambuildempty_function
|
|
|
|
ambulkdelete_function
|
|
|
|
amcanreturn_function
|
|
|
|
amcostestimate_function
|
|
|
|
amendscan_function
|
2017-05-17 21:52:16 +02:00
|
|
|
amestimateparallelscan_function
|
2016-05-02 15:23:55 +02:00
|
|
|
amgetbitmap_function
|
|
|
|
amgettuple_function
|
2017-05-17 21:52:16 +02:00
|
|
|
aminitparallelscan_function
|
2016-05-02 15:23:55 +02:00
|
|
|
aminsert_function
|
|
|
|
ammarkpos_function
|
|
|
|
amoptions_function
|
2017-05-17 21:52:16 +02:00
|
|
|
amparallelrescan_function
|
2016-08-15 19:42:51 +02:00
|
|
|
amproperty_function
|
2016-05-02 15:23:55 +02:00
|
|
|
amrescan_function
|
|
|
|
amrestrpos_function
|
|
|
|
amvacuumcleanup_function
|
|
|
|
amvalidate_function
|
2015-05-24 03:20:37 +02:00
|
|
|
array_iter
|
2010-02-26 02:55:35 +01:00
|
|
|
array_unnest_fctx
|
2011-04-09 05:11:37 +02:00
|
|
|
assign_collations_context
|
2010-02-26 02:55:35 +01:00
|
|
|
autovac_table
|
|
|
|
av_relation
|
|
|
|
avl_dbase
|
2016-04-27 17:47:28 +02:00
|
|
|
avl_node
|
|
|
|
avl_tree
|
2010-02-26 02:55:35 +01:00
|
|
|
avw_dbase
|
|
|
|
backslashResult
|
|
|
|
base_yy_extra_type
|
2011-04-09 05:11:37 +02:00
|
|
|
basebackup_options
|
2013-05-29 22:58:43 +02:00
|
|
|
bgworker_main_type
|
|
|
|
binaryheap
|
|
|
|
binaryheap_comparator
|
2010-02-26 02:55:35 +01:00
|
|
|
bitmapword
|
2017-11-29 15:24:24 +01:00
|
|
|
bits16
|
2010-02-26 02:55:35 +01:00
|
|
|
bits32
|
|
|
|
bits8
|
2018-04-01 02:49:41 +02:00
|
|
|
bloom_filter
|
2018-04-26 20:45:04 +02:00
|
|
|
boolean
|
2015-05-24 03:20:37 +02:00
|
|
|
brin_column_state
|
2010-02-26 02:55:35 +01:00
|
|
|
bytea
|
|
|
|
cached_re_str
|
|
|
|
cashKEY
|
2011-04-09 05:11:37 +02:00
|
|
|
cfp
|
2013-05-29 22:58:43 +02:00
|
|
|
check_agg_arguments_context
|
2016-08-15 19:42:51 +02:00
|
|
|
check_function_callback
|
2010-02-26 02:55:35 +01:00
|
|
|
check_network_data
|
2011-04-09 05:11:37 +02:00
|
|
|
check_object_relabel_type
|
2010-02-26 02:55:35 +01:00
|
|
|
check_password_hook_type
|
|
|
|
check_ungrouped_columns_context
|
|
|
|
chr
|
|
|
|
clock_t
|
2011-04-09 05:11:37 +02:00
|
|
|
cmpEntriesArg
|
2010-02-26 02:55:35 +01:00
|
|
|
cmpfunc
|
|
|
|
codes_t
|
|
|
|
coercion
|
2011-04-09 05:11:37 +02:00
|
|
|
collation_cache_entry
|
2010-02-26 02:55:35 +01:00
|
|
|
color
|
2016-12-13 16:51:32 +01:00
|
|
|
colormaprange
|
2011-04-09 05:11:37 +02:00
|
|
|
config_var_value
|
2010-02-26 02:55:35 +01:00
|
|
|
contain_aggs_of_level_context
|
|
|
|
convert_testexpr_context
|
2017-05-17 21:52:16 +02:00
|
|
|
copy_data_source_cb
|
2010-02-26 02:55:35 +01:00
|
|
|
core_YYSTYPE
|
|
|
|
core_yy_extra_type
|
|
|
|
core_yyscan_t
|
2016-06-15 20:33:58 +02:00
|
|
|
corrupt_items
|
2010-02-26 02:55:35 +01:00
|
|
|
cost_qual_eval_context
|
2016-05-02 15:23:55 +02:00
|
|
|
create_upper_paths_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
createdb_failure_params
|
|
|
|
crosstab_HashEnt
|
|
|
|
crosstab_cat_desc
|
2015-05-24 03:20:37 +02:00
|
|
|
datapagemap_iterator_t
|
|
|
|
datapagemap_t
|
2010-02-26 02:55:35 +01:00
|
|
|
dateKEY
|
|
|
|
datetkn
|
2015-05-24 03:20:37 +02:00
|
|
|
dce_uuid_t
|
2010-02-26 02:55:35 +01:00
|
|
|
decimal
|
2013-05-29 22:58:43 +02:00
|
|
|
deparse_columns
|
2010-02-26 02:55:35 +01:00
|
|
|
deparse_context
|
2013-05-29 22:58:43 +02:00
|
|
|
deparse_expr_cxt
|
2010-02-26 02:55:35 +01:00
|
|
|
deparse_namespace
|
|
|
|
destructor
|
|
|
|
dev_t
|
2018-04-26 20:45:04 +02:00
|
|
|
digit
|
2010-02-26 02:55:35 +01:00
|
|
|
directory_fctx
|
2014-05-06 15:08:14 +02:00
|
|
|
disassembledLeaf
|
2013-05-29 22:58:43 +02:00
|
|
|
dlist_head
|
|
|
|
dlist_iter
|
|
|
|
dlist_mutable_iter
|
|
|
|
dlist_node
|
2010-02-26 02:55:35 +01:00
|
|
|
ds_state
|
2016-12-02 18:34:36 +01:00
|
|
|
dsa_area
|
|
|
|
dsa_area_control
|
|
|
|
dsa_area_pool
|
|
|
|
dsa_area_span
|
2016-12-13 16:51:32 +01:00
|
|
|
dsa_handle
|
|
|
|
dsa_pointer
|
2018-04-26 20:45:04 +02:00
|
|
|
dsa_pointer_atomic
|
2016-12-02 18:34:36 +01:00
|
|
|
dsa_segment_header
|
2016-12-13 16:51:32 +01:00
|
|
|
dsa_segment_index
|
2016-12-02 18:34:36 +01:00
|
|
|
dsa_segment_map
|
2017-11-29 15:24:24 +01:00
|
|
|
dshash_compare_function
|
2017-08-23 07:41:32 +02:00
|
|
|
dshash_hash
|
2017-11-29 15:24:24 +01:00
|
|
|
dshash_hash_function
|
2017-08-23 07:41:32 +02:00
|
|
|
dshash_parameters
|
|
|
|
dshash_partition
|
|
|
|
dshash_table
|
|
|
|
dshash_table_control
|
|
|
|
dshash_table_handle
|
|
|
|
dshash_table_item
|
2014-05-06 15:08:14 +02:00
|
|
|
dsm_control_header
|
|
|
|
dsm_control_item
|
|
|
|
dsm_handle
|
|
|
|
dsm_op
|
|
|
|
dsm_segment
|
|
|
|
dsm_segment_detach_callback
|
2010-07-06 21:18:19 +02:00
|
|
|
eLogType
|
2010-02-26 02:55:35 +01:00
|
|
|
ean13
|
|
|
|
eary
|
2013-05-29 22:58:43 +02:00
|
|
|
ec_matches_callback_type
|
|
|
|
ec_member_foreign_arg
|
|
|
|
ec_member_matches_arg
|
2012-06-10 21:15:31 +02:00
|
|
|
emit_log_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
eval_const_expressions_context
|
2013-05-29 22:58:43 +02:00
|
|
|
event_trigger_command_tag_check_result
|
|
|
|
event_trigger_support_data
|
|
|
|
exec_thread_arg
|
2010-02-26 02:55:35 +01:00
|
|
|
execution_state
|
|
|
|
explain_get_index_name_hook_type
|
|
|
|
f_smgr
|
|
|
|
fd_set
|
2017-05-17 21:52:16 +02:00
|
|
|
fe_scram_state
|
|
|
|
fe_scram_state_enum
|
2015-05-24 03:20:37 +02:00
|
|
|
file_action_t
|
|
|
|
file_entry_t
|
|
|
|
file_type_t
|
|
|
|
filemap_t
|
2010-02-26 02:55:35 +01:00
|
|
|
finalize_primnode_context
|
|
|
|
find_expr_references_context
|
|
|
|
fix_join_expr_context
|
|
|
|
fix_scan_expr_context
|
|
|
|
fix_upper_expr_context
|
|
|
|
flatten_join_alias_vars_context
|
|
|
|
float4
|
|
|
|
float4KEY
|
|
|
|
float8
|
|
|
|
float8KEY
|
2014-05-06 15:08:14 +02:00
|
|
|
fmAggrefPtr
|
2015-05-24 03:20:37 +02:00
|
|
|
fmExprContextCallbackFunction
|
2010-02-26 02:55:35 +01:00
|
|
|
fmNodePtr
|
2012-06-10 21:15:31 +02:00
|
|
|
fmStringInfo
|
2011-04-09 05:11:37 +02:00
|
|
|
fmgr_hook_type
|
2013-05-29 22:58:43 +02:00
|
|
|
foreign_glob_cxt
|
|
|
|
foreign_loc_cxt
|
2011-04-09 05:11:37 +02:00
|
|
|
freeaddrinfo_ptr_t
|
2010-02-26 02:55:35 +01:00
|
|
|
freefunc
|
|
|
|
fsec_t
|
2011-06-09 20:01:49 +02:00
|
|
|
gbt_vsrt_arg
|
2010-02-26 02:55:35 +01:00
|
|
|
gbtree_ninfo
|
|
|
|
gbtree_vinfo
|
|
|
|
generate_series_fctx
|
2015-05-24 03:20:37 +02:00
|
|
|
generate_series_numeric_fctx
|
2010-02-26 02:55:35 +01:00
|
|
|
generate_series_timestamp_fctx
|
|
|
|
generate_series_timestamptz_fctx
|
|
|
|
generate_subscripts_fctx
|
2016-08-15 19:42:51 +02:00
|
|
|
get_agg_clause_costs_context
|
2010-02-26 02:55:35 +01:00
|
|
|
get_attavgwidth_hook_type
|
|
|
|
get_index_stats_hook_type
|
|
|
|
get_relation_info_hook_type
|
|
|
|
get_relation_stats_hook_type
|
2011-04-09 05:11:37 +02:00
|
|
|
getaddrinfo_ptr_t
|
|
|
|
getnameinfo_ptr_t
|
2010-02-26 02:55:35 +01:00
|
|
|
gid_t
|
2015-05-24 03:20:37 +02:00
|
|
|
gin_leafpage_items_state
|
2010-02-26 02:55:35 +01:00
|
|
|
ginxlogCreatePostingTree
|
|
|
|
ginxlogDeleteListPages
|
|
|
|
ginxlogDeletePage
|
|
|
|
ginxlogInsert
|
2014-05-06 15:08:14 +02:00
|
|
|
ginxlogInsertDataInternal
|
|
|
|
ginxlogInsertEntry
|
2010-02-26 02:55:35 +01:00
|
|
|
ginxlogInsertListPage
|
2014-05-06 15:08:14 +02:00
|
|
|
ginxlogRecompressDataLeaf
|
2010-02-26 02:55:35 +01:00
|
|
|
ginxlogSplit
|
|
|
|
ginxlogUpdateMeta
|
2014-05-06 15:08:14 +02:00
|
|
|
ginxlogVacuumDataLeafPage
|
2010-02-26 02:55:35 +01:00
|
|
|
gistxlogPage
|
|
|
|
gistxlogPageSplit
|
|
|
|
gistxlogPageUpdate
|
2017-05-17 21:52:16 +02:00
|
|
|
grouping_sets_data
|
2011-04-09 05:11:37 +02:00
|
|
|
gseg_picksplit_item
|
2013-05-29 22:58:43 +02:00
|
|
|
gss_OID
|
2017-05-17 21:52:16 +02:00
|
|
|
gss_OID_desc
|
2010-02-26 02:55:35 +01:00
|
|
|
gss_buffer_desc
|
2013-05-29 22:58:43 +02:00
|
|
|
gss_cred_id_t
|
|
|
|
gss_ctx_id_t
|
|
|
|
gss_name_t
|
|
|
|
gtrgm_consistent_cache
|
2010-02-26 02:55:35 +01:00
|
|
|
gzFile
|
|
|
|
hashfunc
|
|
|
|
hbaPort
|
|
|
|
heap_page_items_state
|
|
|
|
help_handler
|
|
|
|
hlCheck
|
2016-12-13 16:51:32 +01:00
|
|
|
hstoreCheckKeyLen_t
|
|
|
|
hstoreCheckValLen_t
|
|
|
|
hstorePairs_t
|
|
|
|
hstoreUniquePairs_t
|
|
|
|
hstoreUpgrade_t
|
2015-05-24 03:20:37 +02:00
|
|
|
hyperLogLogState
|
2017-05-17 21:52:16 +02:00
|
|
|
ifState
|
2018-04-26 20:45:04 +02:00
|
|
|
ilist
|
2015-05-24 03:20:37 +02:00
|
|
|
import_error_callback_arg
|
2010-02-26 02:55:35 +01:00
|
|
|
indexed_tlist
|
|
|
|
inet
|
|
|
|
inetKEY
|
|
|
|
inet_struct
|
2014-05-06 15:08:14 +02:00
|
|
|
init_function
|
2010-07-06 21:18:19 +02:00
|
|
|
inline_error_callback_arg
|
2010-02-26 02:55:35 +01:00
|
|
|
ino_t
|
2013-05-29 22:58:43 +02:00
|
|
|
inquiry
|
2010-02-26 02:55:35 +01:00
|
|
|
instr_time
|
2015-05-24 03:20:37 +02:00
|
|
|
int128
|
2010-02-26 02:55:35 +01:00
|
|
|
int16
|
|
|
|
int16KEY
|
|
|
|
int2vector
|
|
|
|
int32
|
|
|
|
int32KEY
|
|
|
|
int32_t
|
|
|
|
int64
|
|
|
|
int64KEY
|
|
|
|
int8
|
2013-05-29 22:58:43 +02:00
|
|
|
internalPQconninfoOption
|
2010-02-26 02:55:35 +01:00
|
|
|
intptr_t
|
|
|
|
intvKEY
|
|
|
|
itemIdSort
|
|
|
|
itemIdSortData
|
2018-04-26 20:45:04 +02:00
|
|
|
iterator
|
2010-02-26 02:55:35 +01:00
|
|
|
jmp_buf
|
|
|
|
join_search_hook_type
|
2013-05-29 22:58:43 +02:00
|
|
|
json_aelem_action
|
|
|
|
json_ofield_action
|
|
|
|
json_scalar_action
|
|
|
|
json_struct_action
|
2011-04-09 05:11:37 +02:00
|
|
|
keyEntryData
|
2010-02-26 02:55:35 +01:00
|
|
|
key_t
|
|
|
|
lclContext
|
|
|
|
lclTocEntry
|
2014-05-06 15:08:14 +02:00
|
|
|
leafSegmentInfo
|
2010-02-26 02:55:35 +01:00
|
|
|
line_t
|
2016-12-13 16:51:32 +01:00
|
|
|
lineno_t
|
2018-04-26 20:45:04 +02:00
|
|
|
list_qsort_comparator
|
2011-04-09 05:11:37 +02:00
|
|
|
locale_t
|
2010-02-26 02:55:35 +01:00
|
|
|
locate_agg_of_level_context
|
|
|
|
locate_var_of_level_context
|
|
|
|
locate_windowfunc_context
|
2011-11-14 18:12:23 +01:00
|
|
|
logstreamer_param
|
2010-02-26 02:55:35 +01:00
|
|
|
lquery
|
|
|
|
lquery_level
|
|
|
|
lquery_variant
|
|
|
|
ltree
|
|
|
|
ltree_gist
|
|
|
|
ltree_level
|
|
|
|
ltxtquery
|
|
|
|
mXactCacheEnt
|
2017-05-17 21:52:16 +02:00
|
|
|
mac8KEY
|
2010-02-26 02:55:35 +01:00
|
|
|
macKEY
|
|
|
|
macaddr
|
2017-05-17 21:52:16 +02:00
|
|
|
macaddr8
|
|
|
|
macaddr_sortsupport_state
|
2013-05-29 22:58:43 +02:00
|
|
|
map_variable_attnos_context
|
2016-12-13 16:51:32 +01:00
|
|
|
max_parallel_hazard_context
|
2010-02-26 02:55:35 +01:00
|
|
|
mb2wchar_with_len_converter
|
2011-11-14 18:12:23 +01:00
|
|
|
mbcharacter_incrementer
|
2010-02-26 02:55:35 +01:00
|
|
|
mbdisplaylen_converter
|
|
|
|
mblen_converter
|
|
|
|
mbverifier
|
|
|
|
md5_ctxt
|
|
|
|
metastring
|
|
|
|
mix_data_t
|
|
|
|
mixedStruct
|
|
|
|
mode_t
|
|
|
|
movedb_failure_params
|
|
|
|
mp_digit
|
|
|
|
mp_int
|
|
|
|
mp_result
|
|
|
|
mp_sign
|
|
|
|
mp_size
|
|
|
|
mp_word
|
|
|
|
mpz_t
|
2013-05-29 22:58:43 +02:00
|
|
|
mxact
|
|
|
|
mxtruncinfo
|
2011-04-09 05:11:37 +02:00
|
|
|
needs_fmgr_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
nodeitem
|
|
|
|
normal_rand_fctx
|
|
|
|
ntile_context
|
|
|
|
numeric
|
2011-04-09 05:11:37 +02:00
|
|
|
object_access_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
off_t
|
|
|
|
oidKEY
|
|
|
|
oidvector
|
2014-05-06 15:08:14 +02:00
|
|
|
on_dsm_detach_callback
|
2012-06-10 21:15:31 +02:00
|
|
|
on_exit_nicely_callback
|
2016-12-13 16:51:32 +01:00
|
|
|
ossl_EVP_cipher_func
|
2018-04-26 20:45:04 +02:00
|
|
|
other
|
2015-05-24 03:20:37 +02:00
|
|
|
output_type
|
2016-12-13 16:51:32 +01:00
|
|
|
pagetable_hash
|
|
|
|
pagetable_iterator
|
2015-05-24 03:20:37 +02:00
|
|
|
pairingheap
|
|
|
|
pairingheap_comparator
|
|
|
|
pairingheap_node
|
|
|
|
parallel_worker_main_type
|
2010-07-06 21:18:19 +02:00
|
|
|
parse_error_callback_arg
|
2010-02-26 02:55:35 +01:00
|
|
|
pendingPosition
|
|
|
|
pgParameterStatus
|
2015-05-24 03:20:37 +02:00
|
|
|
pg_atomic_flag
|
|
|
|
pg_atomic_uint32
|
|
|
|
pg_atomic_uint64
|
2016-12-13 16:51:32 +01:00
|
|
|
pg_conn_host
|
|
|
|
pg_conn_host_type
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_conv_map
|
|
|
|
pg_crc32
|
2015-05-24 03:20:37 +02:00
|
|
|
pg_crc32c
|
2012-06-10 21:15:31 +02:00
|
|
|
pg_ctype_cache
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_enc
|
|
|
|
pg_enc2gettext
|
|
|
|
pg_enc2name
|
|
|
|
pg_encname
|
|
|
|
pg_gssinfo
|
2013-05-29 22:58:43 +02:00
|
|
|
pg_int64
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_local_to_utf_combined
|
2011-04-09 05:11:37 +02:00
|
|
|
pg_locale_t
|
2017-05-17 21:52:16 +02:00
|
|
|
pg_mb_radix_tree
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_on_exit_callback
|
|
|
|
pg_re_flags
|
2017-05-17 21:52:16 +02:00
|
|
|
pg_saslprep_rc
|
|
|
|
pg_sha224_ctx
|
|
|
|
pg_sha256_ctx
|
|
|
|
pg_sha384_ctx
|
|
|
|
pg_sha512_ctx
|
2012-06-10 21:15:31 +02:00
|
|
|
pg_stack_base_t
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_time_t
|
|
|
|
pg_tz
|
|
|
|
pg_tz_cache
|
|
|
|
pg_tzenum
|
2017-05-17 21:52:16 +02:00
|
|
|
pg_unicode_decomposition
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_utf_to_local_combined
|
|
|
|
pg_uuid_t
|
2012-06-10 21:15:31 +02:00
|
|
|
pg_wc_probefunc
|
2010-02-26 02:55:35 +01:00
|
|
|
pg_wchar
|
|
|
|
pg_wchar_tbl
|
2015-05-24 03:20:37 +02:00
|
|
|
pgp_armor_headers_state
|
2010-02-26 02:55:35 +01:00
|
|
|
pgpid_t
|
|
|
|
pgsocket
|
|
|
|
pgsql_thing_t
|
|
|
|
pgssEntry
|
|
|
|
pgssHashKey
|
2012-06-10 21:15:31 +02:00
|
|
|
pgssJumbleState
|
|
|
|
pgssLocationLen
|
2010-02-26 02:55:35 +01:00
|
|
|
pgssSharedState
|
2014-05-06 15:08:14 +02:00
|
|
|
pgssVersion
|
2010-02-26 02:55:35 +01:00
|
|
|
pgstat_page
|
|
|
|
pgstattuple_type
|
|
|
|
pgthreadlock_t
|
|
|
|
pid_t
|
2016-04-27 17:47:28 +02:00
|
|
|
pivot_field
|
2010-02-26 02:55:35 +01:00
|
|
|
planner_hook_type
|
2011-04-09 05:11:37 +02:00
|
|
|
plperl_array_info
|
2010-02-26 02:55:35 +01:00
|
|
|
plperl_call_data
|
2011-04-09 05:11:37 +02:00
|
|
|
plperl_interp_desc
|
2010-02-26 02:55:35 +01:00
|
|
|
plperl_proc_desc
|
2011-04-09 05:11:37 +02:00
|
|
|
plperl_proc_key
|
|
|
|
plperl_proc_ptr
|
2010-02-26 02:55:35 +01:00
|
|
|
plperl_query_desc
|
|
|
|
plperl_query_entry
|
2015-05-24 03:20:37 +02:00
|
|
|
plpgsql_CastHashEntry
|
|
|
|
plpgsql_CastHashKey
|
2010-02-26 02:55:35 +01:00
|
|
|
plpgsql_HashEnt
|
2016-12-13 16:51:32 +01:00
|
|
|
pltcl_call_state
|
2011-04-09 05:11:37 +02:00
|
|
|
pltcl_interp_desc
|
2010-02-26 02:55:35 +01:00
|
|
|
pltcl_proc_desc
|
2011-04-09 05:11:37 +02:00
|
|
|
pltcl_proc_key
|
|
|
|
pltcl_proc_ptr
|
2010-02-26 02:55:35 +01:00
|
|
|
pltcl_query_desc
|
2018-04-26 20:45:04 +02:00
|
|
|
pointer
|
2016-04-27 17:47:28 +02:00
|
|
|
pos_trgm
|
2012-06-10 21:15:31 +02:00
|
|
|
post_parse_analyze_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
pqbool
|
|
|
|
pqsigfunc
|
|
|
|
printQueryOpt
|
|
|
|
printTableContent
|
|
|
|
printTableFooter
|
|
|
|
printTableOpt
|
|
|
|
printTextFormat
|
|
|
|
printTextLineFormat
|
|
|
|
printTextLineWrap
|
|
|
|
printTextRule
|
2018-04-26 20:45:04 +02:00
|
|
|
printfunc
|
2010-02-26 02:55:35 +01:00
|
|
|
priv_map
|
2015-05-24 03:20:37 +02:00
|
|
|
process_file_callback_t
|
2010-02-26 02:55:35 +01:00
|
|
|
process_sublinks_context
|
2016-08-16 00:09:55 +02:00
|
|
|
proclist_head
|
|
|
|
proclist_mutable_iter
|
|
|
|
proclist_node
|
2010-02-26 02:55:35 +01:00
|
|
|
promptStatus_t
|
2012-06-10 21:15:31 +02:00
|
|
|
pthread_attr_t
|
2010-02-26 02:55:35 +01:00
|
|
|
pthread_key_t
|
|
|
|
pthread_mutex_t
|
|
|
|
pthread_once_t
|
|
|
|
pthread_t
|
2016-12-13 16:51:32 +01:00
|
|
|
ptrdiff_t
|
2010-02-26 02:55:35 +01:00
|
|
|
pull_var_clause_context
|
2011-11-14 18:12:23 +01:00
|
|
|
pull_varattnos_context
|
2010-02-26 02:55:35 +01:00
|
|
|
pull_varnos_context
|
2013-05-29 22:58:43 +02:00
|
|
|
pull_vars_context
|
2010-02-26 02:55:35 +01:00
|
|
|
pullup_replace_vars_context
|
2015-05-24 03:20:37 +02:00
|
|
|
pushdown_safety_info
|
2010-02-26 02:55:35 +01:00
|
|
|
qsort_arg_comparator
|
2013-05-29 22:58:43 +02:00
|
|
|
query_pathkeys_callback
|
2010-02-26 02:55:35 +01:00
|
|
|
radius_attribute
|
|
|
|
radius_packet
|
|
|
|
rangeTableEntry_used_context
|
|
|
|
rank_context
|
2011-04-09 05:11:37 +02:00
|
|
|
rb_allocfunc
|
|
|
|
rb_combiner
|
2010-02-26 02:55:35 +01:00
|
|
|
rb_comparator
|
|
|
|
rb_freefunc
|
|
|
|
reduce_outer_joins_state
|
2018-04-26 20:45:04 +02:00
|
|
|
reference
|
2013-05-29 22:58:43 +02:00
|
|
|
regex_arc_t
|
2010-02-26 02:55:35 +01:00
|
|
|
regex_t
|
2014-05-06 15:08:14 +02:00
|
|
|
regexp
|
2010-02-26 02:55:35 +01:00
|
|
|
regexp_matches_ctx
|
2015-05-24 03:20:37 +02:00
|
|
|
registered_buffer
|
2010-02-26 02:55:35 +01:00
|
|
|
regmatch_t
|
|
|
|
regoff_t
|
|
|
|
regproc
|
|
|
|
relopt_bool
|
|
|
|
relopt_gen
|
|
|
|
relopt_int
|
|
|
|
relopt_kind
|
|
|
|
relopt_parse_elt
|
|
|
|
relopt_real
|
|
|
|
relopt_string
|
|
|
|
relopt_type
|
|
|
|
relopt_value
|
|
|
|
remoteConn
|
|
|
|
remoteConnHashEnt
|
|
|
|
remoteDep
|
|
|
|
rendezvousHashEntry
|
|
|
|
replace_rte_variables_callback
|
|
|
|
replace_rte_variables_context
|
|
|
|
rewrite_event
|
|
|
|
rijndael_ctx
|
|
|
|
rm_detail_t
|
2011-04-09 05:11:37 +02:00
|
|
|
role_auth_extra
|
2015-05-24 03:20:37 +02:00
|
|
|
row_security_policy_hook_type
|
2010-02-26 02:55:35 +01:00
|
|
|
save_buffer
|
2017-05-17 21:52:16 +02:00
|
|
|
scram_HMAC_ctx
|
|
|
|
scram_state
|
|
|
|
scram_state_enum
|
2016-12-13 16:51:32 +01:00
|
|
|
sem_t
|
2010-02-26 02:55:35 +01:00
|
|
|
sequence_magic
|
2015-05-24 03:20:37 +02:00
|
|
|
set_join_pathlist_hook_type
|
|
|
|
set_rel_pathlist_hook_type
|
2014-05-06 15:08:14 +02:00
|
|
|
shm_mq
|
|
|
|
shm_mq_handle
|
2015-05-24 03:20:37 +02:00
|
|
|
shm_mq_iovec
|
2014-05-06 15:08:14 +02:00
|
|
|
shm_mq_result
|
|
|
|
shm_toc
|
|
|
|
shm_toc_entry
|
|
|
|
shm_toc_estimator
|
2010-02-26 02:55:35 +01:00
|
|
|
shmem_startup_hook_type
|
|
|
|
sig_atomic_t
|
|
|
|
sigjmp_buf
|
|
|
|
signedbitmapword
|
|
|
|
sigset_t
|
|
|
|
size_t
|
2013-05-29 22:58:43 +02:00
|
|
|
slist_head
|
|
|
|
slist_iter
|
|
|
|
slist_mutable_iter
|
|
|
|
slist_node
|
2010-02-26 02:55:35 +01:00
|
|
|
slock_t
|
|
|
|
smgrid
|
2012-06-10 21:15:31 +02:00
|
|
|
spgBulkDeleteState
|
|
|
|
spgChooseIn
|
|
|
|
spgChooseOut
|
|
|
|
spgChooseResultType
|
|
|
|
spgConfigIn
|
|
|
|
spgConfigOut
|
|
|
|
spgInnerConsistentIn
|
|
|
|
spgInnerConsistentOut
|
|
|
|
spgLeafConsistentIn
|
|
|
|
spgLeafConsistentOut
|
|
|
|
spgNodePtr
|
|
|
|
spgPickSplitIn
|
|
|
|
spgPickSplitOut
|
|
|
|
spgVacPendingItem
|
|
|
|
spgxlogAddLeaf
|
|
|
|
spgxlogAddNode
|
|
|
|
spgxlogMoveLeafs
|
|
|
|
spgxlogPickSplit
|
|
|
|
spgxlogSplitTuple
|
|
|
|
spgxlogState
|
|
|
|
spgxlogVacuumLeaf
|
|
|
|
spgxlogVacuumRedirect
|
|
|
|
spgxlogVacuumRoot
|
2017-05-17 21:52:16 +02:00
|
|
|
split_pathtarget_context
|
2018-06-30 18:07:27 +02:00
|
|
|
split_pathtarget_item
|
2010-02-26 02:55:35 +01:00
|
|
|
sql_error_callback_arg
|
2012-06-10 21:15:31 +02:00
|
|
|
sqlparseInfo
|
|
|
|
sqlparseState
|
2010-02-26 02:55:35 +01:00
|
|
|
ss_lru_item_t
|
|
|
|
ss_scan_location_t
|
|
|
|
ss_scan_locations_t
|
|
|
|
ssize_t
|
2013-05-29 22:58:43 +02:00
|
|
|
standard_qp_extra
|
2010-02-26 02:55:35 +01:00
|
|
|
stemmer_module
|
|
|
|
stmtCacheEntry
|
2012-06-10 21:15:31 +02:00
|
|
|
storeInfo
|
|
|
|
storeRes_func
|
|
|
|
stream_stop_callback
|
2018-04-26 20:45:04 +02:00
|
|
|
string
|
2010-02-26 02:55:35 +01:00
|
|
|
substitute_actual_parameters_context
|
|
|
|
substitute_actual_srf_parameters_context
|
|
|
|
substitute_multiple_relids_context
|
2011-04-09 05:11:37 +02:00
|
|
|
svtype
|
2010-02-26 02:55:35 +01:00
|
|
|
symbol
|
2011-04-09 05:11:37 +02:00
|
|
|
tablespaceinfo
|
2010-02-26 02:55:35 +01:00
|
|
|
teReqs
|
|
|
|
teSection
|
2011-04-09 05:11:37 +02:00
|
|
|
temp_tablespaces_extra
|
2014-05-06 15:08:14 +02:00
|
|
|
test_function
|
|
|
|
test_shm_mq_header
|
2010-02-26 02:55:35 +01:00
|
|
|
text
|
|
|
|
timeKEY
|
|
|
|
time_t
|
2013-05-29 22:58:43 +02:00
|
|
|
timeout_handler_proc
|
|
|
|
timeout_params
|
2011-04-09 05:11:37 +02:00
|
|
|
timerCA
|
2010-02-26 02:55:35 +01:00
|
|
|
tlist_vinfo
|
2015-05-24 03:20:37 +02:00
|
|
|
toast_compress_header
|
2010-07-06 21:18:19 +02:00
|
|
|
transferMode
|
2013-05-29 22:58:43 +02:00
|
|
|
transfer_thread_arg
|
2010-02-26 02:55:35 +01:00
|
|
|
trgm
|
2013-05-29 22:58:43 +02:00
|
|
|
trgm_mb_char
|
2015-05-24 03:20:37 +02:00
|
|
|
trivalue
|
2010-02-26 02:55:35 +01:00
|
|
|
tsKEY
|
|
|
|
ts_db_fctx
|
2018-04-26 20:45:04 +02:00
|
|
|
ts_parserstate
|
|
|
|
ts_tokenizer
|
2010-02-26 02:55:35 +01:00
|
|
|
ts_tokentype
|
|
|
|
tsearch_readline_state
|
2016-10-15 02:22:51 +02:00
|
|
|
tuplehash_hash
|
|
|
|
tuplehash_iterator
|
2010-02-26 02:55:35 +01:00
|
|
|
txid
|
2018-04-26 20:45:04 +02:00
|
|
|
type
|
2010-02-26 02:55:35 +01:00
|
|
|
tzEntry
|
|
|
|
u1byte
|
|
|
|
u4byte
|
|
|
|
u_char
|
|
|
|
u_int
|
|
|
|
uchr
|
|
|
|
uid_t
|
2015-05-24 03:20:37 +02:00
|
|
|
uint128
|
2010-02-26 02:55:35 +01:00
|
|
|
uint16
|
2011-04-09 05:11:37 +02:00
|
|
|
uint16_t
|
2010-02-26 02:55:35 +01:00
|
|
|
uint32
|
|
|
|
uint32_t
|
|
|
|
uint64
|
2018-04-26 20:45:04 +02:00
|
|
|
uint64_t
|
2010-02-26 02:55:35 +01:00
|
|
|
uint8
|
2015-05-24 03:20:37 +02:00
|
|
|
uint8_t
|
2010-02-26 02:55:35 +01:00
|
|
|
uintptr_t
|
2015-05-24 03:20:37 +02:00
|
|
|
unicodeStyleBorderFormat
|
|
|
|
unicodeStyleColumnFormat
|
|
|
|
unicodeStyleFormat
|
|
|
|
unicodeStyleRowFormat
|
|
|
|
unicode_linestyle
|
|
|
|
unit_conversion
|
2011-04-09 05:11:37 +02:00
|
|
|
unlogged_relation_entry
|
2015-05-24 03:20:37 +02:00
|
|
|
utf_local_conversion_func
|
2016-12-13 16:51:32 +01:00
|
|
|
uuidKEY
|
2010-02-26 02:55:35 +01:00
|
|
|
uuid_rc_t
|
2016-04-27 17:47:28 +02:00
|
|
|
uuid_sortsupport_state
|
2010-02-26 02:55:35 +01:00
|
|
|
uuid_t
|
|
|
|
v_i_state
|
|
|
|
va_list
|
2015-05-24 03:20:37 +02:00
|
|
|
vacuumingOptions
|
2010-02-26 02:55:35 +01:00
|
|
|
validate_string_relopt
|
2015-05-24 03:20:37 +02:00
|
|
|
varatt_expanded
|
2010-02-26 02:55:35 +01:00
|
|
|
varattrib_1b
|
|
|
|
varattrib_1b_e
|
|
|
|
varattrib_4b
|
2016-04-27 17:47:28 +02:00
|
|
|
vbits
|
2017-05-17 21:52:16 +02:00
|
|
|
walrcv_check_conninfo_fn
|
2016-12-13 16:51:32 +01:00
|
|
|
walrcv_connect_fn
|
2017-05-17 21:52:16 +02:00
|
|
|
walrcv_create_slot_fn
|
2016-12-13 16:51:32 +01:00
|
|
|
walrcv_disconnect_fn
|
|
|
|
walrcv_endstreaming_fn
|
2017-05-17 21:52:16 +02:00
|
|
|
walrcv_exec_fn
|
2016-12-13 16:51:32 +01:00
|
|
|
walrcv_get_conninfo_fn
|
2018-04-26 20:45:04 +02:00
|
|
|
walrcv_get_senderinfo_fn
|
2016-12-13 16:51:32 +01:00
|
|
|
walrcv_identify_system_fn
|
|
|
|
walrcv_readtimelinehistoryfile_fn
|
|
|
|
walrcv_receive_fn
|
|
|
|
walrcv_send_fn
|
|
|
|
walrcv_startstreaming_fn
|
2013-05-29 22:58:43 +02:00
|
|
|
wchar2mb_with_len_converter
|
2010-02-26 02:55:35 +01:00
|
|
|
wchar_t
|
2011-04-09 05:11:37 +02:00
|
|
|
win32_deadchild_waitinfo
|
|
|
|
win32_pthread
|
2010-02-26 02:55:35 +01:00
|
|
|
wint_t
|
2014-05-06 15:08:14 +02:00
|
|
|
worker_state
|
2013-05-29 22:58:43 +02:00
|
|
|
worktable
|
2018-04-26 20:45:04 +02:00
|
|
|
wrap
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_brin_createidx
|
2017-05-17 21:52:16 +02:00
|
|
|
xl_brin_desummarize
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_brin_insert
|
|
|
|
xl_brin_revmap_extend
|
|
|
|
xl_brin_samepage_update
|
|
|
|
xl_brin_update
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_btree_delete
|
|
|
|
xl_btree_insert
|
2014-05-06 15:08:14 +02:00
|
|
|
xl_btree_mark_page_halfdead
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_btree_metadata
|
|
|
|
xl_btree_newroot
|
|
|
|
xl_btree_reuse_page
|
|
|
|
xl_btree_split
|
2014-05-06 15:08:14 +02:00
|
|
|
xl_btree_unlink_page
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_btree_vacuum
|
2017-05-17 21:52:16 +02:00
|
|
|
xl_clog_truncate
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_commit_ts_set
|
2017-05-17 21:52:16 +02:00
|
|
|
xl_commit_ts_truncate
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_dbase_create_rec
|
|
|
|
xl_dbase_drop_rec
|
2013-05-29 22:58:43 +02:00
|
|
|
xl_end_of_recovery
|
2017-05-17 21:52:16 +02:00
|
|
|
xl_hash_add_ovfl_page
|
|
|
|
xl_hash_delete
|
|
|
|
xl_hash_init_bitmap_page
|
|
|
|
xl_hash_init_meta_page
|
|
|
|
xl_hash_insert
|
|
|
|
xl_hash_move_page_contents
|
|
|
|
xl_hash_split_allocate_page
|
|
|
|
xl_hash_split_complete
|
|
|
|
xl_hash_squeeze_page
|
|
|
|
xl_hash_update_meta_page
|
|
|
|
xl_hash_vacuum_one_page
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_heap_clean
|
|
|
|
xl_heap_cleanup_info
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_heap_confirm
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_heap_delete
|
2014-05-06 15:08:14 +02:00
|
|
|
xl_heap_freeze_page
|
|
|
|
xl_heap_freeze_tuple
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_heap_header
|
|
|
|
xl_heap_inplace
|
|
|
|
xl_heap_insert
|
|
|
|
xl_heap_lock
|
2013-05-29 22:58:43 +02:00
|
|
|
xl_heap_lock_updated
|
2011-11-14 18:12:23 +01:00
|
|
|
xl_heap_multi_insert
|
Add new wal_level, logical, sufficient for logical decoding.
When wal_level=logical, we'll log columns from the old tuple as
configured by the REPLICA IDENTITY facility added in commit
07cacba983ef79be4a84fcd0e0ca3b5fcb85dd65. This makes it possible
a properly-configured logical replication solution to correctly
follow table updates even if they change the chosen key columns,
or, with REPLICA IDENTITY FULL, even if the table has no key at
all. Note that updates which do not modify the replica identity
column won't log anything extra, making the choice of a good key
(i.e. one that will rarely be changed) important to performance
when wal_level=logical is configured.
Each insert, update, or delete to a catalog table will also log
the CMIN and/or CMAX values of stamped by the current transaction.
This is necessary because logical decoding will require access to
historical snapshots of the catalog in order to decode some data
types, and the CMIN/CMAX values that we may need in order to judge
row visibility may have been overwritten by the time we need them.
Andres Freund, reviewed in various versions by myself, Heikki
Linnakangas, KONDO Mitsumasa, and many others.
2013-12-11 00:33:45 +01:00
|
|
|
xl_heap_new_cid
|
2014-05-06 15:08:14 +02:00
|
|
|
xl_heap_rewrite_mapping
|
2018-04-26 20:45:04 +02:00
|
|
|
xl_heap_truncate
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_heap_update
|
2011-11-14 18:12:23 +01:00
|
|
|
xl_heap_visible
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_invalid_page
|
|
|
|
xl_invalid_page_key
|
2016-04-27 17:47:28 +02:00
|
|
|
xl_invalidations
|
|
|
|
xl_logical_message
|
2011-11-14 18:12:23 +01:00
|
|
|
xl_multi_insert_tuple
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_multixact_create
|
Rework the way multixact truncations work.
The fact that multixact truncations are not WAL logged has caused a fair
share of problems. Amongst others it requires to do computations during
recovery while the database is not in a consistent state, delaying
truncations till checkpoints, and handling members being truncated, but
offset not.
We tried to put bandaids on lots of these issues over the last years,
but it seems time to change course. Thus this patch introduces WAL
logging for multixact truncations.
This allows:
1) to perform the truncation directly during VACUUM, instead of delaying it
to the checkpoint.
2) to avoid looking at the offsets SLRU for truncation during recovery,
we can just use the master's values.
3) simplify a fair amount of logic to keep in memory limits straight,
this has gotten much easier
During the course of fixing this a bunch of additional bugs had to be
fixed:
1) Data was not purged from memory the member's SLRU before deleting
segments. This happened to be hard or impossible to hit due to the
interlock between checkpoints and truncation.
2) find_multixact_start() relied on SimpleLruDoesPhysicalPageExist - but
that doesn't work for offsets that haven't yet been flushed to
disk. Add code to flush the SLRUs to fix. Not pretty, but it feels
slightly safer to only make decisions based on actual on-disk state.
3) find_multixact_start() could be called concurrently with a truncation
and thus fail. Via SetOffsetVacuumLimit() that could lead to a round
of emergency vacuuming. The problem remains in
pg_get_multixact_members(), but that's quite harmless.
For now this is going to only get applied to 9.5+, leaving the issues in
the older branches in place. It is quite possible that we need to
backpatch at a later point though.
For the case this gets backpatched we need to handle that an updated
standby may be replaying WAL from a not-yet upgraded primary. We have to
recognize that situation and use "old style" truncation (i.e. looking at
the SLRUs) during WAL replay. In contrast to before, this now happens in
the startup process, when replaying a checkpoint record, instead of the
checkpointer. Doing truncation in the restartpoint is incorrect, they
can happen much later than the original checkpoint, thereby leading to
wraparound. To avoid "multixact_redo: unknown op code 48" errors
standbys would have to be upgraded before primaries.
A later patch will bump the WAL page magic, and remove the legacy
truncation codepaths. Legacy truncation support is just included to make
a possible future backpatch easier.
Discussion: 20150621192409.GA4797@alap3.anarazel.de
Reviewed-By: Robert Haas, Alvaro Herrera, Thomas Munro
Backpatch: 9.5 for now
2015-09-26 19:04:25 +02:00
|
|
|
xl_multixact_truncate
|
2010-07-06 21:18:19 +02:00
|
|
|
xl_parameter_change
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_relmap_update
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_replorigin_drop
|
|
|
|
xl_replorigin_set
|
2011-04-09 05:11:37 +02:00
|
|
|
xl_restore_point
|
2010-02-26 02:55:35 +01:00
|
|
|
xl_running_xacts
|
|
|
|
xl_seq_rec
|
|
|
|
xl_smgr_create
|
|
|
|
xl_smgr_truncate
|
|
|
|
xl_standby_lock
|
|
|
|
xl_standby_locks
|
|
|
|
xl_tblspc_create_rec
|
|
|
|
xl_tblspc_drop_rec
|
|
|
|
xl_xact_abort
|
|
|
|
xl_xact_assignment
|
|
|
|
xl_xact_commit
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_xact_dbinfo
|
|
|
|
xl_xact_invals
|
|
|
|
xl_xact_origin
|
|
|
|
xl_xact_parsed_abort
|
|
|
|
xl_xact_parsed_commit
|
2018-04-26 20:45:04 +02:00
|
|
|
xl_xact_parsed_prepare
|
2015-05-24 03:20:37 +02:00
|
|
|
xl_xact_relfilenodes
|
|
|
|
xl_xact_subxacts
|
|
|
|
xl_xact_twophase
|
|
|
|
xl_xact_xinfo
|
2010-02-26 02:55:35 +01:00
|
|
|
xmlBuffer
|
|
|
|
xmlBufferPtr
|
|
|
|
xmlChar
|
|
|
|
xmlDocPtr
|
2011-11-14 18:12:23 +01:00
|
|
|
xmlErrorPtr
|
2013-05-29 22:58:43 +02:00
|
|
|
xmlExternalEntityLoader
|
2011-11-14 18:12:23 +01:00
|
|
|
xmlGenericErrorFunc
|
2010-02-26 02:55:35 +01:00
|
|
|
xmlNodePtr
|
|
|
|
xmlNodeSetPtr
|
|
|
|
xmlParserCtxtPtr
|
2011-11-14 18:12:23 +01:00
|
|
|
xmlParserInputPtr
|
|
|
|
xmlStructuredErrorFunc
|
2010-02-26 02:55:35 +01:00
|
|
|
xmlTextWriter
|
|
|
|
xmlTextWriterPtr
|
|
|
|
xmlXPathCompExprPtr
|
|
|
|
xmlXPathContextPtr
|
|
|
|
xmlXPathObjectPtr
|
|
|
|
xmltype
|
2011-04-09 05:11:37 +02:00
|
|
|
xpath_workspace
|
2013-05-29 22:58:43 +02:00
|
|
|
xsltSecurityPrefsPtr
|
2010-02-26 02:55:35 +01:00
|
|
|
xsltStylesheetPtr
|
2013-05-29 22:58:43 +02:00
|
|
|
xsltTransformContextPtr
|
2011-04-09 05:11:37 +02:00
|
|
|
yy_parser
|
2010-02-26 02:55:35 +01:00
|
|
|
yy_size_t
|
|
|
|
yyscan_t
|
|
|
|
z_stream
|
|
|
|
z_streamp
|
2014-05-06 15:08:14 +02:00
|
|
|
zic_t
|