diff --git a/src/backend/access/table/tableam.c b/src/backend/access/table/tableam.c index c814733b22..d9ca9904e1 100644 --- a/src/backend/access/table/tableam.c +++ b/src/backend/access/table/tableam.c @@ -33,6 +33,7 @@ /* GUC variables */ char *default_table_access_method = DEFAULT_TABLE_ACCESS_METHOD; bool synchronize_seqscans = true; +int fake_pages = 10; /* ---------------------------------------------------------------------------- @@ -591,10 +592,10 @@ table_block_relation_estimate_size(Relation rel, int32 *attr_widths, * Totally empty parent tables are quite common, so we should be willing * to believe that they are empty. */ - if (curpages < 10 && + if (curpages < fake_pages && relpages == 0 && !rel->rd_rel->relhassubclass) - curpages = 10; + curpages = fake_pages; /* report estimated # pages */ *pages = curpages; diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 11b3f050bc..6954274c28 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -2195,6 +2195,17 @@ static struct config_int ConfigureNamesInt[] = NULL, NULL, NULL }, + { + {"fake_pages", PGC_USERSET, QUERY_TUNING_OTHER, + gettext_noop("Sets a number of pages for planner when relation has no pages."), + NULL, + GUC_UNIT_BLOCKS + }, + &fake_pages, + 10, 0, INT_MAX, + NULL, NULL, NULL + }, + { {"max_standby_archive_delay", PGC_SIGHUP, REPLICATION_STANDBY, gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."), diff --git a/src/include/access/tableam.h b/src/include/access/tableam.h index eb18739c36..f997f9dbc4 100644 --- a/src/include/access/tableam.h +++ b/src/include/access/tableam.h @@ -30,6 +30,8 @@ extern char *default_table_access_method; extern bool synchronize_seqscans; +extern int fake_pages; + struct BulkInsertStateData; struct IndexInfo;