Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
4cbfeef9
Commit
4cbfeef9
authored
Apr 24, 1998
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Inline some small functions called for every row.
parent
7500a961
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
179 additions
and
205 deletions
+179
-205
src/backend/access/transam/xid.c
src/backend/access/transam/xid.c
+1
-11
src/backend/executor/execTuples.c
src/backend/executor/execTuples.c
+3
-51
src/backend/executor/nodeTee.c
src/backend/executor/nodeTee.c
+2
-2
src/backend/storage/buffer/bufmgr.c
src/backend/storage/buffer/bufmgr.c
+1
-55
src/backend/storage/page/bufpage.c
src/backend/storage/page/bufpage.c
+1
-22
src/backend/utils/time/tqual.c
src/backend/utils/time/tqual.c
+5
-48
src/include/access/xact.h
src/include/access/xact.h
+12
-2
src/include/executor/executor.h
src/include/executor/executor.h
+39
-3
src/include/storage/bufmgr.h
src/include/storage/bufmgr.h
+55
-4
src/include/storage/bufpage.h
src/include/storage/bufpage.h
+16
-2
src/include/utils/tqual.h
src/include/utils/tqual.h
+44
-5
No files found.
src/backend/access/transam/xid.c
View file @
4cbfeef9
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/xid.c,v 1.1
4 1998/04/07 18:10:01
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/xid.c,v 1.1
5 1998/04/24 14:41:39
momjian Exp $
*
* OLD COMMENTS
* XXX WARNING
...
...
@@ -53,16 +53,6 @@ xidout(TransactionId transactionId)
}
/* ----------------------------------------------------------------
* TransactionIdEquals
* ----------------------------------------------------------------
*/
bool
TransactionIdEquals
(
TransactionId
id1
,
TransactionId
id2
)
{
return
((
bool
)
(
id1
==
id2
));
}
/* ----------------------------------------------------------------
* TransactionIdIsLessThan
* ----------------------------------------------------------------
...
...
src/backend/executor/execTuples.c
View file @
4cbfeef9
...
...
@@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.1
7 1998/02/26 04:31:14
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.1
8 1998/04/24 14:41:46
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -40,10 +40,10 @@
* ExecSetNewSlotDescriptor - set a desc and the is-new-flag all at once
* ExecSlotBuffer - return buffer of tuple in slot
* ExecSetSlotBuffer - set the buffer for tuple in slot
* ExecIncrSlotBufferRefcnt - bump the refcnt of the slot buffer
* ExecIncrSlotBufferRefcnt - bump the refcnt of the slot buffer
(Macro)
*
* SLOT STATUS PREDICATES
* TupIsNull - true when slot contains no tuple
* TupIsNull - true when slot contains no tuple
(Macro)
* ExecSlotDescriptorIsNew - true if we're now storing a different
* type of tuple in a slot
*
...
...
@@ -566,59 +566,11 @@ ExecSetSlotBuffer(TupleTableSlot *slot, /* slot to change */
#endif
/* --------------------------------
* ExecIncrSlotBufferRefcnt
*
* When we pass around buffers in the tuple table, we have to
* be careful to increment reference counts appropriately.
* This is used mainly in the mergejoin code.
* --------------------------------
*/
void
ExecIncrSlotBufferRefcnt
(
TupleTableSlot
*
slot
)
/* slot to bump refcnt */
{
/* Buffer b = SlotBuffer((TupleTableSlot*) slot); */
Buffer
b
=
slot
->
ttc_buffer
;
if
(
BufferIsValid
(
b
))
IncrBufferRefCount
(
b
);
}
/* ----------------------------------------------------------------
* tuple table slot status predicates
* ----------------------------------------------------------------
*/
/* ----------------
* TupIsNull
*
* This is used mainly to detect when there are no more
* tuples to process.
* ----------------
*/
bool
/* return: true if tuple in slot is NULL */
TupIsNull
(
TupleTableSlot
*
slot
)
/* slot to check */
{
HeapTuple
tuple
;
/* contents of slot (returned) */
/* ----------------
* if the slot itself is null then we return true
* ----------------
*/
if
(
slot
==
NULL
)
return
true
;
/* ----------------
* get information from the slot and return true or
* false depending on the contents of the slot.
* ----------------
*/
tuple
=
slot
->
val
;
return
(
tuple
==
NULL
?
true
:
false
);
}
/* --------------------------------
* ExecSlotDescriptorIsNew
*
...
...
src/backend/executor/nodeTee.c
View file @
4cbfeef9
...
...
@@ -15,7 +15,7 @@
* ExecEndTee
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/Attic/nodeTee.c,v 1.1
6 1998/02/26 04:31:33
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/executor/Attic/nodeTee.c,v 1.1
7 1998/04/24 14:41:55
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -27,7 +27,7 @@
#include "utils/palloc.h"
#include "utils/relcache.h"
#include "utils/mcxt.h"
#include "storage/bufmgr.h"
/* for IncrBufferRefCount */
#include "storage/bufmgr.h"
#include "storage/smgr.h"
#include "optimizer/internal.h"
#include "executor/executor.h"
...
...
src/backend/storage/buffer/bufmgr.c
View file @
4cbfeef9
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.3
6 1998/04/05 21:04:22
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.3
7 1998/04/24 14:42:16
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1262,25 +1262,6 @@ FlushBufferPool(int StableMainMemoryFlag)
}
}
/*
* BufferIsValid --
* True iff the refcnt of the local buffer is > 0
* Note:
* BufferIsValid(InvalidBuffer) is False.
* BufferIsValid(UnknownBuffer) is False.
*/
bool
BufferIsValid
(
Buffer
bufnum
)
{
if
(
BufferIsLocal
(
bufnum
))
return
(
bufnum
>=
-
NLocBuffer
&&
LocalRefCount
[
-
bufnum
-
1
]
>
0
);
if
(
BAD_BUFFER_ID
(
bufnum
))
return
(
false
);
return
((
bool
)
(
PrivateRefCount
[
bufnum
-
1
]
>
0
));
}
/*
* BufferGetBlockNumber --
* Returns the block number associated with a buffer.
...
...
@@ -1413,24 +1394,6 @@ RelationGetNumberOfBlocks(Relation relation)
smgrnblocks
(
DEFAULT_SMGR
,
relation
));
}
/*
* BufferGetBlock --
* Returns a reference to a disk page image associated with a buffer.
*
* Note:
* Assumes buffer is valid.
*/
Block
BufferGetBlock
(
Buffer
buffer
)
{
Assert
(
BufferIsValid
(
buffer
));
if
(
BufferIsLocal
(
buffer
))
return
((
Block
)
MAKE_PTR
(
LocalBufferDescriptors
[
-
buffer
-
1
].
data
));
else
return
((
Block
)
MAKE_PTR
(
BufferDescriptors
[
buffer
-
1
].
data
));
}
/* ---------------------------------------------------------------------
* ReleaseRelationBuffers
*
...
...
@@ -1679,25 +1642,8 @@ BlowawayRelationBuffers(Relation rdesc, BlockNumber block)
return
(
0
);
}
#undef IncrBufferRefCount
#undef ReleaseBuffer
void
IncrBufferRefCount
(
Buffer
buffer
)
{
if
(
BufferIsLocal
(
buffer
))
{
Assert
(
LocalRefCount
[
-
buffer
-
1
]
>=
0
);
LocalRefCount
[
-
buffer
-
1
]
++
;
}
else
{
Assert
(
!
BAD_BUFFER_ID
(
buffer
));
Assert
(
PrivateRefCount
[
buffer
-
1
]
>=
0
);
PrivateRefCount
[
buffer
-
1
]
++
;
}
}
/*
* ReleaseBuffer -- remove the pin on a buffer without
* marking it dirty.
...
...
src/backend/storage/page/bufpage.c
View file @
4cbfeef9
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/page/bufpage.c,v 1.1
6 1998/04/06 02:38:1
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/page/bufpage.c,v 1.1
7 1998/04/24 14:42:2
7 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -225,27 +225,6 @@ PageRestoreTempPage(Page tempPage, Page oldPage)
pfree
(
tempPage
);
}
/*
* PageGetMaxOffsetNumber --
* Returns the maximum offset number used by the given page.
*
* NOTE: The offset is invalid if the page is non-empty.
* Test whether PageIsEmpty before calling this routine
* and/or using its return value.
*/
OffsetNumber
PageGetMaxOffsetNumber
(
Page
page
)
{
LocationIndex
low
;
OffsetNumber
i
;
low
=
((
PageHeader
)
page
)
->
pd_lower
;
i
=
(
low
-
(
sizeof
(
PageHeaderData
)
-
sizeof
(
ItemIdData
)))
/
sizeof
(
ItemIdData
);
return
(
i
);
}
/* ----------------
* itemid stuff for PageRepairFragmentation
* ----------------
...
...
src/backend/utils/time/tqual.c
View file @
4cbfeef9
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.1
4 1998/02/26 04:38:3
2 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.1
5 1998/04/24 14:42:4
2 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -31,8 +31,8 @@ extern bool PostgresIsInitialized;
*/
#ifndef GOODAMI
static
TransactionId
HeapSpecialTransactionId
=
InvalidTransactionId
;
static
CommandId
HeapSpecialCommandId
=
FirstCommandId
;
TransactionId
HeapSpecialTransactionId
=
InvalidTransactionId
;
CommandId
HeapSpecialCommandId
=
FirstCommandId
;
void
setheapoverride
(
bool
on
)
...
...
@@ -49,54 +49,11 @@ setheapoverride(bool on)
}
}
/* static, but called in debug macro */
bool
heapisoverride
()
{
if
(
!
TransactionIdIsValid
(
HeapSpecialTransactionId
))
{
return
(
false
);
}
if
(
!
TransactionIdEquals
(
GetCurrentTransactionId
(),
HeapSpecialTransactionId
)
||
GetCurrentCommandId
()
!=
HeapSpecialCommandId
)
{
HeapSpecialTransactionId
=
InvalidTransactionId
;
return
(
false
);
}
return
(
true
);
}
#endif
/* !defined(GOODAMI) */
/*
* XXX Transaction system override hacks end here
*/
static
bool
HeapTupleSatisfiesItself
(
HeapTuple
tuple
);
static
bool
HeapTupleSatisfiesNow
(
HeapTuple
tuple
);
/*
* HeapTupleSatisfiesScope --
* True iff heap tuple satsifies a time qual.
*
* Note:
* Assumes heap tuple is valid.
*/
bool
HeapTupleSatisfiesVisibility
(
HeapTuple
tuple
,
bool
seeself
)
{
if
(
TransactionIdEquals
(
tuple
->
t_xmax
,
AmiTransactionId
))
return
(
false
);
if
(
seeself
==
true
||
heapisoverride
())
return
(
HeapTupleSatisfiesItself
(
tuple
));
else
return
(
HeapTupleSatisfiesNow
(
tuple
));
}
/*
* HeapTupleSatisfiesItself --
* True iff heap tuple is valid for "itself."
...
...
@@ -119,7 +76,7 @@ HeapTupleSatisfiesVisibility(HeapTuple tuple, bool seeself)
* (Xmax != my-transaction && the row was deleted by another transaction
* Xmax is not committed))) that has not been committed
*/
static
bool
bool
HeapTupleSatisfiesItself
(
HeapTuple
tuple
)
{
...
...
@@ -215,7 +172,7 @@ HeapTupleSatisfiesItself(HeapTuple tuple)
* the serializability guarantees we provide don't extend to xacts
* that do catalog accesses. this is unfortunate, but not critical.
*/
static
bool
bool
HeapTupleSatisfiesNow
(
HeapTuple
tuple
)
{
if
(
AMI_OVERRIDE
)
...
...
src/include/access/xact.h
View file @
4cbfeef9
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: xact.h,v 1.1
2 1998/02/26 04:40:32
momjian Exp $
* $Id: xact.h,v 1.1
3 1998/04/24 14:42:55
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -60,6 +60,17 @@ typedef TransactionStateData *TransactionState;
#define StoreInvalidTransactionId(dest) \
(*((TransactionId*)dest) = NullTransactionId)
/* ----------------------------------------------------------------
* TransactionIdEquals
* ----------------------------------------------------------------
*/
#define TransactionIdEquals(id1, id2) \
( \
((bool) ((id1) == (id2))) \
)
/* ----------------
* extern definitions
* ----------------
...
...
@@ -95,7 +106,6 @@ extern TransactionId DisabledTransactionId;
extern
TransactionId
xidin
(
char
*
representation
);
extern
char
*
xidout
(
TransactionId
transactionId
);
extern
bool
xideq
(
TransactionId
xid1
,
TransactionId
xid2
);
extern
bool
TransactionIdEquals
(
TransactionId
id1
,
TransactionId
id2
);
extern
bool
TransactionIdIsLessThan
(
TransactionId
id1
,
TransactionId
id2
);
extern
void
TransactionIdAdd
(
TransactionId
*
xid
,
int
value
);
...
...
src/include/executor/executor.h
View file @
4cbfeef9
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: executor.h,v 1.2
1 1998/02/26 04:41:19
momjian Exp $
* $Id: executor.h,v 1.2
2 1998/04/24 14:43:07
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -14,10 +14,48 @@
#define EXECUTOR_H
#include <catalog/pg_index.h>
#include <storage/bufmgr.h>
#include <access/itup.h>
#include <stdio.h>
#include <executor/execdesc.h>
/* ----------------
* TupIsNull
*
* This is used mainly to detect when there are no more
* tuples to process.
* ----------------
*/
/* return: true if tuple in slot is NULL, slot is slot to test */
#define TupIsNull(slot) \
( \
((slot) == NULL) ? \
true \
: \
( \
((slot)->val == NULL) ? \
true \
: \
false \
) \
)
/* --------------------------------
* ExecIncrSlotBufferRefcnt
*
* When we pass around buffers in the tuple table, we have to
* be careful to increment reference counts appropriately.
* This is used mainly in the mergejoin code.
* --------------------------------
*/
#define ExecIncrSlotBufferRefcnt(slot) \
( \
BufferIsValid((slot)->ttc_buffer) ? \
IncrBufferRefCount((slot)->ttc_buffer) \
: (void)NULL \
)
/*
* prototypes from functions in execAmi.c
*/
...
...
@@ -107,8 +145,6 @@ extern TupleDesc
ExecSetSlotDescriptor
(
TupleTableSlot
*
slot
,
TupleDesc
tupdesc
);
extern
void
ExecSetSlotDescriptorIsNew
(
TupleTableSlot
*
slot
,
bool
isNew
);
extern
void
ExecIncrSlotBufferRefcnt
(
TupleTableSlot
*
slot
);
extern
bool
TupIsNull
(
TupleTableSlot
*
slot
);
extern
void
ExecInitResultTupleSlot
(
EState
*
estate
,
CommonState
*
commonstate
);
extern
void
ExecInitScanTupleSlot
(
EState
*
estate
,
...
...
src/include/storage/bufmgr.h
View file @
4cbfeef9
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: bufmgr.h,v 1.1
8 1998/02/26 04:43:22
momjian Exp $
* $Id: bufmgr.h,v 1.1
9 1998/04/24 14:43:18
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -18,6 +18,7 @@
#include <storage/ipc.h>
#include <storage/block.h>
#include <storage/buf.h>
#include <storage/buf_internals.h>
#include <utils/rel.h>
/*
...
...
@@ -72,6 +73,59 @@ extern int ShowPinTrace;
#define BUFFER_FLUSH_WRITE 0
/* immediate write */
#define BUFFER_LATE_WRITE 1
/* delayed write: mark as DIRTY */
/*
* BufferIsValid --
* True iff the refcnt of the local buffer is > 0
* Note:
* BufferIsValid(InvalidBuffer) is False.
* BufferIsValid(UnknownBuffer) is False.
*/
#define BufferIsValid(bufnum) \
( \
BufferIsLocal(bufnum) ? \
((bufnum) >= -NLocBuffer && LocalRefCount[-(bufnum) - 1] > 0) \
: \
( \
BAD_BUFFER_ID(bufnum) ? \
false \
: \
(PrivateRefCount[(bufnum) - 1] > 0) \
) \
)
#define IncrBufferRefCount(buffer) \
( \
BufferIsLocal(buffer) ? \
( \
(void)AssertMacro(LocalRefCount[-(buffer) - 1] >= 0), \
(void)LocalRefCount[-(buffer) - 1]++ \
) \
: \
( \
(void)AssertMacro(!BAD_BUFFER_ID(buffer)), \
(void)AssertMacro(PrivateRefCount[(buffer) - 1] >= 0), \
(void)PrivateRefCount[(buffer) - 1]++ \
) \
)
/*
* BufferGetBlock --
* Returns a reference to a disk page image associated with a buffer.
*
* Note:
* Assumes buffer is valid.
*/
#define BufferGetBlock(buffer) \
( \
(void)AssertMacro(BufferIsValid(buffer)), \
\
BufferIsLocal(buffer) ? \
((Block) MAKE_PTR(LocalBufferDescriptors[-(buffer) - 1].data)) \
: \
((Block) MAKE_PTR(BufferDescriptors[(buffer) - 1].data)) \
)
/*
* prototypes for functions in bufmgr.c
*/
...
...
@@ -91,17 +145,14 @@ extern void ResetBufferUsage(void);
extern
void
ResetBufferPool
(
void
);
extern
int
BufferPoolCheckLeak
(
void
);
extern
void
FlushBufferPool
(
int
StableMainMemoryFlag
);
extern
bool
BufferIsValid
(
Buffer
bufnum
);
extern
BlockNumber
BufferGetBlockNumber
(
Buffer
buffer
);
extern
Relation
BufferGetRelation
(
Buffer
buffer
);
extern
BlockNumber
RelationGetNumberOfBlocks
(
Relation
relation
);
extern
Block
BufferGetBlock
(
Buffer
buffer
);
extern
void
ReleaseRelationBuffers
(
Relation
rdesc
);
extern
void
DropBuffers
(
Oid
dbid
);
extern
void
PrintBufferDescs
(
void
);
extern
void
PrintPinnedBufs
(
void
);
extern
int
BufferShmemSize
(
void
);
extern
void
IncrBufferRefCount
(
Buffer
buffer
);
extern
int
ReleaseBuffer
(
Buffer
buffer
);
extern
void
BufferRefCountReset
(
int
*
refcountsave
);
...
...
src/include/storage/bufpage.h
View file @
4cbfeef9
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: bufpage.h,v 1.1
7 1998/02/26 04:43:24
momjian Exp $
* $Id: bufpage.h,v 1.1
8 1998/04/24 14:43:23
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -280,6 +280,21 @@ typedef enum
*/
#define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer))
/*
* PageGetMaxOffsetNumber --
* Returns the maximum offset number used by the given page.
*
* NOTE: The offset is invalid if the page is non-empty.
* Test whether PageIsEmpty before calling this routine
* and/or using its return value.
*/
#define PageGetMaxOffsetNumber(page) \
( \
(((PageHeader) (page))->pd_lower - \
(sizeof(PageHeaderData) - sizeof(ItemIdData))) \
/ sizeof(ItemIdData) \
)
/* ----------------------------------------------------------------
* extern declarations
...
...
@@ -292,7 +307,6 @@ PageAddItem(Page page, Item item, Size size,
OffsetNumber
offsetNumber
,
ItemIdFlags
flags
);
extern
Page
PageGetTempPage
(
Page
page
,
Size
specialSize
);
extern
void
PageRestoreTempPage
(
Page
tempPage
,
Page
oldPage
);
extern
OffsetNumber
PageGetMaxOffsetNumber
(
Page
page
);
extern
void
PageRepairFragmentation
(
Page
page
);
extern
Size
PageGetFreeSpace
(
Page
page
);
extern
void
PageManagerModeSet
(
PageManagerMode
mode
);
...
...
src/include/utils/tqual.h
View file @
4cbfeef9
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: tqual.h,v 1.1
1 1997/11/20 23:24:0
3 momjian Exp $
* $Id: tqual.h,v 1.1
2 1998/04/24 14:43:3
3 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -15,12 +15,51 @@
#include <access/htup.h>
/* As above, plus updates in this command */
extern
TransactionId
HeapSpecialTransactionId
;
extern
CommandId
HeapSpecialCommandId
;
extern
void
setheapoverride
(
bool
on
);
extern
bool
heapisoverride
(
void
);
/*
* HeapTupleSatisfiesVisibility --
* True iff heap tuple satsifies a time qual.
*
* Note:
* Assumes heap tuple is valid.
*/
#define HeapTupleSatisfiesVisibility(tuple, seeself) \
( \
TransactionIdEquals((tuple)->t_xmax, AmiTransactionId) ? \
false \
: \
( \
((seeself) == true || heapisoverride()) ? \
HeapTupleSatisfiesItself(tuple) \
: \
HeapTupleSatisfiesNow(tuple) \
) \
)
extern
bool
HeapTupleSatisfiesVisibility
(
HeapTuple
tuple
,
bool
seeself
);
#define heapisoverride() \
( \
(!TransactionIdIsValid(HeapSpecialTransactionId)) ? \
false \
: \
( \
(!TransactionIdEquals(GetCurrentTransactionId(), \
HeapSpecialTransactionId) || \
GetCurrentCommandId() != HeapSpecialCommandId) ? \
( \
HeapSpecialTransactionId = InvalidTransactionId, \
false \
) \
: \
true \
) \
)
extern
bool
HeapTupleSatisfiesItself
(
HeapTuple
tuple
);
extern
bool
HeapTupleSatisfiesNow
(
HeapTuple
tuple
);
extern
void
setheapoverride
(
bool
on
);
#endif
/* TQUAL_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment