PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "catalog/pg_tablespace.h"
#include "miscadmin.h"
#include "storage/fd.h"
#include "storage/smgr.h"
#include "storage/read_stream.h"
#include "utils/memdebug.h"
#include "utils/rel.h"
#include "utils/spccache.h"
Go to the source code of this file.
Data Structures | |
struct | InProgressIO |
struct | ReadStream |
Typedefs | |
typedef struct InProgressIO | InProgressIO |
Functions | |
static void * | get_per_buffer_data (ReadStream *stream, int16 buffer_index) |
static BlockNumber | read_stream_get_block (ReadStream *stream, void *per_buffer_data) |
static void | read_stream_unget_block (ReadStream *stream, BlockNumber blocknum) |
static void | read_stream_fill_blocknums (ReadStream *stream) |
static void | read_stream_start_pending_read (ReadStream *stream, bool suppress_advice) |
static void | read_stream_look_ahead (ReadStream *stream, bool suppress_advice) |
ReadStream * | read_stream_begin_relation (int flags, BufferAccessStrategy strategy, Relation rel, ForkNumber forknum, ReadStreamBlockNumberCB callback, void *callback_private_data, size_t per_buffer_data_size) |
Buffer | read_stream_next_buffer (ReadStream *stream, void **per_buffer_data) |
void | read_stream_reset (ReadStream *stream) |
void | read_stream_end (ReadStream *stream) |
typedef struct InProgressIO InProgressIO |
|
inlinestatic |
Definition at line 163 of file read_stream.c.
References ReadStream::per_buffer_data, and ReadStream::per_buffer_data_size.
Referenced by read_stream_look_ahead(), and read_stream_next_buffer().
ReadStream* read_stream_begin_relation | ( | int | flags, |
BufferAccessStrategy | strategy, | ||
Relation | rel, | ||
ForkNumber | forknum, | ||
ReadStreamBlockNumberCB | callback, | ||
void * | callback_private_data, | ||
size_t | per_buffer_data_size | ||
) |
Definition at line 410 of file read_stream.c.
References ReadStream::advice_enabled, Assert, ReadStream::buffers, ReadStream::callback, callback(), ReadStream::callback_private_data, ReadStream::distance, effective_io_concurrency, ReadBuffersOperation::forknum, get_tablespace_io_concurrency(), get_tablespace_maintenance_io_concurrency(), GetAccessStrategyPinLimit(), i, io_combine_limit, IO_DIRECT_DATA, io_direct_flags, ReadStream::ios, IsCatalogRelation(), IsCatalogRelationOid(), LimitAdditionalLocalPins(), LimitAdditionalPins(), RelFileLocatorBackend::locator, Max, ReadStream::max_ios, ReadStream::max_pinned_buffers, MAXALIGN, Min, MyDatabaseId, OidIsValid, InProgressIO::op, palloc(), ReadStream::per_buffer_data, ReadStream::per_buffer_data_size, PG_INT16_MAX, ReadStream::queue_size, READ_STREAM_FULL, READ_STREAM_MAINTENANCE, READ_STREAM_SEQUENTIAL, ReadBuffersOperation::rel, RelationGetSmgr(), RelFileLocator::relNumber, size, ReadBuffersOperation::smgr, ReadBuffersOperation::smgr_persistence, SMgrRelationData::smgr_rlocator, SmgrIsTemp, RelFileLocator::spcOid, and ReadBuffersOperation::strategy.
Referenced by acquire_sample_rows(), heap_beginscan(), and pg_prewarm().
void read_stream_end | ( | ReadStream * | stream | ) |
Definition at line 800 of file read_stream.c.
References pfree(), and read_stream_reset().
Referenced by acquire_sample_rows(), heap_endscan(), and pg_prewarm().
|
static |
Definition at line 214 of file read_stream.c.
References ReadStream::blocknums, ReadStream::blocknums_count, ReadStream::blocknums_next, ReadStream::callback, ReadStream::callback_private_data, i, InvalidBlockNumber, and lengthof.
Referenced by read_stream_next_buffer().
|
inlinestatic |
Definition at line 175 of file read_stream.c.
References ReadStream::blocknums, ReadStream::blocknums_count, ReadStream::blocknums_next, ReadStream::callback, and ReadStream::callback_private_data.
Referenced by read_stream_look_ahead().
|
static |
Definition at line 323 of file read_stream.c.
References Assert, ReadStream::distance, get_per_buffer_data(), InvalidBlockNumber, io_combine_limit, ReadStream::ios_in_progress, ReadStream::max_ios, ReadStream::next_buffer_index, ReadStream::pending_read_blocknum, ReadStream::pending_read_nblocks, ReadStream::pinned_buffers, ReadStream::queue_size, read_stream_get_block(), read_stream_start_pending_read(), and read_stream_unget_block().
Referenced by read_stream_next_buffer().
Buffer read_stream_next_buffer | ( | ReadStream * | stream, |
void ** | per_buffer_data | ||
) |
Definition at line 570 of file read_stream.c.
References ReadStream::advice_enabled, Assert, ReadStream::blocknums, ReadStream::blocknums_count, ReadStream::blocknums_next, InProgressIO::buffer_index, BufferIsValid(), ReadStream::buffers, ReadBuffersOperation::buffers, ReadStream::distance, ReadStream::fast_path, ReadBuffersOperation::flags, get_per_buffer_data(), InvalidBlockNumber, InvalidBuffer, io_combine_limit, ReadStream::ios, ReadStream::ios_in_progress, likely, ReadStream::max_ios, ReadStream::max_pinned_buffers, Min, ReadStream::next_buffer_index, ReadStream::next_io_index, ReadStream::oldest_buffer_index, ReadStream::oldest_io_index, InProgressIO::op, ReadStream::pending_read_nblocks, ReadStream::per_buffer_data, ReadStream::per_buffer_data_size, ReadStream::pinned_buffers, ReadStream::queue_size, READ_BUFFERS_ISSUE_ADVICE, read_stream_fill_blocknums(), read_stream_look_ahead(), ReadStream::seq_blocknum, StartReadBuffer(), unlikely, and WaitReadBuffers().
Referenced by heap_fetch_next_buffer(), heapam_scan_analyze_next_block(), pg_prewarm(), and read_stream_reset().
void read_stream_reset | ( | ReadStream * | stream | ) |
Definition at line 773 of file read_stream.c.
References Assert, ReadStream::blocknums_count, ReadStream::blocknums_next, ReadStream::distance, ReadStream::fast_path, InvalidBuffer, ReadStream::ios_in_progress, ReadStream::pinned_buffers, read_stream_next_buffer(), and ReleaseBuffer().
Referenced by heap_fetch_next_buffer(), heap_rescan(), and read_stream_end().
|
static |
Definition at line 233 of file read_stream.c.
References ReadStream::advice_enabled, Assert, InProgressIO::buffer_index, ReadStream::buffers, ReadStream::distance, if(), io_combine_limit, ReadStream::ios, ReadStream::ios_in_progress, ReadStream::max_ios, ReadStream::max_pinned_buffers, ReadStream::next_buffer_index, ReadStream::next_io_index, ReadStream::oldest_buffer_index, InProgressIO::op, ReadStream::pending_read_blocknum, ReadStream::pending_read_nblocks, ReadStream::pinned_buffers, ReadStream::queue_size, READ_BUFFERS_ISSUE_ADVICE, ReadStream::seq_blocknum, and StartReadBuffers().
Referenced by read_stream_look_ahead().
|
inlinestatic |
Definition at line 194 of file read_stream.c.
References Assert, ReadStream::blocknums, ReadStream::blocknums_count, and ReadStream::blocknums_next.
Referenced by read_stream_look_ahead().