mirror of
https://github.com/postgres/postgres.git
synced 2026-01-27 21:43:08 +03:00
Mark function arguments of type "Datum *" as "const Datum *" where possible
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 <lic@highgo.com> Discussion: https://www.postgresql.org/message-id/flat/CAEoWx2msfT0knvzUa72ZBwu9LR_RLY4on85w2a9YpE-o2By5HQ@mail.gmail.com
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user