Mark function arguments of type "Datum *" as "const Datum *" where possible
authorPeter Eisentraut <[email protected]>
Fri, 31 Oct 2025 09:45:02 +0000 (10:45 +0100)
committerPeter Eisentraut <[email protected]>
Fri, 31 Oct 2025 09:47:25 +0000 (10:47 +0100)
Several functions in the codebase accept "Datum *" parameters but do
not modify the pointed-to data.  These have been updated to take
"const Datum *" instead, improving type safety and making the
interfaces clearer about their intent.  This change helps the compiler
catch accidental modifications and better documents immutability of
arguments.

Most of "Datum *" parameters have a pairing "bool *isnull" parameter,
they are constified as well.

No functional behavior is changed by this patch.

Author: Chao Li <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/CAEoWx2msfT0knvzUa72ZBwu9LR_RLY4on85w2a9YpE-o2By5HQ@mail.gmail.com

34 files changed:
doc/src/sgml/spi.sgml
src/backend/access/brin/brin_minmax_multi.c
src/backend/access/hash/hashutil.c
src/backend/access/heap/heaptoast.c
src/backend/access/nbtree/nbtpreprocesskeys.c
src/backend/access/nbtree/nbtsort.c
src/backend/access/spgist/spgdoinsert.c
src/backend/access/spgist/spgtextproc.c
src/backend/executor/execPartition.c
src/backend/executor/nodeIndexscan.c
src/backend/executor/spi.c
src/backend/partitioning/partbounds.c
src/backend/partitioning/partprune.c
src/backend/statistics/attribute_stats.c
src/backend/tsearch/ts_selfuncs.c
src/backend/utils/adt/array_selfuncs.c
src/backend/utils/adt/arrayfuncs.c
src/backend/utils/adt/json.c
src/backend/utils/adt/jsonfuncs.c
src/backend/utils/adt/multirangetypes_selfuncs.c
src/backend/utils/adt/network_selfuncs.c
src/backend/utils/adt/orderedsetaggs.c
src/backend/utils/adt/rangetypes_selfuncs.c
src/backend/utils/adt/xml.c
src/backend/utils/cache/catcache.c
src/include/access/hash.h
src/include/access/heaptoast.h
src/include/access/spgist_private.h
src/include/executor/spi.h
src/include/partitioning/partbounds.h
src/include/utils/array.h
src/include/utils/jsonb.h
src/include/utils/xml.h
src/test/modules/spgist_name_ops/spgist_name_ops.c

