1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-24 01:29:19 +03:00

Support reloptions of enum type

All our current in core relation options of type string (not many,
admittedly) behave in reality like enums.  But after seeing an
implementation for enum reloptions, it's clear that strings are messier,
so introduce the new reloption type.  Switch all string options to be
enums instead.

Fortunately we have a recently introduced test module for reloptions, so
we don't lose coverage of string reloptions, which may still be used by
third-party modules.

Authors: Nikolay Shaplov, Álvaro Herrera
Reviewed-by: Nikita Glukhov, Aleksandr Parfenov
Discussion: https://postgr.es/m/43332102.S2V5pIjXRx@x200m
This commit is contained in:
Alvaro Herrera
2019-09-25 15:56:52 -03:00
parent caba97a9d9
commit 773df883e8
12 changed files with 214 additions and 75 deletions

View File

@@ -380,6 +380,14 @@ typedef struct GISTBuildBuffers
int rootlevel;
} GISTBuildBuffers;
/* GiSTOptions->buffering_mode values */
typedef enum GistOptBufferingMode
{
GIST_OPTION_BUFFERING_AUTO,
GIST_OPTION_BUFFERING_ON,
GIST_OPTION_BUFFERING_OFF
} GistOptBufferingMode;
/*
* Storage type for GiST's reloptions
*/
@@ -387,7 +395,7 @@ typedef struct GiSTOptions
{
int32 vl_len_; /* varlena header (do not touch directly!) */
int fillfactor; /* page fill factor in percent (0..100) */
int bufferingModeOffset; /* use buffering build? */
GistOptBufferingMode buffering_mode; /* buffering build mode */
} GiSTOptions;
/* gist.c */