PostgreSQL Source Code git master
|
#include "postgres.h"
#include <math.h>
#include "access/syncscan.h"
#include "access/tableam.h"
#include "access/xact.h"
#include "optimizer/optimizer.h"
#include "optimizer/plancat.h"
#include "port/pg_bitutils.h"
#include "storage/bufmgr.h"
#include "storage/shmem.h"
#include "storage/smgr.h"
Go to the source code of this file.
Macros | |
#define | PARALLEL_SEQSCAN_NCHUNKS 2048 |
#define | PARALLEL_SEQSCAN_RAMPDOWN_CHUNKS 64 |
#define | PARALLEL_SEQSCAN_MAX_CHUNK_SIZE 8192 |
Variables | |
char * | default_table_access_method = DEFAULT_TABLE_ACCESS_METHOD |
bool | synchronize_seqscans = true |
void simple_table_tuple_delete | ( | Relation | rel, |
ItemPointer | tid, | ||
Snapshot | snapshot | ||
) |
Definition at line 291 of file tableam.c.
References elog, ERROR, GetCurrentCommandId(), InvalidSnapshot, table_tuple_delete(), TM_Deleted, TM_Ok, TM_SelfModified, and TM_Updated.
Referenced by ExecSimpleRelationDelete().
void simple_table_tuple_insert | ( | Relation | rel, |
TupleTableSlot * | slot | ||
) |
Definition at line 277 of file tableam.c.
References GetCurrentCommandId(), and table_tuple_insert().
Referenced by ExecSimpleRelationInsert().
void simple_table_tuple_update | ( | Relation | rel, |
ItemPointer | otid, | ||
TupleTableSlot * | slot, | ||
Snapshot | snapshot, | ||
TU_UpdateIndexes * | update_indexes | ||
) |
Definition at line 336 of file tableam.c.
References elog, ERROR, GetCurrentCommandId(), InvalidSnapshot, table_tuple_update(), TM_Deleted, TM_Ok, TM_SelfModified, and TM_Updated.
Referenced by ExecSimpleRelationUpdate().
TableScanDesc table_beginscan_catalog | ( | Relation | relation, |
int | nkeys, | ||
struct ScanKeyData * | key | ||
) |
Definition at line 113 of file tableam.c.
References GetCatalogSnapshot(), sort-test::key, RelationData::rd_tableam, RegisterSnapshot(), RelationGetRelid, TableAmRoutine::scan_begin, SO_ALLOW_PAGEMODE, SO_ALLOW_STRAT, SO_ALLOW_SYNC, SO_TEMP_SNAPSHOT, and SO_TYPE_SEQSCAN.
Referenced by AlterTableMoveAll(), AlterTableSpaceOptions(), check_db_file_conflict(), CreateDatabaseUsingFileCopy(), do_autovacuum(), DropSetting(), DropTableSpace(), find_typed_table_dependencies(), get_all_vacuum_rels(), get_database_list(), get_subscription_list(), get_tables_to_cluster(), get_tablespace_name(), get_tablespace_oid(), GetAllTablesPublicationRelations(), getRelationsInNamespace(), GetSchemaPublicationRelations(), objectsInSchemaToOids(), populate_typ_list(), ReindexMultipleTables(), remove_dbtablespaces(), RemoveSubscriptionRel(), RenameTableSpace(), ThereIsAtLeastOneRole(), and vac_truncate_clog().
TableScanDesc table_beginscan_parallel | ( | Relation | relation, |
ParallelTableScanDesc | pscan | ||
) |
Definition at line 166 of file tableam.c.
References Assert(), ParallelTableScanDescData::phs_locator, ParallelTableScanDescData::phs_snapshot_any, ParallelTableScanDescData::phs_snapshot_off, RelationData::rd_locator, RelationData::rd_tableam, RegisterSnapshot(), RelFileLocatorEquals, RestoreSnapshot(), TableAmRoutine::scan_begin, SnapshotAny, SO_ALLOW_PAGEMODE, SO_ALLOW_STRAT, SO_ALLOW_SYNC, SO_TEMP_SNAPSHOT, and SO_TYPE_SEQSCAN.
Referenced by _brin_parallel_scan_and_build(), _bt_parallel_scan_and_sort(), _gin_parallel_scan_and_build(), ExecSeqScanInitializeDSM(), and ExecSeqScanInitializeWorker().
Size table_block_parallelscan_initialize | ( | Relation | rel, |
ParallelTableScanDesc | pscan | ||
) |
Definition at line 389 of file tableam.c.
References ParallelBlockTableScanDescData::base, InvalidBlockNumber, NBuffers, pg_atomic_init_u64(), ParallelTableScanDescData::phs_locator, ParallelBlockTableScanDescData::phs_mutex, ParallelBlockTableScanDescData::phs_nallocated, ParallelBlockTableScanDescData::phs_nblocks, ParallelBlockTableScanDescData::phs_startblock, ParallelTableScanDescData::phs_syncscan, RelationData::rd_locator, RelationGetNumberOfBlocks, RelationUsesLocalBuffers, SpinLockInit, and synchronize_seqscans.
BlockNumber table_block_parallelscan_nextpage | ( | Relation | rel, |
ParallelBlockTableScanWorker | pbscanwork, | ||
ParallelBlockTableScanDesc | pbscan | ||
) |
Definition at line 492 of file tableam.c.
References ParallelBlockTableScanDescData::base, if(), InvalidBlockNumber, PARALLEL_SEQSCAN_RAMPDOWN_CHUNKS, pg_atomic_fetch_add_u64(), ParallelBlockTableScanDescData::phs_nallocated, ParallelBlockTableScanDescData::phs_nblocks, ParallelBlockTableScanDescData::phs_startblock, ParallelTableScanDescData::phs_syncscan, ParallelBlockTableScanWorkerData::phsw_chunk_remaining, ParallelBlockTableScanWorkerData::phsw_chunk_size, ParallelBlockTableScanWorkerData::phsw_nallocated, and ss_report_location().
Referenced by heap_scan_stream_read_next_parallel().
void table_block_parallelscan_reinitialize | ( | Relation | rel, |
ParallelTableScanDesc | pscan | ||
) |
Definition at line 407 of file tableam.c.
References pg_atomic_write_u64(), and ParallelBlockTableScanDescData::phs_nallocated.
void table_block_parallelscan_startblock_init | ( | Relation | rel, |
ParallelBlockTableScanWorker | pbscanwork, | ||
ParallelBlockTableScanDesc | pbscan | ||
) |
Definition at line 422 of file tableam.c.
References ParallelBlockTableScanDescData::base, InvalidBlockNumber, Max, MaxBlockNumber, Min, PARALLEL_SEQSCAN_MAX_CHUNK_SIZE, PARALLEL_SEQSCAN_NCHUNKS, pg_nextpower2_32(), ParallelBlockTableScanDescData::phs_mutex, ParallelBlockTableScanDescData::phs_nblocks, ParallelBlockTableScanDescData::phs_startblock, ParallelTableScanDescData::phs_syncscan, ParallelBlockTableScanWorkerData::phsw_chunk_size, SpinLockAcquire, SpinLockRelease, ss_get_location(), and StaticAssertStmt.
Referenced by heap_scan_stream_read_next_parallel().
void table_block_relation_estimate_size | ( | Relation | rel, |
int32 * | attr_widths, | ||
BlockNumber * | pages, | ||
double * | tuples, | ||
double * | allvisfrac, | ||
Size | overhead_bytes_per_tuple, | ||
Size | usable_bytes_per_page | ||
) |
Definition at line 654 of file tableam.c.
References clamp_row_est(), fillfactor, get_rel_data_width(), HEAP_DEFAULT_FILLFACTOR, if(), RelationData::rd_rel, RelationGetFillFactor, and RelationGetNumberOfBlocks.
Referenced by heapam_estimate_rel_size().
uint64 table_block_relation_size | ( | Relation | rel, |
ForkNumber | forkNumber | ||
) |
Definition at line 617 of file tableam.c.
References i, InvalidForkNumber, MAX_FORKNUM, RelationGetSmgr(), and smgrnblocks().
bool table_index_fetch_tuple_check | ( | Relation | rel, |
ItemPointer | tid, | ||
Snapshot | snapshot, | ||
bool * | all_dead | ||
) |
Definition at line 209 of file tableam.c.
References ExecDropSingleTupleTableSlot(), table_index_fetch_begin(), table_index_fetch_end(), table_index_fetch_tuple(), and table_slot_create().
Referenced by _bt_check_unique().
Definition at line 131 of file tableam.c.
References add_size(), Assert(), EstimateSnapshotSpace(), IsMVCCSnapshot, TableAmRoutine::parallelscan_estimate, RelationData::rd_tableam, and SnapshotAny.
Referenced by _brin_parallel_estimate_shared(), _bt_parallel_estimate_shared(), _gin_parallel_estimate_shared(), and ExecSeqScanEstimate().
void table_parallelscan_initialize | ( | Relation | rel, |
ParallelTableScanDesc | pscan, | ||
Snapshot | snapshot | ||
) |
Definition at line 146 of file tableam.c.
References Assert(), IsMVCCSnapshot, TableAmRoutine::parallelscan_initialize, ParallelTableScanDescData::phs_snapshot_any, ParallelTableScanDescData::phs_snapshot_off, RelationData::rd_tableam, SerializeSnapshot(), and SnapshotAny.
Referenced by _brin_begin_parallel(), _bt_begin_parallel(), _gin_begin_parallel(), and ExecSeqScanInitializeDSM().
const TupleTableSlotOps * table_slot_callbacks | ( | Relation | relation | ) |
Definition at line 59 of file tableam.c.
References Assert(), RelationData::rd_rel, RelationData::rd_tableam, TableAmRoutine::slot_callbacks, TTSOpsHeapTuple, and TTSOpsVirtual.
Referenced by ATRewriteTable(), ExecGetAllNullSlot(), ExecGetReturningSlot(), ExecGetTriggerNewSlot(), ExecGetTriggerOldSlot(), ExecInitBitmapHeapScan(), ExecInitIndexOnlyScan(), ExecInitIndexScan(), ExecInitSampleScan(), ExecInitSeqScan(), ExecInitTidRangeScan(), ExecInitTidScan(), and table_slot_create().
TupleTableSlot * table_slot_create | ( | Relation | relation, |
List ** | reglist | ||
) |
Definition at line 92 of file tableam.c.
References lappend(), MakeSingleTupleTableSlot(), RelationGetDescr, and table_slot_callbacks().
Referenced by acquire_sample_rows(), apply_handle_tuple_routing(), apply_handle_update_internal(), build_index_value_desc(), check_default_partition_contents(), check_exclusion_or_unique_constraint(), CopyFrom(), CopyMultiInsertInfoNextFreeSlot(), DoCopyTo(), EvalPlanQualSlot(), ExecCrossPartitionUpdate(), ExecInitInsertProjection(), ExecInitMerge(), ExecInitMergeTupleSlots(), ExecInitModifyTable(), ExecInitPartitionInfo(), ExecInitRoutingInfo(), ExecInitUpdateProjection(), FindConflictTuple(), FindReplTupleInLocalRel(), get_actual_variable_range(), heap_entry_is_visible(), heapam_index_build_range_scan(), heapam_relation_copy_for_cluster(), IndexCheckExclusion(), RelationFindReplTupleSeq(), systable_beginscan(), systable_beginscan_ordered(), table_index_fetch_tuple_check(), validateDomainCheckConstraint(), validateDomainNotNullConstraint(), and validateForeignKeyConstraint().
void table_tuple_get_latest_tid | ( | TableScanDesc | scan, |
ItemPointer | tid | ||
) |
Definition at line 236 of file tableam.c.
References bsysscan, CheckXidAlive, elog, ereport, errcode(), errmsg(), ERROR, ItemPointerGetBlockNumberNoCheck(), ItemPointerGetOffsetNumberNoCheck(), RelationData::rd_tableam, RelationGetRelationName, TableScanDescData::rs_rd, TransactionIdIsValid, TableAmRoutine::tuple_get_latest_tid, TableAmRoutine::tuple_tid_valid, and unlikely.
Referenced by currtid_internal(), and TidNext().
char* default_table_access_method = DEFAULT_TABLE_ACCESS_METHOD |
Definition at line 49 of file tableam.c.
Referenced by ATPrepSetAccessMethod(), and DefineRelation().
bool synchronize_seqscans = true |
Definition at line 50 of file tableam.c.
Referenced by initscan(), and table_block_parallelscan_initialize().