index 7e2f2df965dba1034af97c21e63287ac54d5213b..e30d0962ae761d04650bf62b439f7893047a8f0f 100644 (file)
@@ -846,7 +846,7 @@ int SPI_execute_extended(const char *<parameter>command</parameter>,
 <synopsis>
 int SPI_execute_with_args(const char *<parameter>command</parameter>,
                           int <parameter>nargs</parameter>, Oid *<parameter>argtypes</parameter>,
-                          Datum *<parameter>values</parameter>, const char *<parameter>nulls</parameter>,
+                          const Datum *<parameter>values</parameter>, const char *<parameter>nulls</parameter>,
                           bool <parameter>read_only</parameter>, long <parameter>count</parameter>)
 </synopsis>
  </refsynopsisdiv>
@@ -1671,7 +1671,7 @@ bool SPI_is_cursor_plan(SPIPlanPtr <parameter>plan</parameter>)
 
  <refsynopsisdiv>
 <synopsis>
-int SPI_execute_plan(SPIPlanPtr <parameter>plan</parameter>, Datum * <parameter>values</parameter>, const char * <parameter>nulls</parameter>,
+int SPI_execute_plan(SPIPlanPtr <parameter>plan</parameter>, const Datum * <parameter>values</parameter>, const char * <parameter>nulls</parameter>,
                      bool <parameter>read_only</parameter>, long <parameter>count</parameter>)
 </synopsis>
  </refsynopsisdiv>
@@ -2317,7 +2317,7 @@ Portal SPI_cursor_open(const char * <parameter>name</parameter>, SPIPlanPtr <par
 Portal SPI_cursor_open_with_args(const char *<parameter>name</parameter>,
                                  const char *<parameter>command</parameter>,
                                  int <parameter>nargs</parameter>, Oid *<parameter>argtypes</parameter>,
-                                 Datum *<parameter>values</parameter>, const char *<parameter>nulls</parameter>,
+                                 const Datum *<parameter>values</parameter>, const char *<parameter>nulls</parameter>,
                                  bool <parameter>read_only</parameter>, int <parameter>cursorOptions</parameter>)
 </synopsis>
  </refsynopsisdiv>
index c87f1b9cd7eb2d2472c603d06b72731bcc171659..f8a11444d669f5009d631fdee4df96089e8e2cc6 100644 (file)
@@ -276,7 +276,7 @@ static int  compare_values(const void *a, const void *b, void *arg);
  * function (which should be BTLessStrategyNumber).
  */
 static void
-AssertArrayOrder(FmgrInfo *cmp, Oid colloid, Datum *values, int nvalues)
+AssertArrayOrder(FmgrInfo *cmp, Oid colloid, const Datum *values, int nvalues)
 {
    int         i;
    Datum       lt;
index 66c39f606540b6b0f41eb6a26899d3a0250256a8..f41233fcd07d41ccbeb5e394a0f9537724d9a824 100644 (file)
@@ -316,7 +316,7 @@ _hash_get_indextuple_hashkey(IndexTuple itup)
  */
 bool
 _hash_convert_tuple(Relation index,
-                   Datum *user_values, bool *user_isnull,
+                   const Datum *user_values, const bool *user_isnull,
                    Datum *index_values, bool *index_isnull)
 {
    uint32      hashkey;
index cb1e57030f64c4d330146b923fcc6775f961bbab..e148c9be482525fcec9c98a62dea5494ce1fd9e5 100644 (file)
@@ -561,8 +561,8 @@ toast_flatten_tuple_to_datum(HeapTupleHeader tup,
  */
 HeapTuple
 toast_build_flattened_tuple(TupleDesc tupleDesc,
-                           Datum *values,
-                           bool *isnull)
+                           const Datum *values,
+                           const bool *isnull)
 {
    HeapTuple   new_tuple;
    int         numAttrs = tupleDesc->natts;
index 7b7d7860d8f53ce9689e2e3e4aaa12982a2d2fb0..a871bf62cab60563b2ea8c181973afb52f9b8a82 100644 (file)
@@ -67,7 +67,7 @@ static int    _bt_num_array_keys(IndexScanDesc scan, Oid *skip_eq_ops_out,
                               int *numSkipArrayKeys_out);
 static Datum _bt_find_extreme_element(IndexScanDesc scan, ScanKey skey,
                                      Oid elemtype, StrategyNumber strat,
-                                     Datum *elems, int nelems);
+                                     const Datum *elems, int nelems);
 static void _bt_setup_array_cmp(IndexScanDesc scan, ScanKey skey, Oid elemtype,
                                FmgrInfo *orderproc, FmgrInfo **sortprocp);
 static int _bt_sort_array_elements(ScanKey skey, FmgrInfo *sortproc,
@@ -2569,7 +2569,7 @@ _bt_num_array_keys(IndexScanDesc scan, Oid *skip_eq_ops_out,
 static Datum
 _bt_find_extreme_element(IndexScanDesc scan, ScanKey skey, Oid elemtype,
                         StrategyNumber strat,
-                        Datum *elems, int nelems)
+                        const Datum *elems, int nelems)
 {
    Relation    rel = scan->indexRelation;
    Oid         cmp_op;
index e90964080ca851239f7b902ebba3735d7d3ff560..454adaee7dc15e989a6d2cc0e1a34e1ce44b3715 100644 (file)
@@ -258,7 +258,7 @@ static double _bt_spools_heapscan(Relation heap, Relation index,
                                  BTBuildState *buildstate, IndexInfo *indexInfo);
 static void _bt_spooldestroy(BTSpool *btspool);
 static void _bt_spool(BTSpool *btspool, const ItemPointerData *self,
-                     Datum *values, bool *isnull);
+                     const Datum *values, const bool *isnull);
 static void _bt_leafbuild(BTSpool *btspool, BTSpool *btspool2);
 static void _bt_build_callback(Relation index, ItemPointer tid, Datum *values,
                               bool *isnull, bool tupleIsAlive, void *state);
@@ -525,7 +525,7 @@ _bt_spooldestroy(BTSpool *btspool)
  * spool an index entry into the sort file.
  */
 static void
-_bt_spool(BTSpool *btspool, const ItemPointerData *self, Datum *values, bool *isnull)
+_bt_spool(BTSpool *btspool, const ItemPointerData *self, const Datum *values, const bool *isnull)
 {
    tuplesort_putindextuplevalues(btspool->sortstate, btspool->index,
                                  self, values, isnull);
index 5d84141028d0b968454ebacfa953e0359900d6d5..4eadb5187765fdd3ab800a1c325898ce82d9aa5f 100644 (file)
@@ -1908,7 +1908,7 @@ spgSplitNodeAction(Relation index, SpGistState *state,
  */
 bool
 spgdoinsert(Relation index, SpGistState *state,
-           const ItemPointerData *heapPtr, Datum *datums, bool *isnulls)
+           const ItemPointerData *heapPtr, const Datum *datums, const bool *isnulls)
 {
    bool        result = true;
    TupleDesc   leafDescriptor = state->leafTupDesc;
index 73842655f086c4758d8c7622699bbbf3948b65b8..91f4ab260c2fe5d2b4b1e1ed6e6cb1778c9cca79 100644 (file)
@@ -155,7 +155,7 @@ commonPrefix(const char *a, const char *b, int lena, int lenb)
  * On success, *i gets the match location; on failure, it gets where to insert
  */
 static bool
-searchChar(Datum *nodeLabels, int nNodes, int16 c, int *i)
+searchChar(const Datum *nodeLabels, int nNodes, int16 c, int *i)
 {
    int         StopLow = 0,
                StopHigh = nNodes;
index 1f2da072632e3d19a2cbf0c0280a2644f8b1fee4..aa12e9ad2ea8689997d384382dd81cdf47e528bd 100644 (file)
@@ -173,11 +173,11 @@ static void FormPartitionKeyDatum(PartitionDispatch pd,
                                  EState *estate,
                                  Datum *values,
                                  bool *isnull);
-static int get_partition_for_tuple(PartitionDispatch pd, Datum *values,
-                                   bool *isnull);
+static int get_partition_for_tuple(PartitionDispatch pd, const Datum *values,
+                                   const bool *isnull);
 static char *ExecBuildSlotPartitionKeyDescription(Relation rel,
-                                                 Datum *values,
-                                                 bool *isnull,
+                                                 const Datum *values,
+                                                 const bool *isnull,
                                                  int maxfieldlen);
 static List *adjust_partition_colnos(List *colnos, ResultRelInfo *leaf_part_rri);
 static List *adjust_partition_colnos_using_map(List *colnos, AttrMap *attrMap);
@@ -1396,7 +1396,7 @@ FormPartitionKeyDatum(PartitionDispatch pd,
  * found or -1 if none found.
  */
 static int
-get_partition_for_tuple(PartitionDispatch pd, Datum *values, bool *isnull)
+get_partition_for_tuple(PartitionDispatch pd, const Datum *values, const bool *isnull)
 {
    int         bound_offset = -1;
    int         part_index = -1;
@@ -1617,8 +1617,8 @@ get_partition_for_tuple(PartitionDispatch pd, Datum *values, bool *isnull)
  */
 static char *
 ExecBuildSlotPartitionKeyDescription(Relation rel,
-                                    Datum *values,
-                                    bool *isnull,
+                                    const Datum *values,
+                                    const bool *isnull,
                                     int maxfieldlen)
 {
    StringInfoData buf;
index 7fcaa37fe6253cea398ad07068474f3cafd23f79..f36929deec338b8f6c2a4df9fc3e8c15f8070393 100644 (file)
@@ -65,7 +65,7 @@ static int    cmp_orderbyvals(const Datum *adist, const bool *anulls,
 static int reorderqueue_cmp(const pairingheap_node *a,
                             const pairingheap_node *b, void *arg);
 static void reorderqueue_push(IndexScanState *node, TupleTableSlot *slot,
-                             Datum *orderbyvals, bool *orderbynulls);
+                             const Datum *orderbyvals, const bool *orderbynulls);
 static HeapTuple reorderqueue_pop(IndexScanState *node);
 
 
@@ -458,7 +458,7 @@ reorderqueue_cmp(const pairingheap_node *a, const pairingheap_node *b,
  */
 static void
 reorderqueue_push(IndexScanState *node, TupleTableSlot *slot,
-                 Datum *orderbyvals, bool *orderbynulls)
+                 const Datum *orderbyvals, const bool *orderbynulls)
 {
    IndexScanDesc scandesc = node->iss_ScanDesc;
    EState     *estate = node->ss.ps.state;
index 50fcd0237768e3c74e18203886062eb766796dd6..653500b38dc945345efa2d7cc137c5e8a912b974 100644 (file)
@@ -68,7 +68,7 @@ static int    _SPI_execute_plan(SPIPlanPtr plan, const SPIExecuteOptions *options,
                              bool fire_triggers);
 
 static ParamListInfo _SPI_convert_params(int nargs, Oid *argtypes,
-                                        Datum *Values, const char *Nulls);
+                                        const Datum *Values, const char *Nulls);
 
 static int _SPI_pquery(QueryDesc *queryDesc, bool fire_triggers, uint64 tcount);
 
@@ -669,7 +669,7 @@ SPI_execute_extended(const char *src,
 
 /* Execute a previously prepared plan */
 int
-SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls,
+SPI_execute_plan(SPIPlanPtr plan, const Datum *Values, const char *Nulls,
                 bool read_only, long tcount)
 {
    SPIExecuteOptions options;
@@ -771,7 +771,7 @@ SPI_execute_plan_with_paramlist(SPIPlanPtr plan, ParamListInfo params,
  */
 int
 SPI_execute_snapshot(SPIPlanPtr plan,
-                    Datum *Values, const char *Nulls,
+                    const Datum *Values, const char *Nulls,
                     Snapshot snapshot, Snapshot crosscheck_snapshot,
                     bool read_only, bool fire_triggers, long tcount)
 {
@@ -811,7 +811,7 @@ SPI_execute_snapshot(SPIPlanPtr plan,
 int
 SPI_execute_with_args(const char *src,
                      int nargs, Oid *argtypes,
-                     Datum *Values, const char *Nulls,
+                     const Datum *Values, const char *Nulls,
                      bool read_only, long tcount)
 {
    int         res;
@@ -1443,7 +1443,7 @@ SPI_freetuptable(SPITupleTable *tuptable)
  */
 Portal
 SPI_cursor_open(const char *name, SPIPlanPtr plan,
-               Datum *Values, const char *Nulls,
+               const Datum *Values, const char *Nulls,
                bool read_only)
 {
    Portal      portal;
@@ -2847,7 +2847,7 @@ fail:
  */
 static ParamListInfo
 _SPI_convert_params(int nargs, Oid *argtypes,
-                   Datum *Values, const char *Nulls)
+                   const Datum *Values, const char *Nulls)
 {
    ParamListInfo paramLI;
 
index 822cf4ec451a4287a55f60e8d2d52b5f1bc64500..8ba038c5ef4b0791bfa5bd463a8b9489f72d0a95 100644 (file)
@@ -3555,8 +3555,8 @@ partition_rbound_cmp(int partnatts, FmgrInfo *partsupfunc,
  */
 int32
 partition_rbound_datum_cmp(FmgrInfo *partsupfunc, Oid *partcollation,
-                          Datum *rb_datums, PartitionRangeDatumKind *rb_kind,
-                          Datum *tuple_datums, int n_tuple_datums)
+                          const Datum *rb_datums, PartitionRangeDatumKind *rb_kind,
+                          const Datum *tuple_datums, int n_tuple_datums)
 {
    int         i;
    int32       cmpval = -1;
@@ -3695,7 +3695,7 @@ partition_range_bsearch(int partnatts, FmgrInfo *partsupfunc,
 int
 partition_range_datum_bsearch(FmgrInfo *partsupfunc, Oid *partcollation,
                              PartitionBoundInfo boundinfo,
-                             int nvalues, Datum *values, bool *is_equal)
+                             int nvalues, const Datum *values, bool *is_equal)
 {
    int         lo,
                hi,
index 48a35f763e906c802f51c5db89903893f74761dc..6fff4034c24cba9fa90552ecb311b15e3a5ac574 100644 (file)
@@ -179,13 +179,13 @@ static List *get_steps_using_prefix_recurse(GeneratePruningStepsContext *context
                                            List *step_exprs,
                                            List *step_cmpfns);
 static PruneStepResult *get_matching_hash_bounds(PartitionPruneContext *context,
-                                                StrategyNumber opstrategy, Datum *values, int nvalues,
+                                                StrategyNumber opstrategy, const Datum *values, int nvalues,
                                                 FmgrInfo *partsupfunc, Bitmapset *nullkeys);
 static PruneStepResult *get_matching_list_bounds(PartitionPruneContext *context,
                                                 StrategyNumber opstrategy, Datum value, int nvalues,
                                                 FmgrInfo *partsupfunc, Bitmapset *nullkeys);
 static PruneStepResult *get_matching_range_bounds(PartitionPruneContext *context,
-                                                 StrategyNumber opstrategy, Datum *values, int nvalues,
+                                                 StrategyNumber opstrategy, const Datum *values, int nvalues,
                                                  FmgrInfo *partsupfunc, Bitmapset *nullkeys);
 static Bitmapset *pull_exec_paramids(Expr *expr);
 static bool pull_exec_paramids_walker(Node *node, Bitmapset **context);
@@ -2690,7 +2690,7 @@ get_steps_using_prefix_recurse(GeneratePruningStepsContext *context,
  */
 static PruneStepResult *
 get_matching_hash_bounds(PartitionPruneContext *context,
-                        StrategyNumber opstrategy, Datum *values, int nvalues,
+                        StrategyNumber opstrategy, const Datum *values, int nvalues,
                         FmgrInfo *partsupfunc, Bitmapset *nullkeys)
 {
    PruneStepResult *result = (PruneStepResult *) palloc0(sizeof(PruneStepResult));
@@ -2978,7 +2978,7 @@ get_matching_list_bounds(PartitionPruneContext *context,
  */
 static PruneStepResult *
 get_matching_range_bounds(PartitionPruneContext *context,
-                         StrategyNumber opstrategy, Datum *values, int nvalues,
+                         StrategyNumber opstrategy, const Datum *values, int nvalues,
                          FmgrInfo *partsupfunc, Bitmapset *nullkeys)
 {
    PruneStepResult *result = (PruneStepResult *) palloc0(sizeof(PruneStepResult));
index c5df83282e05cc282e29ecae27e1d8dcf239d7f8..401bf571f27aeb4cc8fb8043f17ab2e89d31a2df 100644 (file)
@@ -115,7 +115,7 @@ static void set_stats_slot(Datum *values, bool *nulls, bool *replaces,
                           Datum stanumbers, bool stanumbers_isnull,
                           Datum stavalues, bool stavalues_isnull);
 static void upsert_pg_statistic(Relation starel, HeapTuple oldtup,
-                               Datum *values, bool *nulls, bool *replaces);
+                               const Datum *values, const bool *nulls, const bool *replaces);
 static bool delete_pg_statistic(Oid reloid, AttrNumber attnum, bool stainherit);
 static void init_empty_stats_tuple(Oid reloid, int16 attnum, bool inherited,
                                   Datum *values, bool *nulls, bool *replaces);
@@ -819,7 +819,7 @@ set_stats_slot(Datum *values, bool *nulls, bool *replaces,
  */
 static void
 upsert_pg_statistic(Relation starel, HeapTuple oldtup,
-                   Datum *values, bool *nulls, bool *replaces)
+                   const Datum *values, const bool *nulls, const bool *replaces)
 {
    HeapTuple   newtup;
 
index 6a71ae6452dcd0d79ccc8cd25bf1378482891a45..fb367ad74d2ba5c530663f333154e527e144ba1b 100644 (file)
@@ -47,8 +47,8 @@ typedef struct
 
 static Selectivity tsquerysel(VariableStatData *vardata, Datum constval);
 static Selectivity mcelem_tsquery_selec(TSQuery query,
-                                       Datum *mcelem, int nmcelem,
-                                       float4 *numbers, int nnumbers);
+                                       const Datum *mcelem, int nmcelem,
+                                       const float4 *numbers, int nnumbers);
 static Selectivity tsquery_opr_selec(QueryItem *item, char *operand,
                                     TextFreq *lookup, int length, float4 minfreq);
 static int compare_lexeme_textfreq(const void *e1, const void *e2);
@@ -204,8 +204,8 @@ tsquerysel(VariableStatData *vardata, Datum constval)
  * Extract data from the pg_statistic arrays into useful format.
  */
 static Selectivity
-mcelem_tsquery_selec(TSQuery query, Datum *mcelem, int nmcelem,
-                    float4 *numbers, int nnumbers)
+mcelem_tsquery_selec(TSQuery query, const Datum *mcelem, int nmcelem,
+                    const float4 *numbers, int nnumbers)
 {
    float4      minfreq;
    TextFreq   *lookup;
index cf6fbf8652cf509f6902a14e7f221b69b42710b1..4dab35b0057e65c8d4f1a4dea52e3adc12f325ac 100644 (file)
 
 static Selectivity calc_arraycontsel(VariableStatData *vardata, Datum constval,
                                     Oid elemtype, Oid operator);
-static Selectivity mcelem_array_selec(ArrayType *array,
+static Selectivity mcelem_array_selec(const ArrayType *array,
                                      TypeCacheEntry *typentry,
-                                     Datum *mcelem, int nmcelem,
-                                     float4 *numbers, int nnumbers,
-                                     float4 *hist, int nhist,
+                                     const Datum *mcelem, int nmcelem,
+                                     const float4 *numbers, int nnumbers,
+                                     const float4 *hist, int nhist,
                                      Oid operator);
-static Selectivity mcelem_array_contain_overlap_selec(Datum *mcelem, int nmcelem,
-                                                     float4 *numbers, int nnumbers,
-                                                     Datum *array_data, int nitems,
+static Selectivity mcelem_array_contain_overlap_selec(const Datum *mcelem, int nmcelem,
+                                                     const float4 *numbers, int nnumbers,
+                                                     const Datum *array_data, int nitems,
                                                      Oid operator, TypeCacheEntry *typentry);
-static Selectivity mcelem_array_contained_selec(Datum *mcelem, int nmcelem,
-                                               float4 *numbers, int nnumbers,
-                                               Datum *array_data, int nitems,
-                                               float4 *hist, int nhist,
+static Selectivity mcelem_array_contained_selec(const Datum *mcelem, int nmcelem,
+                                               const float4 *numbers, int nnumbers,
+                                               const Datum *array_data, int nitems,
+                                               const float4 *hist, int nhist,
                                                Oid operator, TypeCacheEntry *typentry);
 static float *calc_hist(const float4 *hist, int nhist, int n);
 static float *calc_distr(const float *p, int n, int m, float rest);
 static int floor_log2(uint32 n);
-static bool find_next_mcelem(Datum *mcelem, int nmcelem, Datum value,
+static bool find_next_mcelem(const Datum *mcelem, int nmcelem, Datum value,
                             int *index, TypeCacheEntry *typentry);
 static int element_compare(const void *key1, const void *key2, void *arg);
 static int float_compare_desc(const void *key1, const void *key2);
@@ -425,10 +425,10 @@ calc_arraycontsel(VariableStatData *vardata, Datum constval,
  * mcelem_array_contained_selec depending on the operator.
  */
 static Selectivity
-mcelem_array_selec(ArrayType *array, TypeCacheEntry *typentry,
-                  Datum *mcelem, int nmcelem,
-                  float4 *numbers, int nnumbers,
-                  float4 *hist, int nhist,
+mcelem_array_selec(const ArrayType *array, TypeCacheEntry *typentry,
+                  const Datum *mcelem, int nmcelem,
+                  const float4 *numbers, int nnumbers,
+                  const float4 *hist, int nhist,
                   Oid operator)
 {
    Selectivity selec;
@@ -518,9 +518,9 @@ mcelem_array_selec(ArrayType *array, TypeCacheEntry *typentry,
  * fraction of nonempty arrays in the column.
  */
 static Selectivity
-mcelem_array_contain_overlap_selec(Datum *mcelem, int nmcelem,
-                                  float4 *numbers, int nnumbers,
-                                  Datum *array_data, int nitems,
+mcelem_array_contain_overlap_selec(const Datum *mcelem, int nmcelem,
+                                  const float4 *numbers, int nnumbers,
+                                  const Datum *array_data, int nitems,
                                   Oid operator, TypeCacheEntry *typentry)
 {
    Selectivity selec,
@@ -699,10 +699,10 @@ mcelem_array_contain_overlap_selec(Datum *mcelem, int nmcelem,
  * ... * fn^on * (1 - fn)^(1 - on), o1, o2, ..., on) | o1 + o2 + .. on = m
  */
 static Selectivity
-mcelem_array_contained_selec(Datum *mcelem, int nmcelem,
-                            float4 *numbers, int nnumbers,
-                            Datum *array_data, int nitems,
-                            float4 *hist, int nhist,
+mcelem_array_contained_selec(const Datum *mcelem, int nmcelem,
+                            const float4 *numbers, int nnumbers,
+                            const Datum *array_data, int nitems,
+                            const float4 *hist, int nhist,
                             Oid operator, TypeCacheEntry *typentry)
 {
    int         mcelem_index,
@@ -1136,7 +1136,7 @@ floor_log2(uint32 n)
  * exact match.)
  */
 static bool
-find_next_mcelem(Datum *mcelem, int nmcelem, Datum value, int *index,
+find_next_mcelem(const Datum *mcelem, int nmcelem, Datum value, int *index,
                 TypeCacheEntry *typentry)
 {
    int         l = *index,
index a8951f55b9392f5334e9904d0fe8c157e24b4f67..a464349ee33e04145f56ab37009e8ff5d50cb853 100644 (file)
@@ -960,8 +960,8 @@ ending_error:
  */
 void
 CopyArrayEls(ArrayType *array,
-            Datum *values,
-            bool *nulls,
+            const Datum *values,
+            const bool *nulls,
             int nitems,
             int typlen,
             bool typbyval,
@@ -3629,7 +3629,7 @@ construct_empty_expanded_array(Oid element_type,
  * to hard-wire values if the element type is hard-wired.
  */
 void
-deconstruct_array(ArrayType *array,
+deconstruct_array(const ArrayType *array,
                  Oid elmtype,
                  int elmlen, bool elmbyval, char elmalign,
                  Datum **elemsp, bool **nullsp, int *nelemsp)
@@ -3695,7 +3695,7 @@ deconstruct_array(ArrayType *array,
  * useful when manipulating arrays from/for system catalogs.
  */
 void
-deconstruct_array_builtin(ArrayType *array,
+deconstruct_array_builtin(const ArrayType *array,
                          Oid elmtype,
                          Datum **elemsp, bool **nullsp, int *nelemsp)
 {
@@ -3765,7 +3765,7 @@ deconstruct_array_builtin(ArrayType *array,
  * if the array *might* contain a null.
  */
 bool
-array_contains_nulls(ArrayType *array)
+array_contains_nulls(const ArrayType *array)
 {
    int         nelems;
    bits8      *bitmap;
index 14f5cb498fc973286d109184e89ef930d457e106..88a612b041dadb44f0580bb50e0fc23b39354c57 100644 (file)
@@ -89,7 +89,7 @@ typedef struct JsonAggState
 static void composite_to_json(Datum composite, StringInfo result,
                              bool use_line_feeds);
 static void array_dim_to_json(StringInfo 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,
                              bool use_line_feeds);
 static void array_to_json_internal(Datum array, StringInfo result,
@@ -429,8 +429,8 @@ JsonEncodeDateTime(char *buf, Datum value, Oid typid, const int *tzp)
  * ourselves recursively to process the next dimension.
  */
 static void
-array_dim_to_json(StringInfo result, int dim, int ndims, int *dims, Datum *vals,
-                 bool *nulls, int *valcount, JsonTypeCategory tcategory,
+array_dim_to_json(StringInfo result, int dim, int ndims, int *dims, const Datum *vals,
+                 const bool *nulls, int *valcount, JsonTypeCategory tcategory,
                  Oid outfuncoid, bool use_line_feeds)
 {
    int         i;
index c5e1a027956bc2d236d33241307497cd9f4168cc..41862872e8aa1f8cbfe122ebf9c119cb5de74ccc 100644 (file)
@@ -477,16 +477,16 @@ static Datum populate_domain(DomainIOData *io, Oid typid, const char *colname,
 /* functions supporting jsonb_delete, jsonb_set and jsonb_concat */
 static JsonbValue *IteratorConcat(JsonbIterator **it1, JsonbIterator **it2,
                                  JsonbParseState **state);
-static JsonbValue *setPath(JsonbIterator **it, Datum *path_elems,
-                          bool *path_nulls, int path_len,
+static JsonbValue *setPath(JsonbIterator **it, const Datum *path_elems,
+                          const bool *path_nulls, int path_len,
                           JsonbParseState **st, int level, JsonbValue *newval,
                           int op_type);
-static void setPathObject(JsonbIterator **it, Datum *path_elems,
-                         bool *path_nulls, int path_len, JsonbParseState **st,
+static void setPathObject(JsonbIterator **it, const Datum *path_elems,
+                         const bool *path_nulls, int path_len, JsonbParseState **st,
                          int level,
                          JsonbValue *newval, uint32 npairs, int op_type);
-static void setPathArray(JsonbIterator **it, Datum *path_elems,
-                        bool *path_nulls, int path_len, JsonbParseState **st,
+static void setPathArray(JsonbIterator **it, const Datum *path_elems,
+                        const bool *path_nulls, int path_len, JsonbParseState **st,
                         int level,
                         JsonbValue *newval, uint32 nelems, int op_type);
 
@@ -1528,7 +1528,7 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
 }
 
 Datum
-jsonb_get_element(Jsonb *jb, Datum *path, int npath, bool *isnull, bool as_text)
+jsonb_get_element(Jsonb *jb, const Datum *path, int npath, bool *isnull, bool as_text)
 {
    JsonbContainer *container = &jb->root;
    JsonbValue *jbvp = NULL;
@@ -1676,7 +1676,7 @@ jsonb_get_element(Jsonb *jb, Datum *path, int npath, bool *isnull, bool as_text)
 }
 
 Datum
-jsonb_set_element(Jsonb *jb, Datum *path, int path_len,
+jsonb_set_element(Jsonb *jb, const Datum *path, int path_len,
                  JsonbValue *newval)
 {
    JsonbValue *res;
@@ -1718,8 +1718,8 @@ push_null_elements(JsonbParseState **ps, int num)
  * Caller is responsible to make sure such path does not exist yet.
  */
 static void
-push_path(JsonbParseState **st, int level, Datum *path_elems,
-         bool *path_nulls, int path_len, JsonbValue *newval)
+push_path(JsonbParseState **st, int level, const Datum *path_elems,
+         const bool *path_nulls, int path_len, JsonbValue *newval)
 {
    /*
     * tpath contains expected type of an empty jsonb created at each level
@@ -5201,8 +5201,8 @@ IteratorConcat(JsonbIterator **it1, JsonbIterator **it2,
  * whatever bits in op_type are set, or nothing is done.
  */
 static JsonbValue *
-setPath(JsonbIterator **it, Datum *path_elems,
-       bool *path_nulls, int path_len,
+setPath(JsonbIterator **it, const Datum *path_elems,
+       const bool *path_nulls, int path_len,
        JsonbParseState **st, int level, JsonbValue *newval, int op_type)
 {
    JsonbValue  v;
@@ -5283,7 +5283,7 @@ setPath(JsonbIterator **it, Datum *path_elems,
  * Object walker for setPath
  */
 static void
-setPathObject(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
+setPathObject(JsonbIterator **it, const Datum *path_elems, const bool *path_nulls,
              int path_len, JsonbParseState **st, int level,
              JsonbValue *newval, uint32 npairs, int op_type)
 {
@@ -5422,7 +5422,7 @@ setPathObject(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
  * Array walker for setPath
  */
 static void
-setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
+setPathArray(JsonbIterator **it, const Datum *path_elems, const bool *path_nulls,
             int path_len, JsonbParseState **st, int level,
             JsonbValue *newval, uint32 nelems, int op_type)
 {
index b87bcf3ea306c70224c57e54cc3bc8f293fc0916..21f0205d803122467a9572de557e243a9f728fb3 100644 (file)
@@ -49,10 +49,10 @@ static float8 get_position(TypeCacheEntry *typcache, const RangeBound *value,
 static float8 get_len_position(double value, double hist1, double hist2);
 static float8 get_distance(TypeCacheEntry *typcache, const RangeBound *bound1,
                           const RangeBound *bound2);
-static int length_hist_bsearch(Datum *length_hist_values,
+static int length_hist_bsearch(const Datum *length_hist_values,
                                int length_hist_nvalues, double value,
                                bool equal);
-static double calc_length_hist_frac(Datum *length_hist_values,
+static double calc_length_hist_frac(const Datum *length_hist_values,
                                    int length_hist_nvalues, double length1,
                                    double length2, bool equal);
 static double calc_hist_selectivity_contained(TypeCacheEntry *typcache,
@@ -60,14 +60,14 @@ static double calc_hist_selectivity_contained(TypeCacheEntry *typcache,
                                              RangeBound *upper,
                                              const RangeBound *hist_lower,
                                              int hist_nvalues,
-                                             Datum *length_hist_values,
+                                             const Datum *length_hist_values,
                                              int length_hist_nvalues);
 static double calc_hist_selectivity_contains(TypeCacheEntry *typcache,
                                             const RangeBound *lower,
                                             const RangeBound *upper,
                                             const RangeBound *hist_lower,
                                             int hist_nvalues,
-                                            Datum *length_hist_values,
+                                            const Datum *length_hist_values,
                                             int length_hist_nvalues);
 
 /*
@@ -765,7 +765,7 @@ rbound_bsearch(TypeCacheEntry *typcache, const RangeBound *value, const RangeBou
  * given length, returns -1.
  */
 static int
-length_hist_bsearch(Datum *length_hist_values, int length_hist_nvalues,
+length_hist_bsearch(const Datum *length_hist_values, int length_hist_nvalues,
                    double value, bool equal)
 {
    int         lower = -1,
@@ -963,7 +963,7 @@ get_distance(TypeCacheEntry *typcache, const RangeBound *bound1, const RangeBoun
  * 'equal' is true).
  */
 static double
-calc_length_hist_frac(Datum *length_hist_values, int length_hist_nvalues,
+calc_length_hist_frac(const Datum *length_hist_values, int length_hist_nvalues,
                      double length1, double length2, bool equal)
 {
    double      frac;
@@ -1131,7 +1131,7 @@ static double
 calc_hist_selectivity_contained(TypeCacheEntry *typcache,
                                const RangeBound *lower, RangeBound *upper,
                                const RangeBound *hist_lower, int hist_nvalues,
-                               Datum *length_hist_values, int length_hist_nvalues)
+                               const Datum *length_hist_values, int length_hist_nvalues)
 {
    int         i,
                upper_index;
@@ -1252,7 +1252,7 @@ static double
 calc_hist_selectivity_contains(TypeCacheEntry *typcache,
                               const RangeBound *lower, const RangeBound *upper,
                               const RangeBound *hist_lower, int hist_nvalues,
-                              Datum *length_hist_values, int length_hist_nvalues)
+                              const Datum *length_hist_values, int length_hist_nvalues)
 {
    int         i,
                lower_index;
index 940cdafa546192bc97c3d7ca4acb9da00f644c78..d08f40e033288ffec8193a576320ff7b18500bc0 100644 (file)
@@ -48,17 +48,17 @@ static Selectivity networkjoinsel_inner(Oid operator,
 static Selectivity networkjoinsel_semi(Oid operator,
                                       VariableStatData *vardata1, VariableStatData *vardata2);
 static Selectivity mcv_population(float4 *mcv_numbers, int mcv_nvalues);
-static Selectivity inet_hist_value_sel(Datum *values, int nvalues,
+static Selectivity inet_hist_value_sel(const Datum *values, int nvalues,
                                       Datum constvalue, int opr_codenum);
 static Selectivity inet_mcv_join_sel(Datum *mcv1_values,
                                     float4 *mcv1_numbers, int mcv1_nvalues, Datum *mcv2_values,
                                     float4 *mcv2_numbers, int mcv2_nvalues, Oid operator);
-static Selectivity inet_mcv_hist_sel(Datum *mcv_values, float4 *mcv_numbers,
-                                    int mcv_nvalues, Datum *hist_values, int hist_nvalues,
+static Selectivity inet_mcv_hist_sel(const Datum *mcv_values, float4 *mcv_numbers,
+                                    int mcv_nvalues, const Datum *hist_values, int hist_nvalues,
                                     int opr_codenum);
-static Selectivity inet_hist_inclusion_join_sel(Datum *hist1_values,
+static Selectivity inet_hist_inclusion_join_sel(const Datum *hist1_values,
                                                int hist1_nvalues,
-                                               Datum *hist2_values, int hist2_nvalues,
+                                               const Datum *hist2_values, int hist2_nvalues,
                                                int opr_codenum);
 static Selectivity inet_semi_join_sel(Datum lhs_value,
                                      bool mcv_exists, Datum *mcv_values, int mcv_nvalues,
@@ -601,7 +601,7 @@ mcv_population(float4 *mcv_numbers, int mcv_nvalues)
  * better option than not considering these buckets at all.
  */
 static Selectivity
-inet_hist_value_sel(Datum *values, int nvalues, Datum constvalue,
+inet_hist_value_sel(const Datum *values, int nvalues, Datum constvalue,
                    int opr_codenum)
 {
    Selectivity match = 0.0;
@@ -702,8 +702,8 @@ inet_mcv_join_sel(Datum *mcv1_values, float4 *mcv1_numbers, int mcv1_nvalues,
  * the histogram.
  */
 static Selectivity
-inet_mcv_hist_sel(Datum *mcv_values, float4 *mcv_numbers, int mcv_nvalues,
-                 Datum *hist_values, int hist_nvalues,
+inet_mcv_hist_sel(const Datum *mcv_values, float4 *mcv_numbers, int mcv_nvalues,
+                 const Datum *hist_values, int hist_nvalues,
                  int opr_codenum)
 {
    Selectivity selec = 0.0;
@@ -739,8 +739,8 @@ inet_mcv_hist_sel(Datum *mcv_values, float4 *mcv_numbers, int mcv_nvalues,
  * average?  That would at least avoid non-commutative estimation results.
  */
 static Selectivity
-inet_hist_inclusion_join_sel(Datum *hist1_values, int hist1_nvalues,
-                            Datum *hist2_values, int hist2_nvalues,
+inet_hist_inclusion_join_sel(const Datum *hist1_values, int hist1_nvalues,
+                            const Datum *hist2_values, int hist2_nvalues,
                             int opr_codenum)
 {
    double      match = 0.0;
index c41b191be62174b8e23655971733fb346214b860..2121cc05f287d74b1ee4e9ad9ee974f716bc884b 100644 (file)
@@ -660,8 +660,8 @@ pct_info_cmp(const void *pa, const void *pb)
  */
 static struct pct_info *
 setup_pct_info(int num_percentiles,
-              Datum *percentiles_datum,
-              bool *percentiles_null,
+              const Datum *percentiles_datum,
+              const bool *percentiles_null,
               int64 rowcount,
               bool continuous)
 {
index d126abc5a82ee95511ca1fc4064240d04df36bb7..d85252cafb276ecd166c8e45975f38c7908d8746 100644 (file)
@@ -46,18 +46,18 @@ static float8 get_position(TypeCacheEntry *typcache, const RangeBound *value,
 static float8 get_len_position(double value, double hist1, double hist2);
 static float8 get_distance(TypeCacheEntry *typcache, const RangeBound *bound1,
                           const RangeBound *bound2);
-static int length_hist_bsearch(Datum *length_hist_values,
+static int length_hist_bsearch(const Datum *length_hist_values,
                                int length_hist_nvalues, double value, bool equal);
-static double calc_length_hist_frac(Datum *length_hist_values,
+static double calc_length_hist_frac(const Datum *length_hist_values,
                                    int length_hist_nvalues, double length1, double length2, bool equal);
 static double calc_hist_selectivity_contained(TypeCacheEntry *typcache,
                                              const RangeBound *lower, RangeBound *upper,
                                              const RangeBound *hist_lower, int hist_nvalues,
-                                             Datum *length_hist_values, int length_hist_nvalues);
+                                             const Datum *length_hist_values, int length_hist_nvalues);
 static double calc_hist_selectivity_contains(TypeCacheEntry *typcache,
                                             const RangeBound *lower, const RangeBound *upper,
                                             const RangeBound *hist_lower, int hist_nvalues,
-                                            Datum *length_hist_values, int length_hist_nvalues);
+                                            const Datum *length_hist_values, int length_hist_nvalues);
 
 /*
  * Returns a default selectivity estimate for given operator, when we don't
@@ -654,7 +654,7 @@ rbound_bsearch(TypeCacheEntry *typcache, const RangeBound *value, const RangeBou
  * given length, returns -1.
  */
 static int
-length_hist_bsearch(Datum *length_hist_values, int length_hist_nvalues,
+length_hist_bsearch(const Datum *length_hist_values, int length_hist_nvalues,
                    double value, bool equal)
 {
    int         lower = -1,
@@ -852,7 +852,7 @@ get_distance(TypeCacheEntry *typcache, const RangeBound *bound1, const RangeBoun
  * 'equal' is true).
  */
 static double
-calc_length_hist_frac(Datum *length_hist_values, int length_hist_nvalues,
+calc_length_hist_frac(const Datum *length_hist_values, int length_hist_nvalues,
                      double length1, double length2, bool equal)
 {
    double      frac;
@@ -1018,7 +1018,7 @@ static double
 calc_hist_selectivity_contained(TypeCacheEntry *typcache,
                                const RangeBound *lower, RangeBound *upper,
                                const RangeBound *hist_lower, int hist_nvalues,
-                               Datum *length_hist_values, int length_hist_nvalues)
+                               const Datum *length_hist_values, int length_hist_nvalues)
 {
    int         i,
                upper_index;
@@ -1139,7 +1139,7 @@ static double
 calc_hist_selectivity_contains(TypeCacheEntry *typcache,
                               const RangeBound *lower, const RangeBound *upper,
                               const RangeBound *hist_lower, int hist_nvalues,
-                              Datum *length_hist_values, int length_hist_nvalues)
+                              const Datum *length_hist_values, int length_hist_nvalues)
 {
    int         i,
                lower_index;
index 66b441836956a318c038ac7358fb1ba83a892bb5..35c915573a1dcf16e2e28a233c798778cee5d206 100644 (file)
@@ -891,8 +891,8 @@ xmltotext_with_options(xmltype *data, XmlOptionType xmloption_arg, bool indent)
 
 xmltype *
 xmlelement(XmlExpr *xexpr,
-          Datum *named_argvalue, bool *named_argnull,
-          Datum *argvalue, bool *argnull)
+          const Datum *named_argvalue, const bool *named_argnull,
+          const Datum *argvalue, const bool *argnull)
 {
 #ifdef USE_LIBXML
    xmltype    *result;
index 509d9c6c7b4bff1705d131b35f92d46bcf38ea71..30ac1bd91be432e40bc94f1f15207b5c7eb61799 100644 (file)
@@ -117,10 +117,10 @@ static CatCTup *CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp,
 
 static void ReleaseCatCacheWithOwner(HeapTuple tuple, ResourceOwner resowner);
 static void ReleaseCatCacheListWithOwner(CatCList *list, ResourceOwner resowner);
-static void CatCacheFreeKeys(TupleDesc tupdesc, int nkeys, int *attnos,
-                            Datum *keys);
-static void CatCacheCopyKeys(TupleDesc tupdesc, int nkeys, int *attnos,
-                            Datum *srckeys, Datum *dstkeys);
+static void CatCacheFreeKeys(TupleDesc tupdesc, int nkeys, const int *attnos,
+                            const Datum *keys);
+static void CatCacheCopyKeys(TupleDesc tupdesc, int nkeys, const int *attnos,
+                            const Datum *srckeys, Datum *dstkeys);
 
 
 /*
@@ -2279,7 +2279,7 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, Datum *arguments,
  * Helper routine that frees keys stored in the keys array.
  */
 static void
-CatCacheFreeKeys(TupleDesc tupdesc, int nkeys, int *attnos, Datum *keys)
+CatCacheFreeKeys(TupleDesc tupdesc, int nkeys, const int *attnos, const Datum *keys)
 {
    int         i;
 
@@ -2301,8 +2301,8 @@ CatCacheFreeKeys(TupleDesc tupdesc, int nkeys, int *attnos, Datum *keys)
  * context.
  */
 static void
-CatCacheCopyKeys(TupleDesc tupdesc, int nkeys, int *attnos,
-                Datum *srckeys, Datum *dstkeys)
+CatCacheCopyKeys(TupleDesc tupdesc, int nkeys, const int *attnos,
+                const Datum *srckeys, Datum *dstkeys)
 {
    int         i;
 
index 2374d5cf049962d6ba1cf0fd1f71ef7d30d2a909..839c343122c8f4f41153407433c19493e6b70caa 100644 (file)
@@ -468,7 +468,7 @@ extern uint32 _hash_get_totalbuckets(uint32 splitpoint_phase);
 extern void _hash_checkpage(Relation rel, Buffer buf, int flags);
 extern uint32 _hash_get_indextuple_hashkey(IndexTuple itup);
 extern bool _hash_convert_tuple(Relation index,
-                               Datum *user_values, bool *user_isnull,
+                               const Datum *user_values, const bool *user_isnull,
                                Datum *index_values, bool *index_isnull);
 extern OffsetNumber _hash_binsearch(Page page, uint32 hash_value);
 extern OffsetNumber _hash_binsearch_last(Page page, uint32 hash_value);
index 6385a27caf83eda65df651ea3af08d479043f961..1c68f8107d6fe53a1849d67048583cf78cd7abe8 100644 (file)
@@ -133,8 +133,8 @@ extern Datum toast_flatten_tuple_to_datum(HeapTupleHeader tup,
  * ----------
  */
 extern HeapTuple toast_build_flattened_tuple(TupleDesc tupleDesc,
-                                            Datum *values,
-                                            bool *isnull);
+                                            const Datum *values,
+                                            const bool *isnull);
 
 /* ----------
  * heap_fetch_toast_slice
index 797ef62eb3887ed76ce90482baaf402a07f6248f..083af5962a85cca65a2bccd6da5661ac483a89e8 100644 (file)
@@ -541,7 +541,7 @@ extern void spgPageIndexMultiDelete(SpGistState *state, Page page,
                                    int firststate, int reststate,
                                    BlockNumber blkno, OffsetNumber offnum);
 extern bool spgdoinsert(Relation index, SpGistState *state,
-                       const ItemPointerData *heapPtr, Datum *datums, bool *isnulls);
+                       const ItemPointerData *heapPtr, const Datum *datums, const bool *isnulls);
 
 /* spgproc.c */
 extern double *spg_key_orderbys_distances(Datum key, bool isLeaf,
index d064d1a9b76f96dd1b2c8eee07d592ab431b592f..de516e5700a46c3590f1cdd5b5fee46385a9faa6 100644 (file)
@@ -111,7 +111,7 @@ extern int  SPI_finish(void);
 extern int SPI_execute(const char *src, bool read_only, long tcount);
 extern int SPI_execute_extended(const char *src,
                                 const SPIExecuteOptions *options);
-extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls,
+extern int SPI_execute_plan(SPIPlanPtr plan, const Datum *Values, const char *Nulls,
                             bool read_only, long tcount);
 extern int SPI_execute_plan_extended(SPIPlanPtr plan,
                                      const SPIExecuteOptions *options);
@@ -122,13 +122,13 @@ extern int    SPI_exec(const char *src, long tcount);
 extern int SPI_execp(SPIPlanPtr plan, Datum *Values, const char *Nulls,
                      long tcount);
 extern int SPI_execute_snapshot(SPIPlanPtr plan,
-                                Datum *Values, const char *Nulls,
+                                const Datum *Values, const char *Nulls,
                                 Snapshot snapshot,
                                 Snapshot crosscheck_snapshot,
                                 bool read_only, bool fire_triggers, long tcount);
 extern int SPI_execute_with_args(const char *src,
                                  int nargs, Oid *argtypes,
-                                 Datum *Values, const char *Nulls,
+                                 const Datum *Values, const char *Nulls,
                                  bool read_only, long tcount);
 extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes);
 extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes,
@@ -172,7 +172,7 @@ extern void SPI_freetuple(HeapTuple tuple);
 extern void SPI_freetuptable(SPITupleTable *tuptable);
 
 extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,
-                             Datum *Values, const char *Nulls, bool read_only);
+                             const Datum *Values, const char *Nulls, bool read_only);
 extern Portal SPI_cursor_open_with_args(const char *name,
                                        const char *src,
                                        int nargs, Oid *argtypes,
index 083b6e3a88a20fbb0dcb93ceadbbb666cec44930..cf93f9e5befa86b210367cefdf1614ed789e15ee 100644 (file)
@@ -130,8 +130,8 @@ extern void check_default_partition_contents(Relation parent,
 
 extern int32 partition_rbound_datum_cmp(FmgrInfo *partsupfunc,
                                        Oid *partcollation,
-                                       Datum *rb_datums, PartitionRangeDatumKind *rb_kind,
-                                       Datum *tuple_datums, int n_tuple_datums);
+                                       const Datum *rb_datums, PartitionRangeDatumKind *rb_kind,
+                                       const Datum *tuple_datums, int n_tuple_datums);
 extern int partition_list_bsearch(FmgrInfo *partsupfunc,
                                   Oid *partcollation,
                                   PartitionBoundInfo boundinfo,
@@ -139,7 +139,7 @@ extern int  partition_list_bsearch(FmgrInfo *partsupfunc,
 extern int partition_range_datum_bsearch(FmgrInfo *partsupfunc,
                                          Oid *partcollation,
                                          PartitionBoundInfo boundinfo,
-                                         int nvalues, Datum *values, bool *is_equal);
+                                         int nvalues, const Datum *values, bool *is_equal);
 extern int partition_hash_bsearch(PartitionBoundInfo boundinfo,
                                   int modulus, int remainder);
 
index 3383f16a3bb61fa2760fa0a4d003b3a973624461..67d11a78ba4e8d0962efca56aa0db32199e0f835 100644 (file)
@@ -352,8 +352,8 @@ extern PGDLLIMPORT bool Array_nulls;
  * prototypes for functions defined in arrayfuncs.c
  */
 extern void CopyArrayEls(ArrayType *array,
-                        Datum *values,
-                        bool *nulls,
+                        const Datum *values,
+                        const bool *nulls,
                         int nitems,
                         int typlen,
                         bool typbyval,
@@ -405,14 +405,14 @@ extern ArrayType *construct_empty_array(Oid elmtype);
 extern ExpandedArrayHeader *construct_empty_expanded_array(Oid element_type,
                                                           MemoryContext parentcontext,
                                                           ArrayMetaState *metacache);
-extern void deconstruct_array(ArrayType *array,
+extern void deconstruct_array(const ArrayType *array,
                              Oid elmtype,
                              int elmlen, bool elmbyval, char elmalign,
                              Datum **elemsp, bool **nullsp, int *nelemsp);
-extern void deconstruct_array_builtin(ArrayType *array,
+extern void deconstruct_array_builtin(const ArrayType *array,
                                      Oid elmtype,
                                      Datum **elemsp, bool **nullsp, int *nelemsp);
-extern bool array_contains_nulls(ArrayType *array);
+extern bool array_contains_nulls(const ArrayType *array);
 
 extern ArrayBuildState *initArrayResult(Oid element_type,
                                        MemoryContext rcontext, bool subcontext);
index fecb33b9c671e52e4a985e2889d2bb1b64439861..ff30fbcf6df16f604aa785b39f794d7954fc2b85 100644 (file)
@@ -426,9 +426,9 @@ extern char *JsonbUnquote(Jsonb *jb);
 extern bool JsonbExtractScalar(JsonbContainer *jbc, JsonbValue *res);
 extern const char *JsonbTypeName(JsonbValue *val);
 
-extern Datum jsonb_set_element(Jsonb *jb, Datum *path, int path_len,
+extern Datum jsonb_set_element(Jsonb *jb, const Datum *path, int path_len,
                               JsonbValue *newval);
-extern Datum jsonb_get_element(Jsonb *jb, Datum *path, int npath,
+extern Datum jsonb_get_element(Jsonb *jb, const 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, const Datum *args, const bool *nulls,
index 0d7a816b9f9332684e334f1fb4321f2a5b38d472..732dac47bc47b2e941d4e783a0d16ecc140a67c8 100644 (file)
@@ -71,8 +71,8 @@ extern void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode,
 
 extern xmltype *xmlconcat(List *args);
 extern xmltype *xmlelement(XmlExpr *xexpr,
-                          Datum *named_argvalue, bool *named_argnull,
-                          Datum *argvalue, bool *argnull);
+                          const Datum *named_argvalue, const bool *named_argnull,
+                          const Datum *argvalue, const bool *argnull);
 extern xmltype *xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace);
 extern xmltype *xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null);
 extern xmltype *xmlroot(xmltype *data, text *version, int standalone);
index bcc16ce366ec5e88102a811246b311fffbcb3d32..38e54e0e0a443d8c1393b167f8d65bbf14e564f8 100644 (file)
@@ -94,7 +94,7 @@ commonPrefix(const char *a, const char *b, int lena, int lenb)
  * On success, *i gets the match location; on failure, it gets where to insert
  */
 static bool
-searchChar(Datum *nodeLabels, int nNodes, int16 c, int *i)
+searchChar(const Datum *nodeLabels, int nNodes, int16 c, int *i)
 {
    int         StopLow = 0,
                StopHigh = nNodes;