mirror of
https://github.com/postgres/postgres.git
synced 2025-12-18 05:01:01 +03:00
Custom reloptions for table AM
Let table AM define custom reloptions for its tables. This allows specifying AM-specific parameters by the WITH clause when creating a table. The reloptions, which could be used outside of table AM, are now extracted into the CommonRdOptions data structure. These options could be by decision of table AM directly specified by a user or calculated in some way. The new test module test_tam_options evaluates the ability to set up custom reloptions and calculate fields of CommonRdOptions on their base. The code may use some parts from prior work by Hao Wu. Discussion: https://postgr.es/m/CAPpHfdurb9ycV8udYqM%3Do0sPS66PJ4RCBM1g-bBpvzUfogY0EA%40mail.gmail.com Discussion: https://postgr.es/m/AMUA1wBBBxfc3tKRLLdU64rb.1.1683276279979.Hmail.wuhao%40hashdata.cn Reviewed-by: Reviewed-by: Pavel Borisov, Matthias van de Meent, Jess Davis
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
|
||||
#include "access/amapi.h"
|
||||
#include "access/htup.h"
|
||||
#include "access/tableam.h"
|
||||
#include "access/tupdesc.h"
|
||||
#include "nodes/pg_list.h"
|
||||
#include "storage/lock.h"
|
||||
@@ -224,7 +225,9 @@ extern Datum transformRelOptions(Datum oldOptions, List *defList,
|
||||
bool acceptOidsOff, bool isReset);
|
||||
extern List *untransformRelOptions(Datum options);
|
||||
extern bytea *extractRelOptions(HeapTuple tuple, TupleDesc tupdesc,
|
||||
amoptions_function amoptions);
|
||||
const TableAmRoutine *tableam,
|
||||
amoptions_function amoptions,
|
||||
CommonRdOptions *common);
|
||||
extern void *build_reloptions(Datum reloptions, bool validate,
|
||||
relopt_kind kind,
|
||||
Size relopt_struct_size,
|
||||
@@ -233,9 +236,8 @@ extern void *build_reloptions(Datum reloptions, bool validate,
|
||||
extern void *build_local_reloptions(local_relopts *relopts, Datum options,
|
||||
bool validate);
|
||||
|
||||
extern bytea *default_reloptions(Datum reloptions, bool validate,
|
||||
relopt_kind kind);
|
||||
extern bytea *heap_reloptions(char relkind, Datum reloptions, bool validate);
|
||||
extern bytea *heap_reloptions(char relkind, Datum reloptions,
|
||||
CommonRdOptions *common, bool validate);
|
||||
extern bytea *view_reloptions(Datum reloptions, bool validate);
|
||||
extern bytea *partitioned_table_reloptions(Datum reloptions, bool validate);
|
||||
extern bytea *index_reloptions(amoptions_function amoptions, Datum reloptions,
|
||||
|
||||
Reference in New Issue
Block a user