From 1d91d24d9a831be0bb90ec71934f735c52456c57 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 10 Oct 2023 07:50:15 +0200 Subject: [PATCH] Add const to values and nulls arguments This excludes any changes that would change the external AM APIs. Reviewed-by: Aleksander Alekseev Discussion: https://www.postgresql.org/message-id/flat/14c31f4a-0347-0805-dce8-93a9072c05a5%40eisentraut.org --- src/backend/access/brin/brin.c | 4 ++-- src/backend/access/common/heaptuple.c | 26 +++++++++++----------- src/backend/access/common/indextuple.c | 12 +++++----- src/backend/access/gist/gistutil.c | 4 ++-- src/backend/access/hash/hashsort.c | 2 +- src/backend/access/index/genam.c | 2 +- src/backend/access/spgist/spgutils.c | 4 ++-- src/backend/access/table/toast_helper.c | 2 +- src/backend/executor/execIndexing.c | 18 +++++++-------- src/backend/executor/execTuples.c | 2 +- src/backend/partitioning/partbounds.c | 4 ++-- src/backend/utils/adt/json.c | 4 ++-- src/backend/utils/adt/jsonb.c | 10 ++++----- src/backend/utils/sort/tuplesortvariants.c | 4 ++-- src/backend/utils/sort/tuplestore.c | 2 +- src/include/access/genam.h | 2 +- src/include/access/gist_private.h | 4 ++-- src/include/access/hash.h | 2 +- src/include/access/htup_details.h | 20 ++++++++--------- src/include/access/itup.h | 4 ++-- src/include/access/spgist_private.h | 4 ++-- src/include/access/toast_helper.h | 2 +- src/include/executor/executor.h | 4 ++-- src/include/partitioning/partbounds.h | 4 ++-- src/include/utils/json.h | 8 +++---- src/include/utils/jsonb.h | 8 +++---- src/include/utils/tuplesort.h | 2 +- src/include/utils/tuplestore.h | 2 +- 28 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c index a7538f32c2..af392bc032 100644 --- a/src/backend/access/brin/brin.c +++ b/src/backend/access/brin/brin.c @@ -80,7 +80,7 @@ static void union_tuples(BrinDesc *bdesc, BrinMemTuple *a, BrinTuple *b); static void brin_vacuum_scan(Relation idxrel, BufferAccessStrategy strategy); static bool add_values_to_range(Relation idxRel, BrinDesc *bdesc, - BrinMemTuple *dtup, Datum *values, bool *nulls); + BrinMemTuple *dtup, const Datum *values, const bool *nulls); static bool check_null_keys(BrinValues *bval, ScanKey *nullkeys, int nnullkeys); /* @@ -1774,7 +1774,7 @@ brin_vacuum_scan(Relation idxrel, BufferAccessStrategy strategy) static bool add_values_to_range(Relation idxRel, BrinDesc *bdesc, BrinMemTuple *dtup, - Datum *values, bool *nulls) + const Datum *values, const bool *nulls) { int keyno; diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c index ef246c901e..d6a4ddfd51 100644 --- a/src/backend/access/common/heaptuple.c +++ b/src/backend/access/common/heaptuple.c @@ -205,8 +205,8 @@ getmissingattr(TupleDesc tupleDesc, */ Size heap_compute_data_size(TupleDesc tupleDesc, - Datum *values, - bool *isnull) + const Datum *values, + const bool *isnull) { Size data_length = 0; int i; @@ -390,7 +390,7 @@ fill_val(Form_pg_attribute att, */ void heap_fill_tuple(TupleDesc tupleDesc, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit) { @@ -1106,8 +1106,8 @@ heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc) */ HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, - Datum *values, - bool *isnull) + const Datum *values, + const bool *isnull) { HeapTuple tuple; /* return tuple */ HeapTupleHeader td; /* tuple data */ @@ -1200,9 +1200,9 @@ heap_form_tuple(TupleDesc tupleDescriptor, HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, - Datum *replValues, - bool *replIsnull, - bool *doReplace) + const Datum *replValues, + const bool *replIsnull, + const bool *doReplace) { int numberOfAttributes = tupleDesc->natts; int attoff; @@ -1269,9 +1269,9 @@ HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, TupleDesc tupleDesc, int nCols, - int *replCols, - Datum *replValues, - bool *replIsnull) + const int *replCols, + const Datum *replValues, + const bool *replIsnull) { int numberOfAttributes = tupleDesc->natts; Datum *values; @@ -1442,8 +1442,8 @@ heap_freetuple(HeapTuple htup) */ MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor, - Datum *values, - bool *isnull) + const Datum *values, + const bool *isnull) { MinimalTuple tuple; /* return tuple */ Size len, diff --git a/src/backend/access/common/indextuple.c b/src/backend/access/common/indextuple.c index 8b178f94c1..9e9f87b134 100644 --- a/src/backend/access/common/indextuple.c +++ b/src/backend/access/common/indextuple.c @@ -42,8 +42,8 @@ */ IndexTuple index_form_tuple(TupleDesc tupleDescriptor, - Datum *values, - bool *isnull) + const Datum *values, + const bool *isnull) { return index_form_tuple_context(tupleDescriptor, values, isnull, CurrentMemoryContext); @@ -63,8 +63,8 @@ index_form_tuple(TupleDesc tupleDescriptor, */ IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor, - Datum *values, - bool *isnull, + const Datum *values, + const bool *isnull, MemoryContext context) { char *tp; /* tuple pointer */ @@ -79,8 +79,8 @@ index_form_tuple_context(TupleDesc tupleDescriptor, int numberOfAttributes = tupleDescriptor->natts; #ifdef TOAST_INDEX_HACK - Datum untoasted_values[INDEX_MAX_KEYS]; - bool untoasted_free[INDEX_MAX_KEYS]; + Datum untoasted_values[INDEX_MAX_KEYS] = {0}; + bool untoasted_free[INDEX_MAX_KEYS] = {0}; #endif if (numberOfAttributes > INDEX_MAX_KEYS) diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index b6bc8c2c56..9ce3687dbf 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -573,7 +573,7 @@ gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, IndexTuple gistFormTuple(GISTSTATE *giststate, Relation r, - Datum *attdata, bool *isnull, bool isleaf) + const Datum *attdata, const bool *isnull, bool isleaf) { Datum compatt[INDEX_MAX_KEYS]; IndexTuple res; @@ -594,7 +594,7 @@ gistFormTuple(GISTSTATE *giststate, Relation r, void gistCompressValues(GISTSTATE *giststate, Relation r, - Datum *attdata, bool *isnull, bool isleaf, Datum *compatt) + const Datum *attdata, const bool *isnull, bool isleaf, Datum *compatt) { int i; diff --git a/src/backend/access/hash/hashsort.c b/src/backend/access/hash/hashsort.c index b67b2207c0..e7c3ab10e4 100644 --- a/src/backend/access/hash/hashsort.c +++ b/src/backend/access/hash/hashsort.c @@ -106,7 +106,7 @@ _h_spooldestroy(HSpool *hspool) * spool an index entry into the sort file. */ void -_h_spool(HSpool *hspool, ItemPointer self, Datum *values, bool *isnull) +_h_spool(HSpool *hspool, ItemPointer self, const Datum *values, const bool *isnull) { tuplesort_putindextuplevalues(hspool->sortstate, hspool->index, self, values, isnull); diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c index 722927aeba..4ca1200684 100644 --- a/src/backend/access/index/genam.c +++ b/src/backend/access/index/genam.c @@ -175,7 +175,7 @@ IndexScanEnd(IndexScanDesc scan) */ char * BuildIndexValueDescription(Relation indexRelation, - Datum *values, bool *isnull) + const Datum *values, const bool *isnull) { StringInfoData buf; Form_pg_index idxrec; diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c index 8f32e46fb8..c112e1e5dd 100644 --- a/src/backend/access/spgist/spgutils.c +++ b/src/backend/access/spgist/spgutils.c @@ -788,7 +788,7 @@ memcpyInnerDatum(void *target, SpGistTypeDesc *att, Datum datum) */ Size SpGistGetLeafTupleSize(TupleDesc tupleDescriptor, - Datum *datums, bool *isnulls) + const Datum *datums, const bool *isnulls) { Size size; Size data_size; @@ -841,7 +841,7 @@ SpGistGetLeafTupleSize(TupleDesc tupleDescriptor, */ SpGistLeafTuple spgFormLeafTuple(SpGistState *state, ItemPointer heapPtr, - Datum *datums, bool *isnulls) + const Datum *datums, const bool *isnulls) { SpGistLeafTuple tup; TupleDesc tupleDescriptor = state->leafTupDesc; diff --git a/src/backend/access/table/toast_helper.c b/src/backend/access/table/toast_helper.c index b5cfeb21aa..871ebeeb56 100644 --- a/src/backend/access/table/toast_helper.c +++ b/src/backend/access/table/toast_helper.c @@ -316,7 +316,7 @@ toast_tuple_cleanup(ToastTupleContext *ttc) * relation. */ void -toast_delete_external(Relation rel, Datum *values, bool *isnull, +toast_delete_external(Relation rel, const Datum *values, const bool *isnull, bool is_speculative) { TupleDesc tupleDesc = rel->rd_att; diff --git a/src/backend/executor/execIndexing.c b/src/backend/executor/execIndexing.c index 1d82b64b89..3c6730632d 100644 --- a/src/backend/executor/execIndexing.c +++ b/src/backend/executor/execIndexing.c @@ -127,15 +127,15 @@ typedef enum static bool check_exclusion_or_unique_constraint(Relation heap, Relation index, IndexInfo *indexInfo, ItemPointer tupleid, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, EState *estate, bool newIndex, CEOUC_WAIT_MODE waitMode, bool violationOK, ItemPointer conflictTid); -static bool index_recheck_constraint(Relation index, Oid *constr_procs, - Datum *existing_values, bool *existing_isnull, - Datum *new_values); +static bool index_recheck_constraint(Relation index, const Oid *constr_procs, + const Datum *existing_values, const bool *existing_isnull, + const Datum *new_values); static bool index_unchanged_by_update(ResultRelInfo *resultRelInfo, EState *estate, IndexInfo *indexInfo, Relation indexRelation); @@ -684,7 +684,7 @@ static bool check_exclusion_or_unique_constraint(Relation heap, Relation index, IndexInfo *indexInfo, ItemPointer tupleid, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, EState *estate, bool newIndex, CEOUC_WAIT_MODE waitMode, bool violationOK, @@ -910,7 +910,7 @@ void check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo, ItemPointer tupleid, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, EState *estate, bool newIndex) { (void) check_exclusion_or_unique_constraint(heap, index, indexInfo, tupleid, @@ -924,9 +924,9 @@ check_exclusion_constraint(Relation heap, Relation index, * exclusion condition against the new_values. Returns true if conflict. */ static bool -index_recheck_constraint(Relation index, Oid *constr_procs, - Datum *existing_values, bool *existing_isnull, - Datum *new_values) +index_recheck_constraint(Relation index, const Oid *constr_procs, + const Datum *existing_values, const bool *existing_isnull, + const Datum *new_values) { int indnkeyatts = IndexRelationGetNumberOfKeyAttributes(index); int i; diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c index fda20ec318..2c2712ceac 100644 --- a/src/backend/executor/execTuples.c +++ b/src/backend/executor/execTuples.c @@ -2273,7 +2273,7 @@ begin_tup_output_tupdesc(DestReceiver *dest, * write a single tuple */ void -do_tup_output(TupOutputState *tstate, Datum *values, bool *isnull) +do_tup_output(TupOutputState *tstate, const Datum *values, const bool *isnull) { TupleTableSlot *slot = tstate->slot; int natts = slot->tts_tupleDescriptor->natts; diff --git a/src/backend/partitioning/partbounds.c b/src/backend/partitioning/partbounds.c index 5436cc302d..9f207b44c3 100644 --- a/src/backend/partitioning/partbounds.c +++ b/src/backend/partitioning/partbounds.c @@ -4720,8 +4720,8 @@ get_range_nulltest(PartitionKey key) * Compute the hash value for given partition key values. */ uint64 -compute_partition_hash_value(int partnatts, FmgrInfo *partsupfunc, Oid *partcollation, - Datum *values, bool *isnull) +compute_partition_hash_value(int partnatts, FmgrInfo *partsupfunc, const Oid *partcollation, + const Datum *values, const bool *isnull) { int i; uint64 rowHash = 0; diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c index 55413c0fdf..71ae53ff97 100644 --- a/src/backend/utils/adt/json.c +++ b/src/backend/utils/adt/json.c @@ -1182,7 +1182,7 @@ catenate_stringinfo_string(StringInfo buffer, const char *addon) } Datum -json_build_object_worker(int nargs, Datum *args, bool *nulls, Oid *types, +json_build_object_worker(int nargs, const Datum *args, const bool *nulls, const Oid *types, bool absent_on_null, bool unique_keys) { int i; @@ -1295,7 +1295,7 @@ json_build_object_noargs(PG_FUNCTION_ARGS) } Datum -json_build_array_worker(int nargs, Datum *args, bool *nulls, Oid *types, +json_build_array_worker(int nargs, const Datum *args, const bool *nulls, const Oid *types, bool absent_on_null) { int i; diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c index b10a60ac66..6f445f5c2b 100644 --- a/src/backend/utils/adt/jsonb.c +++ b/src/backend/utils/adt/jsonb.c @@ -58,7 +58,7 @@ static void jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal); static JsonParseErrorType jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype); static void composite_to_jsonb(Datum composite, JsonbInState *result); static void array_dim_to_jsonb(JsonbInState *result, int dim, int ndims, int *dims, - Datum *vals, bool *nulls, int *valcount, + const Datum *vals, const bool *nulls, int *valcount, JsonTypeCategory tcategory, Oid outfuncoid); static void array_to_jsonb_internal(Datum array, JsonbInState *result); static void datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, @@ -864,8 +864,8 @@ datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, * ourselves recursively to process the next dimension. */ static void -array_dim_to_jsonb(JsonbInState *result, int dim, int ndims, int *dims, Datum *vals, - bool *nulls, int *valcount, JsonTypeCategory tcategory, +array_dim_to_jsonb(JsonbInState *result, int dim, int ndims, int *dims, const Datum *vals, + const bool *nulls, int *valcount, JsonTypeCategory tcategory, Oid outfuncoid) { int i; @@ -1127,7 +1127,7 @@ datum_to_jsonb(Datum val, JsonTypeCategory tcategory, Oid outfuncoid) } Datum -jsonb_build_object_worker(int nargs, Datum *args, bool *nulls, Oid *types, +jsonb_build_object_worker(int nargs, const Datum *args, const bool *nulls, const Oid *types, bool absent_on_null, bool unique_keys) { int i; @@ -1212,7 +1212,7 @@ jsonb_build_object_noargs(PG_FUNCTION_ARGS) } Datum -jsonb_build_array_worker(int nargs, Datum *args, bool *nulls, Oid *types, +jsonb_build_array_worker(int nargs, const Datum *args, const bool *nulls, const Oid *types, bool absent_on_null) { int i; diff --git a/src/backend/utils/sort/tuplesortvariants.c b/src/backend/utils/sort/tuplesortvariants.c index 84442a93c5..2cd508e513 100644 --- a/src/backend/utils/sort/tuplesortvariants.c +++ b/src/backend/utils/sort/tuplesortvariants.c @@ -683,8 +683,8 @@ tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup) */ void tuplesort_putindextuplevalues(Tuplesortstate *state, Relation rel, - ItemPointer self, Datum *values, - bool *isnull) + ItemPointer self, const Datum *values, + const bool *isnull) { SortTuple stup; IndexTuple tuple; diff --git a/src/backend/utils/sort/tuplestore.c b/src/backend/utils/sort/tuplestore.c index f60633df24..38bbed4604 100644 --- a/src/backend/utils/sort/tuplestore.c +++ b/src/backend/utils/sort/tuplestore.c @@ -748,7 +748,7 @@ tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple) */ void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, - Datum *values, bool *isnull) + const Datum *values, const bool *isnull) { MinimalTuple tuple; MemoryContext oldcxt = MemoryContextSwitchTo(state->context); diff --git a/src/include/access/genam.h b/src/include/access/genam.h index a308795665..4e626c615e 100644 --- a/src/include/access/genam.h +++ b/src/include/access/genam.h @@ -204,7 +204,7 @@ extern IndexScanDesc RelationGetIndexScan(Relation indexRelation, int nkeys, int norderbys); extern void IndexScanEnd(IndexScanDesc scan); extern char *BuildIndexValueDescription(Relation indexRelation, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern TransactionId index_compute_xid_horizon_for_tuples(Relation irel, Relation hrel, Buffer ibuf, diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h index 3edc740a3f..18c37f0bd8 100644 --- a/src/include/access/gist_private.h +++ b/src/include/access/gist_private.h @@ -502,9 +502,9 @@ extern IndexTuple gistgetadjusted(Relation r, IndexTuple addtup, GISTSTATE *giststate); extern IndexTuple gistFormTuple(GISTSTATE *giststate, - Relation r, Datum *attdata, bool *isnull, bool isleaf); + Relation r, const Datum *attdata, const bool *isnull, bool isleaf); extern void gistCompressValues(GISTSTATE *giststate, Relation r, - Datum *attdata, bool *isnull, bool isleaf, Datum *compatt); + const Datum *attdata, const bool *isnull, bool isleaf, Datum *compatt); extern OffsetNumber gistchoose(Relation r, Page p, IndexTuple it, diff --git a/src/include/access/hash.h b/src/include/access/hash.h index 9e035270a1..4806ce6c4e 100644 --- a/src/include/access/hash.h +++ b/src/include/access/hash.h @@ -451,7 +451,7 @@ typedef struct HSpool HSpool; /* opaque struct in hashsort.c */ extern HSpool *_h_spoolinit(Relation heap, Relation index, uint32 num_buckets); extern void _h_spooldestroy(HSpool *hspool); extern void _h_spool(HSpool *hspool, ItemPointer self, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern void _h_indexbuild(HSpool *hspool, Relation heapRel); /* hashutil.c */ diff --git a/src/include/access/htup_details.h b/src/include/access/htup_details.h index e01f4f35c8..6fd87dc108 100644 --- a/src/include/access/htup_details.h +++ b/src/include/access/htup_details.h @@ -696,9 +696,9 @@ struct MinimalTupleData /* prototypes for functions in common/heaptuple.c */ extern Size heap_compute_data_size(TupleDesc tupleDesc, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern void heap_fill_tuple(TupleDesc tupleDesc, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit); extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc); @@ -712,23 +712,23 @@ extern HeapTuple heap_copytuple(HeapTuple tuple); extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest); extern Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc); extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, - Datum *replValues, - bool *replIsnull, - bool *doReplace); + const Datum *replValues, + const bool *replIsnull, + const bool *doReplace); extern HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, TupleDesc tupleDesc, int nCols, - int *replCols, - Datum *replValues, - bool *replIsnull); + const int *replCols, + const Datum *replValues, + const bool *replIsnull); extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *values, bool *isnull); extern void heap_freetuple(HeapTuple htup); extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern void heap_free_minimal_tuple(MinimalTuple mtup); extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup); extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup); diff --git a/src/include/access/itup.h b/src/include/access/itup.h index 2e2b8c7a47..1d55536dbd 100644 --- a/src/include/access/itup.h +++ b/src/include/access/itup.h @@ -75,9 +75,9 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap; /* routines in indextuple.c */ extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, MemoryContext context); extern Datum nocache_index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc); diff --git a/src/include/access/spgist_private.h b/src/include/access/spgist_private.h index c6ef46fc20..bc39ee45cc 100644 --- a/src/include/access/spgist_private.h +++ b/src/include/access/spgist_private.h @@ -506,10 +506,10 @@ extern void SpGistInitBuffer(Buffer b, uint16 f); extern void SpGistInitMetapage(Page page); extern unsigned int SpGistGetInnerTypeSize(SpGistTypeDesc *att, Datum datum); extern Size SpGistGetLeafTupleSize(TupleDesc tupleDescriptor, - Datum *datums, bool *isnulls); + const Datum *datums, const bool *isnulls); extern SpGistLeafTuple spgFormLeafTuple(SpGistState *state, ItemPointer heapPtr, - Datum *datums, bool *isnulls); + const Datum *datums, const bool *isnulls); extern SpGistNodeTuple spgFormNodeTuple(SpGistState *state, Datum label, bool isnull); extern SpGistInnerTuple spgFormInnerTuple(SpGistState *state, diff --git a/src/include/access/toast_helper.h b/src/include/access/toast_helper.h index e971bd2c8e..51a228db40 100644 --- a/src/include/access/toast_helper.h +++ b/src/include/access/toast_helper.h @@ -110,7 +110,7 @@ extern void toast_tuple_externalize(ToastTupleContext *ttc, int attribute, int options); extern void toast_tuple_cleanup(ToastTupleContext *ttc); -extern void toast_delete_external(Relation rel, Datum *values, bool *isnull, +extern void toast_delete_external(Relation rel, const Datum *values, const bool *isnull, bool is_speculative); #endif diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index aeebe0e0ff..e1eefb400b 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -509,7 +509,7 @@ typedef struct TupOutputState extern TupOutputState *begin_tup_output_tupdesc(DestReceiver *dest, TupleDesc tupdesc, const TupleTableSlotOps *tts_ops); -extern void do_tup_output(TupOutputState *tstate, Datum *values, bool *isnull); +extern void do_tup_output(TupOutputState *tstate, const Datum *values, const bool *isnull); extern void do_text_output_multiline(TupOutputState *tstate, const char *txt); extern void end_tup_output(TupOutputState *tstate); @@ -639,7 +639,7 @@ extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo, extern void check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo, ItemPointer tupleid, - Datum *values, bool *isnull, + const Datum *values, const bool *isnull, EState *estate, bool newIndex); /* diff --git a/src/include/partitioning/partbounds.h b/src/include/partitioning/partbounds.h index d2e01f92df..53bcc867df 100644 --- a/src/include/partitioning/partbounds.h +++ b/src/include/partitioning/partbounds.h @@ -100,8 +100,8 @@ typedef struct PartitionBoundInfoData extern int get_hash_partition_greatest_modulus(PartitionBoundInfo bound); extern uint64 compute_partition_hash_value(int partnatts, FmgrInfo *partsupfunc, - Oid *partcollation, - Datum *values, bool *isnull); + const Oid *partcollation, + const Datum *values, const bool *isnull); extern List *get_qual_from_partbound(Relation parent, PartitionBoundSpec *spec); extern PartitionBoundInfo partition_bounds_create(PartitionBoundSpec **boundspecs, diff --git a/src/include/utils/json.h b/src/include/utils/json.h index 35a9a5545d..f07e82c832 100644 --- a/src/include/utils/json.h +++ b/src/include/utils/json.h @@ -21,11 +21,11 @@ extern void escape_json(StringInfo buf, const char *str); extern char *JsonEncodeDateTime(char *buf, Datum value, Oid typid, const int *tzp); extern bool to_json_is_immutable(Oid typoid); -extern Datum json_build_object_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null, +extern Datum json_build_object_worker(int nargs, const Datum *args, const bool *nulls, + const Oid *types, bool absent_on_null, bool unique_keys); -extern Datum json_build_array_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null); +extern Datum json_build_array_worker(int nargs, const Datum *args, const bool *nulls, + const Oid *types, bool absent_on_null); extern bool json_validate(text *json, bool check_unique_keys, bool throw_error); #endif /* JSON_H */ diff --git a/src/include/utils/jsonb.h b/src/include/utils/jsonb.h index 649a1644f2..e62a5f2f44 100644 --- a/src/include/utils/jsonb.h +++ b/src/include/utils/jsonb.h @@ -430,10 +430,10 @@ extern Datum jsonb_set_element(Jsonb *jb, Datum *path, int path_len, extern Datum jsonb_get_element(Jsonb *jb, Datum *path, int npath, bool *isnull, bool as_text); extern bool to_jsonb_is_immutable(Oid typoid); -extern Datum jsonb_build_object_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null, +extern Datum jsonb_build_object_worker(int nargs, const Datum *args, const bool *nulls, + const Oid *types, bool absent_on_null, bool unique_keys); -extern Datum jsonb_build_array_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null); +extern Datum jsonb_build_array_worker(int nargs, const Datum *args, const bool *nulls, + const Oid *types, bool absent_on_null); #endif /* __JSONB_H__ */ diff --git a/src/include/utils/tuplesort.h b/src/include/utils/tuplesort.h index 3f71c70f17..3a49a6d2d4 100644 --- a/src/include/utils/tuplesort.h +++ b/src/include/utils/tuplesort.h @@ -437,7 +437,7 @@ extern void tuplesort_puttupleslot(Tuplesortstate *state, extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup); extern void tuplesort_putindextuplevalues(Tuplesortstate *state, Relation rel, ItemPointer self, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); extern void tuplesort_putdatum(Tuplesortstate *state, Datum val, bool isNull); diff --git a/src/include/utils/tuplestore.h b/src/include/utils/tuplestore.h index 36424b80b1..1077c5fdea 100644 --- a/src/include/utils/tuplestore.h +++ b/src/include/utils/tuplestore.h @@ -54,7 +54,7 @@ extern void tuplestore_puttupleslot(Tuplestorestate *state, TupleTableSlot *slot); extern void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple); extern void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, - Datum *values, bool *isnull); + const Datum *values, const bool *isnull); /* Backwards compatibility macro */ #define tuplestore_donestoring(state) ((void) 0)