From a1fa1f544ecbdc529254c021f139776f6cacbae0 Mon Sep 17 00:00:00 2001 From: Masahiko Sawada Date: Thu, 24 Oct 2019 16:30:02 +0900 Subject: [PATCH v31 3/6] Add an index AM field to check if use maintenance_work_mem --- contrib/bloom/blutils.c | 1 + doc/src/sgml/indexam.sgml | 2 ++ src/backend/access/brin/brin.c | 1 + src/backend/access/gin/ginutil.c | 1 + src/backend/access/gist/gist.c | 1 + src/backend/access/hash/hash.c | 1 + src/backend/access/nbtree/nbtree.c | 1 + src/backend/access/spgist/spgutils.c | 1 + src/include/access/amapi.h | 2 ++ src/test/modules/dummy_index_am/dummy_index_am.c | 1 + 10 files changed, 12 insertions(+) diff --git a/contrib/bloom/blutils.c b/contrib/bloom/blutils.c index 9ef14a47f3..d50122d9e2 100644 --- a/contrib/bloom/blutils.c +++ b/contrib/bloom/blutils.c @@ -122,6 +122,7 @@ blhandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = false; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = InvalidOid; amroutine->ambuild = blbuild; diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml index c3d2352d0f..df4cad11b3 100644 --- a/doc/src/sgml/indexam.sgml +++ b/doc/src/sgml/indexam.sgml @@ -124,6 +124,8 @@ typedef struct IndexAmRoutine bool amcanparallelvacuum; /* does AM support columns included with clause INCLUDE? */ bool amcaninclude; + /* does AM use maintenance_work_mem? */ + bool amusemaintenanceworkmem; /* type of data stored in index, or InvalidOid if variable */ Oid amkeytype; diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c index 4045f5eacf..4a3286bfde 100644 --- a/src/backend/access/brin/brin.c +++ b/src/backend/access/brin/brin.c @@ -102,6 +102,7 @@ brinhandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = false; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = InvalidOid; amroutine->ambuild = brinbuild; diff --git a/src/backend/access/gin/ginutil.c b/src/backend/access/gin/ginutil.c index 9832f651ef..a28a71999d 100644 --- a/src/backend/access/gin/ginutil.c +++ b/src/backend/access/gin/ginutil.c @@ -54,6 +54,7 @@ ginhandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = false; + amroutine->amusemaintenanceworkmem = true; amroutine->amkeytype = InvalidOid; amroutine->ambuild = ginbuild; diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c index 88b1e839b3..752b5bc88c 100644 --- a/src/backend/access/gist/gist.c +++ b/src/backend/access/gist/gist.c @@ -76,6 +76,7 @@ gisthandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = true; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = InvalidOid; amroutine->ambuild = gistbuild; diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c index 3666318064..dc0dc312ef 100644 --- a/src/backend/access/hash/hash.c +++ b/src/backend/access/hash/hash.c @@ -75,6 +75,7 @@ hashhandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = false; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = INT4OID; amroutine->ambuild = hashbuild; diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index f1db77886c..1ea2ba3fe0 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -124,6 +124,7 @@ bthandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = true; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = true; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = InvalidOid; amroutine->ambuild = btbuild; diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c index ff66c3ac6c..4a1689859a 100644 --- a/src/backend/access/spgist/spgutils.c +++ b/src/backend/access/spgist/spgutils.c @@ -57,6 +57,7 @@ spghandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = true; amroutine->amcaninclude = false; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = InvalidOid; amroutine->ambuild = spgbuild; diff --git a/src/include/access/amapi.h b/src/include/access/amapi.h index 549912c1c9..d166350bbe 100644 --- a/src/include/access/amapi.h +++ b/src/include/access/amapi.h @@ -205,6 +205,8 @@ typedef struct IndexAmRoutine bool amcanparallelvacuum; /* does AM support columns included with clause INCLUDE? */ bool amcaninclude; + /* does AM use maintenance_work_mem? */ + bool amusemaintenanceworkmem; /* type of data stored in index, or InvalidOid if variable */ Oid amkeytype; diff --git a/src/test/modules/dummy_index_am/dummy_index_am.c b/src/test/modules/dummy_index_am/dummy_index_am.c index c90405a23b..374d545f0d 100644 --- a/src/test/modules/dummy_index_am/dummy_index_am.c +++ b/src/test/modules/dummy_index_am/dummy_index_am.c @@ -302,6 +302,7 @@ dihandler(PG_FUNCTION_ARGS) amroutine->amcanparallel = false; amroutine->amcanparallelvacuum = false; amroutine->amcaninclude = false; + amroutine->amusemaintenanceworkmem = false; amroutine->amkeytype = InvalidOid; amroutine->ambuild = dibuild; -- 2.22.0