mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
revert: Generalize relation analyze in table AM interface
This commit reverts27bc1772fcanddd1f6b0c17. Per review by Andres Freund. Discussion: https://postgr.es/m/20240415201057.khoyxbwwxfgzomeo%40awork3.anarazel.de
This commit is contained in:
@@ -1002,7 +1002,7 @@ heapam_relation_copy_for_cluster(Relation OldHeap, Relation NewHeap,
|
||||
* until heapam_scan_analyze_next_tuple() returns false. That is until all the
|
||||
* items of the heap page are analyzed.
|
||||
*/
|
||||
bool
|
||||
static bool
|
||||
heapam_scan_analyze_next_block(TableScanDesc scan, ReadStream *stream)
|
||||
{
|
||||
HeapScanDesc hscan = (HeapScanDesc) scan;
|
||||
@@ -1026,17 +1026,7 @@ heapam_scan_analyze_next_block(TableScanDesc scan, ReadStream *stream)
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Iterate over tuples in the block selected with
|
||||
* heapam_scan_analyze_next_block(). If a tuple that's suitable for sampling
|
||||
* is found, true is returned and a tuple is stored in `slot`. When no more
|
||||
* tuples for sampling, false is returned and the pin and lock acquired by
|
||||
* heapam_scan_analyze_next_block() are released.
|
||||
*
|
||||
* *liverows and *deadrows are incremented according to the encountered
|
||||
* tuples.
|
||||
*/
|
||||
bool
|
||||
static bool
|
||||
heapam_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin,
|
||||
double *liverows, double *deadrows,
|
||||
TupleTableSlot *slot)
|
||||
@@ -2593,18 +2583,6 @@ SampleHeapTupleVisible(TableScanDesc scan, Buffer buffer,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* heapap_analyze -- implementation of relation_analyze() for heap
|
||||
* table access method
|
||||
*/
|
||||
static void
|
||||
heapam_analyze(Relation relation, AcquireSampleRowsFunc *func,
|
||||
BlockNumber *totalpages, BufferAccessStrategy bstrategy)
|
||||
{
|
||||
block_level_table_analyze(relation, func, totalpages, bstrategy,
|
||||
heapam_scan_analyze_next_block,
|
||||
heapam_scan_analyze_next_tuple);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Definition of the heap table access method.
|
||||
@@ -2652,9 +2630,10 @@ static const TableAmRoutine heapam_methods = {
|
||||
.relation_copy_data = heapam_relation_copy_data,
|
||||
.relation_copy_for_cluster = heapam_relation_copy_for_cluster,
|
||||
.relation_vacuum = heap_vacuum_rel,
|
||||
.scan_analyze_next_block = heapam_scan_analyze_next_block,
|
||||
.scan_analyze_next_tuple = heapam_scan_analyze_next_tuple,
|
||||
.index_build_range_scan = heapam_index_build_range_scan,
|
||||
.index_validate_scan = heapam_index_validate_scan,
|
||||
.relation_analyze = heapam_analyze,
|
||||
|
||||
.relation_size = table_block_relation_size,
|
||||
.relation_needs_toast_table = heapam_relation_needs_toast_table,
|
||||
|
||||
@@ -81,6 +81,8 @@ GetTableAmRoutine(Oid amhandler)
|
||||
Assert(routine->relation_copy_data != NULL);
|
||||
Assert(routine->relation_copy_for_cluster != NULL);
|
||||
Assert(routine->relation_vacuum != NULL);
|
||||
Assert(routine->scan_analyze_next_block != NULL);
|
||||
Assert(routine->scan_analyze_next_tuple != NULL);
|
||||
Assert(routine->index_build_range_scan != NULL);
|
||||
Assert(routine->index_validate_scan != NULL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user