Add some const decorations to prototypes
Here is a patch that adds const decorations to many char * arguments in
functions. It should have no impact otherwise; there are very few code
changes caused by it. Some functions have a strtol()-like behavior
where they take in a const char * and return a pointer into that as
another argument. In those cases, I added a cast or two.
Generally, I find these const decorations useful as easy function
documentation.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
0001-Add-some-const-decorations-to-prototypes.patchtext/plain; charset=UTF-8; name=0001-Add-some-const-decorations-to-prototypes.patch; x-mac-creator=0; x-mac-type=0Download
From a8163e84c83887e4a3b81642c137995932701bb5 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Tue, 31 Oct 2017 10:34:31 -0400
Subject: [PATCH] Add some const decorations to prototypes
---
contrib/cube/cubeparse.y | 12 ++++----
contrib/dict_xsyn/dict_xsyn.c | 2 +-
contrib/fuzzystrmatch/dmetaphone.c | 4 +--
contrib/pgcrypto/pgcrypto.c | 4 +--
contrib/seg/seg.c | 4 +--
contrib/seg/segdata.h | 2 +-
contrib/seg/segparse.y | 4 +--
contrib/unaccent/unaccent.c | 2 +-
contrib/uuid-ossp/uuid-ossp.c | 2 +-
src/backend/access/common/reloptions.c | 12 ++++----
src/backend/access/gist/gistbuild.c | 2 +-
src/backend/access/transam/xact.c | 6 ++--
src/backend/access/transam/xlogarchive.c | 4 +--
src/backend/catalog/heap.c | 10 +++----
src/backend/commands/comment.c | 4 +--
src/backend/commands/event_trigger.c | 4 +--
src/backend/commands/extension.c | 4 +--
src/backend/commands/indexcmds.c | 8 +++---
src/backend/commands/opclasscmds.c | 2 +-
src/backend/commands/tablecmds.c | 16 +++++------
src/backend/commands/typecmds.c | 6 ++--
src/backend/commands/view.c | 2 +-
src/backend/libpq/auth.c | 24 ++++++++--------
src/backend/libpq/hba.c | 6 ++--
src/backend/parser/parse_expr.c | 2 +-
src/backend/parser/parse_func.c | 4 +--
src/backend/parser/parse_relation.c | 8 +++---
src/backend/parser/parse_target.c | 2 +-
src/backend/port/dynloader/darwin.c | 8 +++---
src/backend/port/dynloader/darwin.h | 4 +--
src/backend/port/dynloader/hpux.c | 4 +--
src/backend/port/dynloader/hpux.h | 4 +--
src/backend/port/dynloader/linux.c | 4 +--
src/backend/postmaster/postmaster.c | 2 +-
src/backend/replication/basebackup.c | 8 +++---
src/backend/rewrite/rewriteDefine.c | 4 +--
src/backend/snowball/dict_snowball.c | 2 +-
src/backend/storage/lmgr/lwlock.c | 8 +++---
src/backend/tsearch/dict_thesaurus.c | 2 +-
src/backend/tsearch/spell.c | 4 +--
src/backend/utils/adt/float.c | 16 +++++------
src/backend/utils/adt/genfile.c | 2 +-
src/backend/utils/adt/ruleutils.c | 4 +--
src/backend/utils/adt/varlena.c | 2 +-
src/backend/utils/adt/xml.c | 32 +++++++++++-----------
src/bin/initdb/initdb.c | 12 ++++----
src/bin/pg_dump/pg_backup_db.c | 2 +-
src/bin/pg_dump/pg_backup_db.h | 2 +-
src/bin/pg_rewind/fetch.c | 2 +-
src/bin/pg_rewind/fetch.h | 2 +-
src/bin/pg_upgrade/option.c | 6 ++--
src/bin/pg_upgrade/pg_upgrade.c | 4 +--
src/bin/pg_waldump/pg_waldump.c | 2 +-
src/bin/pgbench/pgbench.c | 4 +--
src/include/access/gist_private.h | 2 +-
src/include/access/reloptions.h | 14 +++++-----
src/include/access/xact.h | 6 ++--
src/include/access/xlog_internal.h | 4 +--
src/include/catalog/heap.h | 2 +-
src/include/commands/comment.h | 4 +--
src/include/commands/defrem.h | 4 +--
src/include/commands/typecmds.h | 2 +-
src/include/commands/view.h | 2 +-
src/include/executor/tablefunc.h | 8 +++---
src/include/parser/parse_relation.h | 6 ++--
src/include/parser/parse_target.h | 2 +-
src/include/postmaster/bgworker.h | 2 +-
src/include/rewrite/rewriteDefine.h | 2 +-
src/include/storage/lwlock.h | 2 +-
src/include/utils/builtins.h | 2 +-
src/include/utils/dynamic_loader.h | 4 +--
src/include/utils/varlena.h | 2 +-
src/include/utils/xml.h | 6 ++--
src/interfaces/ecpg/compatlib/informix.c | 14 +++++-----
src/interfaces/ecpg/ecpglib/misc.c | 20 +++++++-------
src/interfaces/ecpg/include/ecpg_informix.h | 12 ++++----
src/interfaces/ecpg/include/ecpglib.h | 2 +-
src/interfaces/ecpg/include/pgtypes_date.h | 4 +--
src/interfaces/ecpg/include/pgtypes_numeric.h | 2 +-
src/interfaces/ecpg/include/pgtypes_timestamp.h | 4 +--
src/interfaces/ecpg/pgtypeslib/datetime.c | 4 +--
src/interfaces/ecpg/pgtypeslib/dt.h | 2 +-
src/interfaces/ecpg/pgtypeslib/dt_common.c | 4 +--
src/interfaces/ecpg/pgtypeslib/interval.c | 4 +--
src/interfaces/ecpg/pgtypeslib/numeric.c | 6 ++--
src/interfaces/ecpg/pgtypeslib/timestamp.c | 4 +--
src/interfaces/ecpg/preproc/type.c | 2 +-
src/interfaces/ecpg/preproc/type.h | 2 +-
.../ecpg/test/compat_informix/rfmtdate.pgc | 6 ++--
.../ecpg/test/compat_informix/rfmtlong.pgc | 2 +-
.../ecpg/test/compat_informix/test_informix2.pgc | 2 +-
.../ecpg/test/expected/compat_informix-rfmtdate.c | 6 ++--
.../ecpg/test/expected/compat_informix-rfmtlong.c | 2 +-
.../test/expected/compat_informix-test_informix2.c | 2 +-
src/interfaces/ecpg/test/expected/preproc-init.c | 2 +-
.../ecpg/test/expected/preproc-outofscope.c | 2 +-
.../ecpg/test/expected/preproc-whenever.c | 2 +-
src/interfaces/ecpg/test/expected/sql-sqlda.c | 2 +-
src/interfaces/ecpg/test/preproc/init.pgc | 2 +-
src/interfaces/ecpg/test/preproc/whenever.pgc | 2 +-
src/interfaces/libpq/fe-connect.c | 16 +++++------
src/pl/plperl/plperl.c | 4 +--
src/test/regress/pg_regress.c | 4 +--
src/test/regress/pg_regress.h | 2 +-
104 files changed, 264 insertions(+), 264 deletions(-)
diff --git a/contrib/cube/cubeparse.y b/contrib/cube/cubeparse.y
index 1b65fa967c..6244acb56f 100644
--- a/contrib/cube/cubeparse.y
+++ b/contrib/cube/cubeparse.y
@@ -27,8 +27,8 @@ static char *scanbuf;
static int scanbuflen;
static int item_count(const char *s, char delim);
-static NDBOX *write_box(int dim, char *str1, char *str2);
-static NDBOX *write_point_as_box(int dim, char *str);
+static NDBOX *write_box(int dim, const char *str1, const char *str2);
+static NDBOX *write_point_as_box(int dim, const char *str);
%}
@@ -179,10 +179,10 @@ item_count(const char *s, char delim)
}
static NDBOX *
-write_box(int dim, char *str1, char *str2)
+write_box(int dim, const char *str1, const char *str2)
{
NDBOX *bp;
- char *s;
+ const char *s;
char *endptr;
int i;
int size = CUBE_SIZE(dim);
@@ -238,12 +238,12 @@ write_box(int dim, char *str1, char *str2)
}
static NDBOX *
-write_point_as_box(int dim, char *str)
+write_point_as_box(int dim, const char *str)
{
NDBOX *bp;
int i,
size;
- char *s;
+ const char *s;
char *endptr;
size = POINT_SIZE(dim);
diff --git a/contrib/dict_xsyn/dict_xsyn.c b/contrib/dict_xsyn/dict_xsyn.c
index fcf541ee0f..977162951a 100644
--- a/contrib/dict_xsyn/dict_xsyn.c
+++ b/contrib/dict_xsyn/dict_xsyn.c
@@ -70,7 +70,7 @@ compare_syn(const void *a, const void *b)
}
static void
-read_dictionary(DictSyn *d, char *filename)
+read_dictionary(DictSyn *d, const char *filename)
{
char *real_filename = get_tsearch_config_filename(filename, "rules");
tsearch_readline_state trst;
diff --git a/contrib/fuzzystrmatch/dmetaphone.c b/contrib/fuzzystrmatch/dmetaphone.c
index 918ee0d90e..16e4c66167 100644
--- a/contrib/fuzzystrmatch/dmetaphone.c
+++ b/contrib/fuzzystrmatch/dmetaphone.c
@@ -232,7 +232,7 @@ metastring;
*/
static metastring *
-NewMetaString(char *init_str)
+NewMetaString(const char *init_str)
{
metastring *s;
char empty_string[] = "";
@@ -375,7 +375,7 @@ StringAt(metastring *s, int start, int length,...)
static void
-MetaphAdd(metastring *s, char *new_str)
+MetaphAdd(metastring *s, const char *new_str)
{
int add_length;
diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c
index e09f3378da..de09ececcf 100644
--- a/contrib/pgcrypto/pgcrypto.c
+++ b/contrib/pgcrypto/pgcrypto.c
@@ -47,7 +47,7 @@ PG_MODULE_MAGIC;
/* private stuff */
typedef int (*PFN) (const char *name, void **res);
-static void *find_provider(text *name, PFN pf, char *desc, int silent);
+static void *find_provider(text *name, PFN pf, const char *desc, int silent);
/* SQL function: hash(bytea, text) returns bytea */
PG_FUNCTION_INFO_V1(pg_digest);
@@ -474,7 +474,7 @@ pg_random_uuid(PG_FUNCTION_ARGS)
static void *
find_provider(text *name,
PFN provider_lookup,
- char *desc, int silent)
+ const char *desc, int silent)
{
void *res;
char *buf;
diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index e707b18fc6..4f18d0f5fa 100644
--- a/contrib/seg/seg.c
+++ b/contrib/seg/seg.c
@@ -1052,9 +1052,9 @@ restore(char *result, float val, int n)
* a floating point number
*/
int
-significant_digits(char *s)
+significant_digits(const char *s)
{
- char *p = s;
+ const char *p = s;
int n,
c,
zeroes;
diff --git a/contrib/seg/segdata.h b/contrib/seg/segdata.h
index cac68ee2b2..9488bf3a81 100644
--- a/contrib/seg/segdata.h
+++ b/contrib/seg/segdata.h
@@ -12,7 +12,7 @@ typedef struct SEG
} SEG;
/* in seg.c */
-extern int significant_digits(char *str);
+extern int significant_digits(const char *str);
/* in segscan.l */
extern int seg_yylex(void);
diff --git a/contrib/seg/segparse.y b/contrib/seg/segparse.y
index 045ff91f3e..040cab3904 100644
--- a/contrib/seg/segparse.y
+++ b/contrib/seg/segparse.y
@@ -21,7 +21,7 @@
#define YYMALLOC palloc
#define YYFREE pfree
-static float seg_atof(char *value);
+static float seg_atof(const char *value);
static char strbuf[25] = {
'0', '0', '0', '0', '0',
@@ -151,7 +151,7 @@ deviation: SEGFLOAT
static float
-seg_atof(char *value)
+seg_atof(const char *value)
{
Datum datum;
diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c
index e08cca1707..e68b098b78 100644
--- a/contrib/unaccent/unaccent.c
+++ b/contrib/unaccent/unaccent.c
@@ -90,7 +90,7 @@ placeChar(TrieChar *node, const unsigned char *str, int lenstr,
* Function converts UTF8-encoded file into current encoding.
*/
static TrieChar *
-initTrie(char *filename)
+initTrie(const char *filename)
{
TrieChar *volatile rootTrie = NULL;
MemoryContext ccxt = CurrentMemoryContext;
diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c
index fce4bc9140..151223a199 100644
--- a/contrib/uuid-ossp/uuid-ossp.c
+++ b/contrib/uuid-ossp/uuid-ossp.c
@@ -253,7 +253,7 @@ uuid_generate_v35_internal(int mode, pg_uuid_t *ns, text *name)
#else /* !HAVE_UUID_OSSP */
static Datum
-uuid_generate_internal(int v, unsigned char *ns, char *ptr, int len)
+uuid_generate_internal(int v, unsigned char *ns, const char *ptr, int len)
{
char strbuf[40];
diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index ec10762529..3d0ce9af6f 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -582,7 +582,7 @@ add_reloption(relopt_gen *newoption)
* (for types other than string)
*/
static relopt_gen *
-allocate_reloption(bits32 kinds, int type, char *name, char *desc)
+allocate_reloption(bits32 kinds, int type, const char *name, const char *desc)
{
MemoryContext oldcxt;
size_t size;
@@ -630,7 +630,7 @@ allocate_reloption(bits32 kinds, int type, char *name, char *desc)
* Add a new boolean reloption
*/
void
-add_bool_reloption(bits32 kinds, char *name, char *desc, bool default_val)
+add_bool_reloption(bits32 kinds, const char *name, const char *desc, bool default_val)
{
relopt_bool *newoption;
@@ -646,7 +646,7 @@ add_bool_reloption(bits32 kinds, char *name, char *desc, bool default_val)
* Add a new integer reloption
*/
void
-add_int_reloption(bits32 kinds, char *name, char *desc, int default_val,
+add_int_reloption(bits32 kinds, const char *name, const char *desc, int default_val,
int min_val, int max_val)
{
relopt_int *newoption;
@@ -665,7 +665,7 @@ add_int_reloption(bits32 kinds, char *name, char *desc, int default_val,
* Add a new float reloption
*/
void
-add_real_reloption(bits32 kinds, char *name, char *desc, double default_val,
+add_real_reloption(bits32 kinds, const char *name, const char *desc, double default_val,
double min_val, double max_val)
{
relopt_real *newoption;
@@ -689,7 +689,7 @@ add_real_reloption(bits32 kinds, char *name, char *desc, double default_val,
* the validation.
*/
void
-add_string_reloption(bits32 kinds, char *name, char *desc, char *default_val,
+add_string_reloption(bits32 kinds, const char *name, const char *desc, const char *default_val,
validate_string_relopt validator)
{
relopt_string *newoption;
@@ -742,7 +742,7 @@ add_string_reloption(bits32 kinds, char *name, char *desc, char *default_val,
* but we declare them as Datums to avoid including array.h in reloptions.h.
*/
Datum
-transformRelOptions(Datum oldOptions, List *defList, char *namspace,
+transformRelOptions(Datum oldOptions, List *defList, const char *namspace,
char *validnsps[], bool ignoreOids, bool isReset)
{
Datum result;
diff --git a/src/backend/access/gist/gistbuild.c b/src/backend/access/gist/gistbuild.c
index b4cb364869..2415f00e06 100644
--- a/src/backend/access/gist/gistbuild.c
+++ b/src/backend/access/gist/gistbuild.c
@@ -238,7 +238,7 @@ gistbuild(Relation heap, Relation index, IndexInfo *indexInfo)
* and "auto" values.
*/
void
-gistValidateBufferingOption(char *value)
+gistValidateBufferingOption(const char *value)
{
if (value == NULL ||
(strcmp(value, "on") != 0 &&
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 8203388fa8..408422ab22 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -3478,7 +3478,7 @@ BeginTransactionBlock(void)
* resource owner, etc while executing inside a Portal.
*/
bool
-PrepareTransactionBlock(char *gid)
+PrepareTransactionBlock(const char *gid)
{
TransactionState s;
bool result;
@@ -3823,7 +3823,7 @@ EndImplicitTransactionBlock(void)
* This executes a SAVEPOINT command.
*/
void
-DefineSavepoint(char *name)
+DefineSavepoint(const char *name)
{
TransactionState s = CurrentTransactionState;
@@ -4168,7 +4168,7 @@ RollbackToSavepoint(List *options)
* the caller to do it.
*/
void
-BeginInternalSubTransaction(char *name)
+BeginInternalSubTransaction(const char *name)
{
TransactionState s = CurrentTransactionState;
diff --git a/src/backend/access/transam/xlogarchive.c b/src/backend/access/transam/xlogarchive.c
index c723c931d8..f426ad8b89 100644
--- a/src/backend/access/transam/xlogarchive.c
+++ b/src/backend/access/transam/xlogarchive.c
@@ -327,7 +327,7 @@ RestoreArchivedFile(char *path, const char *xlogfname,
* This is currently used for recovery_end_command and archive_cleanup_command.
*/
void
-ExecuteRecoveryCommand(char *command, char *commandName, bool failOnSignal)
+ExecuteRecoveryCommand(const char *command, const char *commandName, bool failOnSignal)
{
char xlogRecoveryCmd[MAXPGPATH];
char lastRestartPointFname[MAXPGPATH];
@@ -425,7 +425,7 @@ ExecuteRecoveryCommand(char *command, char *commandName, bool failOnSignal)
* in pg_wal (xlogfname), replacing any existing file with the same name.
*/
void
-KeepFileRestoredFromArchive(char *path, char *xlogfname)
+KeepFileRestoredFromArchive(const char *path, const char *xlogfname)
{
char xlogfpath[MAXPGPATH];
bool reload = false;
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 05e70818e7..5c0ee1e106 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -103,12 +103,12 @@ static ObjectAddress AddNewRelationType(const char *typeName,
Oid new_row_type,
Oid new_array_type);
static void RelationRemoveInheritance(Oid relid);
-static Oid StoreRelCheck(Relation rel, char *ccname, Node *expr,
+static Oid StoreRelCheck(Relation rel, const char *ccname, Node *expr,
bool is_validated, bool is_local, int inhcount,
bool is_no_inherit, bool is_internal);
static void StoreConstraints(Relation rel, List *cooked_constraints,
bool is_internal);
-static bool MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr,
+static bool MergeWithExistingConstraint(Relation rel, const char *ccname, Node *expr,
bool allow_merge, bool is_local,
bool is_initially_valid,
bool is_no_inherit);
@@ -2037,7 +2037,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum,
* The OID of the new constraint is returned.
*/
static Oid
-StoreRelCheck(Relation rel, char *ccname, Node *expr,
+StoreRelCheck(Relation rel, const char *ccname, Node *expr,
bool is_validated, bool is_local, int inhcount,
bool is_no_inherit, bool is_internal)
{
@@ -2461,7 +2461,7 @@ AddRelationNewConstraints(Relation rel,
* XXX See MergeConstraintsIntoExisting too if you change this code.
*/
static bool
-MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr,
+MergeWithExistingConstraint(Relation rel, const char *ccname, Node *expr,
bool allow_merge, bool is_local,
bool is_initially_valid,
bool is_no_inherit)
@@ -2658,7 +2658,7 @@ cookDefault(ParseState *pstate,
Node *raw_default,
Oid atttypid,
int32 atttypmod,
- char *attname)
+ const char *attname)
{
Node *expr;
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 1c17927c49..2dc9371fdb 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -139,7 +139,7 @@ CommentObject(CommentStmt *stmt)
* existing comment for the specified key.
*/
void
-CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
+CreateComments(Oid oid, Oid classoid, int32 subid, const char *comment)
{
Relation description;
ScanKeyData skey[3];
@@ -234,7 +234,7 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
* existing comment for the specified key.
*/
void
-CreateSharedComments(Oid oid, Oid classoid, char *comment)
+CreateSharedComments(Oid oid, Oid classoid, const char *comment)
{
Relation shdescription;
ScanKeyData skey[2];
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 938133bbe4..fa7d0d015a 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -152,7 +152,7 @@ static event_trigger_command_tag_check_result check_table_rewrite_ddl_tag(
const char *tag);
static void error_duplicate_filter_variable(const char *defname);
static Datum filter_list_to_array(List *filterlist);
-static Oid insert_event_trigger_tuple(char *trigname, char *eventname,
+static Oid insert_event_trigger_tuple(const char *trigname, const char *eventname,
Oid evtOwner, Oid funcoid, List *tags);
static void validate_ddl_tags(const char *filtervar, List *taglist);
static void validate_table_rewrite_tags(const char *filtervar, List *taglist);
@@ -372,7 +372,7 @@ error_duplicate_filter_variable(const char *defname)
* Insert the new pg_event_trigger row and record dependencies.
*/
static Oid
-insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
+insert_event_trigger_tuple(const char *trigname, const char *eventname, Oid evtOwner,
Oid funcoid, List *taglist)
{
Relation tgrel;
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index e4340eed8c..9f77d25352 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -1266,8 +1266,8 @@ find_install_path(List *evi_list, ExtensionVersionInfo *evi_target,
static ObjectAddress
CreateExtensionInternal(char *extensionName,
char *schemaName,
- char *versionName,
- char *oldVersionName,
+ const char *versionName,
+ const char *oldVersionName,
bool cascade,
List *parents,
bool is_create)
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 3f615b6260..89114af119 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -67,7 +67,7 @@ static void ComputeIndexAttrs(IndexInfo *indexInfo,
List *attList,
List *exclusionOpNames,
Oid relId,
- char *accessMethodName, Oid accessMethodId,
+ const char *accessMethodName, Oid accessMethodId,
bool amcanorder,
bool isconstraint);
static char *ChooseIndexName(const char *tabname, Oid namespaceId,
@@ -115,7 +115,7 @@ static void RangeVarCallbackForReindexIndex(const RangeVar *relation,
*/
bool
CheckIndexCompatible(Oid oldId,
- char *accessMethodName,
+ const char *accessMethodName,
List *attributeList,
List *exclusionOpNames)
{
@@ -1011,7 +1011,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
List *attList, /* list of IndexElem's */
List *exclusionOpNames,
Oid relId,
- char *accessMethodName,
+ const char *accessMethodName,
Oid accessMethodId,
bool amcanorder,
bool isconstraint)
@@ -1277,7 +1277,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
*/
Oid
ResolveOpClass(List *opclass, Oid attrType,
- char *accessMethodName, Oid accessMethodId)
+ const char *accessMethodName, Oid accessMethodId)
{
char *schemaname;
char *opcname;
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index d23e6d6f25..1641e68abe 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -239,7 +239,7 @@ get_opclass_oid(Oid amID, List *opclassname, bool missing_ok)
* Caller must have done permissions checks etc. already.
*/
static ObjectAddress
-CreateOpFamily(char *amname, char *opfname, Oid namespaceoid, Oid amoid)
+CreateOpFamily(const char *amname, const char *opfname, Oid namespaceoid, Oid amoid)
{
Oid opfamilyoid;
Relation rel;
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 3ab808715b..2b69db46bd 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -425,7 +425,7 @@ static void ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId,
char *cmd, List **wqueue, LOCKMODE lockmode,
bool rewrite);
static void RebuildConstraintComment(AlteredTableInfo *tab, int pass,
- Oid objid, Relation rel, char *conname);
+ Oid objid, Relation rel, const char *conname);
static void TryReuseIndex(Oid oldId, IndexStmt *stmt);
static void TryReuseForeignKey(Oid oldId, Constraint *con);
static void change_owner_fix_column_acls(Oid relationOid,
@@ -437,14 +437,14 @@ static ObjectAddress ATExecClusterOn(Relation rel, const char *indexName,
static void ATExecDropCluster(Relation rel, LOCKMODE lockmode);
static bool ATPrepChangePersistence(Relation rel, bool toLogged);
static void ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel,
- char *tablespacename, LOCKMODE lockmode);
+ const char *tablespacename, LOCKMODE lockmode);
static void ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode);
static void ATExecSetRelOptions(Relation rel, List *defList,
AlterTableType operation,
LOCKMODE lockmode);
-static void ATExecEnableDisableTrigger(Relation rel, char *trigname,
+static void ATExecEnableDisableTrigger(Relation rel, const char *trigname,
char fires_when, bool skip_system, LOCKMODE lockmode);
-static void ATExecEnableDisableRule(Relation rel, char *rulename,
+static void ATExecEnableDisableRule(Relation rel, const char *rulename,
char fires_when, LOCKMODE lockmode);
static void ATPrepAddInherit(Relation child_rel);
static ObjectAddress ATExecAddInherit(Relation child_rel, RangeVar *parent, LOCKMODE lockmode);
@@ -9818,7 +9818,7 @@ ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId, char *cmd,
*/
static void
RebuildConstraintComment(AlteredTableInfo *tab, int pass, Oid objid,
- Relation rel, char *conname)
+ Relation rel, const char *conname)
{
CommentStmt *cmd;
char *comment_str;
@@ -10327,7 +10327,7 @@ ATExecDropCluster(Relation rel, LOCKMODE lockmode)
* ALTER TABLE SET TABLESPACE
*/
static void
-ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, char *tablespacename, LOCKMODE lockmode)
+ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, const char *tablespacename, LOCKMODE lockmode)
{
Oid tablespaceId;
@@ -10994,7 +10994,7 @@ copy_relation_data(SMgrRelation src, SMgrRelation dst,
* We just pass this off to trigger.c.
*/
static void
-ATExecEnableDisableTrigger(Relation rel, char *trigname,
+ATExecEnableDisableTrigger(Relation rel, const char *trigname,
char fires_when, bool skip_system, LOCKMODE lockmode)
{
EnableDisableTrigger(rel, trigname, fires_when, skip_system);
@@ -11006,7 +11006,7 @@ ATExecEnableDisableTrigger(Relation rel, char *trigname,
* We just pass this off to rewriteDefine.c.
*/
static void
-ATExecEnableDisableRule(Relation rel, char *rulename,
+ATExecEnableDisableRule(Relation rel, const char *rulename,
char fires_when, LOCKMODE lockmode)
{
EnableDisableRule(rel, rulename, fires_when);
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index 7df942b18b..bbfd4b9014 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -103,7 +103,7 @@ static void checkEnumOwner(HeapTuple tup);
static char *domainAddConstraint(Oid domainOid, Oid domainNamespace,
Oid baseTypeOid,
int typMod, Constraint *constr,
- char *domainName, ObjectAddress *constrAddr);
+ const char *domainName, ObjectAddress *constrAddr);
static Node *replace_domain_constraint_value(ParseState *pstate,
ColumnRef *cref);
@@ -2649,7 +2649,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint,
* Implements the ALTER DOMAIN .. VALIDATE CONSTRAINT statement.
*/
ObjectAddress
-AlterDomainValidateConstraint(List *names, char *constrName)
+AlterDomainValidateConstraint(List *names, const char *constrName)
{
TypeName *typename;
Oid domainoid;
@@ -3060,7 +3060,7 @@ checkDomainOwner(HeapTuple tup)
static char *
domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
int typMod, Constraint *constr,
- char *domainName, ObjectAddress *constrAddr)
+ const char *domainName, ObjectAddress *constrAddr)
{
Node *expr;
char *ccsrc;
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index 076e2a3a40..c1e80e61d4 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -43,7 +43,7 @@ static void checkViewTupleDesc(TupleDesc newdesc, TupleDesc olddesc);
* are "local" and "cascaded".
*/
void
-validateWithCheckOption(char *value)
+validateWithCheckOption(const char *value)
{
if (value == NULL ||
(pg_strcasecmp(value, "local") != 0 &&
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index ab74fd8dfd..6505b1f2b9 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -43,7 +43,7 @@
* Global authentication functions
*----------------------------------------------------------------
*/
-static void sendAuthRequest(Port *port, AuthRequest areq, char *extradata,
+static void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
int extralen);
static void auth_failed(Port *port, int status, char *logdetail);
static char *recv_password_packet(Port *port);
@@ -91,7 +91,7 @@ static int auth_peer(hbaPort *port);
#define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */
-static int CheckPAMAuth(Port *port, char *user, char *password);
+static int CheckPAMAuth(Port *port, const char *user, const char *password);
static int pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr);
@@ -100,7 +100,7 @@ static struct pam_conv pam_passw_conv = {
NULL
};
-static char *pam_passwd = NULL; /* Workaround for Solaris 2.6 brokenness */
+static const char *pam_passwd = NULL; /* Workaround for Solaris 2.6 brokenness */
static Port *pam_port_cludge; /* Workaround for passing "Port *port" into
* pam_passwd_conv_proc */
#endif /* USE_PAM */
@@ -202,7 +202,7 @@ static int pg_SSPI_make_upn(char *accountname,
*----------------------------------------------------------------
*/
static int CheckRADIUSAuth(Port *port);
-static int PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identifier, char *user_name, char *passwd);
+static int PerformRadiusTransaction(const char *server, const char *secret, const char *portstr, const char *identifier, const char *user_name, const char *passwd);
/*
@@ -612,7 +612,7 @@ ClientAuthentication(Port *port)
* Send an authentication request packet to the frontend.
*/
static void
-sendAuthRequest(Port *port, AuthRequest areq, char *extradata, int extralen)
+sendAuthRequest(Port *port, AuthRequest areq, const char *extradata, int extralen)
{
StringInfoData buf;
@@ -1040,7 +1040,7 @@ static GSS_DLLIMP gss_OID GSS_C_NT_USER_NAME = &GSS_C_NT_USER_NAME_desc;
static void
-pg_GSS_error(int severity, char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat)
+pg_GSS_error(int severity, const char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat)
{
gss_buffer_desc gmsg;
OM_uint32 lmin_s,
@@ -2051,7 +2051,7 @@ static int
pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr)
{
- char *passwd;
+ const char *passwd;
struct pam_response *reply;
int i;
@@ -2149,7 +2149,7 @@ pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
* Check authentication against PAM.
*/
static int
-CheckPAMAuth(Port *port, char *user, char *password)
+CheckPAMAuth(Port *port, const char *user, const char *password)
{
int retval;
pam_handle_t *pamh = NULL;
@@ -2874,7 +2874,7 @@ CheckRADIUSAuth(Port *port)
}
static int
-PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identifier, char *user_name, char *passwd)
+PerformRadiusTransaction(const char *server, const char *secret, const char *portstr, const char *identifier, const char *user_name, const char *passwd)
{
radius_packet radius_send_pack;
radius_packet radius_recv_pack;
@@ -2941,9 +2941,9 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
return STATUS_ERROR;
}
packet->id = packet->vector[0];
- radius_add_attribute(packet, RADIUS_SERVICE_TYPE, (unsigned char *) &service, sizeof(service));
- radius_add_attribute(packet, RADIUS_USER_NAME, (unsigned char *) user_name, strlen(user_name));
- radius_add_attribute(packet, RADIUS_NAS_IDENTIFIER, (unsigned char *) identifier, strlen(identifier));
+ radius_add_attribute(packet, RADIUS_SERVICE_TYPE, (const unsigned char *) &service, sizeof(service));
+ radius_add_attribute(packet, RADIUS_USER_NAME, (const unsigned char *) user_name, strlen(user_name));
+ radius_add_attribute(packet, RADIUS_NAS_IDENTIFIER, (const unsigned char *) identifier, strlen(identifier));
/*
* RADIUS password attributes are calculated as: e[0] = p[0] XOR
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index b2c487a8e8..fcbe708d43 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -144,8 +144,8 @@ static List *tokenize_inc_file(List *tokens, const char *outer_filename,
const char *inc_filename, int elevel, char **err_msg);
static bool parse_hba_auth_opt(char *name, char *val, HbaLine *hbaline,
int elevel, char **err_msg);
-static bool verify_option_list_length(List *options, char *optionname,
- List *masters, char *mastername, int line_num);
+static bool verify_option_list_length(List *options, const char *optionname,
+ List *masters, const char *mastername, int line_num);
static ArrayType *gethba_options(HbaLine *hba);
static void fill_hba_line(Tuplestorestate *tuple_store, TupleDesc tupdesc,
int lineno, HbaLine *hba, const char *err_msg);
@@ -1617,7 +1617,7 @@ parse_hba_line(TokenizedLine *tok_line, int elevel)
static bool
-verify_option_list_length(List *options, char *optionname, List *masters, char *mastername, int line_num)
+verify_option_list_length(List *options, const char *optionname, List *masters, const char *mastername, int line_num)
{
if (list_length(options) == 0 ||
list_length(options) == 1 ||
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 1aaa5244e6..86d1da0677 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -386,7 +386,7 @@ transformExprRecurse(ParseState *pstate, Node *expr)
* selection from an arbitrary node needs it.)
*/
static void
-unknown_attribute(ParseState *pstate, Node *relref, char *attname,
+unknown_attribute(ParseState *pstate, Node *relref, const char *attname,
int location)
{
RangeTblEntry *rte;
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index fc0d6bc2f2..a11843332b 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -39,7 +39,7 @@ static void unify_hypothetical_args(ParseState *pstate,
List *fargs, int numAggregatedArgs,
Oid *actual_arg_types, Oid *declared_arg_types);
static Oid FuncNameAsType(List *funcname);
-static Node *ParseComplexProjection(ParseState *pstate, char *funcname,
+static Node *ParseComplexProjection(ParseState *pstate, const char *funcname,
Node *first_arg, int location);
@@ -1790,7 +1790,7 @@ FuncNameAsType(List *funcname)
* transformed expression tree. If not, return NULL.
*/
static Node *
-ParseComplexProjection(ParseState *pstate, char *funcname, Node *first_arg,
+ParseComplexProjection(ParseState *pstate, const char *funcname, Node *first_arg,
int location)
{
TupleDesc tupdesc;
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 6acc21dfe6..5233ec11cc 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -652,7 +652,7 @@ updateFuzzyAttrMatchState(int fuzzy_rte_penalty,
* for an approximate match and update fuzzystate accordingly.
*/
Node *
-scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, char *colname,
+scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, const char *colname,
int location, int fuzzy_rte_penalty,
FuzzyAttrMatchState *fuzzystate)
{
@@ -754,7 +754,7 @@ scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, char *colname,
* If localonly is true, only names in the innermost query are considered.
*/
Node *
-colNameToVar(ParseState *pstate, char *colname, bool localonly,
+colNameToVar(ParseState *pstate, const char *colname, bool localonly,
int location)
{
Node *result = NULL;
@@ -828,7 +828,7 @@ colNameToVar(ParseState *pstate, char *colname, bool localonly,
* and 'second' will contain the attribute number for the second match.
*/
static FuzzyAttrMatchState *
-searchRangeTableForCol(ParseState *pstate, const char *alias, char *colname,
+searchRangeTableForCol(ParseState *pstate, const char *alias, const char *colname,
int location)
{
ParseState *orig_pstate = pstate;
@@ -3248,7 +3248,7 @@ errorMissingRTE(ParseState *pstate, RangeVar *relation)
*/
void
errorMissingColumn(ParseState *pstate,
- char *relname, char *colname, int location)
+ const char *relname, const char *colname, int location)
{
FuzzyAttrMatchState *state;
char *closestfirst = NULL;
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 01fd726a3d..21593b249f 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -455,7 +455,7 @@ Expr *
transformAssignedExpr(ParseState *pstate,
Expr *expr,
ParseExprKind exprKind,
- char *colname,
+ const char *colname,
int attrno,
List *indirection,
int location)
diff --git a/src/backend/port/dynloader/darwin.c b/src/backend/port/dynloader/darwin.c
index f8fdeaf122..0a54ce907c 100644
--- a/src/backend/port/dynloader/darwin.c
+++ b/src/backend/port/dynloader/darwin.c
@@ -20,7 +20,7 @@
#ifdef HAVE_DLOPEN
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
return dlopen(filename, RTLD_NOW | RTLD_GLOBAL);
}
@@ -32,7 +32,7 @@ pg_dlclose(void *handle)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
/* Do not prepend an underscore: see dlopen(3) */
return dlsym(handle, funcname);
@@ -54,7 +54,7 @@ pg_dlerror(void)
static NSObjectFileImageReturnCode cofiff_result = NSObjectFileImageFailure;
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
NSObjectFileImage image;
@@ -73,7 +73,7 @@ pg_dlclose(void *handle)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
NSSymbol symbol;
char *symname = (char *) malloc(strlen(funcname) + 2);
diff --git a/src/backend/port/dynloader/darwin.h b/src/backend/port/dynloader/darwin.h
index 44a3bd6b82..292a31de13 100644
--- a/src/backend/port/dynloader/darwin.h
+++ b/src/backend/port/dynloader/darwin.h
@@ -2,7 +2,7 @@
#include "fmgr.h"
-void *pg_dlopen(char *filename);
-PGFunction pg_dlsym(void *handle, char *funcname);
+void *pg_dlopen(const char *filename);
+PGFunction pg_dlsym(void *handle, const char *funcname);
void pg_dlclose(void *handle);
char *pg_dlerror(void);
diff --git a/src/backend/port/dynloader/hpux.c b/src/backend/port/dynloader/hpux.c
index 5a0e40146d..5ab24f8fd9 100644
--- a/src/backend/port/dynloader/hpux.c
+++ b/src/backend/port/dynloader/hpux.c
@@ -26,7 +26,7 @@
#include "utils/dynamic_loader.h"
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
/*
* Use BIND_IMMEDIATE so that undefined symbols cause a failure return
@@ -41,7 +41,7 @@ pg_dlopen(char *filename)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
PGFunction f;
diff --git a/src/backend/port/dynloader/hpux.h b/src/backend/port/dynloader/hpux.h
index 0a17454f2b..6c1b367e97 100644
--- a/src/backend/port/dynloader/hpux.h
+++ b/src/backend/port/dynloader/hpux.h
@@ -19,7 +19,7 @@
/* System includes */
#include "fmgr.h"
-extern void *pg_dlopen(char *filename);
-extern PGFunction pg_dlsym(void *handle, char *funcname);
+extern void *pg_dlopen(const char *filename);
+extern PGFunction pg_dlsym(void *handle, const char *funcname);
extern void pg_dlclose(void *handle);
extern char *pg_dlerror(void);
diff --git a/src/backend/port/dynloader/linux.c b/src/backend/port/dynloader/linux.c
index 38e19f7484..375ade32e5 100644
--- a/src/backend/port/dynloader/linux.c
+++ b/src/backend/port/dynloader/linux.c
@@ -29,7 +29,7 @@
#ifndef HAVE_DLOPEN
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
#ifndef HAVE_DLD_H
elog(ERROR, "dynamic load not supported");
@@ -101,7 +101,7 @@ pg_dlopen(char *filename)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
#ifndef HAVE_DLD_H
return NULL;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 2b2b993e2c..9906a85bc0 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -5537,7 +5537,7 @@ MaxLivePostmasterChildren(void)
* Connect background worker to a database.
*/
void
-BackgroundWorkerInitializeConnection(char *dbname, char *username)
+BackgroundWorkerInitializeConnection(const char *dbname, const char *username)
{
BackgroundWorker *worker = MyBgworkerEntry;
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index 75029b0def..eb159f7d3a 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -51,9 +51,9 @@ typedef struct
} basebackup_options;
-static int64 sendDir(char *path, int basepathlen, bool sizeonly,
+static int64 sendDir(const char *path, int basepathlen, bool sizeonly,
List *tablespaces, bool sendtblspclinks);
-static bool sendFile(char *readfilename, char *tarfilename,
+static bool sendFile(const char *readfilename, const char *tarfilename,
struct stat *statbuf, bool missing_ok);
static void sendFileWithContent(const char *filename, const char *content);
static int64 _tarWriteHeader(const char *filename, const char *linktarget,
@@ -958,7 +958,7 @@ sendTablespace(char *path, bool sizeonly)
* as it will be sent separately in the tablespace_map file.
*/
static int64
-sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces,
+sendDir(const char *path, int basepathlen, bool sizeonly, List *tablespaces,
bool sendtblspclinks)
{
DIR *dir;
@@ -1203,7 +1203,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces,
* and the file did not exist.
*/
static bool
-sendFile(char *readfilename, char *tarfilename, struct stat *statbuf,
+sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf,
bool missing_ok)
{
FILE *fp;
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 071b3a9ec9..d5aecfe165 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -56,7 +56,7 @@ static void setRuleCheckAsUser_Query(Query *qry, Oid userid);
* relation "pg_rewrite"
*/
static Oid
-InsertRule(char *rulname,
+InsertRule(const char *rulname,
int evtype,
Oid eventrel_oid,
bool evinstead,
@@ -225,7 +225,7 @@ DefineRule(RuleStmt *stmt, const char *queryString)
* action and qual have already been passed through parse analysis.
*/
ObjectAddress
-DefineQueryRewrite(char *rulename,
+DefineQueryRewrite(const char *rulename,
Oid event_relid,
Node *event_qual,
CmdType event_type,
diff --git a/src/backend/snowball/dict_snowball.c b/src/backend/snowball/dict_snowball.c
index 7cf668de19..42384b42b1 100644
--- a/src/backend/snowball/dict_snowball.c
+++ b/src/backend/snowball/dict_snowball.c
@@ -138,7 +138,7 @@ typedef struct DictSnowball
static void
-locate_stem_module(DictSnowball *d, char *lang)
+locate_stem_module(DictSnowball *d, const char *lang)
{
const stemmer_module *m;
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index f1060f9675..227ab69cba 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -111,7 +111,7 @@ extern slock_t *ShmemLock;
* This is indexed by tranche ID and stores the names of all tranches known
* to the current backend.
*/
-static char **LWLockTrancheArray = NULL;
+static const char **LWLockTrancheArray = NULL;
static int LWLockTranchesAllocated = 0;
#define T_NAME(lock) \
@@ -495,7 +495,7 @@ RegisterLWLockTranches(void)
if (LWLockTrancheArray == NULL)
{
LWLockTranchesAllocated = 128;
- LWLockTrancheArray = (char **)
+ LWLockTrancheArray = (const char **)
MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated * sizeof(char *));
Assert(LWLockTranchesAllocated >= LWTRANCHE_FIRST_USER_DEFINED);
@@ -595,7 +595,7 @@ LWLockNewTrancheId(void)
* (TopMemoryContext, static variable, or similar).
*/
void
-LWLockRegisterTranche(int tranche_id, char *tranche_name)
+LWLockRegisterTranche(int tranche_id, const char *tranche_name)
{
Assert(LWLockTrancheArray != NULL);
@@ -607,7 +607,7 @@ LWLockRegisterTranche(int tranche_id, char *tranche_name)
while (i <= tranche_id)
i *= 2;
- LWLockTrancheArray = (char **)
+ LWLockTrancheArray = (const char **)
repalloc(LWLockTrancheArray, i * sizeof(char *));
LWLockTranchesAllocated = i;
while (j < LWLockTranchesAllocated)
diff --git a/src/backend/tsearch/dict_thesaurus.c b/src/backend/tsearch/dict_thesaurus.c
index 1b6085add3..2a458db691 100644
--- a/src/backend/tsearch/dict_thesaurus.c
+++ b/src/backend/tsearch/dict_thesaurus.c
@@ -165,7 +165,7 @@ addWrd(DictThesaurus *d, char *b, char *e, uint32 idsubst, uint16 nwrd, uint16 p
#define TR_INSUBS 4
static void
-thesaurusRead(char *filename, DictThesaurus *d)
+thesaurusRead(const char *filename, DictThesaurus *d)
{
tsearch_readline_state trst;
uint32 idsubst = 0;
diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c
index 6527c73731..976451a1ee 100644
--- a/src/backend/tsearch/spell.c
+++ b/src/backend/tsearch/spell.c
@@ -450,7 +450,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag)
* otherwise returns false.
*/
static bool
-IsAffixFlagInUse(IspellDict *Conf, int affix, char *affixflag)
+IsAffixFlagInUse(IspellDict *Conf, int affix, const char *affixflag)
{
char *flagcur;
char flag[BUFSIZ];
@@ -596,7 +596,7 @@ NIImportDictionary(IspellDict *Conf, const char *filename)
* Returns 1 if the word was found in the prefix tree, else returns 0.
*/
static int
-FindWord(IspellDict *Conf, const char *word, char *affixflag, int flag)
+FindWord(IspellDict *Conf, const char *word, const char *affixflag, int flag)
{
SPNode *node = Conf->Dictionary;
SPNodeData *StopLow,
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 18b3b949ac..edc5b03d28 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -441,7 +441,7 @@ float8in(PG_FUNCTION_ARGS)
* unreasonable amount of extra casting both here and in callers, so we don't.
*/
double
-float8in_internal(char *num, char **endptr_p,
+float8in_internal(const char *num, char **endptr_p,
const char *type_name, const char *orig_string)
{
double val;
@@ -482,37 +482,37 @@ float8in_internal(char *num, char **endptr_p,
if (pg_strncasecmp(num, "NaN", 3) == 0)
{
val = get_float8_nan();
- endptr = num + 3;
+ endptr = (char *) num + 3;
}
else if (pg_strncasecmp(num, "Infinity", 8) == 0)
{
val = get_float8_infinity();
- endptr = num + 8;
+ endptr = (char *) num + 8;
}
else if (pg_strncasecmp(num, "+Infinity", 9) == 0)
{
val = get_float8_infinity();
- endptr = num + 9;
+ endptr = (char *) num + 9;
}
else if (pg_strncasecmp(num, "-Infinity", 9) == 0)
{
val = -get_float8_infinity();
- endptr = num + 9;
+ endptr = (char *) num + 9;
}
else if (pg_strncasecmp(num, "inf", 3) == 0)
{
val = get_float8_infinity();
- endptr = num + 3;
+ endptr = (char *) num + 3;
}
else if (pg_strncasecmp(num, "+inf", 4) == 0)
{
val = get_float8_infinity();
- endptr = num + 4;
+ endptr = (char *) num + 4;
}
else if (pg_strncasecmp(num, "-inf", 4) == 0)
{
val = -get_float8_infinity();
- endptr = num + 4;
+ endptr = (char *) num + 4;
}
else if (save_errno == ERANGE)
{
diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c
index 5285aa54f1..b3b9fc522d 100644
--- a/src/backend/utils/adt/genfile.c
+++ b/src/backend/utils/adt/genfile.c
@@ -477,7 +477,7 @@ pg_ls_dir_1arg(PG_FUNCTION_ARGS)
/* Generic function to return a directory listing of files */
static Datum
-pg_ls_dir_files(FunctionCallInfo fcinfo, char *dir)
+pg_ls_dir_files(FunctionCallInfo fcinfo, const char *dir)
{
FuncCallContext *funcctx;
struct dirent *de;
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index b1e70a0d19..627053b262 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -343,7 +343,7 @@ static void set_relation_column_names(deparse_namespace *dpns,
deparse_columns *colinfo);
static void set_join_column_names(deparse_namespace *dpns, RangeTblEntry *rte,
deparse_columns *colinfo);
-static bool colname_is_unique(char *colname, deparse_namespace *dpns,
+static bool colname_is_unique(const char *colname, deparse_namespace *dpns,
deparse_columns *colinfo);
static char *make_colname_unique(char *colname, deparse_namespace *dpns,
deparse_columns *colinfo);
@@ -4100,7 +4100,7 @@ set_join_column_names(deparse_namespace *dpns, RangeTblEntry *rte,
* dpns is query-wide info, colinfo is for the column's RTE
*/
static bool
-colname_is_unique(char *colname, deparse_namespace *dpns,
+colname_is_unique(const char *colname, deparse_namespace *dpns,
deparse_columns *colinfo)
{
int i;
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 4b5483dbb9..9e62c248a1 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -1379,7 +1379,7 @@ text_position_cleanup(TextPositionState *state)
* whether arg1 is less than, equal to, or greater than arg2.
*/
int
-varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid)
+varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid)
{
int result;
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 24229c2dff..88d54d4796 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -146,7 +146,7 @@ static text *xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt);
static int xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj,
ArrayBuildState *astate,
PgXmlErrorContext *xmlerrcxt);
-static xmlChar *pg_xmlCharStrndup(char *str, size_t len);
+static xmlChar *pg_xmlCharStrndup(const char *str, size_t len);
#endif /* USE_LIBXML */
static void xmldata_root_element_start(StringInfo result, const char *eltname,
@@ -192,11 +192,11 @@ typedef struct XmlTableBuilderData
static void XmlTableInitOpaque(struct TableFuncScanState *state, int natts);
static void XmlTableSetDocument(struct TableFuncScanState *state, Datum value);
-static void XmlTableSetNamespace(struct TableFuncScanState *state, char *name,
- char *uri);
-static void XmlTableSetRowFilter(struct TableFuncScanState *state, char *path);
+static void XmlTableSetNamespace(struct TableFuncScanState *state, const char *name,
+ const char *uri);
+static void XmlTableSetRowFilter(struct TableFuncScanState *state, const char *path);
static void XmlTableSetColumnFilter(struct TableFuncScanState *state,
- char *path, int colnum);
+ const char *path, int colnum);
static bool XmlTableFetchRow(struct TableFuncScanState *state);
static Datum XmlTableGetValue(struct TableFuncScanState *state, int colnum,
Oid typid, int32 typmod, bool *isnull);
@@ -765,7 +765,7 @@ xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace)
xmltype *
-xmlpi(char *target, text *arg, bool arg_is_null, bool *result_is_null)
+xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null)
{
#ifdef USE_LIBXML
xmltype *result;
@@ -1164,7 +1164,7 @@ xml_pnstrdup(const xmlChar *str, size_t len)
/* Ditto, except input is char* */
static xmlChar *
-pg_xmlCharStrndup(char *str, size_t len)
+pg_xmlCharStrndup(const char *str, size_t len)
{
xmlChar *result;
@@ -1850,7 +1850,7 @@ appendStringInfoLineSeparator(StringInfo str)
* Convert one char in the current server encoding to a Unicode codepoint.
*/
static pg_wchar
-sqlchar_to_unicode(char *s)
+sqlchar_to_unicode(const char *s)
{
char *utf8string;
pg_wchar ret[2]; /* need space for trailing zero */
@@ -1894,12 +1894,12 @@ is_valid_xml_namechar(pg_wchar c)
* Map SQL identifier to XML name; see SQL/XML:2008 section 9.1.
*/
char *
-map_sql_identifier_to_xml_name(char *ident, bool fully_escaped,
+map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped,
bool escape_period)
{
#ifdef USE_LIBXML
StringInfoData buf;
- char *p;
+ const char *p;
/*
* SQL/XML doesn't make use of this case anywhere, so it's probably a
@@ -1970,10 +1970,10 @@ unicode_to_sqlchar(pg_wchar c)
* Map XML name to SQL identifier; see SQL/XML:2008 section 9.3.
*/
char *
-map_xml_name_to_sql_identifier(char *name)
+map_xml_name_to_sql_identifier(const char *name)
{
StringInfoData buf;
- char *p;
+ const char *p;
initStringInfo(&buf);
@@ -3009,7 +3009,7 @@ database_to_xml_and_xmlschema(PG_FUNCTION_ARGS)
* 9.2.
*/
static char *
-map_multipart_sql_identifier_to_xml_name(char *a, char *b, char *c, char *d)
+map_multipart_sql_identifier_to_xml_name(const char *a, const char *b, const char *c, const char *d)
{
StringInfoData result;
@@ -4292,7 +4292,7 @@ XmlTableSetDocument(TableFuncScanState *state, Datum value)
* Add a namespace declaration
*/
static void
-XmlTableSetNamespace(TableFuncScanState *state, char *name, char *uri)
+XmlTableSetNamespace(TableFuncScanState *state, const char *name, const char *uri)
{
#ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
@@ -4318,7 +4318,7 @@ XmlTableSetNamespace(TableFuncScanState *state, char *name, char *uri)
* Install the row-filter Xpath expression.
*/
static void
-XmlTableSetRowFilter(TableFuncScanState *state, char *path)
+XmlTableSetRowFilter(TableFuncScanState *state, const char *path)
{
#ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
@@ -4347,7 +4347,7 @@ XmlTableSetRowFilter(TableFuncScanState *state, char *path)
* Install the column-filter Xpath expression, for the given column.
*/
static void
-XmlTableSetColumnFilter(TableFuncScanState *state, char *path, int colnum)
+XmlTableSetColumnFilter(TableFuncScanState *state, const char *path, int colnum)
{
#ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 27fcf5a87f..bb2bc065ef 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -239,10 +239,10 @@ static void writefile(char *path, char **lines);
static FILE *popen_check(const char *command, const char *mode);
static void exit_nicely(void);
static char *get_id(void);
-static int get_encoding_id(char *encoding_name);
-static void set_input(char **dest, char *filename);
+static int get_encoding_id(const char *encoding_name);
+static void set_input(char **dest, const char *filename);
static void check_input(char *path);
-static void write_version_file(char *extrapath);
+static void write_version_file(const char *extrapath);
static void set_null_conf(void);
static void test_config_settings(void);
static void setup_config(void);
@@ -640,7 +640,7 @@ encodingid_to_string(int enc)
* get the encoding id for a given encoding name
*/
static int
-get_encoding_id(char *encoding_name)
+get_encoding_id(const char *encoding_name)
{
int enc;
@@ -751,7 +751,7 @@ find_matching_ts_config(const char *lc_type)
* set name of given input file variable under data directory
*/
static void
-set_input(char **dest, char *filename)
+set_input(char **dest, const char *filename)
{
*dest = psprintf("%s/%s", share_path, filename);
}
@@ -801,7 +801,7 @@ check_input(char *path)
* if extrapath is not NULL
*/
static void
-write_version_file(char *extrapath)
+write_version_file(const char *extrapath)
{
FILE *version_file;
char *path;
diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c
index befcde4630..216853d627 100644
--- a/src/bin/pg_dump/pg_backup_db.c
+++ b/src/bin/pg_dump/pg_backup_db.c
@@ -419,7 +419,7 @@ ExecuteSqlQuery(Archive *AHX, const char *query, ExecStatusType status)
* Execute an SQL query and verify that we got exactly one row back.
*/
PGresult *
-ExecuteSqlQueryForSingleRow(Archive *fout, char *query)
+ExecuteSqlQueryForSingleRow(Archive *fout, const char *query)
{
PGresult *res;
int ntups;
diff --git a/src/bin/pg_dump/pg_backup_db.h b/src/bin/pg_dump/pg_backup_db.h
index 527449e044..a79f5283fe 100644
--- a/src/bin/pg_dump/pg_backup_db.h
+++ b/src/bin/pg_dump/pg_backup_db.h
@@ -16,7 +16,7 @@ extern int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen);
extern void ExecuteSqlStatement(Archive *AHX, const char *query);
extern PGresult *ExecuteSqlQuery(Archive *AHX, const char *query,
ExecStatusType status);
-extern PGresult *ExecuteSqlQueryForSingleRow(Archive *fout, char *query);
+extern PGresult *ExecuteSqlQueryForSingleRow(Archive *fout, const char *query);
extern void EndDBCopyMode(Archive *AHX, const char *tocEntryTag);
diff --git a/src/bin/pg_rewind/fetch.c b/src/bin/pg_rewind/fetch.c
index e9353d8866..13553e3b5a 100644
--- a/src/bin/pg_rewind/fetch.c
+++ b/src/bin/pg_rewind/fetch.c
@@ -51,7 +51,7 @@ executeFileMap(void)
* handy for text files.
*/
char *
-fetchFile(char *filename, size_t *filesize)
+fetchFile(const char *filename, size_t *filesize)
{
if (datadir_source)
return slurpFile(datadir_source, filename, filesize);
diff --git a/src/bin/pg_rewind/fetch.h b/src/bin/pg_rewind/fetch.h
index 1e08f76b3e..7288120a0b 100644
--- a/src/bin/pg_rewind/fetch.h
+++ b/src/bin/pg_rewind/fetch.h
@@ -24,7 +24,7 @@
* config options.
*/
extern void fetchSourceFileList(void);
-extern char *fetchFile(char *filename, size_t *filesize);
+extern char *fetchFile(const char *filename, size_t *filesize);
extern void executeFileMap(void);
/* in libpq_fetch.c */
diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c
index c74eb25e18..f7f2ebdacf 100644
--- a/src/bin/pg_upgrade/option.c
+++ b/src/bin/pg_upgrade/option.c
@@ -22,7 +22,7 @@
static void usage(void);
static void check_required_directory(char **dirpath, char **configpath,
- char *envVarName, char *cmdLineOption, char *description);
+ const char *envVarName, const char *cmdLineOption, const char *description);
#define FIX_DEFAULT_READ_ONLY "-c default_transaction_read_only=false"
@@ -341,8 +341,8 @@ usage(void)
*/
static void
check_required_directory(char **dirpath, char **configpath,
- char *envVarName, char *cmdLineOption,
- char *description)
+ const char *envVarName, const char *cmdLineOption,
+ const char *description)
{
if (*dirpath == NULL || strlen(*dirpath) == 0)
{
diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c
index d44fefb457..c10103f0bf 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -363,7 +363,7 @@ create_new_objects(void)
* Delete the given subdirectory contents from the new cluster
*/
static void
-remove_new_subdir(char *subdir, bool rmtopdir)
+remove_new_subdir(const char *subdir, bool rmtopdir)
{
char new_path[MAXPGPATH];
@@ -380,7 +380,7 @@ remove_new_subdir(char *subdir, bool rmtopdir)
* Copy the files from the old cluster into it
*/
static void
-copy_subdir_files(char *old_subdir, char *new_subdir)
+copy_subdir_files(const char *old_subdir, const char *new_subdir)
{
char old_path[MAXPGPATH];
char new_path[MAXPGPATH];
diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c
index 53eca4c8e0..6443eda6df 100644
--- a/src/bin/pg_waldump/pg_waldump.c
+++ b/src/bin/pg_waldump/pg_waldump.c
@@ -175,7 +175,7 @@ open_file_in_directory(const char *directory, const char *fname)
* wal segment size.
*/
static bool
-search_directory(char *directory, char *fname)
+search_directory(const char *directory, const char *fname)
{
int fd = -1;
DIR *xldir;
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 5d8a01c72c..07b4565fbb 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -1837,7 +1837,7 @@ preparedStatementName(char *buffer, int file, int state)
}
static void
-commandFailed(CState *st, char *message)
+commandFailed(CState *st, const char *message)
{
fprintf(stderr,
"client %d aborted in command %d of script %d; %s\n",
@@ -3500,7 +3500,7 @@ addScript(ParsedScript script)
}
static void
-printSimpleStats(char *prefix, SimpleStats *ss)
+printSimpleStats(const char *prefix, SimpleStats *ss)
{
/* print NaN if no transactions where executed */
double latency = ss->sum / ss->count;
diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h
index bfef2df420..eb1c6728d4 100644
--- a/src/include/access/gist_private.h
+++ b/src/include/access/gist_private.h
@@ -503,7 +503,7 @@ extern void gistSplitByKey(Relation r, Page page, IndexTuple *itup,
/* gistbuild.c */
extern IndexBuildResult *gistbuild(Relation heap, Relation index,
struct IndexInfo *indexInfo);
-extern void gistValidateBufferingOption(char *value);
+extern void gistValidateBufferingOption(const char *value);
/* gistbuildbuffers.c */
extern GISTBuildBuffers *gistInitBuildBuffers(int pagesPerBuffer, int levelStep,
diff --git a/src/include/access/reloptions.h b/src/include/access/reloptions.h
index 5cdaa3bff1..cd43e3a52e 100644
--- a/src/include/access/reloptions.h
+++ b/src/include/access/reloptions.h
@@ -108,7 +108,7 @@ typedef struct relopt_real
} relopt_real;
/* validation routines for strings */
-typedef void (*validate_string_relopt) (char *value);
+typedef void (*validate_string_relopt) (const char *value);
typedef struct relopt_string
{
@@ -246,17 +246,17 @@ typedef struct
extern relopt_kind add_reloption_kind(void);
-extern void add_bool_reloption(bits32 kinds, char *name, char *desc,
+extern void add_bool_reloption(bits32 kinds, const char *name, const char *desc,
bool default_val);
-extern void add_int_reloption(bits32 kinds, char *name, char *desc,
+extern void add_int_reloption(bits32 kinds, const char *name, const char *desc,
int default_val, int min_val, int max_val);
-extern void add_real_reloption(bits32 kinds, char *name, char *desc,
+extern void add_real_reloption(bits32 kinds, const char *name, const char *desc,
double default_val, double min_val, double max_val);
-extern void add_string_reloption(bits32 kinds, char *name, char *desc,
- char *default_val, validate_string_relopt validator);
+extern void add_string_reloption(bits32 kinds, const char *name, const char *desc,
+ const char *default_val, validate_string_relopt validator);
extern Datum transformRelOptions(Datum oldOptions, List *defList,
- char *namspace, char *validnsps[],
+ const char *namspace, char *validnsps[],
bool ignoreOids, bool isReset);
extern List *untransformRelOptions(Datum options);
extern bytea *extractRelOptions(HeapTuple tuple, TupleDesc tupdesc,
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index f2c10f905f..118b0a8432 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -350,14 +350,14 @@ extern void CommitTransactionCommand(void);
extern void AbortCurrentTransaction(void);
extern void BeginTransactionBlock(void);
extern bool EndTransactionBlock(void);
-extern bool PrepareTransactionBlock(char *gid);
+extern bool PrepareTransactionBlock(const char *gid);
extern void UserAbortTransactionBlock(void);
extern void BeginImplicitTransactionBlock(void);
extern void EndImplicitTransactionBlock(void);
extern void ReleaseSavepoint(List *options);
-extern void DefineSavepoint(char *name);
+extern void DefineSavepoint(const char *name);
extern void RollbackToSavepoint(List *options);
-extern void BeginInternalSubTransaction(char *name);
+extern void BeginInternalSubTransaction(const char *name);
extern void ReleaseCurrentSubTransaction(void);
extern void RollbackAndReleaseCurrentSubTransaction(void);
extern bool IsSubTransaction(void);
diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h
index 22a8e63658..7805c3c747 100644
--- a/src/include/access/xlog_internal.h
+++ b/src/include/access/xlog_internal.h
@@ -321,9 +321,9 @@ extern char *recoveryRestoreCommand;
extern bool RestoreArchivedFile(char *path, const char *xlogfname,
const char *recovername, off_t expectedSize,
bool cleanupEnabled);
-extern void ExecuteRecoveryCommand(char *command, char *commandName,
+extern void ExecuteRecoveryCommand(const char *command, const char *commandName,
bool failOnerror);
-extern void KeepFileRestoredFromArchive(char *path, char *xlogfname);
+extern void KeepFileRestoredFromArchive(const char *path, const char *xlogfname);
extern void XLogArchiveNotify(const char *xlog);
extern void XLogArchiveNotifySeg(XLogSegNo segno);
extern void XLogArchiveForceDone(const char *xlog);
diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h
index cb1bc887f8..0fae02295b 100644
--- a/src/include/catalog/heap.h
+++ b/src/include/catalog/heap.h
@@ -109,7 +109,7 @@ extern Node *cookDefault(ParseState *pstate,
Node *raw_default,
Oid atttypid,
int32 atttypmod,
- char *attname);
+ const char *attname);
extern void DeleteRelationTuple(Oid relid);
extern void DeleteAttributeTuples(Oid relid);
diff --git a/src/include/commands/comment.h b/src/include/commands/comment.h
index 85bd801513..0caf0e81ab 100644
--- a/src/include/commands/comment.h
+++ b/src/include/commands/comment.h
@@ -34,11 +34,11 @@ extern ObjectAddress CommentObject(CommentStmt *stmt);
extern void DeleteComments(Oid oid, Oid classoid, int32 subid);
-extern void CreateComments(Oid oid, Oid classoid, int32 subid, char *comment);
+extern void CreateComments(Oid oid, Oid classoid, int32 subid, const char *comment);
extern void DeleteSharedComments(Oid oid, Oid classoid);
-extern void CreateSharedComments(Oid oid, Oid classoid, char *comment);
+extern void CreateSharedComments(Oid oid, Oid classoid, const char *comment);
extern char *GetComment(Oid oid, Oid classoid, int32 subid);
diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h
index f7bb4a54f7..bfead9af3d 100644
--- a/src/include/commands/defrem.h
+++ b/src/include/commands/defrem.h
@@ -39,12 +39,12 @@ extern char *makeObjectName(const char *name1, const char *name2,
extern char *ChooseRelationName(const char *name1, const char *name2,
const char *label, Oid namespaceid);
extern bool CheckIndexCompatible(Oid oldId,
- char *accessMethodName,
+ const char *accessMethodName,
List *attributeList,
List *exclusionOpNames);
extern Oid GetDefaultOpClass(Oid type_id, Oid am_id);
extern Oid ResolveOpClass(List *opclass, Oid attrType,
- char *accessMethodName, Oid accessMethodId);
+ const char *accessMethodName, Oid accessMethodId);
/* commands/functioncmds.c */
extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt);
diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h
index 8f3fc65536..9fbf38629d 100644
--- a/src/include/commands/typecmds.h
+++ b/src/include/commands/typecmds.h
@@ -34,7 +34,7 @@ extern ObjectAddress AlterDomainDefault(List *names, Node *defaultRaw);
extern ObjectAddress AlterDomainNotNull(List *names, bool notNull);
extern ObjectAddress AlterDomainAddConstraint(List *names, Node *constr,
ObjectAddress *constrAddr);
-extern ObjectAddress AlterDomainValidateConstraint(List *names, char *constrName);
+extern ObjectAddress AlterDomainValidateConstraint(List *names, const char *constrName);
extern ObjectAddress AlterDomainDropConstraint(List *names, const char *constrName,
DropBehavior behavior, bool missing_ok);
diff --git a/src/include/commands/view.h b/src/include/commands/view.h
index cf08ce2ac7..46d762db22 100644
--- a/src/include/commands/view.h
+++ b/src/include/commands/view.h
@@ -17,7 +17,7 @@
#include "catalog/objectaddress.h"
#include "nodes/parsenodes.h"
-extern void validateWithCheckOption(char *value);
+extern void validateWithCheckOption(const char *value);
extern ObjectAddress DefineView(ViewStmt *stmt, const char *queryString,
int stmt_location, int stmt_len);
diff --git a/src/include/executor/tablefunc.h b/src/include/executor/tablefunc.h
index a24a555b75..49e8c7c1b2 100644
--- a/src/include/executor/tablefunc.h
+++ b/src/include/executor/tablefunc.h
@@ -53,11 +53,11 @@ typedef struct TableFuncRoutine
{
void (*InitOpaque) (struct TableFuncScanState *state, int natts);
void (*SetDocument) (struct TableFuncScanState *state, Datum value);
- void (*SetNamespace) (struct TableFuncScanState *state, char *name,
- char *uri);
- void (*SetRowFilter) (struct TableFuncScanState *state, char *path);
+ void (*SetNamespace) (struct TableFuncScanState *state, const char *name,
+ const char *uri);
+ void (*SetRowFilter) (struct TableFuncScanState *state, const char *path);
void (*SetColumnFilter) (struct TableFuncScanState *state,
- char *path, int colnum);
+ const char *path, int colnum);
bool (*FetchRow) (struct TableFuncScanState *state);
Datum (*GetValue) (struct TableFuncScanState *state, int colnum,
Oid typid, int32 typmod, bool *isnull);
diff --git a/src/include/parser/parse_relation.h b/src/include/parser/parse_relation.h
index 91542d4f15..290f3b78cb 100644
--- a/src/include/parser/parse_relation.h
+++ b/src/include/parser/parse_relation.h
@@ -54,9 +54,9 @@ extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate,
extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte,
int rtelevelsup);
extern Node *scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte,
- char *colname, int location,
+ const char *colname, int location,
int fuzzy_rte_penalty, FuzzyAttrMatchState *fuzzystate);
-extern Node *colNameToVar(ParseState *pstate, char *colname, bool localonly,
+extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
int location);
extern void markVarForSelectPriv(ParseState *pstate, Var *var,
RangeTblEntry *rte);
@@ -117,7 +117,7 @@ extern void addRTEtoQuery(ParseState *pstate, RangeTblEntry *rte,
bool addToRelNameSpace, bool addToVarNameSpace);
extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn();
extern void errorMissingColumn(ParseState *pstate,
- char *relname, char *colname, int location) pg_attribute_noreturn();
+ const char *relname, const char *colname, int location) pg_attribute_noreturn();
extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
int location, bool include_dropped,
List **colnames, List **colvars);
diff --git a/src/include/parser/parse_target.h b/src/include/parser/parse_target.h
index 44af46b1aa..bb7b7b606b 100644
--- a/src/include/parser/parse_target.h
+++ b/src/include/parser/parse_target.h
@@ -28,7 +28,7 @@ extern TargetEntry *transformTargetEntry(ParseState *pstate,
char *colname, bool resjunk);
extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr,
ParseExprKind exprKind,
- char *colname,
+ const char *colname,
int attrno,
List *indirection,
int location);
diff --git a/src/include/postmaster/bgworker.h b/src/include/postmaster/bgworker.h
index 6b4e631880..b6c5800cfe 100644
--- a/src/include/postmaster/bgworker.h
+++ b/src/include/postmaster/bgworker.h
@@ -140,7 +140,7 @@ extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry;
* If dbname is NULL, connection is made to no specific database;
* only shared catalogs can be accessed.
*/
-extern void BackgroundWorkerInitializeConnection(char *dbname, char *username);
+extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username);
/* Just like the above, but specifying database and user by OID. */
extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid);
diff --git a/src/include/rewrite/rewriteDefine.h b/src/include/rewrite/rewriteDefine.h
index 2e25288bb4..b496a0c154 100644
--- a/src/include/rewrite/rewriteDefine.h
+++ b/src/include/rewrite/rewriteDefine.h
@@ -25,7 +25,7 @@
extern ObjectAddress DefineRule(RuleStmt *stmt, const char *queryString);
-extern ObjectAddress DefineQueryRewrite(char *rulename,
+extern ObjectAddress DefineQueryRewrite(const char *rulename,
Oid event_relid,
Node *event_qual,
CmdType event_type,
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h
index f4c4aed7f9..596fdadc63 100644
--- a/src/include/storage/lwlock.h
+++ b/src/include/storage/lwlock.h
@@ -184,7 +184,7 @@ extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name);
* registration in the main shared memory segment wouldn't work for that case.
*/
extern int LWLockNewTrancheId(void);
-extern void LWLockRegisterTranche(int tranche_id, char *tranche_name);
+extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name);
extern void LWLockInitialize(LWLock *lock, int tranche_id);
/*
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 762532f636..08278f1eee 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -58,7 +58,7 @@ extern float get_float4_infinity(void);
extern double get_float8_nan(void);
extern float get_float4_nan(void);
extern int is_infinite(double val);
-extern double float8in_internal(char *num, char **endptr_p,
+extern double float8in_internal(const char *num, char **endptr_p,
const char *type_name, const char *orig_string);
extern char *float8out_internal(double num);
extern int float4_cmp_internal(float4 a, float4 b);
diff --git a/src/include/utils/dynamic_loader.h b/src/include/utils/dynamic_loader.h
index 6c9287b611..80ac1e3fe6 100644
--- a/src/include/utils/dynamic_loader.h
+++ b/src/include/utils/dynamic_loader.h
@@ -17,8 +17,8 @@
#include "fmgr.h"
-extern void *pg_dlopen(char *filename);
-extern PGFunction pg_dlsym(void *handle, char *funcname);
+extern void *pg_dlopen(const char *filename);
+extern PGFunction pg_dlsym(void *handle, const char *funcname);
extern void pg_dlclose(void *handle);
extern char *pg_dlerror(void);
diff --git a/src/include/utils/varlena.h b/src/include/utils/varlena.h
index cab82ee888..06f3b69893 100644
--- a/src/include/utils/varlena.h
+++ b/src/include/utils/varlena.h
@@ -16,7 +16,7 @@
#include "nodes/pg_list.h"
#include "utils/sortsupport.h"
-extern int varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid);
+extern int varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid);
extern void varstr_sortsupport(SortSupport ssup, Oid collid, bool bpchar);
extern int varstr_levenshtein(const char *source, int slen,
const char *target, int tlen,
diff --git a/src/include/utils/xml.h b/src/include/utils/xml.h
index e6fa0e2051..385b728f42 100644
--- a/src/include/utils/xml.h
+++ b/src/include/utils/xml.h
@@ -65,14 +65,14 @@ extern xmltype *xmlelement(XmlExpr *xexpr,
Datum *named_argvalue, bool *named_argnull,
Datum *argvalue, bool *argnull);
extern xmltype *xmlparse(text *data, XmlOptionType xmloption, bool preserve_whitespace);
-extern xmltype *xmlpi(char *target, text *arg, bool arg_is_null, bool *result_is_null);
+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);
extern bool xml_is_document(xmltype *arg);
extern text *xmltotext_with_xmloption(xmltype *data, XmlOptionType xmloption_arg);
extern char *escape_xml(const char *str);
-extern char *map_sql_identifier_to_xml_name(char *ident, bool fully_escaped, bool escape_period);
-extern char *map_xml_name_to_sql_identifier(char *name);
+extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period);
+extern char *map_xml_name_to_sql_identifier(const char *name);
extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings);
extern int xmlbinary; /* XmlBinaryType, but int for guc enum */
diff --git a/src/interfaces/ecpg/compatlib/informix.c b/src/interfaces/ecpg/compatlib/informix.c
index e9bcb4cde2..13058cf7bf 100644
--- a/src/interfaces/ecpg/compatlib/informix.c
+++ b/src/interfaces/ecpg/compatlib/informix.c
@@ -195,7 +195,7 @@ ecpg_strndup(const char *str, size_t len)
}
int
-deccvasc(char *cp, int len, decimal *np)
+deccvasc(const char *cp, int len, decimal *np)
{
char *str;
int ret = 0;
@@ -520,7 +520,7 @@ rdatestr(date d, char *str)
*
*/
int
-rstrdate(char *str, date * d)
+rstrdate(const char *str, date * d)
{
return rdefmtdate(d, "mm/dd/yyyy", str);
}
@@ -545,7 +545,7 @@ rjulmdy(date d, short mdy[3])
}
int
-rdefmtdate(date * d, char *fmt, char *str)
+rdefmtdate(date * d, const char *fmt, const char *str)
{
/* TODO: take care of DBCENTURY environment variable */
/* PGSQL functions allow all centuries */
@@ -571,7 +571,7 @@ rdefmtdate(date * d, char *fmt, char *str)
}
int
-rfmtdate(date d, char *fmt, char *str)
+rfmtdate(date d, const char *fmt, char *str)
{
errno = 0;
if (PGTYPESdate_fmt_asc(d, fmt, str) == 0)
@@ -747,7 +747,7 @@ initValue(long lng_val)
/* return the position oft the right-most dot in some string */
static int
-getRightMostDot(char *str)
+getRightMostDot(const char *str)
{
size_t len = strlen(str);
int i,
@@ -765,7 +765,7 @@ getRightMostDot(char *str)
/* And finally some misc functions */
int
-rfmtlong(long lng_val, char *fmt, char *outbuf)
+rfmtlong(long lng_val, const char *fmt, char *outbuf)
{
size_t fmt_len = strlen(fmt);
size_t temp_len;
@@ -1047,7 +1047,7 @@ rsetnull(int t, char *ptr)
}
int
-risnull(int t, char *ptr)
+risnull(int t, const char *ptr)
{
return ECPGis_noind_null(t, ptr);
}
diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c
index 2084d7fe60..8f720b2c54 100644
--- a/src/interfaces/ecpg/ecpglib/misc.c
+++ b/src/interfaces/ecpg/ecpglib/misc.c
@@ -375,7 +375,7 @@ ECPGset_noind_null(enum ECPGttype type, void *ptr)
}
static bool
-_check(unsigned char *ptr, int length)
+_check(const unsigned char *ptr, int length)
{
for (length--; length >= 0; length--)
if (ptr[length] != 0xff)
@@ -385,36 +385,36 @@ _check(unsigned char *ptr, int length)
}
bool
-ECPGis_noind_null(enum ECPGttype type, void *ptr)
+ECPGis_noind_null(enum ECPGttype type, const void *ptr)
{
switch (type)
{
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_string:
- if (*((char *) ptr) == '\0')
+ if (*((const char *) ptr) == '\0')
return true;
break;
case ECPGt_short:
case ECPGt_unsigned_short:
- if (*((short int *) ptr) == SHRT_MIN)
+ if (*((const short int *) ptr) == SHRT_MIN)
return true;
break;
case ECPGt_int:
case ECPGt_unsigned_int:
- if (*((int *) ptr) == INT_MIN)
+ if (*((const int *) ptr) == INT_MIN)
return true;
break;
case ECPGt_long:
case ECPGt_unsigned_long:
case ECPGt_date:
- if (*((long *) ptr) == LONG_MIN)
+ if (*((const long *) ptr) == LONG_MIN)
return true;
break;
#ifdef HAVE_LONG_LONG_INT
case ECPGt_long_long:
case ECPGt_unsigned_long_long:
- if (*((long long *) ptr) == LONG_LONG_MIN)
+ if (*((const long long *) ptr) == LONG_LONG_MIN)
return true;
break;
#endif /* HAVE_LONG_LONG_INT */
@@ -425,15 +425,15 @@ ECPGis_noind_null(enum ECPGttype type, void *ptr)
return _check(ptr, sizeof(double));
break;
case ECPGt_varchar:
- if (*(((struct ECPGgeneric_varchar *) ptr)->arr) == 0x00)
+ if (*(((const struct ECPGgeneric_varchar *) ptr)->arr) == 0x00)
return true;
break;
case ECPGt_decimal:
- if (((decimal *) ptr)->sign == NUMERIC_NULL)
+ if (((const decimal *) ptr)->sign == NUMERIC_NULL)
return true;
break;
case ECPGt_numeric:
- if (((numeric *) ptr)->sign == NUMERIC_NULL)
+ if (((const numeric *) ptr)->sign == NUMERIC_NULL)
return true;
break;
case ECPGt_interval:
diff --git a/src/interfaces/ecpg/include/ecpg_informix.h b/src/interfaces/ecpg/include/ecpg_informix.h
index dd6258152a..a5260a5542 100644
--- a/src/interfaces/ecpg/include/ecpg_informix.h
+++ b/src/interfaces/ecpg/include/ecpg_informix.h
@@ -36,15 +36,15 @@ extern "C"
extern int rdatestr(date, char *);
extern void rtoday(date *);
extern int rjulmdy(date, short *);
-extern int rdefmtdate(date *, char *, char *);
-extern int rfmtdate(date, char *, char *);
+extern int rdefmtdate(date *, const char *, const char *);
+extern int rfmtdate(date, const char *, char *);
extern int rmdyjul(short *, date *);
-extern int rstrdate(char *, date *);
+extern int rstrdate(const char *, date *);
extern int rdayofweek(date);
-extern int rfmtlong(long, char *, char *);
+extern int rfmtlong(long, const char *, char *);
extern int rgetmsg(int, char *, int);
-extern int risnull(int, char *);
+extern int risnull(int, const char *);
extern int rsetnull(int, char *);
extern int rtypalign(int, int);
extern int rtypmsize(int, int);
@@ -62,7 +62,7 @@ extern void ECPG_informix_reset_sqlca(void);
int decadd(decimal *, decimal *, decimal *);
int deccmp(decimal *, decimal *);
void deccopy(decimal *, decimal *);
-int deccvasc(char *, int, decimal *);
+int deccvasc(const char *, int, decimal *);
int deccvdbl(double, decimal *);
int deccvint(int, decimal *);
int deccvlong(long, decimal *);
diff --git a/src/interfaces/ecpg/include/ecpglib.h b/src/interfaces/ecpg/include/ecpglib.h
index 536b7506ff..8a601996d2 100644
--- a/src/interfaces/ecpg/include/ecpglib.h
+++ b/src/interfaces/ecpg/include/ecpglib.h
@@ -80,7 +80,7 @@ bool ECPGset_desc_header(int, const char *, int);
bool ECPGset_desc(int, const char *, int,...);
void ECPGset_noind_null(enum ECPGttype, void *);
-bool ECPGis_noind_null(enum ECPGttype, void *);
+bool ECPGis_noind_null(enum ECPGttype, const void *);
bool ECPGdescribe(int, int, bool, const char *, const char *,...);
void ECPGset_var(int, void *, int);
diff --git a/src/interfaces/ecpg/include/pgtypes_date.h b/src/interfaces/ecpg/include/pgtypes_date.h
index 3d1a181b2b..1017341ab3 100644
--- a/src/interfaces/ecpg/include/pgtypes_date.h
+++ b/src/interfaces/ecpg/include/pgtypes_date.h
@@ -14,14 +14,14 @@ extern "C"
extern date * PGTYPESdate_new(void);
extern void PGTYPESdate_free(date *);
-extern date PGTYPESdate_from_asc(char *, char **);
+extern date PGTYPESdate_from_asc(const char *, char **);
extern char *PGTYPESdate_to_asc(date);
extern date PGTYPESdate_from_timestamp(timestamp);
extern void PGTYPESdate_julmdy(date, int *);
extern void PGTYPESdate_mdyjul(int *, date *);
extern int PGTYPESdate_dayofweek(date);
extern void PGTYPESdate_today(date *);
-extern int PGTYPESdate_defmt_asc(date *, const char *, char *);
+extern int PGTYPESdate_defmt_asc(date *, const char *, const char *);
extern int PGTYPESdate_fmt_asc(date, const char *, char *);
#ifdef __cplusplus
diff --git a/src/interfaces/ecpg/include/pgtypes_numeric.h b/src/interfaces/ecpg/include/pgtypes_numeric.h
index 56c46ea272..4613d0d5ed 100644
--- a/src/interfaces/ecpg/include/pgtypes_numeric.h
+++ b/src/interfaces/ecpg/include/pgtypes_numeric.h
@@ -43,7 +43,7 @@ numeric *PGTYPESnumeric_new(void);
decimal *PGTYPESdecimal_new(void);
void PGTYPESnumeric_free(numeric *);
void PGTYPESdecimal_free(decimal *);
-numeric *PGTYPESnumeric_from_asc(char *, char **);
+numeric *PGTYPESnumeric_from_asc(const char *, char **);
char *PGTYPESnumeric_to_asc(numeric *, int);
int PGTYPESnumeric_add(numeric *, numeric *, numeric *);
int PGTYPESnumeric_sub(numeric *, numeric *, numeric *);
diff --git a/src/interfaces/ecpg/include/pgtypes_timestamp.h b/src/interfaces/ecpg/include/pgtypes_timestamp.h
index 283ecca25e..fdc55dc192 100644
--- a/src/interfaces/ecpg/include/pgtypes_timestamp.h
+++ b/src/interfaces/ecpg/include/pgtypes_timestamp.h
@@ -14,12 +14,12 @@ extern "C"
{
#endif
-extern timestamp PGTYPEStimestamp_from_asc(char *, char **);
+extern timestamp PGTYPEStimestamp_from_asc(const char *, char **);
extern char *PGTYPEStimestamp_to_asc(timestamp);
extern int PGTYPEStimestamp_sub(timestamp *, timestamp *, interval *);
extern int PGTYPEStimestamp_fmt_asc(timestamp *, char *, int, const char *);
extern void PGTYPEStimestamp_current(timestamp *);
-extern int PGTYPEStimestamp_defmt_asc(char *, const char *, timestamp *);
+extern int PGTYPEStimestamp_defmt_asc(const char *, const char *, timestamp *);
extern int PGTYPEStimestamp_add_interval(timestamp * tin, interval * span, timestamp * tout);
extern int PGTYPEStimestamp_sub_interval(timestamp * tin, interval * span, timestamp * tout);
diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c
index 33c9011a71..6b081d151a 100644
--- a/src/interfaces/ecpg/pgtypeslib/datetime.c
+++ b/src/interfaces/ecpg/pgtypeslib/datetime.c
@@ -45,7 +45,7 @@ PGTYPESdate_from_timestamp(timestamp dt)
}
date
-PGTYPESdate_from_asc(char *str, char **endptr)
+PGTYPESdate_from_asc(const char *str, char **endptr)
{
date dDate;
fsec_t fsec;
@@ -329,7 +329,7 @@ PGTYPESdate_fmt_asc(date dDate, const char *fmtstring, char *outbuf)
#define PGTYPES_DATE_MONTH_MAXLENGTH 20 /* probably even less :-) */
int
-PGTYPESdate_defmt_asc(date * d, const char *fmt, char *str)
+PGTYPESdate_defmt_asc(date * d, const char *fmt, const char *str)
{
/*
* token[2] = { 4,6 } means that token 2 starts at position 4 and ends at
diff --git a/src/interfaces/ecpg/pgtypeslib/dt.h b/src/interfaces/ecpg/pgtypeslib/dt.h
index 5a192ddc45..9507b0c41f 100644
--- a/src/interfaces/ecpg/pgtypeslib/dt.h
+++ b/src/interfaces/ecpg/pgtypeslib/dt.h
@@ -320,7 +320,7 @@ int DecodeUnits(int field, char *lowtoken, int *val);
bool CheckDateTokenTables(void);
int EncodeDateOnly(struct tm *tm, int style, char *str, bool EuroDates);
int GetEpochTime(struct tm *);
-int ParseDateTime(char *, char *, char **, int *, int *, char **);
+int ParseDateTime(const char *, char *, char **, int *, int *, char **);
int DecodeDateTime(char **, int *, int, int *, struct tm *, fsec_t *, bool);
void j2date(int, int *, int *, int *);
void GetCurrentDateTime(struct tm *);
diff --git a/src/interfaces/ecpg/pgtypeslib/dt_common.c b/src/interfaces/ecpg/pgtypeslib/dt_common.c
index a26d61b32c..bda7037b86 100644
--- a/src/interfaces/ecpg/pgtypeslib/dt_common.c
+++ b/src/interfaces/ecpg/pgtypeslib/dt_common.c
@@ -1604,13 +1604,13 @@ DecodePosixTimezone(char *str, int *tzp)
* The field[] and ftype[] arrays must have at least MAXDATEFIELDS entries.
*/
int
-ParseDateTime(char *timestr, char *lowstr,
+ParseDateTime(const char *timestr, char *lowstr,
char **field, int *ftype, int *numfields, char **endstr)
{
int nf = 0;
char *lp = lowstr;
- *endstr = timestr;
+ *endstr = (char *) timestr;
/* outer loop through fields */
while (*(*endstr) != '\0')
{
diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c
index 30f2ccbcb7..4f7c4c68b1 100644
--- a/src/interfaces/ecpg/pgtypeslib/interval.c
+++ b/src/interfaces/ecpg/pgtypeslib/interval.c
@@ -65,7 +65,7 @@ AdjustFractDays(double frac, struct /* pg_ */ tm *tm, fsec_t *fsec, int scale)
/* copy&pasted from .../src/backend/utils/adt/datetime.c */
static int
-ParseISO8601Number(char *str, char **endptr, int *ipart, double *fpart)
+ParseISO8601Number(const char *str, char **endptr, int *ipart, double *fpart)
{
double val;
@@ -90,7 +90,7 @@ ParseISO8601Number(char *str, char **endptr, int *ipart, double *fpart)
/* copy&pasted from .../src/backend/utils/adt/datetime.c */
static int
-ISO8601IntegerWidth(char *fieldstart)
+ISO8601IntegerWidth(const char *fieldstart)
{
/* We might have had a leading '-' */
if (*fieldstart == '-')
diff --git a/src/interfaces/ecpg/pgtypeslib/numeric.c b/src/interfaces/ecpg/pgtypeslib/numeric.c
index a8619168ff..42907b6bd9 100644
--- a/src/interfaces/ecpg/pgtypeslib/numeric.c
+++ b/src/interfaces/ecpg/pgtypeslib/numeric.c
@@ -160,13 +160,13 @@ PGTYPESdecimal_new(void)
* ----------
*/
static int
-set_var_from_str(char *str, char **ptr, numeric *dest)
+set_var_from_str(const char *str, char **ptr, numeric *dest)
{
bool have_dp = FALSE;
int i = 0;
errno = 0;
- *ptr = str;
+ *ptr = (char *) str;
while (*(*ptr))
{
if (!isspace((unsigned char) *(*ptr)))
@@ -403,7 +403,7 @@ get_str_from_var(numeric *var, int dscale)
}
numeric *
-PGTYPESnumeric_from_asc(char *str, char **endptr)
+PGTYPESnumeric_from_asc(const char *str, char **endptr)
{
numeric *value = (numeric *) pgtypes_alloc(sizeof(numeric));
int ret;
diff --git a/src/interfaces/ecpg/pgtypeslib/timestamp.c b/src/interfaces/ecpg/pgtypeslib/timestamp.c
index fa5b32ed9d..ee37062e0b 100644
--- a/src/interfaces/ecpg/pgtypeslib/timestamp.c
+++ b/src/interfaces/ecpg/pgtypeslib/timestamp.c
@@ -206,7 +206,7 @@ EncodeSpecialTimestamp(timestamp dt, char *str)
} /* EncodeSpecialTimestamp() */
timestamp
-PGTYPEStimestamp_from_asc(char *str, char **endptr)
+PGTYPEStimestamp_from_asc(const char *str, char **endptr)
{
timestamp result;
int64 noresult = 0;
@@ -815,7 +815,7 @@ PGTYPEStimestamp_sub(timestamp * ts1, timestamp * ts2, interval * iv)
}
int
-PGTYPEStimestamp_defmt_asc(char *str, const char *fmt, timestamp * d)
+PGTYPEStimestamp_defmt_asc(const char *str, const char *fmt, timestamp * d)
{
int year,
month,
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index 256a3c395c..4abbf93d19 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -74,7 +74,7 @@ ECPGstruct_member_dup(struct ECPGstruct_member *rm)
/* The NAME argument is copied. The type argument is preserved as a pointer. */
void
-ECPGmake_struct_member(char *name, struct ECPGtype *type, struct ECPGstruct_member **start)
+ECPGmake_struct_member(const char *name, struct ECPGtype *type, struct ECPGstruct_member **start)
{
struct ECPGstruct_member *ptr,
*ne =
diff --git a/src/interfaces/ecpg/preproc/type.h b/src/interfaces/ecpg/preproc/type.h
index 4b93336480..fc70d7d218 100644
--- a/src/interfaces/ecpg/preproc/type.h
+++ b/src/interfaces/ecpg/preproc/type.h
@@ -33,7 +33,7 @@ struct ECPGtype
};
/* Everything is malloced. */
-void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **);
+void ECPGmake_struct_member(const char *, struct ECPGtype *, struct ECPGstruct_member **);
struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, char *, int);
struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, char *);
struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *, char *);
diff --git a/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc b/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
index f1a9048889..a147f405ab 100644
--- a/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
@@ -13,7 +13,7 @@ static void
check_return(int ret);
static void
-date_test_strdate(char *input)
+date_test_strdate(const char *input)
{
static int i;
date d;
@@ -38,7 +38,7 @@ date_test_strdate(char *input)
}
static void
-date_test_defmt(char *fmt, char *input)
+date_test_defmt(const char *fmt, const char *input)
{
static int i;
char dbuf[11];
@@ -63,7 +63,7 @@ date_test_defmt(char *fmt, char *input)
}
static void
-date_test_fmt(date d, char *fmt)
+date_test_fmt(date d, const char *fmt)
{
static int i;
char buf[200];
diff --git a/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc b/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
index a1070e1331..2ecf09c837 100644
--- a/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
@@ -13,7 +13,7 @@ static void
check_return(int ret);
static void
-fmtlong(long lng, char *fmt)
+fmtlong(long lng, const char *fmt)
{
static int i;
int r;
diff --git a/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc b/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc
index 0386093d70..5380f9eb5a 100644
--- a/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc
@@ -7,7 +7,7 @@ EXEC SQL include ../regression;
EXEC SQL DEFINE MAXDBLEN 30;
/* Check SQLCODE, and produce a "standard error" if it's wrong! */
-static void sql_check(char *fn, char *caller, int ignore)
+static void sql_check(const char *fn, const char *caller, int ignore)
{
char errorstring[255];
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
index 87a435e9bd..68be08276d 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
@@ -24,7 +24,7 @@ static void
check_return(int ret);
static void
-date_test_strdate(char *input)
+date_test_strdate(const char *input)
{
static int i;
date d;
@@ -49,7 +49,7 @@ date_test_strdate(char *input)
}
static void
-date_test_defmt(char *fmt, char *input)
+date_test_defmt(const char *fmt, const char *input)
{
static int i;
char dbuf[11];
@@ -74,7 +74,7 @@ date_test_defmt(char *fmt, char *input)
}
static void
-date_test_fmt(date d, char *fmt)
+date_test_fmt(date d, const char *fmt)
{
static int i;
char buf[200];
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
index 70e015a130..b2e397e38c 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
@@ -24,7 +24,7 @@ static void
check_return(int ret);
static void
-fmtlong(long lng, char *fmt)
+fmtlong(long lng, const char *fmt)
{
static int i;
int r;
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c b/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
index 4e372a5799..eeb9b62ab4 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
@@ -97,7 +97,7 @@ struct sqlca_t *ECPGget_sqlca(void);
/* Check SQLCODE, and produce a "standard error" if it's wrong! */
-static void sql_check(char *fn, char *caller, int ignore)
+static void sql_check(const char *fn, const char *caller, int ignore)
{
char errorstring[255];
diff --git a/src/interfaces/ecpg/test/expected/preproc-init.c b/src/interfaces/ecpg/test/expected/preproc-init.c
index ca23d348d6..b0e04731fe 100644
--- a/src/interfaces/ecpg/test/expected/preproc-init.c
+++ b/src/interfaces/ecpg/test/expected/preproc-init.c
@@ -114,7 +114,7 @@ static int fe(enum e x)
return (int)x;
}
-static void sqlnotice(char *notice, short trans)
+static void sqlnotice(const char *notice, short trans)
{
if (!notice)
notice = "-empty-";
diff --git a/src/interfaces/ecpg/test/expected/preproc-outofscope.c b/src/interfaces/ecpg/test/expected/preproc-outofscope.c
index f4676a083a..f86968285f 100644
--- a/src/interfaces/ecpg/test/expected/preproc-outofscope.c
+++ b/src/interfaces/ecpg/test/expected/preproc-outofscope.c
@@ -70,7 +70,7 @@ numeric *PGTYPESnumeric_new(void);
decimal *PGTYPESdecimal_new(void);
void PGTYPESnumeric_free(numeric *);
void PGTYPESdecimal_free(decimal *);
-numeric *PGTYPESnumeric_from_asc(char *, char **);
+numeric *PGTYPESnumeric_from_asc(const char *, char **);
char *PGTYPESnumeric_to_asc(numeric *, int);
int PGTYPESnumeric_add(numeric *, numeric *, numeric *);
int PGTYPESnumeric_sub(numeric *, numeric *, numeric *);
diff --git a/src/interfaces/ecpg/test/expected/preproc-whenever.c b/src/interfaces/ecpg/test/expected/preproc-whenever.c
index 922ef76b92..332ef85b10 100644
--- a/src/interfaces/ecpg/test/expected/preproc-whenever.c
+++ b/src/interfaces/ecpg/test/expected/preproc-whenever.c
@@ -24,7 +24,7 @@
#line 5 "whenever.pgc"
-static void print(char *msg)
+static void print(const char *msg)
{
fprintf(stderr, "Error in statement '%s':\n", msg);
sqlprint();
diff --git a/src/interfaces/ecpg/test/expected/sql-sqlda.c b/src/interfaces/ecpg/test/expected/sql-sqlda.c
index ffaf52ca5c..e62e519693 100644
--- a/src/interfaces/ecpg/test/expected/sql-sqlda.c
+++ b/src/interfaces/ecpg/test/expected/sql-sqlda.c
@@ -92,7 +92,7 @@ numeric *PGTYPESnumeric_new(void);
decimal *PGTYPESdecimal_new(void);
void PGTYPESnumeric_free(numeric *);
void PGTYPESdecimal_free(decimal *);
-numeric *PGTYPESnumeric_from_asc(char *, char **);
+numeric *PGTYPESnumeric_from_asc(const char *, char **);
char *PGTYPESnumeric_to_asc(numeric *, int);
int PGTYPESnumeric_add(numeric *, numeric *, numeric *);
int PGTYPESnumeric_sub(numeric *, numeric *, numeric *);
diff --git a/src/interfaces/ecpg/test/preproc/init.pgc b/src/interfaces/ecpg/test/preproc/init.pgc
index 11dc01ade4..b1f71997a2 100644
--- a/src/interfaces/ecpg/test/preproc/init.pgc
+++ b/src/interfaces/ecpg/test/preproc/init.pgc
@@ -35,7 +35,7 @@ static int fe(enum e x)
return (int)x;
}
-static void sqlnotice(char *notice, short trans)
+static void sqlnotice(const char *notice, short trans)
{
if (!notice)
notice = "-empty-";
diff --git a/src/interfaces/ecpg/test/preproc/whenever.pgc b/src/interfaces/ecpg/test/preproc/whenever.pgc
index 9b3ae9e9ec..14cf571e6a 100644
--- a/src/interfaces/ecpg/test/preproc/whenever.pgc
+++ b/src/interfaces/ecpg/test/preproc/whenever.pgc
@@ -4,7 +4,7 @@ exec sql include ../regression;
exec sql whenever sqlerror sqlprint;
-static void print(char *msg)
+static void print(const char *msg)
{
fprintf(stderr, "Error in statement '%s':\n", msg);
sqlprint();
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 6bcf60a712..1cd15c3ce0 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -398,9 +398,9 @@ static int parseServiceFile(const char *serviceFile,
PQconninfoOption *options,
PQExpBuffer errorMessage,
bool *group_found);
-static char *pwdfMatchesString(char *buf, char *token);
-static char *passwordFromFile(char *hostname, char *port, char *dbname,
- char *username, char *pgpassfile);
+static char *pwdfMatchesString(char *buf, const char *token);
+static char *passwordFromFile(const char *hostname, const char *port, const char *dbname,
+ const char *username, const char *pgpassfile);
static void pgpassfileWarning(PGconn *conn);
static void default_threadlock(int acquire);
@@ -6329,10 +6329,10 @@ defaultNoticeProcessor(void *arg, const char *message)
* token doesn't match
*/
static char *
-pwdfMatchesString(char *buf, char *token)
+pwdfMatchesString(char *buf, const char *token)
{
- char *tbuf,
- *ttok;
+ char *tbuf;
+ const char *ttok;
bool bslash = false;
if (buf == NULL || token == NULL)
@@ -6366,8 +6366,8 @@ pwdfMatchesString(char *buf, char *token)
/* Get a password from the password file. Return value is malloc'd. */
static char *
-passwordFromFile(char *hostname, char *port, char *dbname,
- char *username, char *pgpassfile)
+passwordFromFile(const char *hostname, const char *port, const char *dbname,
+ const char *username, const char *pgpassfile)
{
FILE *fp;
struct stat stat_buf;
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index ca0d1bccf8..a57393fbdd 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -293,7 +293,7 @@ static void plperl_return_next_internal(SV *sv);
static char *hek2cstr(HE *he);
static SV **hv_store_string(HV *hv, const char *key, SV *val);
static SV **hv_fetch_string(HV *hv, const char *key);
-static void plperl_create_sub(plperl_proc_desc *desc, char *s, Oid fn_oid);
+static void plperl_create_sub(plperl_proc_desc *desc, const char *s, Oid fn_oid);
static SV *plperl_call_perl_func(plperl_proc_desc *desc,
FunctionCallInfo fcinfo);
static void plperl_compile_callback(void *arg);
@@ -2083,7 +2083,7 @@ plperlu_validator(PG_FUNCTION_ARGS)
* supplied in s, and returns a reference to it
*/
static void
-plperl_create_sub(plperl_proc_desc *prodesc, char *s, Oid fn_oid)
+plperl_create_sub(plperl_proc_desc *prodesc, const char *s, Oid fn_oid)
{
dTHX;
dSP;
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 0156b00bfb..e7ea3ae138 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -438,7 +438,7 @@ string_matches_pattern(const char *str, const char *pattern)
* NOTE: Assumes there is enough room in the target buffer!
*/
void
-replace_string(char *string, char *replace, char *replacement)
+replace_string(char *string, const char *replace, const char *replacement)
{
char *ptr;
@@ -460,7 +460,7 @@ replace_string(char *string, char *replace, char *replacement)
* the given suffix.
*/
static void
-convert_sourcefiles_in(char *source_subdir, char *dest_dir, char *dest_subdir, char *suffix)
+convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const char *dest_subdir, const char *suffix)
{
char testtablespace[MAXPGPATH];
char indir[MAXPGPATH];
diff --git a/src/test/regress/pg_regress.h b/src/test/regress/pg_regress.h
index 4abfc628e5..0d9c4bfac3 100644
--- a/src/test/regress/pg_regress.h
+++ b/src/test/regress/pg_regress.h
@@ -49,5 +49,5 @@ int regression_main(int argc, char *argv[],
init_function ifunc, test_function tfunc);
void add_stringlist_item(_stringlist **listhead, const char *str);
PID_TYPE spawn_process(const char *cmdline);
-void replace_string(char *string, char *replace, char *replacement);
+void replace_string(char *string, const char *replace, const char *replacement);
bool file_exists(const char *file);
--
2.14.3
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
Here is a patch that adds const decorations to many char * arguments in
functions. It should have no impact otherwise; there are very few code
changes caused by it.
+1 in general ...
Some functions have a strtol()-like behavior
where they take in a const char * and return a pointer into that as
another argument. In those cases, I added a cast or two.
... but I'm not sure that it's an improvement in cases where you have to
cast away the const somewhere else. I realize that strtol has an ancient
pedigree, but I do not think it's very good design.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Oct 31, 2017, at 7:46 AM, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote:
Here is a patch that adds const decorations to many char * arguments in
functions. It should have no impact otherwise; there are very few code
changes caused by it. Some functions have a strtol()-like behavior
where they take in a const char * and return a pointer into that as
another argument. In those cases, I added a cast or two.Generally, I find these const decorations useful as easy function
documentation.
+1
I submitted something similar a while back and got into a back and forth
discussion with Tom about it. Anyone interested could take a look at
/messages/by-id/ACF3A030-E3D5-4E68-B744-184E11DE68F3@gmail.com
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Tue, Oct 31, 2017 at 8:26 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
... but I'm not sure that it's an improvement in cases where you have to
cast away the const somewhere else.
I agree. I guess I may be in the minority here but I don't really
like decorating things with const too much because I have tended to
find that once you start adding const, you end up having to add it in
more and more places to avoid warnings, and then eventually that
causes you to have to start casting it away. Perhaps I was just Doing
It Wrong.
Anyway, I don't see much point in having const if you're just going to
have to cast it to non-const. Then it wasn't really very const in the
first place...
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 10/31/17 10:56, Tom Lane wrote:
Some functions have a strtol()-like behavior
where they take in a const char * and return a pointer into that as
another argument. In those cases, I added a cast or two.... but I'm not sure that it's an improvement in cases where you have to
cast away the const somewhere else. I realize that strtol has an ancient
pedigree, but I do not think it's very good design.
Would you prefer leaving the input argument as char *, or change the
endptr argument to const as well?
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
On 10/31/17 10:56, Tom Lane wrote:
Some functions have a strtol()-like behavior
where they take in a const char * and return a pointer into that as
another argument. In those cases, I added a cast or two.
... but I'm not sure that it's an improvement in cases where you have to
cast away the const somewhere else. I realize that strtol has an ancient
pedigree, but I do not think it's very good design.
Would you prefer leaving the input argument as char *, or change the
endptr argument to const as well?
Just leave it as char*. If you change the endptr argument you're going to
force every call site to change their return variable, and some of them
would end up having to cast away the const on their end.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/3/17 13:54, Tom Lane wrote:
Would you prefer leaving the input argument as char *, or change the
endptr argument to const as well?Just leave it as char*. If you change the endptr argument you're going to
force every call site to change their return variable, and some of them
would end up having to cast away the const on their end.
OK, here is an updated patch with the controversial bits removed.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
v2-0001-Add-some-const-decorations-to-prototypes.patchtext/plain; charset=UTF-8; name=v2-0001-Add-some-const-decorations-to-prototypes.patch; x-mac-creator=0; x-mac-type=0Download
From b0fe8bb86a37938dad6bd6d6b7a51ded6afbf78a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Tue, 31 Oct 2017 10:34:31 -0400
Subject: [PATCH v2] Add some const decorations to prototypes
---
contrib/dict_xsyn/dict_xsyn.c | 2 +-
contrib/fuzzystrmatch/dmetaphone.c | 4 +--
contrib/pgcrypto/pgcrypto.c | 4 +--
contrib/seg/seg.c | 4 +--
contrib/seg/segdata.h | 2 +-
contrib/seg/segparse.y | 4 +--
contrib/unaccent/unaccent.c | 2 +-
contrib/uuid-ossp/uuid-ossp.c | 2 +-
src/backend/access/common/reloptions.c | 12 ++++----
src/backend/access/gist/gistbuild.c | 2 +-
src/backend/access/transam/xact.c | 6 ++--
src/backend/access/transam/xlogarchive.c | 4 +--
src/backend/catalog/heap.c | 10 +++----
src/backend/commands/comment.c | 4 +--
src/backend/commands/event_trigger.c | 4 +--
src/backend/commands/extension.c | 4 +--
src/backend/commands/indexcmds.c | 8 +++---
src/backend/commands/opclasscmds.c | 2 +-
src/backend/commands/tablecmds.c | 16 +++++------
src/backend/commands/typecmds.c | 6 ++--
src/backend/commands/view.c | 2 +-
src/backend/libpq/auth.c | 24 ++++++++--------
src/backend/libpq/hba.c | 6 ++--
src/backend/parser/parse_expr.c | 2 +-
src/backend/parser/parse_func.c | 4 +--
src/backend/parser/parse_relation.c | 8 +++---
src/backend/parser/parse_target.c | 2 +-
src/backend/port/dynloader/darwin.c | 8 +++---
src/backend/port/dynloader/darwin.h | 4 +--
src/backend/port/dynloader/hpux.c | 4 +--
src/backend/port/dynloader/hpux.h | 4 +--
src/backend/port/dynloader/linux.c | 4 +--
src/backend/postmaster/postmaster.c | 2 +-
src/backend/replication/basebackup.c | 8 +++---
src/backend/rewrite/rewriteDefine.c | 4 +--
src/backend/snowball/dict_snowball.c | 2 +-
src/backend/storage/lmgr/lwlock.c | 8 +++---
src/backend/tsearch/dict_thesaurus.c | 2 +-
src/backend/tsearch/spell.c | 4 +--
src/backend/utils/adt/genfile.c | 2 +-
src/backend/utils/adt/ruleutils.c | 4 +--
src/backend/utils/adt/varlena.c | 2 +-
src/backend/utils/adt/xml.c | 32 +++++++++++-----------
src/bin/initdb/initdb.c | 12 ++++----
src/bin/pg_dump/pg_backup_db.c | 2 +-
src/bin/pg_dump/pg_backup_db.h | 2 +-
src/bin/pg_rewind/fetch.c | 2 +-
src/bin/pg_rewind/fetch.h | 2 +-
src/bin/pg_upgrade/option.c | 6 ++--
src/bin/pg_upgrade/pg_upgrade.c | 4 +--
src/bin/pg_waldump/pg_waldump.c | 2 +-
src/bin/pgbench/pgbench.c | 4 +--
src/include/access/gist_private.h | 2 +-
src/include/access/reloptions.h | 14 +++++-----
src/include/access/xact.h | 6 ++--
src/include/access/xlog_internal.h | 4 +--
src/include/catalog/heap.h | 2 +-
src/include/commands/comment.h | 4 +--
src/include/commands/defrem.h | 4 +--
src/include/commands/typecmds.h | 2 +-
src/include/commands/view.h | 2 +-
src/include/executor/tablefunc.h | 8 +++---
src/include/parser/parse_relation.h | 6 ++--
src/include/parser/parse_target.h | 2 +-
src/include/postmaster/bgworker.h | 2 +-
src/include/rewrite/rewriteDefine.h | 2 +-
src/include/storage/lwlock.h | 2 +-
src/include/utils/dynamic_loader.h | 4 +--
src/include/utils/varlena.h | 2 +-
src/include/utils/xml.h | 6 ++--
src/interfaces/ecpg/compatlib/informix.c | 14 +++++-----
src/interfaces/ecpg/ecpglib/misc.c | 20 +++++++-------
src/interfaces/ecpg/include/ecpg_informix.h | 12 ++++----
src/interfaces/ecpg/include/ecpglib.h | 2 +-
src/interfaces/ecpg/include/pgtypes_date.h | 2 +-
src/interfaces/ecpg/include/pgtypes_timestamp.h | 2 +-
src/interfaces/ecpg/pgtypeslib/datetime.c | 2 +-
src/interfaces/ecpg/pgtypeslib/interval.c | 4 +--
src/interfaces/ecpg/pgtypeslib/timestamp.c | 2 +-
src/interfaces/ecpg/preproc/type.c | 2 +-
src/interfaces/ecpg/preproc/type.h | 2 +-
.../ecpg/test/compat_informix/rfmtdate.pgc | 6 ++--
.../ecpg/test/compat_informix/rfmtlong.pgc | 2 +-
.../ecpg/test/compat_informix/test_informix2.pgc | 2 +-
.../ecpg/test/expected/compat_informix-rfmtdate.c | 6 ++--
.../ecpg/test/expected/compat_informix-rfmtlong.c | 2 +-
.../test/expected/compat_informix-test_informix2.c | 2 +-
src/interfaces/ecpg/test/expected/preproc-init.c | 2 +-
.../ecpg/test/expected/preproc-whenever.c | 2 +-
src/interfaces/ecpg/test/preproc/init.pgc | 2 +-
src/interfaces/ecpg/test/preproc/whenever.pgc | 2 +-
src/interfaces/libpq/fe-connect.c | 16 +++++------
src/pl/plperl/plperl.c | 4 +--
src/test/regress/pg_regress.c | 4 +--
src/test/regress/pg_regress.h | 2 +-
95 files changed, 236 insertions(+), 236 deletions(-)
diff --git a/contrib/dict_xsyn/dict_xsyn.c b/contrib/dict_xsyn/dict_xsyn.c
index fcf541ee0f..977162951a 100644
--- a/contrib/dict_xsyn/dict_xsyn.c
+++ b/contrib/dict_xsyn/dict_xsyn.c
@@ -70,7 +70,7 @@ compare_syn(const void *a, const void *b)
}
static void
-read_dictionary(DictSyn *d, char *filename)
+read_dictionary(DictSyn *d, const char *filename)
{
char *real_filename = get_tsearch_config_filename(filename, "rules");
tsearch_readline_state trst;
diff --git a/contrib/fuzzystrmatch/dmetaphone.c b/contrib/fuzzystrmatch/dmetaphone.c
index 918ee0d90e..16e4c66167 100644
--- a/contrib/fuzzystrmatch/dmetaphone.c
+++ b/contrib/fuzzystrmatch/dmetaphone.c
@@ -232,7 +232,7 @@ metastring;
*/
static metastring *
-NewMetaString(char *init_str)
+NewMetaString(const char *init_str)
{
metastring *s;
char empty_string[] = "";
@@ -375,7 +375,7 @@ StringAt(metastring *s, int start, int length,...)
static void
-MetaphAdd(metastring *s, char *new_str)
+MetaphAdd(metastring *s, const char *new_str)
{
int add_length;
diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c
index e09f3378da..de09ececcf 100644
--- a/contrib/pgcrypto/pgcrypto.c
+++ b/contrib/pgcrypto/pgcrypto.c
@@ -47,7 +47,7 @@ PG_MODULE_MAGIC;
/* private stuff */
typedef int (*PFN) (const char *name, void **res);
-static void *find_provider(text *name, PFN pf, char *desc, int silent);
+static void *find_provider(text *name, PFN pf, const char *desc, int silent);
/* SQL function: hash(bytea, text) returns bytea */
PG_FUNCTION_INFO_V1(pg_digest);
@@ -474,7 +474,7 @@ pg_random_uuid(PG_FUNCTION_ARGS)
static void *
find_provider(text *name,
PFN provider_lookup,
- char *desc, int silent)
+ const char *desc, int silent)
{
void *res;
char *buf;
diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index e707b18fc6..4f18d0f5fa 100644
--- a/contrib/seg/seg.c
+++ b/contrib/seg/seg.c
@@ -1052,9 +1052,9 @@ restore(char *result, float val, int n)
* a floating point number
*/
int
-significant_digits(char *s)
+significant_digits(const char *s)
{
- char *p = s;
+ const char *p = s;
int n,
c,
zeroes;
diff --git a/contrib/seg/segdata.h b/contrib/seg/segdata.h
index cac68ee2b2..9488bf3a81 100644
--- a/contrib/seg/segdata.h
+++ b/contrib/seg/segdata.h
@@ -12,7 +12,7 @@ typedef struct SEG
} SEG;
/* in seg.c */
-extern int significant_digits(char *str);
+extern int significant_digits(const char *str);
/* in segscan.l */
extern int seg_yylex(void);
diff --git a/contrib/seg/segparse.y b/contrib/seg/segparse.y
index 045ff91f3e..040cab3904 100644
--- a/contrib/seg/segparse.y
+++ b/contrib/seg/segparse.y
@@ -21,7 +21,7 @@
#define YYMALLOC palloc
#define YYFREE pfree
-static float seg_atof(char *value);
+static float seg_atof(const char *value);
static char strbuf[25] = {
'0', '0', '0', '0', '0',
@@ -151,7 +151,7 @@ deviation: SEGFLOAT
static float
-seg_atof(char *value)
+seg_atof(const char *value)
{
Datum datum;
diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c
index e08cca1707..e68b098b78 100644
--- a/contrib/unaccent/unaccent.c
+++ b/contrib/unaccent/unaccent.c
@@ -90,7 +90,7 @@ placeChar(TrieChar *node, const unsigned char *str, int lenstr,
* Function converts UTF8-encoded file into current encoding.
*/
static TrieChar *
-initTrie(char *filename)
+initTrie(const char *filename)
{
TrieChar *volatile rootTrie = NULL;
MemoryContext ccxt = CurrentMemoryContext;
diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c
index fce4bc9140..151223a199 100644
--- a/contrib/uuid-ossp/uuid-ossp.c
+++ b/contrib/uuid-ossp/uuid-ossp.c
@@ -253,7 +253,7 @@ uuid_generate_v35_internal(int mode, pg_uuid_t *ns, text *name)
#else /* !HAVE_UUID_OSSP */
static Datum
-uuid_generate_internal(int v, unsigned char *ns, char *ptr, int len)
+uuid_generate_internal(int v, unsigned char *ns, const char *ptr, int len)
{
char strbuf[40];
diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index ec10762529..3d0ce9af6f 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -582,7 +582,7 @@ add_reloption(relopt_gen *newoption)
* (for types other than string)
*/
static relopt_gen *
-allocate_reloption(bits32 kinds, int type, char *name, char *desc)
+allocate_reloption(bits32 kinds, int type, const char *name, const char *desc)
{
MemoryContext oldcxt;
size_t size;
@@ -630,7 +630,7 @@ allocate_reloption(bits32 kinds, int type, char *name, char *desc)
* Add a new boolean reloption
*/
void
-add_bool_reloption(bits32 kinds, char *name, char *desc, bool default_val)
+add_bool_reloption(bits32 kinds, const char *name, const char *desc, bool default_val)
{
relopt_bool *newoption;
@@ -646,7 +646,7 @@ add_bool_reloption(bits32 kinds, char *name, char *desc, bool default_val)
* Add a new integer reloption
*/
void
-add_int_reloption(bits32 kinds, char *name, char *desc, int default_val,
+add_int_reloption(bits32 kinds, const char *name, const char *desc, int default_val,
int min_val, int max_val)
{
relopt_int *newoption;
@@ -665,7 +665,7 @@ add_int_reloption(bits32 kinds, char *name, char *desc, int default_val,
* Add a new float reloption
*/
void
-add_real_reloption(bits32 kinds, char *name, char *desc, double default_val,
+add_real_reloption(bits32 kinds, const char *name, const char *desc, double default_val,
double min_val, double max_val)
{
relopt_real *newoption;
@@ -689,7 +689,7 @@ add_real_reloption(bits32 kinds, char *name, char *desc, double default_val,
* the validation.
*/
void
-add_string_reloption(bits32 kinds, char *name, char *desc, char *default_val,
+add_string_reloption(bits32 kinds, const char *name, const char *desc, const char *default_val,
validate_string_relopt validator)
{
relopt_string *newoption;
@@ -742,7 +742,7 @@ add_string_reloption(bits32 kinds, char *name, char *desc, char *default_val,
* but we declare them as Datums to avoid including array.h in reloptions.h.
*/
Datum
-transformRelOptions(Datum oldOptions, List *defList, char *namspace,
+transformRelOptions(Datum oldOptions, List *defList, const char *namspace,
char *validnsps[], bool ignoreOids, bool isReset)
{
Datum result;
diff --git a/src/backend/access/gist/gistbuild.c b/src/backend/access/gist/gistbuild.c
index b4cb364869..2415f00e06 100644
--- a/src/backend/access/gist/gistbuild.c
+++ b/src/backend/access/gist/gistbuild.c
@@ -238,7 +238,7 @@ gistbuild(Relation heap, Relation index, IndexInfo *indexInfo)
* and "auto" values.
*/
void
-gistValidateBufferingOption(char *value)
+gistValidateBufferingOption(const char *value)
{
if (value == NULL ||
(strcmp(value, "on") != 0 &&
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 8203388fa8..408422ab22 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -3478,7 +3478,7 @@ BeginTransactionBlock(void)
* resource owner, etc while executing inside a Portal.
*/
bool
-PrepareTransactionBlock(char *gid)
+PrepareTransactionBlock(const char *gid)
{
TransactionState s;
bool result;
@@ -3823,7 +3823,7 @@ EndImplicitTransactionBlock(void)
* This executes a SAVEPOINT command.
*/
void
-DefineSavepoint(char *name)
+DefineSavepoint(const char *name)
{
TransactionState s = CurrentTransactionState;
@@ -4168,7 +4168,7 @@ RollbackToSavepoint(List *options)
* the caller to do it.
*/
void
-BeginInternalSubTransaction(char *name)
+BeginInternalSubTransaction(const char *name)
{
TransactionState s = CurrentTransactionState;
diff --git a/src/backend/access/transam/xlogarchive.c b/src/backend/access/transam/xlogarchive.c
index c723c931d8..f426ad8b89 100644
--- a/src/backend/access/transam/xlogarchive.c
+++ b/src/backend/access/transam/xlogarchive.c
@@ -327,7 +327,7 @@ RestoreArchivedFile(char *path, const char *xlogfname,
* This is currently used for recovery_end_command and archive_cleanup_command.
*/
void
-ExecuteRecoveryCommand(char *command, char *commandName, bool failOnSignal)
+ExecuteRecoveryCommand(const char *command, const char *commandName, bool failOnSignal)
{
char xlogRecoveryCmd[MAXPGPATH];
char lastRestartPointFname[MAXPGPATH];
@@ -425,7 +425,7 @@ ExecuteRecoveryCommand(char *command, char *commandName, bool failOnSignal)
* in pg_wal (xlogfname), replacing any existing file with the same name.
*/
void
-KeepFileRestoredFromArchive(char *path, char *xlogfname)
+KeepFileRestoredFromArchive(const char *path, const char *xlogfname)
{
char xlogfpath[MAXPGPATH];
bool reload = false;
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 05e70818e7..5c0ee1e106 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -103,12 +103,12 @@ static ObjectAddress AddNewRelationType(const char *typeName,
Oid new_row_type,
Oid new_array_type);
static void RelationRemoveInheritance(Oid relid);
-static Oid StoreRelCheck(Relation rel, char *ccname, Node *expr,
+static Oid StoreRelCheck(Relation rel, const char *ccname, Node *expr,
bool is_validated, bool is_local, int inhcount,
bool is_no_inherit, bool is_internal);
static void StoreConstraints(Relation rel, List *cooked_constraints,
bool is_internal);
-static bool MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr,
+static bool MergeWithExistingConstraint(Relation rel, const char *ccname, Node *expr,
bool allow_merge, bool is_local,
bool is_initially_valid,
bool is_no_inherit);
@@ -2037,7 +2037,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum,
* The OID of the new constraint is returned.
*/
static Oid
-StoreRelCheck(Relation rel, char *ccname, Node *expr,
+StoreRelCheck(Relation rel, const char *ccname, Node *expr,
bool is_validated, bool is_local, int inhcount,
bool is_no_inherit, bool is_internal)
{
@@ -2461,7 +2461,7 @@ AddRelationNewConstraints(Relation rel,
* XXX See MergeConstraintsIntoExisting too if you change this code.
*/
static bool
-MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr,
+MergeWithExistingConstraint(Relation rel, const char *ccname, Node *expr,
bool allow_merge, bool is_local,
bool is_initially_valid,
bool is_no_inherit)
@@ -2658,7 +2658,7 @@ cookDefault(ParseState *pstate,
Node *raw_default,
Oid atttypid,
int32 atttypmod,
- char *attname)
+ const char *attname)
{
Node *expr;
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 1c17927c49..2dc9371fdb 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -139,7 +139,7 @@ CommentObject(CommentStmt *stmt)
* existing comment for the specified key.
*/
void
-CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
+CreateComments(Oid oid, Oid classoid, int32 subid, const char *comment)
{
Relation description;
ScanKeyData skey[3];
@@ -234,7 +234,7 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
* existing comment for the specified key.
*/
void
-CreateSharedComments(Oid oid, Oid classoid, char *comment)
+CreateSharedComments(Oid oid, Oid classoid, const char *comment)
{
Relation shdescription;
ScanKeyData skey[2];
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 938133bbe4..fa7d0d015a 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -152,7 +152,7 @@ static event_trigger_command_tag_check_result check_table_rewrite_ddl_tag(
const char *tag);
static void error_duplicate_filter_variable(const char *defname);
static Datum filter_list_to_array(List *filterlist);
-static Oid insert_event_trigger_tuple(char *trigname, char *eventname,
+static Oid insert_event_trigger_tuple(const char *trigname, const char *eventname,
Oid evtOwner, Oid funcoid, List *tags);
static void validate_ddl_tags(const char *filtervar, List *taglist);
static void validate_table_rewrite_tags(const char *filtervar, List *taglist);
@@ -372,7 +372,7 @@ error_duplicate_filter_variable(const char *defname)
* Insert the new pg_event_trigger row and record dependencies.
*/
static Oid
-insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
+insert_event_trigger_tuple(const char *trigname, const char *eventname, Oid evtOwner,
Oid funcoid, List *taglist)
{
Relation tgrel;
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index e4340eed8c..9f77d25352 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -1266,8 +1266,8 @@ find_install_path(List *evi_list, ExtensionVersionInfo *evi_target,
static ObjectAddress
CreateExtensionInternal(char *extensionName,
char *schemaName,
- char *versionName,
- char *oldVersionName,
+ const char *versionName,
+ const char *oldVersionName,
bool cascade,
List *parents,
bool is_create)
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 3f615b6260..89114af119 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -67,7 +67,7 @@ static void ComputeIndexAttrs(IndexInfo *indexInfo,
List *attList,
List *exclusionOpNames,
Oid relId,
- char *accessMethodName, Oid accessMethodId,
+ const char *accessMethodName, Oid accessMethodId,
bool amcanorder,
bool isconstraint);
static char *ChooseIndexName(const char *tabname, Oid namespaceId,
@@ -115,7 +115,7 @@ static void RangeVarCallbackForReindexIndex(const RangeVar *relation,
*/
bool
CheckIndexCompatible(Oid oldId,
- char *accessMethodName,
+ const char *accessMethodName,
List *attributeList,
List *exclusionOpNames)
{
@@ -1011,7 +1011,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
List *attList, /* list of IndexElem's */
List *exclusionOpNames,
Oid relId,
- char *accessMethodName,
+ const char *accessMethodName,
Oid accessMethodId,
bool amcanorder,
bool isconstraint)
@@ -1277,7 +1277,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
*/
Oid
ResolveOpClass(List *opclass, Oid attrType,
- char *accessMethodName, Oid accessMethodId)
+ const char *accessMethodName, Oid accessMethodId)
{
char *schemaname;
char *opcname;
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index d23e6d6f25..1641e68abe 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -239,7 +239,7 @@ get_opclass_oid(Oid amID, List *opclassname, bool missing_ok)
* Caller must have done permissions checks etc. already.
*/
static ObjectAddress
-CreateOpFamily(char *amname, char *opfname, Oid namespaceoid, Oid amoid)
+CreateOpFamily(const char *amname, const char *opfname, Oid namespaceoid, Oid amoid)
{
Oid opfamilyoid;
Relation rel;
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index c902293741..fb1254e48e 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -426,7 +426,7 @@ static void ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId,
bool rewrite);
static void RebuildConstraintComment(AlteredTableInfo *tab, int pass,
Oid objid, Relation rel, List *domname,
- char *conname);
+ const char *conname);
static void TryReuseIndex(Oid oldId, IndexStmt *stmt);
static void TryReuseForeignKey(Oid oldId, Constraint *con);
static void change_owner_fix_column_acls(Oid relationOid,
@@ -438,14 +438,14 @@ static ObjectAddress ATExecClusterOn(Relation rel, const char *indexName,
static void ATExecDropCluster(Relation rel, LOCKMODE lockmode);
static bool ATPrepChangePersistence(Relation rel, bool toLogged);
static void ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel,
- char *tablespacename, LOCKMODE lockmode);
+ const char *tablespacename, LOCKMODE lockmode);
static void ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode);
static void ATExecSetRelOptions(Relation rel, List *defList,
AlterTableType operation,
LOCKMODE lockmode);
-static void ATExecEnableDisableTrigger(Relation rel, char *trigname,
+static void ATExecEnableDisableTrigger(Relation rel, const char *trigname,
char fires_when, bool skip_system, LOCKMODE lockmode);
-static void ATExecEnableDisableRule(Relation rel, char *rulename,
+static void ATExecEnableDisableRule(Relation rel, const char *rulename,
char fires_when, LOCKMODE lockmode);
static void ATPrepAddInherit(Relation child_rel);
static ObjectAddress ATExecAddInherit(Relation child_rel, RangeVar *parent, LOCKMODE lockmode);
@@ -9873,7 +9873,7 @@ ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId, char *cmd,
static void
RebuildConstraintComment(AlteredTableInfo *tab, int pass, Oid objid,
Relation rel, List *domname,
- char *conname)
+ const char *conname)
{
CommentStmt *cmd;
char *comment_str;
@@ -10393,7 +10393,7 @@ ATExecDropCluster(Relation rel, LOCKMODE lockmode)
* ALTER TABLE SET TABLESPACE
*/
static void
-ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, char *tablespacename, LOCKMODE lockmode)
+ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, const char *tablespacename, LOCKMODE lockmode)
{
Oid tablespaceId;
@@ -11060,7 +11060,7 @@ copy_relation_data(SMgrRelation src, SMgrRelation dst,
* We just pass this off to trigger.c.
*/
static void
-ATExecEnableDisableTrigger(Relation rel, char *trigname,
+ATExecEnableDisableTrigger(Relation rel, const char *trigname,
char fires_when, bool skip_system, LOCKMODE lockmode)
{
EnableDisableTrigger(rel, trigname, fires_when, skip_system);
@@ -11072,7 +11072,7 @@ ATExecEnableDisableTrigger(Relation rel, char *trigname,
* We just pass this off to rewriteDefine.c.
*/
static void
-ATExecEnableDisableRule(Relation rel, char *rulename,
+ATExecEnableDisableRule(Relation rel, const char *rulename,
char fires_when, LOCKMODE lockmode)
{
EnableDisableRule(rel, rulename, fires_when);
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index 7df942b18b..bbfd4b9014 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -103,7 +103,7 @@ static void checkEnumOwner(HeapTuple tup);
static char *domainAddConstraint(Oid domainOid, Oid domainNamespace,
Oid baseTypeOid,
int typMod, Constraint *constr,
- char *domainName, ObjectAddress *constrAddr);
+ const char *domainName, ObjectAddress *constrAddr);
static Node *replace_domain_constraint_value(ParseState *pstate,
ColumnRef *cref);
@@ -2649,7 +2649,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint,
* Implements the ALTER DOMAIN .. VALIDATE CONSTRAINT statement.
*/
ObjectAddress
-AlterDomainValidateConstraint(List *names, char *constrName)
+AlterDomainValidateConstraint(List *names, const char *constrName)
{
TypeName *typename;
Oid domainoid;
@@ -3060,7 +3060,7 @@ checkDomainOwner(HeapTuple tup)
static char *
domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
int typMod, Constraint *constr,
- char *domainName, ObjectAddress *constrAddr)
+ const char *domainName, ObjectAddress *constrAddr)
{
Node *expr;
char *ccsrc;
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index 076e2a3a40..c1e80e61d4 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -43,7 +43,7 @@ static void checkViewTupleDesc(TupleDesc newdesc, TupleDesc olddesc);
* are "local" and "cascaded".
*/
void
-validateWithCheckOption(char *value)
+validateWithCheckOption(const char *value)
{
if (value == NULL ||
(pg_strcasecmp(value, "local") != 0 &&
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index ab74fd8dfd..6505b1f2b9 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -43,7 +43,7 @@
* Global authentication functions
*----------------------------------------------------------------
*/
-static void sendAuthRequest(Port *port, AuthRequest areq, char *extradata,
+static void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
int extralen);
static void auth_failed(Port *port, int status, char *logdetail);
static char *recv_password_packet(Port *port);
@@ -91,7 +91,7 @@ static int auth_peer(hbaPort *port);
#define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */
-static int CheckPAMAuth(Port *port, char *user, char *password);
+static int CheckPAMAuth(Port *port, const char *user, const char *password);
static int pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr);
@@ -100,7 +100,7 @@ static struct pam_conv pam_passw_conv = {
NULL
};
-static char *pam_passwd = NULL; /* Workaround for Solaris 2.6 brokenness */
+static const char *pam_passwd = NULL; /* Workaround for Solaris 2.6 brokenness */
static Port *pam_port_cludge; /* Workaround for passing "Port *port" into
* pam_passwd_conv_proc */
#endif /* USE_PAM */
@@ -202,7 +202,7 @@ static int pg_SSPI_make_upn(char *accountname,
*----------------------------------------------------------------
*/
static int CheckRADIUSAuth(Port *port);
-static int PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identifier, char *user_name, char *passwd);
+static int PerformRadiusTransaction(const char *server, const char *secret, const char *portstr, const char *identifier, const char *user_name, const char *passwd);
/*
@@ -612,7 +612,7 @@ ClientAuthentication(Port *port)
* Send an authentication request packet to the frontend.
*/
static void
-sendAuthRequest(Port *port, AuthRequest areq, char *extradata, int extralen)
+sendAuthRequest(Port *port, AuthRequest areq, const char *extradata, int extralen)
{
StringInfoData buf;
@@ -1040,7 +1040,7 @@ static GSS_DLLIMP gss_OID GSS_C_NT_USER_NAME = &GSS_C_NT_USER_NAME_desc;
static void
-pg_GSS_error(int severity, char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat)
+pg_GSS_error(int severity, const char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat)
{
gss_buffer_desc gmsg;
OM_uint32 lmin_s,
@@ -2051,7 +2051,7 @@ static int
pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr)
{
- char *passwd;
+ const char *passwd;
struct pam_response *reply;
int i;
@@ -2149,7 +2149,7 @@ pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
* Check authentication against PAM.
*/
static int
-CheckPAMAuth(Port *port, char *user, char *password)
+CheckPAMAuth(Port *port, const char *user, const char *password)
{
int retval;
pam_handle_t *pamh = NULL;
@@ -2874,7 +2874,7 @@ CheckRADIUSAuth(Port *port)
}
static int
-PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identifier, char *user_name, char *passwd)
+PerformRadiusTransaction(const char *server, const char *secret, const char *portstr, const char *identifier, const char *user_name, const char *passwd)
{
radius_packet radius_send_pack;
radius_packet radius_recv_pack;
@@ -2941,9 +2941,9 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
return STATUS_ERROR;
}
packet->id = packet->vector[0];
- radius_add_attribute(packet, RADIUS_SERVICE_TYPE, (unsigned char *) &service, sizeof(service));
- radius_add_attribute(packet, RADIUS_USER_NAME, (unsigned char *) user_name, strlen(user_name));
- radius_add_attribute(packet, RADIUS_NAS_IDENTIFIER, (unsigned char *) identifier, strlen(identifier));
+ radius_add_attribute(packet, RADIUS_SERVICE_TYPE, (const unsigned char *) &service, sizeof(service));
+ radius_add_attribute(packet, RADIUS_USER_NAME, (const unsigned char *) user_name, strlen(user_name));
+ radius_add_attribute(packet, RADIUS_NAS_IDENTIFIER, (const unsigned char *) identifier, strlen(identifier));
/*
* RADIUS password attributes are calculated as: e[0] = p[0] XOR
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index b2c487a8e8..fcbe708d43 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -144,8 +144,8 @@ static List *tokenize_inc_file(List *tokens, const char *outer_filename,
const char *inc_filename, int elevel, char **err_msg);
static bool parse_hba_auth_opt(char *name, char *val, HbaLine *hbaline,
int elevel, char **err_msg);
-static bool verify_option_list_length(List *options, char *optionname,
- List *masters, char *mastername, int line_num);
+static bool verify_option_list_length(List *options, const char *optionname,
+ List *masters, const char *mastername, int line_num);
static ArrayType *gethba_options(HbaLine *hba);
static void fill_hba_line(Tuplestorestate *tuple_store, TupleDesc tupdesc,
int lineno, HbaLine *hba, const char *err_msg);
@@ -1617,7 +1617,7 @@ parse_hba_line(TokenizedLine *tok_line, int elevel)
static bool
-verify_option_list_length(List *options, char *optionname, List *masters, char *mastername, int line_num)
+verify_option_list_length(List *options, const char *optionname, List *masters, const char *mastername, int line_num)
{
if (list_length(options) == 0 ||
list_length(options) == 1 ||
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 1aaa5244e6..86d1da0677 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -386,7 +386,7 @@ transformExprRecurse(ParseState *pstate, Node *expr)
* selection from an arbitrary node needs it.)
*/
static void
-unknown_attribute(ParseState *pstate, Node *relref, char *attname,
+unknown_attribute(ParseState *pstate, Node *relref, const char *attname,
int location)
{
RangeTblEntry *rte;
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index fc0d6bc2f2..a11843332b 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -39,7 +39,7 @@ static void unify_hypothetical_args(ParseState *pstate,
List *fargs, int numAggregatedArgs,
Oid *actual_arg_types, Oid *declared_arg_types);
static Oid FuncNameAsType(List *funcname);
-static Node *ParseComplexProjection(ParseState *pstate, char *funcname,
+static Node *ParseComplexProjection(ParseState *pstate, const char *funcname,
Node *first_arg, int location);
@@ -1790,7 +1790,7 @@ FuncNameAsType(List *funcname)
* transformed expression tree. If not, return NULL.
*/
static Node *
-ParseComplexProjection(ParseState *pstate, char *funcname, Node *first_arg,
+ParseComplexProjection(ParseState *pstate, const char *funcname, Node *first_arg,
int location)
{
TupleDesc tupdesc;
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 6acc21dfe6..5233ec11cc 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -652,7 +652,7 @@ updateFuzzyAttrMatchState(int fuzzy_rte_penalty,
* for an approximate match and update fuzzystate accordingly.
*/
Node *
-scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, char *colname,
+scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, const char *colname,
int location, int fuzzy_rte_penalty,
FuzzyAttrMatchState *fuzzystate)
{
@@ -754,7 +754,7 @@ scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, char *colname,
* If localonly is true, only names in the innermost query are considered.
*/
Node *
-colNameToVar(ParseState *pstate, char *colname, bool localonly,
+colNameToVar(ParseState *pstate, const char *colname, bool localonly,
int location)
{
Node *result = NULL;
@@ -828,7 +828,7 @@ colNameToVar(ParseState *pstate, char *colname, bool localonly,
* and 'second' will contain the attribute number for the second match.
*/
static FuzzyAttrMatchState *
-searchRangeTableForCol(ParseState *pstate, const char *alias, char *colname,
+searchRangeTableForCol(ParseState *pstate, const char *alias, const char *colname,
int location)
{
ParseState *orig_pstate = pstate;
@@ -3248,7 +3248,7 @@ errorMissingRTE(ParseState *pstate, RangeVar *relation)
*/
void
errorMissingColumn(ParseState *pstate,
- char *relname, char *colname, int location)
+ const char *relname, const char *colname, int location)
{
FuzzyAttrMatchState *state;
char *closestfirst = NULL;
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 01fd726a3d..21593b249f 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -455,7 +455,7 @@ Expr *
transformAssignedExpr(ParseState *pstate,
Expr *expr,
ParseExprKind exprKind,
- char *colname,
+ const char *colname,
int attrno,
List *indirection,
int location)
diff --git a/src/backend/port/dynloader/darwin.c b/src/backend/port/dynloader/darwin.c
index f8fdeaf122..0a54ce907c 100644
--- a/src/backend/port/dynloader/darwin.c
+++ b/src/backend/port/dynloader/darwin.c
@@ -20,7 +20,7 @@
#ifdef HAVE_DLOPEN
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
return dlopen(filename, RTLD_NOW | RTLD_GLOBAL);
}
@@ -32,7 +32,7 @@ pg_dlclose(void *handle)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
/* Do not prepend an underscore: see dlopen(3) */
return dlsym(handle, funcname);
@@ -54,7 +54,7 @@ pg_dlerror(void)
static NSObjectFileImageReturnCode cofiff_result = NSObjectFileImageFailure;
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
NSObjectFileImage image;
@@ -73,7 +73,7 @@ pg_dlclose(void *handle)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
NSSymbol symbol;
char *symname = (char *) malloc(strlen(funcname) + 2);
diff --git a/src/backend/port/dynloader/darwin.h b/src/backend/port/dynloader/darwin.h
index 44a3bd6b82..292a31de13 100644
--- a/src/backend/port/dynloader/darwin.h
+++ b/src/backend/port/dynloader/darwin.h
@@ -2,7 +2,7 @@
#include "fmgr.h"
-void *pg_dlopen(char *filename);
-PGFunction pg_dlsym(void *handle, char *funcname);
+void *pg_dlopen(const char *filename);
+PGFunction pg_dlsym(void *handle, const char *funcname);
void pg_dlclose(void *handle);
char *pg_dlerror(void);
diff --git a/src/backend/port/dynloader/hpux.c b/src/backend/port/dynloader/hpux.c
index 5a0e40146d..5ab24f8fd9 100644
--- a/src/backend/port/dynloader/hpux.c
+++ b/src/backend/port/dynloader/hpux.c
@@ -26,7 +26,7 @@
#include "utils/dynamic_loader.h"
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
/*
* Use BIND_IMMEDIATE so that undefined symbols cause a failure return
@@ -41,7 +41,7 @@ pg_dlopen(char *filename)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
PGFunction f;
diff --git a/src/backend/port/dynloader/hpux.h b/src/backend/port/dynloader/hpux.h
index 0a17454f2b..6c1b367e97 100644
--- a/src/backend/port/dynloader/hpux.h
+++ b/src/backend/port/dynloader/hpux.h
@@ -19,7 +19,7 @@
/* System includes */
#include "fmgr.h"
-extern void *pg_dlopen(char *filename);
-extern PGFunction pg_dlsym(void *handle, char *funcname);
+extern void *pg_dlopen(const char *filename);
+extern PGFunction pg_dlsym(void *handle, const char *funcname);
extern void pg_dlclose(void *handle);
extern char *pg_dlerror(void);
diff --git a/src/backend/port/dynloader/linux.c b/src/backend/port/dynloader/linux.c
index 38e19f7484..375ade32e5 100644
--- a/src/backend/port/dynloader/linux.c
+++ b/src/backend/port/dynloader/linux.c
@@ -29,7 +29,7 @@
#ifndef HAVE_DLOPEN
void *
-pg_dlopen(char *filename)
+pg_dlopen(const char *filename)
{
#ifndef HAVE_DLD_H
elog(ERROR, "dynamic load not supported");
@@ -101,7 +101,7 @@ pg_dlopen(char *filename)
}
PGFunction
-pg_dlsym(void *handle, char *funcname)
+pg_dlsym(void *handle, const char *funcname)
{
#ifndef HAVE_DLD_H
return NULL;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 2b2b993e2c..9906a85bc0 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -5537,7 +5537,7 @@ MaxLivePostmasterChildren(void)
* Connect background worker to a database.
*/
void
-BackgroundWorkerInitializeConnection(char *dbname, char *username)
+BackgroundWorkerInitializeConnection(const char *dbname, const char *username)
{
BackgroundWorker *worker = MyBgworkerEntry;
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index 75029b0def..eb159f7d3a 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -51,9 +51,9 @@ typedef struct
} basebackup_options;
-static int64 sendDir(char *path, int basepathlen, bool sizeonly,
+static int64 sendDir(const char *path, int basepathlen, bool sizeonly,
List *tablespaces, bool sendtblspclinks);
-static bool sendFile(char *readfilename, char *tarfilename,
+static bool sendFile(const char *readfilename, const char *tarfilename,
struct stat *statbuf, bool missing_ok);
static void sendFileWithContent(const char *filename, const char *content);
static int64 _tarWriteHeader(const char *filename, const char *linktarget,
@@ -958,7 +958,7 @@ sendTablespace(char *path, bool sizeonly)
* as it will be sent separately in the tablespace_map file.
*/
static int64
-sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces,
+sendDir(const char *path, int basepathlen, bool sizeonly, List *tablespaces,
bool sendtblspclinks)
{
DIR *dir;
@@ -1203,7 +1203,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces,
* and the file did not exist.
*/
static bool
-sendFile(char *readfilename, char *tarfilename, struct stat *statbuf,
+sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf,
bool missing_ok)
{
FILE *fp;
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 071b3a9ec9..d5aecfe165 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -56,7 +56,7 @@ static void setRuleCheckAsUser_Query(Query *qry, Oid userid);
* relation "pg_rewrite"
*/
static Oid
-InsertRule(char *rulname,
+InsertRule(const char *rulname,
int evtype,
Oid eventrel_oid,
bool evinstead,
@@ -225,7 +225,7 @@ DefineRule(RuleStmt *stmt, const char *queryString)
* action and qual have already been passed through parse analysis.
*/
ObjectAddress
-DefineQueryRewrite(char *rulename,
+DefineQueryRewrite(const char *rulename,
Oid event_relid,
Node *event_qual,
CmdType event_type,
diff --git a/src/backend/snowball/dict_snowball.c b/src/backend/snowball/dict_snowball.c
index 7cf668de19..42384b42b1 100644
--- a/src/backend/snowball/dict_snowball.c
+++ b/src/backend/snowball/dict_snowball.c
@@ -138,7 +138,7 @@ typedef struct DictSnowball
static void
-locate_stem_module(DictSnowball *d, char *lang)
+locate_stem_module(DictSnowball *d, const char *lang)
{
const stemmer_module *m;
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index f1060f9675..227ab69cba 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -111,7 +111,7 @@ extern slock_t *ShmemLock;
* This is indexed by tranche ID and stores the names of all tranches known
* to the current backend.
*/
-static char **LWLockTrancheArray = NULL;
+static const char **LWLockTrancheArray = NULL;
static int LWLockTranchesAllocated = 0;
#define T_NAME(lock) \
@@ -495,7 +495,7 @@ RegisterLWLockTranches(void)
if (LWLockTrancheArray == NULL)
{
LWLockTranchesAllocated = 128;
- LWLockTrancheArray = (char **)
+ LWLockTrancheArray = (const char **)
MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated * sizeof(char *));
Assert(LWLockTranchesAllocated >= LWTRANCHE_FIRST_USER_DEFINED);
@@ -595,7 +595,7 @@ LWLockNewTrancheId(void)
* (TopMemoryContext, static variable, or similar).
*/
void
-LWLockRegisterTranche(int tranche_id, char *tranche_name)
+LWLockRegisterTranche(int tranche_id, const char *tranche_name)
{
Assert(LWLockTrancheArray != NULL);
@@ -607,7 +607,7 @@ LWLockRegisterTranche(int tranche_id, char *tranche_name)
while (i <= tranche_id)
i *= 2;
- LWLockTrancheArray = (char **)
+ LWLockTrancheArray = (const char **)
repalloc(LWLockTrancheArray, i * sizeof(char *));
LWLockTranchesAllocated = i;
while (j < LWLockTranchesAllocated)
diff --git a/src/backend/tsearch/dict_thesaurus.c b/src/backend/tsearch/dict_thesaurus.c
index 1b6085add3..2a458db691 100644
--- a/src/backend/tsearch/dict_thesaurus.c
+++ b/src/backend/tsearch/dict_thesaurus.c
@@ -165,7 +165,7 @@ addWrd(DictThesaurus *d, char *b, char *e, uint32 idsubst, uint16 nwrd, uint16 p
#define TR_INSUBS 4
static void
-thesaurusRead(char *filename, DictThesaurus *d)
+thesaurusRead(const char *filename, DictThesaurus *d)
{
tsearch_readline_state trst;
uint32 idsubst = 0;
diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c
index 6527c73731..976451a1ee 100644
--- a/src/backend/tsearch/spell.c
+++ b/src/backend/tsearch/spell.c
@@ -450,7 +450,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag)
* otherwise returns false.
*/
static bool
-IsAffixFlagInUse(IspellDict *Conf, int affix, char *affixflag)
+IsAffixFlagInUse(IspellDict *Conf, int affix, const char *affixflag)
{
char *flagcur;
char flag[BUFSIZ];
@@ -596,7 +596,7 @@ NIImportDictionary(IspellDict *Conf, const char *filename)
* Returns 1 if the word was found in the prefix tree, else returns 0.
*/
static int
-FindWord(IspellDict *Conf, const char *word, char *affixflag, int flag)
+FindWord(IspellDict *Conf, const char *word, const char *affixflag, int flag)
{
SPNode *node = Conf->Dictionary;
SPNodeData *StopLow,
diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c
index 5285aa54f1..b3b9fc522d 100644
--- a/src/backend/utils/adt/genfile.c
+++ b/src/backend/utils/adt/genfile.c
@@ -477,7 +477,7 @@ pg_ls_dir_1arg(PG_FUNCTION_ARGS)
/* Generic function to return a directory listing of files */
static Datum
-pg_ls_dir_files(FunctionCallInfo fcinfo, char *dir)
+pg_ls_dir_files(FunctionCallInfo fcinfo, const char *dir)
{
FuncCallContext *funcctx;
struct dirent *de;
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index cc6cec7877..1fec59002c 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -343,7 +343,7 @@ static void set_relation_column_names(deparse_namespace *dpns,
deparse_columns *colinfo);
static void set_join_column_names(deparse_namespace *dpns, RangeTblEntry *rte,
deparse_columns *colinfo);
-static bool colname_is_unique(char *colname, deparse_namespace *dpns,
+static bool colname_is_unique(const char *colname, deparse_namespace *dpns,
deparse_columns *colinfo);
static char *make_colname_unique(char *colname, deparse_namespace *dpns,
deparse_columns *colinfo);
@@ -4113,7 +4113,7 @@ set_join_column_names(deparse_namespace *dpns, RangeTblEntry *rte,
* dpns is query-wide info, colinfo is for the column's RTE
*/
static bool
-colname_is_unique(char *colname, deparse_namespace *dpns,
+colname_is_unique(const char *colname, deparse_namespace *dpns,
deparse_columns *colinfo)
{
int i;
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 4b5483dbb9..9e62c248a1 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -1379,7 +1379,7 @@ text_position_cleanup(TextPositionState *state)
* whether arg1 is less than, equal to, or greater than arg2.
*/
int
-varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid)
+varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid)
{
int result;
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 24229c2dff..88d54d4796 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -146,7 +146,7 @@ static text *xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt);
static int xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj,
ArrayBuildState *astate,
PgXmlErrorContext *xmlerrcxt);
-static xmlChar *pg_xmlCharStrndup(char *str, size_t len);
+static xmlChar *pg_xmlCharStrndup(const char *str, size_t len);
#endif /* USE_LIBXML */
static void xmldata_root_element_start(StringInfo result, const char *eltname,
@@ -192,11 +192,11 @@ typedef struct XmlTableBuilderData
static void XmlTableInitOpaque(struct TableFuncScanState *state, int natts);
static void XmlTableSetDocument(struct TableFuncScanState *state, Datum value);
-static void XmlTableSetNamespace(struct TableFuncScanState *state, char *name,
- char *uri);
-static void XmlTableSetRowFilter(struct TableFuncScanState *state, char *path);
+static void XmlTableSetNamespace(struct TableFuncScanState *state, const char *name,
+ const char *uri);
+static void XmlTableSetRowFilter(struct TableFuncScanState *state, const char *path);
static void XmlTableSetColumnFilter(struct TableFuncScanState *state,
- char *path, int colnum);
+ const char *path, int colnum);
static bool XmlTableFetchRow(struct TableFuncScanState *state);
static Datum XmlTableGetValue(struct TableFuncScanState *state, int colnum,
Oid typid, int32 typmod, bool *isnull);
@@ -765,7 +765,7 @@ xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace)
xmltype *
-xmlpi(char *target, text *arg, bool arg_is_null, bool *result_is_null)
+xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null)
{
#ifdef USE_LIBXML
xmltype *result;
@@ -1164,7 +1164,7 @@ xml_pnstrdup(const xmlChar *str, size_t len)
/* Ditto, except input is char* */
static xmlChar *
-pg_xmlCharStrndup(char *str, size_t len)
+pg_xmlCharStrndup(const char *str, size_t len)
{
xmlChar *result;
@@ -1850,7 +1850,7 @@ appendStringInfoLineSeparator(StringInfo str)
* Convert one char in the current server encoding to a Unicode codepoint.
*/
static pg_wchar
-sqlchar_to_unicode(char *s)
+sqlchar_to_unicode(const char *s)
{
char *utf8string;
pg_wchar ret[2]; /* need space for trailing zero */
@@ -1894,12 +1894,12 @@ is_valid_xml_namechar(pg_wchar c)
* Map SQL identifier to XML name; see SQL/XML:2008 section 9.1.
*/
char *
-map_sql_identifier_to_xml_name(char *ident, bool fully_escaped,
+map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped,
bool escape_period)
{
#ifdef USE_LIBXML
StringInfoData buf;
- char *p;
+ const char *p;
/*
* SQL/XML doesn't make use of this case anywhere, so it's probably a
@@ -1970,10 +1970,10 @@ unicode_to_sqlchar(pg_wchar c)
* Map XML name to SQL identifier; see SQL/XML:2008 section 9.3.
*/
char *
-map_xml_name_to_sql_identifier(char *name)
+map_xml_name_to_sql_identifier(const char *name)
{
StringInfoData buf;
- char *p;
+ const char *p;
initStringInfo(&buf);
@@ -3009,7 +3009,7 @@ database_to_xml_and_xmlschema(PG_FUNCTION_ARGS)
* 9.2.
*/
static char *
-map_multipart_sql_identifier_to_xml_name(char *a, char *b, char *c, char *d)
+map_multipart_sql_identifier_to_xml_name(const char *a, const char *b, const char *c, const char *d)
{
StringInfoData result;
@@ -4292,7 +4292,7 @@ XmlTableSetDocument(TableFuncScanState *state, Datum value)
* Add a namespace declaration
*/
static void
-XmlTableSetNamespace(TableFuncScanState *state, char *name, char *uri)
+XmlTableSetNamespace(TableFuncScanState *state, const char *name, const char *uri)
{
#ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
@@ -4318,7 +4318,7 @@ XmlTableSetNamespace(TableFuncScanState *state, char *name, char *uri)
* Install the row-filter Xpath expression.
*/
static void
-XmlTableSetRowFilter(TableFuncScanState *state, char *path)
+XmlTableSetRowFilter(TableFuncScanState *state, const char *path)
{
#ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
@@ -4347,7 +4347,7 @@ XmlTableSetRowFilter(TableFuncScanState *state, char *path)
* Install the column-filter Xpath expression, for the given column.
*/
static void
-XmlTableSetColumnFilter(TableFuncScanState *state, char *path, int colnum)
+XmlTableSetColumnFilter(TableFuncScanState *state, const char *path, int colnum)
{
#ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 27fcf5a87f..bb2bc065ef 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -239,10 +239,10 @@ static void writefile(char *path, char **lines);
static FILE *popen_check(const char *command, const char *mode);
static void exit_nicely(void);
static char *get_id(void);
-static int get_encoding_id(char *encoding_name);
-static void set_input(char **dest, char *filename);
+static int get_encoding_id(const char *encoding_name);
+static void set_input(char **dest, const char *filename);
static void check_input(char *path);
-static void write_version_file(char *extrapath);
+static void write_version_file(const char *extrapath);
static void set_null_conf(void);
static void test_config_settings(void);
static void setup_config(void);
@@ -640,7 +640,7 @@ encodingid_to_string(int enc)
* get the encoding id for a given encoding name
*/
static int
-get_encoding_id(char *encoding_name)
+get_encoding_id(const char *encoding_name)
{
int enc;
@@ -751,7 +751,7 @@ find_matching_ts_config(const char *lc_type)
* set name of given input file variable under data directory
*/
static void
-set_input(char **dest, char *filename)
+set_input(char **dest, const char *filename)
{
*dest = psprintf("%s/%s", share_path, filename);
}
@@ -801,7 +801,7 @@ check_input(char *path)
* if extrapath is not NULL
*/
static void
-write_version_file(char *extrapath)
+write_version_file(const char *extrapath)
{
FILE *version_file;
char *path;
diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c
index befcde4630..216853d627 100644
--- a/src/bin/pg_dump/pg_backup_db.c
+++ b/src/bin/pg_dump/pg_backup_db.c
@@ -419,7 +419,7 @@ ExecuteSqlQuery(Archive *AHX, const char *query, ExecStatusType status)
* Execute an SQL query and verify that we got exactly one row back.
*/
PGresult *
-ExecuteSqlQueryForSingleRow(Archive *fout, char *query)
+ExecuteSqlQueryForSingleRow(Archive *fout, const char *query)
{
PGresult *res;
int ntups;
diff --git a/src/bin/pg_dump/pg_backup_db.h b/src/bin/pg_dump/pg_backup_db.h
index 527449e044..a79f5283fe 100644
--- a/src/bin/pg_dump/pg_backup_db.h
+++ b/src/bin/pg_dump/pg_backup_db.h
@@ -16,7 +16,7 @@ extern int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen);
extern void ExecuteSqlStatement(Archive *AHX, const char *query);
extern PGresult *ExecuteSqlQuery(Archive *AHX, const char *query,
ExecStatusType status);
-extern PGresult *ExecuteSqlQueryForSingleRow(Archive *fout, char *query);
+extern PGresult *ExecuteSqlQueryForSingleRow(Archive *fout, const char *query);
extern void EndDBCopyMode(Archive *AHX, const char *tocEntryTag);
diff --git a/src/bin/pg_rewind/fetch.c b/src/bin/pg_rewind/fetch.c
index e9353d8866..13553e3b5a 100644
--- a/src/bin/pg_rewind/fetch.c
+++ b/src/bin/pg_rewind/fetch.c
@@ -51,7 +51,7 @@ executeFileMap(void)
* handy for text files.
*/
char *
-fetchFile(char *filename, size_t *filesize)
+fetchFile(const char *filename, size_t *filesize)
{
if (datadir_source)
return slurpFile(datadir_source, filename, filesize);
diff --git a/src/bin/pg_rewind/fetch.h b/src/bin/pg_rewind/fetch.h
index 1e08f76b3e..7288120a0b 100644
--- a/src/bin/pg_rewind/fetch.h
+++ b/src/bin/pg_rewind/fetch.h
@@ -24,7 +24,7 @@
* config options.
*/
extern void fetchSourceFileList(void);
-extern char *fetchFile(char *filename, size_t *filesize);
+extern char *fetchFile(const char *filename, size_t *filesize);
extern void executeFileMap(void);
/* in libpq_fetch.c */
diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c
index c74eb25e18..f7f2ebdacf 100644
--- a/src/bin/pg_upgrade/option.c
+++ b/src/bin/pg_upgrade/option.c
@@ -22,7 +22,7 @@
static void usage(void);
static void check_required_directory(char **dirpath, char **configpath,
- char *envVarName, char *cmdLineOption, char *description);
+ const char *envVarName, const char *cmdLineOption, const char *description);
#define FIX_DEFAULT_READ_ONLY "-c default_transaction_read_only=false"
@@ -341,8 +341,8 @@ usage(void)
*/
static void
check_required_directory(char **dirpath, char **configpath,
- char *envVarName, char *cmdLineOption,
- char *description)
+ const char *envVarName, const char *cmdLineOption,
+ const char *description)
{
if (*dirpath == NULL || strlen(*dirpath) == 0)
{
diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c
index d44fefb457..c10103f0bf 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -363,7 +363,7 @@ create_new_objects(void)
* Delete the given subdirectory contents from the new cluster
*/
static void
-remove_new_subdir(char *subdir, bool rmtopdir)
+remove_new_subdir(const char *subdir, bool rmtopdir)
{
char new_path[MAXPGPATH];
@@ -380,7 +380,7 @@ remove_new_subdir(char *subdir, bool rmtopdir)
* Copy the files from the old cluster into it
*/
static void
-copy_subdir_files(char *old_subdir, char *new_subdir)
+copy_subdir_files(const char *old_subdir, const char *new_subdir)
{
char old_path[MAXPGPATH];
char new_path[MAXPGPATH];
diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c
index 53eca4c8e0..6443eda6df 100644
--- a/src/bin/pg_waldump/pg_waldump.c
+++ b/src/bin/pg_waldump/pg_waldump.c
@@ -175,7 +175,7 @@ open_file_in_directory(const char *directory, const char *fname)
* wal segment size.
*/
static bool
-search_directory(char *directory, char *fname)
+search_directory(const char *directory, const char *fname)
{
int fd = -1;
DIR *xldir;
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index d4a60351a8..ec56a74de0 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -1870,7 +1870,7 @@ preparedStatementName(char *buffer, int file, int state)
}
static void
-commandFailed(CState *st, char *message)
+commandFailed(CState *st, const char *message)
{
fprintf(stderr,
"client %d aborted in command %d of script %d; %s\n",
@@ -3538,7 +3538,7 @@ addScript(ParsedScript script)
}
static void
-printSimpleStats(char *prefix, SimpleStats *ss)
+printSimpleStats(const char *prefix, SimpleStats *ss)
{
/* print NaN if no transactions where executed */
double latency = ss->sum / ss->count;
diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h
index bfef2df420..eb1c6728d4 100644
--- a/src/include/access/gist_private.h
+++ b/src/include/access/gist_private.h
@@ -503,7 +503,7 @@ extern void gistSplitByKey(Relation r, Page page, IndexTuple *itup,
/* gistbuild.c */
extern IndexBuildResult *gistbuild(Relation heap, Relation index,
struct IndexInfo *indexInfo);
-extern void gistValidateBufferingOption(char *value);
+extern void gistValidateBufferingOption(const char *value);
/* gistbuildbuffers.c */
extern GISTBuildBuffers *gistInitBuildBuffers(int pagesPerBuffer, int levelStep,
diff --git a/src/include/access/reloptions.h b/src/include/access/reloptions.h
index 5cdaa3bff1..cd43e3a52e 100644
--- a/src/include/access/reloptions.h
+++ b/src/include/access/reloptions.h
@@ -108,7 +108,7 @@ typedef struct relopt_real
} relopt_real;
/* validation routines for strings */
-typedef void (*validate_string_relopt) (char *value);
+typedef void (*validate_string_relopt) (const char *value);
typedef struct relopt_string
{
@@ -246,17 +246,17 @@ typedef struct
extern relopt_kind add_reloption_kind(void);
-extern void add_bool_reloption(bits32 kinds, char *name, char *desc,
+extern void add_bool_reloption(bits32 kinds, const char *name, const char *desc,
bool default_val);
-extern void add_int_reloption(bits32 kinds, char *name, char *desc,
+extern void add_int_reloption(bits32 kinds, const char *name, const char *desc,
int default_val, int min_val, int max_val);
-extern void add_real_reloption(bits32 kinds, char *name, char *desc,
+extern void add_real_reloption(bits32 kinds, const char *name, const char *desc,
double default_val, double min_val, double max_val);
-extern void add_string_reloption(bits32 kinds, char *name, char *desc,
- char *default_val, validate_string_relopt validator);
+extern void add_string_reloption(bits32 kinds, const char *name, const char *desc,
+ const char *default_val, validate_string_relopt validator);
extern Datum transformRelOptions(Datum oldOptions, List *defList,
- char *namspace, char *validnsps[],
+ const char *namspace, char *validnsps[],
bool ignoreOids, bool isReset);
extern List *untransformRelOptions(Datum options);
extern bytea *extractRelOptions(HeapTuple tuple, TupleDesc tupdesc,
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index f2c10f905f..118b0a8432 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -350,14 +350,14 @@ extern void CommitTransactionCommand(void);
extern void AbortCurrentTransaction(void);
extern void BeginTransactionBlock(void);
extern bool EndTransactionBlock(void);
-extern bool PrepareTransactionBlock(char *gid);
+extern bool PrepareTransactionBlock(const char *gid);
extern void UserAbortTransactionBlock(void);
extern void BeginImplicitTransactionBlock(void);
extern void EndImplicitTransactionBlock(void);
extern void ReleaseSavepoint(List *options);
-extern void DefineSavepoint(char *name);
+extern void DefineSavepoint(const char *name);
extern void RollbackToSavepoint(List *options);
-extern void BeginInternalSubTransaction(char *name);
+extern void BeginInternalSubTransaction(const char *name);
extern void ReleaseCurrentSubTransaction(void);
extern void RollbackAndReleaseCurrentSubTransaction(void);
extern bool IsSubTransaction(void);
diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h
index 22a8e63658..7805c3c747 100644
--- a/src/include/access/xlog_internal.h
+++ b/src/include/access/xlog_internal.h
@@ -321,9 +321,9 @@ extern char *recoveryRestoreCommand;
extern bool RestoreArchivedFile(char *path, const char *xlogfname,
const char *recovername, off_t expectedSize,
bool cleanupEnabled);
-extern void ExecuteRecoveryCommand(char *command, char *commandName,
+extern void ExecuteRecoveryCommand(const char *command, const char *commandName,
bool failOnerror);
-extern void KeepFileRestoredFromArchive(char *path, char *xlogfname);
+extern void KeepFileRestoredFromArchive(const char *path, const char *xlogfname);
extern void XLogArchiveNotify(const char *xlog);
extern void XLogArchiveNotifySeg(XLogSegNo segno);
extern void XLogArchiveForceDone(const char *xlog);
diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h
index cb1bc887f8..0fae02295b 100644
--- a/src/include/catalog/heap.h
+++ b/src/include/catalog/heap.h
@@ -109,7 +109,7 @@ extern Node *cookDefault(ParseState *pstate,
Node *raw_default,
Oid atttypid,
int32 atttypmod,
- char *attname);
+ const char *attname);
extern void DeleteRelationTuple(Oid relid);
extern void DeleteAttributeTuples(Oid relid);
diff --git a/src/include/commands/comment.h b/src/include/commands/comment.h
index 85bd801513..0caf0e81ab 100644
--- a/src/include/commands/comment.h
+++ b/src/include/commands/comment.h
@@ -34,11 +34,11 @@ extern ObjectAddress CommentObject(CommentStmt *stmt);
extern void DeleteComments(Oid oid, Oid classoid, int32 subid);
-extern void CreateComments(Oid oid, Oid classoid, int32 subid, char *comment);
+extern void CreateComments(Oid oid, Oid classoid, int32 subid, const char *comment);
extern void DeleteSharedComments(Oid oid, Oid classoid);
-extern void CreateSharedComments(Oid oid, Oid classoid, char *comment);
+extern void CreateSharedComments(Oid oid, Oid classoid, const char *comment);
extern char *GetComment(Oid oid, Oid classoid, int32 subid);
diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h
index f7bb4a54f7..bfead9af3d 100644
--- a/src/include/commands/defrem.h
+++ b/src/include/commands/defrem.h
@@ -39,12 +39,12 @@ extern char *makeObjectName(const char *name1, const char *name2,
extern char *ChooseRelationName(const char *name1, const char *name2,
const char *label, Oid namespaceid);
extern bool CheckIndexCompatible(Oid oldId,
- char *accessMethodName,
+ const char *accessMethodName,
List *attributeList,
List *exclusionOpNames);
extern Oid GetDefaultOpClass(Oid type_id, Oid am_id);
extern Oid ResolveOpClass(List *opclass, Oid attrType,
- char *accessMethodName, Oid accessMethodId);
+ const char *accessMethodName, Oid accessMethodId);
/* commands/functioncmds.c */
extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt);
diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h
index 8f3fc65536..9fbf38629d 100644
--- a/src/include/commands/typecmds.h
+++ b/src/include/commands/typecmds.h
@@ -34,7 +34,7 @@ extern ObjectAddress AlterDomainDefault(List *names, Node *defaultRaw);
extern ObjectAddress AlterDomainNotNull(List *names, bool notNull);
extern ObjectAddress AlterDomainAddConstraint(List *names, Node *constr,
ObjectAddress *constrAddr);
-extern ObjectAddress AlterDomainValidateConstraint(List *names, char *constrName);
+extern ObjectAddress AlterDomainValidateConstraint(List *names, const char *constrName);
extern ObjectAddress AlterDomainDropConstraint(List *names, const char *constrName,
DropBehavior behavior, bool missing_ok);
diff --git a/src/include/commands/view.h b/src/include/commands/view.h
index cf08ce2ac7..46d762db22 100644
--- a/src/include/commands/view.h
+++ b/src/include/commands/view.h
@@ -17,7 +17,7 @@
#include "catalog/objectaddress.h"
#include "nodes/parsenodes.h"
-extern void validateWithCheckOption(char *value);
+extern void validateWithCheckOption(const char *value);
extern ObjectAddress DefineView(ViewStmt *stmt, const char *queryString,
int stmt_location, int stmt_len);
diff --git a/src/include/executor/tablefunc.h b/src/include/executor/tablefunc.h
index a24a555b75..49e8c7c1b2 100644
--- a/src/include/executor/tablefunc.h
+++ b/src/include/executor/tablefunc.h
@@ -53,11 +53,11 @@ typedef struct TableFuncRoutine
{
void (*InitOpaque) (struct TableFuncScanState *state, int natts);
void (*SetDocument) (struct TableFuncScanState *state, Datum value);
- void (*SetNamespace) (struct TableFuncScanState *state, char *name,
- char *uri);
- void (*SetRowFilter) (struct TableFuncScanState *state, char *path);
+ void (*SetNamespace) (struct TableFuncScanState *state, const char *name,
+ const char *uri);
+ void (*SetRowFilter) (struct TableFuncScanState *state, const char *path);
void (*SetColumnFilter) (struct TableFuncScanState *state,
- char *path, int colnum);
+ const char *path, int colnum);
bool (*FetchRow) (struct TableFuncScanState *state);
Datum (*GetValue) (struct TableFuncScanState *state, int colnum,
Oid typid, int32 typmod, bool *isnull);
diff --git a/src/include/parser/parse_relation.h b/src/include/parser/parse_relation.h
index 91542d4f15..290f3b78cb 100644
--- a/src/include/parser/parse_relation.h
+++ b/src/include/parser/parse_relation.h
@@ -54,9 +54,9 @@ extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate,
extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte,
int rtelevelsup);
extern Node *scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte,
- char *colname, int location,
+ const char *colname, int location,
int fuzzy_rte_penalty, FuzzyAttrMatchState *fuzzystate);
-extern Node *colNameToVar(ParseState *pstate, char *colname, bool localonly,
+extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
int location);
extern void markVarForSelectPriv(ParseState *pstate, Var *var,
RangeTblEntry *rte);
@@ -117,7 +117,7 @@ extern void addRTEtoQuery(ParseState *pstate, RangeTblEntry *rte,
bool addToRelNameSpace, bool addToVarNameSpace);
extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn();
extern void errorMissingColumn(ParseState *pstate,
- char *relname, char *colname, int location) pg_attribute_noreturn();
+ const char *relname, const char *colname, int location) pg_attribute_noreturn();
extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
int location, bool include_dropped,
List **colnames, List **colvars);
diff --git a/src/include/parser/parse_target.h b/src/include/parser/parse_target.h
index 44af46b1aa..bb7b7b606b 100644
--- a/src/include/parser/parse_target.h
+++ b/src/include/parser/parse_target.h
@@ -28,7 +28,7 @@ extern TargetEntry *transformTargetEntry(ParseState *pstate,
char *colname, bool resjunk);
extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr,
ParseExprKind exprKind,
- char *colname,
+ const char *colname,
int attrno,
List *indirection,
int location);
diff --git a/src/include/postmaster/bgworker.h b/src/include/postmaster/bgworker.h
index 6b4e631880..b6c5800cfe 100644
--- a/src/include/postmaster/bgworker.h
+++ b/src/include/postmaster/bgworker.h
@@ -140,7 +140,7 @@ extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry;
* If dbname is NULL, connection is made to no specific database;
* only shared catalogs can be accessed.
*/
-extern void BackgroundWorkerInitializeConnection(char *dbname, char *username);
+extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username);
/* Just like the above, but specifying database and user by OID. */
extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid);
diff --git a/src/include/rewrite/rewriteDefine.h b/src/include/rewrite/rewriteDefine.h
index 2e25288bb4..b496a0c154 100644
--- a/src/include/rewrite/rewriteDefine.h
+++ b/src/include/rewrite/rewriteDefine.h
@@ -25,7 +25,7 @@
extern ObjectAddress DefineRule(RuleStmt *stmt, const char *queryString);
-extern ObjectAddress DefineQueryRewrite(char *rulename,
+extern ObjectAddress DefineQueryRewrite(const char *rulename,
Oid event_relid,
Node *event_qual,
CmdType event_type,
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h
index f4c4aed7f9..596fdadc63 100644
--- a/src/include/storage/lwlock.h
+++ b/src/include/storage/lwlock.h
@@ -184,7 +184,7 @@ extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name);
* registration in the main shared memory segment wouldn't work for that case.
*/
extern int LWLockNewTrancheId(void);
-extern void LWLockRegisterTranche(int tranche_id, char *tranche_name);
+extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name);
extern void LWLockInitialize(LWLock *lock, int tranche_id);
/*
diff --git a/src/include/utils/dynamic_loader.h b/src/include/utils/dynamic_loader.h
index 6c9287b611..80ac1e3fe6 100644
--- a/src/include/utils/dynamic_loader.h
+++ b/src/include/utils/dynamic_loader.h
@@ -17,8 +17,8 @@
#include "fmgr.h"
-extern void *pg_dlopen(char *filename);
-extern PGFunction pg_dlsym(void *handle, char *funcname);
+extern void *pg_dlopen(const char *filename);
+extern PGFunction pg_dlsym(void *handle, const char *funcname);
extern void pg_dlclose(void *handle);
extern char *pg_dlerror(void);
diff --git a/src/include/utils/varlena.h b/src/include/utils/varlena.h
index cab82ee888..06f3b69893 100644
--- a/src/include/utils/varlena.h
+++ b/src/include/utils/varlena.h
@@ -16,7 +16,7 @@
#include "nodes/pg_list.h"
#include "utils/sortsupport.h"
-extern int varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid);
+extern int varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid);
extern void varstr_sortsupport(SortSupport ssup, Oid collid, bool bpchar);
extern int varstr_levenshtein(const char *source, int slen,
const char *target, int tlen,
diff --git a/src/include/utils/xml.h b/src/include/utils/xml.h
index e6fa0e2051..385b728f42 100644
--- a/src/include/utils/xml.h
+++ b/src/include/utils/xml.h
@@ -65,14 +65,14 @@ extern xmltype *xmlelement(XmlExpr *xexpr,
Datum *named_argvalue, bool *named_argnull,
Datum *argvalue, bool *argnull);
extern xmltype *xmlparse(text *data, XmlOptionType xmloption, bool preserve_whitespace);
-extern xmltype *xmlpi(char *target, text *arg, bool arg_is_null, bool *result_is_null);
+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);
extern bool xml_is_document(xmltype *arg);
extern text *xmltotext_with_xmloption(xmltype *data, XmlOptionType xmloption_arg);
extern char *escape_xml(const char *str);
-extern char *map_sql_identifier_to_xml_name(char *ident, bool fully_escaped, bool escape_period);
-extern char *map_xml_name_to_sql_identifier(char *name);
+extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period);
+extern char *map_xml_name_to_sql_identifier(const char *name);
extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings);
extern int xmlbinary; /* XmlBinaryType, but int for guc enum */
diff --git a/src/interfaces/ecpg/compatlib/informix.c b/src/interfaces/ecpg/compatlib/informix.c
index e9bcb4cde2..13058cf7bf 100644
--- a/src/interfaces/ecpg/compatlib/informix.c
+++ b/src/interfaces/ecpg/compatlib/informix.c
@@ -195,7 +195,7 @@ ecpg_strndup(const char *str, size_t len)
}
int
-deccvasc(char *cp, int len, decimal *np)
+deccvasc(const char *cp, int len, decimal *np)
{
char *str;
int ret = 0;
@@ -520,7 +520,7 @@ rdatestr(date d, char *str)
*
*/
int
-rstrdate(char *str, date * d)
+rstrdate(const char *str, date * d)
{
return rdefmtdate(d, "mm/dd/yyyy", str);
}
@@ -545,7 +545,7 @@ rjulmdy(date d, short mdy[3])
}
int
-rdefmtdate(date * d, char *fmt, char *str)
+rdefmtdate(date * d, const char *fmt, const char *str)
{
/* TODO: take care of DBCENTURY environment variable */
/* PGSQL functions allow all centuries */
@@ -571,7 +571,7 @@ rdefmtdate(date * d, char *fmt, char *str)
}
int
-rfmtdate(date d, char *fmt, char *str)
+rfmtdate(date d, const char *fmt, char *str)
{
errno = 0;
if (PGTYPESdate_fmt_asc(d, fmt, str) == 0)
@@ -747,7 +747,7 @@ initValue(long lng_val)
/* return the position oft the right-most dot in some string */
static int
-getRightMostDot(char *str)
+getRightMostDot(const char *str)
{
size_t len = strlen(str);
int i,
@@ -765,7 +765,7 @@ getRightMostDot(char *str)
/* And finally some misc functions */
int
-rfmtlong(long lng_val, char *fmt, char *outbuf)
+rfmtlong(long lng_val, const char *fmt, char *outbuf)
{
size_t fmt_len = strlen(fmt);
size_t temp_len;
@@ -1047,7 +1047,7 @@ rsetnull(int t, char *ptr)
}
int
-risnull(int t, char *ptr)
+risnull(int t, const char *ptr)
{
return ECPGis_noind_null(t, ptr);
}
diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c
index 2084d7fe60..8f720b2c54 100644
--- a/src/interfaces/ecpg/ecpglib/misc.c
+++ b/src/interfaces/ecpg/ecpglib/misc.c
@@ -375,7 +375,7 @@ ECPGset_noind_null(enum ECPGttype type, void *ptr)
}
static bool
-_check(unsigned char *ptr, int length)
+_check(const unsigned char *ptr, int length)
{
for (length--; length >= 0; length--)
if (ptr[length] != 0xff)
@@ -385,36 +385,36 @@ _check(unsigned char *ptr, int length)
}
bool
-ECPGis_noind_null(enum ECPGttype type, void *ptr)
+ECPGis_noind_null(enum ECPGttype type, const void *ptr)
{
switch (type)
{
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_string:
- if (*((char *) ptr) == '\0')
+ if (*((const char *) ptr) == '\0')
return true;
break;
case ECPGt_short:
case ECPGt_unsigned_short:
- if (*((short int *) ptr) == SHRT_MIN)
+ if (*((const short int *) ptr) == SHRT_MIN)
return true;
break;
case ECPGt_int:
case ECPGt_unsigned_int:
- if (*((int *) ptr) == INT_MIN)
+ if (*((const int *) ptr) == INT_MIN)
return true;
break;
case ECPGt_long:
case ECPGt_unsigned_long:
case ECPGt_date:
- if (*((long *) ptr) == LONG_MIN)
+ if (*((const long *) ptr) == LONG_MIN)
return true;
break;
#ifdef HAVE_LONG_LONG_INT
case ECPGt_long_long:
case ECPGt_unsigned_long_long:
- if (*((long long *) ptr) == LONG_LONG_MIN)
+ if (*((const long long *) ptr) == LONG_LONG_MIN)
return true;
break;
#endif /* HAVE_LONG_LONG_INT */
@@ -425,15 +425,15 @@ ECPGis_noind_null(enum ECPGttype type, void *ptr)
return _check(ptr, sizeof(double));
break;
case ECPGt_varchar:
- if (*(((struct ECPGgeneric_varchar *) ptr)->arr) == 0x00)
+ if (*(((const struct ECPGgeneric_varchar *) ptr)->arr) == 0x00)
return true;
break;
case ECPGt_decimal:
- if (((decimal *) ptr)->sign == NUMERIC_NULL)
+ if (((const decimal *) ptr)->sign == NUMERIC_NULL)
return true;
break;
case ECPGt_numeric:
- if (((numeric *) ptr)->sign == NUMERIC_NULL)
+ if (((const numeric *) ptr)->sign == NUMERIC_NULL)
return true;
break;
case ECPGt_interval:
diff --git a/src/interfaces/ecpg/include/ecpg_informix.h b/src/interfaces/ecpg/include/ecpg_informix.h
index dd6258152a..a5260a5542 100644
--- a/src/interfaces/ecpg/include/ecpg_informix.h
+++ b/src/interfaces/ecpg/include/ecpg_informix.h
@@ -36,15 +36,15 @@ extern "C"
extern int rdatestr(date, char *);
extern void rtoday(date *);
extern int rjulmdy(date, short *);
-extern int rdefmtdate(date *, char *, char *);
-extern int rfmtdate(date, char *, char *);
+extern int rdefmtdate(date *, const char *, const char *);
+extern int rfmtdate(date, const char *, char *);
extern int rmdyjul(short *, date *);
-extern int rstrdate(char *, date *);
+extern int rstrdate(const char *, date *);
extern int rdayofweek(date);
-extern int rfmtlong(long, char *, char *);
+extern int rfmtlong(long, const char *, char *);
extern int rgetmsg(int, char *, int);
-extern int risnull(int, char *);
+extern int risnull(int, const char *);
extern int rsetnull(int, char *);
extern int rtypalign(int, int);
extern int rtypmsize(int, int);
@@ -62,7 +62,7 @@ extern void ECPG_informix_reset_sqlca(void);
int decadd(decimal *, decimal *, decimal *);
int deccmp(decimal *, decimal *);
void deccopy(decimal *, decimal *);
-int deccvasc(char *, int, decimal *);
+int deccvasc(const char *, int, decimal *);
int deccvdbl(double, decimal *);
int deccvint(int, decimal *);
int deccvlong(long, decimal *);
diff --git a/src/interfaces/ecpg/include/ecpglib.h b/src/interfaces/ecpg/include/ecpglib.h
index 536b7506ff..8a601996d2 100644
--- a/src/interfaces/ecpg/include/ecpglib.h
+++ b/src/interfaces/ecpg/include/ecpglib.h
@@ -80,7 +80,7 @@ bool ECPGset_desc_header(int, const char *, int);
bool ECPGset_desc(int, const char *, int,...);
void ECPGset_noind_null(enum ECPGttype, void *);
-bool ECPGis_noind_null(enum ECPGttype, void *);
+bool ECPGis_noind_null(enum ECPGttype, const void *);
bool ECPGdescribe(int, int, bool, const char *, const char *,...);
void ECPGset_var(int, void *, int);
diff --git a/src/interfaces/ecpg/include/pgtypes_date.h b/src/interfaces/ecpg/include/pgtypes_date.h
index 3d1a181b2b..caf8a33d12 100644
--- a/src/interfaces/ecpg/include/pgtypes_date.h
+++ b/src/interfaces/ecpg/include/pgtypes_date.h
@@ -21,7 +21,7 @@ extern void PGTYPESdate_julmdy(date, int *);
extern void PGTYPESdate_mdyjul(int *, date *);
extern int PGTYPESdate_dayofweek(date);
extern void PGTYPESdate_today(date *);
-extern int PGTYPESdate_defmt_asc(date *, const char *, char *);
+extern int PGTYPESdate_defmt_asc(date *, const char *, const char *);
extern int PGTYPESdate_fmt_asc(date, const char *, char *);
#ifdef __cplusplus
diff --git a/src/interfaces/ecpg/include/pgtypes_timestamp.h b/src/interfaces/ecpg/include/pgtypes_timestamp.h
index 283ecca25e..1545be4ee9 100644
--- a/src/interfaces/ecpg/include/pgtypes_timestamp.h
+++ b/src/interfaces/ecpg/include/pgtypes_timestamp.h
@@ -19,7 +19,7 @@ extern char *PGTYPEStimestamp_to_asc(timestamp);
extern int PGTYPEStimestamp_sub(timestamp *, timestamp *, interval *);
extern int PGTYPEStimestamp_fmt_asc(timestamp *, char *, int, const char *);
extern void PGTYPEStimestamp_current(timestamp *);
-extern int PGTYPEStimestamp_defmt_asc(char *, const char *, timestamp *);
+extern int PGTYPEStimestamp_defmt_asc(const char *, const char *, timestamp *);
extern int PGTYPEStimestamp_add_interval(timestamp * tin, interval * span, timestamp * tout);
extern int PGTYPEStimestamp_sub_interval(timestamp * tin, interval * span, timestamp * tout);
diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c
index 33c9011a71..4ee70ee40b 100644
--- a/src/interfaces/ecpg/pgtypeslib/datetime.c
+++ b/src/interfaces/ecpg/pgtypeslib/datetime.c
@@ -329,7 +329,7 @@ PGTYPESdate_fmt_asc(date dDate, const char *fmtstring, char *outbuf)
#define PGTYPES_DATE_MONTH_MAXLENGTH 20 /* probably even less :-) */
int
-PGTYPESdate_defmt_asc(date * d, const char *fmt, char *str)
+PGTYPESdate_defmt_asc(date * d, const char *fmt, const char *str)
{
/*
* token[2] = { 4,6 } means that token 2 starts at position 4 and ends at
diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c
index 30f2ccbcb7..4f7c4c68b1 100644
--- a/src/interfaces/ecpg/pgtypeslib/interval.c
+++ b/src/interfaces/ecpg/pgtypeslib/interval.c
@@ -65,7 +65,7 @@ AdjustFractDays(double frac, struct /* pg_ */ tm *tm, fsec_t *fsec, int scale)
/* copy&pasted from .../src/backend/utils/adt/datetime.c */
static int
-ParseISO8601Number(char *str, char **endptr, int *ipart, double *fpart)
+ParseISO8601Number(const char *str, char **endptr, int *ipart, double *fpart)
{
double val;
@@ -90,7 +90,7 @@ ParseISO8601Number(char *str, char **endptr, int *ipart, double *fpart)
/* copy&pasted from .../src/backend/utils/adt/datetime.c */
static int
-ISO8601IntegerWidth(char *fieldstart)
+ISO8601IntegerWidth(const char *fieldstart)
{
/* We might have had a leading '-' */
if (*fieldstart == '-')
diff --git a/src/interfaces/ecpg/pgtypeslib/timestamp.c b/src/interfaces/ecpg/pgtypeslib/timestamp.c
index fa5b32ed9d..e3a275df56 100644
--- a/src/interfaces/ecpg/pgtypeslib/timestamp.c
+++ b/src/interfaces/ecpg/pgtypeslib/timestamp.c
@@ -815,7 +815,7 @@ PGTYPEStimestamp_sub(timestamp * ts1, timestamp * ts2, interval * iv)
}
int
-PGTYPEStimestamp_defmt_asc(char *str, const char *fmt, timestamp * d)
+PGTYPEStimestamp_defmt_asc(const char *str, const char *fmt, timestamp * d)
{
int year,
month,
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index 256a3c395c..4abbf93d19 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -74,7 +74,7 @@ ECPGstruct_member_dup(struct ECPGstruct_member *rm)
/* The NAME argument is copied. The type argument is preserved as a pointer. */
void
-ECPGmake_struct_member(char *name, struct ECPGtype *type, struct ECPGstruct_member **start)
+ECPGmake_struct_member(const char *name, struct ECPGtype *type, struct ECPGstruct_member **start)
{
struct ECPGstruct_member *ptr,
*ne =
diff --git a/src/interfaces/ecpg/preproc/type.h b/src/interfaces/ecpg/preproc/type.h
index 4b93336480..fc70d7d218 100644
--- a/src/interfaces/ecpg/preproc/type.h
+++ b/src/interfaces/ecpg/preproc/type.h
@@ -33,7 +33,7 @@ struct ECPGtype
};
/* Everything is malloced. */
-void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **);
+void ECPGmake_struct_member(const char *, struct ECPGtype *, struct ECPGstruct_member **);
struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, char *, int);
struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, char *);
struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *, char *);
diff --git a/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc b/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
index f1a9048889..a147f405ab 100644
--- a/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
@@ -13,7 +13,7 @@ static void
check_return(int ret);
static void
-date_test_strdate(char *input)
+date_test_strdate(const char *input)
{
static int i;
date d;
@@ -38,7 +38,7 @@ date_test_strdate(char *input)
}
static void
-date_test_defmt(char *fmt, char *input)
+date_test_defmt(const char *fmt, const char *input)
{
static int i;
char dbuf[11];
@@ -63,7 +63,7 @@ date_test_defmt(char *fmt, char *input)
}
static void
-date_test_fmt(date d, char *fmt)
+date_test_fmt(date d, const char *fmt)
{
static int i;
char buf[200];
diff --git a/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc b/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
index a1070e1331..2ecf09c837 100644
--- a/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
@@ -13,7 +13,7 @@ static void
check_return(int ret);
static void
-fmtlong(long lng, char *fmt)
+fmtlong(long lng, const char *fmt)
{
static int i;
int r;
diff --git a/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc b/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc
index 0386093d70..5380f9eb5a 100644
--- a/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/test_informix2.pgc
@@ -7,7 +7,7 @@ EXEC SQL include ../regression;
EXEC SQL DEFINE MAXDBLEN 30;
/* Check SQLCODE, and produce a "standard error" if it's wrong! */
-static void sql_check(char *fn, char *caller, int ignore)
+static void sql_check(const char *fn, const char *caller, int ignore)
{
char errorstring[255];
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
index 87a435e9bd..68be08276d 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
@@ -24,7 +24,7 @@ static void
check_return(int ret);
static void
-date_test_strdate(char *input)
+date_test_strdate(const char *input)
{
static int i;
date d;
@@ -49,7 +49,7 @@ date_test_strdate(char *input)
}
static void
-date_test_defmt(char *fmt, char *input)
+date_test_defmt(const char *fmt, const char *input)
{
static int i;
char dbuf[11];
@@ -74,7 +74,7 @@ date_test_defmt(char *fmt, char *input)
}
static void
-date_test_fmt(date d, char *fmt)
+date_test_fmt(date d, const char *fmt)
{
static int i;
char buf[200];
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
index 70e015a130..b2e397e38c 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
@@ -24,7 +24,7 @@ static void
check_return(int ret);
static void
-fmtlong(long lng, char *fmt)
+fmtlong(long lng, const char *fmt)
{
static int i;
int r;
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c b/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
index 4e372a5799..eeb9b62ab4 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-test_informix2.c
@@ -97,7 +97,7 @@ struct sqlca_t *ECPGget_sqlca(void);
/* Check SQLCODE, and produce a "standard error" if it's wrong! */
-static void sql_check(char *fn, char *caller, int ignore)
+static void sql_check(const char *fn, const char *caller, int ignore)
{
char errorstring[255];
diff --git a/src/interfaces/ecpg/test/expected/preproc-init.c b/src/interfaces/ecpg/test/expected/preproc-init.c
index ca23d348d6..b0e04731fe 100644
--- a/src/interfaces/ecpg/test/expected/preproc-init.c
+++ b/src/interfaces/ecpg/test/expected/preproc-init.c
@@ -114,7 +114,7 @@ static int fe(enum e x)
return (int)x;
}
-static void sqlnotice(char *notice, short trans)
+static void sqlnotice(const char *notice, short trans)
{
if (!notice)
notice = "-empty-";
diff --git a/src/interfaces/ecpg/test/expected/preproc-whenever.c b/src/interfaces/ecpg/test/expected/preproc-whenever.c
index 922ef76b92..332ef85b10 100644
--- a/src/interfaces/ecpg/test/expected/preproc-whenever.c
+++ b/src/interfaces/ecpg/test/expected/preproc-whenever.c
@@ -24,7 +24,7 @@
#line 5 "whenever.pgc"
-static void print(char *msg)
+static void print(const char *msg)
{
fprintf(stderr, "Error in statement '%s':\n", msg);
sqlprint();
diff --git a/src/interfaces/ecpg/test/preproc/init.pgc b/src/interfaces/ecpg/test/preproc/init.pgc
index 11dc01ade4..b1f71997a2 100644
--- a/src/interfaces/ecpg/test/preproc/init.pgc
+++ b/src/interfaces/ecpg/test/preproc/init.pgc
@@ -35,7 +35,7 @@ static int fe(enum e x)
return (int)x;
}
-static void sqlnotice(char *notice, short trans)
+static void sqlnotice(const char *notice, short trans)
{
if (!notice)
notice = "-empty-";
diff --git a/src/interfaces/ecpg/test/preproc/whenever.pgc b/src/interfaces/ecpg/test/preproc/whenever.pgc
index 9b3ae9e9ec..14cf571e6a 100644
--- a/src/interfaces/ecpg/test/preproc/whenever.pgc
+++ b/src/interfaces/ecpg/test/preproc/whenever.pgc
@@ -4,7 +4,7 @@ exec sql include ../regression;
exec sql whenever sqlerror sqlprint;
-static void print(char *msg)
+static void print(const char *msg)
{
fprintf(stderr, "Error in statement '%s':\n", msg);
sqlprint();
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 6bcf60a712..1cd15c3ce0 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -398,9 +398,9 @@ static int parseServiceFile(const char *serviceFile,
PQconninfoOption *options,
PQExpBuffer errorMessage,
bool *group_found);
-static char *pwdfMatchesString(char *buf, char *token);
-static char *passwordFromFile(char *hostname, char *port, char *dbname,
- char *username, char *pgpassfile);
+static char *pwdfMatchesString(char *buf, const char *token);
+static char *passwordFromFile(const char *hostname, const char *port, const char *dbname,
+ const char *username, const char *pgpassfile);
static void pgpassfileWarning(PGconn *conn);
static void default_threadlock(int acquire);
@@ -6329,10 +6329,10 @@ defaultNoticeProcessor(void *arg, const char *message)
* token doesn't match
*/
static char *
-pwdfMatchesString(char *buf, char *token)
+pwdfMatchesString(char *buf, const char *token)
{
- char *tbuf,
- *ttok;
+ char *tbuf;
+ const char *ttok;
bool bslash = false;
if (buf == NULL || token == NULL)
@@ -6366,8 +6366,8 @@ pwdfMatchesString(char *buf, char *token)
/* Get a password from the password file. Return value is malloc'd. */
static char *
-passwordFromFile(char *hostname, char *port, char *dbname,
- char *username, char *pgpassfile)
+passwordFromFile(const char *hostname, const char *port, const char *dbname,
+ const char *username, const char *pgpassfile)
{
FILE *fp;
struct stat stat_buf;
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index ca0d1bccf8..a57393fbdd 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -293,7 +293,7 @@ static void plperl_return_next_internal(SV *sv);
static char *hek2cstr(HE *he);
static SV **hv_store_string(HV *hv, const char *key, SV *val);
static SV **hv_fetch_string(HV *hv, const char *key);
-static void plperl_create_sub(plperl_proc_desc *desc, char *s, Oid fn_oid);
+static void plperl_create_sub(plperl_proc_desc *desc, const char *s, Oid fn_oid);
static SV *plperl_call_perl_func(plperl_proc_desc *desc,
FunctionCallInfo fcinfo);
static void plperl_compile_callback(void *arg);
@@ -2083,7 +2083,7 @@ plperlu_validator(PG_FUNCTION_ARGS)
* supplied in s, and returns a reference to it
*/
static void
-plperl_create_sub(plperl_proc_desc *prodesc, char *s, Oid fn_oid)
+plperl_create_sub(plperl_proc_desc *prodesc, const char *s, Oid fn_oid)
{
dTHX;
dSP;
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 0156b00bfb..e7ea3ae138 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -438,7 +438,7 @@ string_matches_pattern(const char *str, const char *pattern)
* NOTE: Assumes there is enough room in the target buffer!
*/
void
-replace_string(char *string, char *replace, char *replacement)
+replace_string(char *string, const char *replace, const char *replacement)
{
char *ptr;
@@ -460,7 +460,7 @@ replace_string(char *string, char *replace, char *replacement)
* the given suffix.
*/
static void
-convert_sourcefiles_in(char *source_subdir, char *dest_dir, char *dest_subdir, char *suffix)
+convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const char *dest_subdir, const char *suffix)
{
char testtablespace[MAXPGPATH];
char indir[MAXPGPATH];
diff --git a/src/test/regress/pg_regress.h b/src/test/regress/pg_regress.h
index 4abfc628e5..0d9c4bfac3 100644
--- a/src/test/regress/pg_regress.h
+++ b/src/test/regress/pg_regress.h
@@ -49,5 +49,5 @@ int regression_main(int argc, char *argv[],
init_function ifunc, test_function tfunc);
void add_stringlist_item(_stringlist **listhead, const char *str);
PID_TYPE spawn_process(const char *cmdline);
-void replace_string(char *string, char *replace, char *replacement);
+void replace_string(char *string, const char *replace, const char *replacement);
bool file_exists(const char *file);
--
2.15.0
Just leave it as char*. If you change the endptr argument you're going to
force every call site to change their return variable, and some of them
would end up having to cast away the const on their end.OK, here is an updated patch with the controversial bits removed.
I'm in general favor in helping compilers, but if you have to cheat.
ISTM That there is still at least one strange cast:
+static const char **LWLockTrancheArray = NULL;
+ LWLockTrancheArray = (const char **) // twice
Maybe some function should return a "const char **", or the const is not
really justified?
--
Fabien.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/4/17 16:50, Fabien COELHO wrote:
Just leave it as char*. If you change the endptr argument you're going to
force every call site to change their return variable, and some of them
would end up having to cast away the const on their end.OK, here is an updated patch with the controversial bits removed.
I'm in general favor in helping compilers, but if you have to cheat.
ISTM That there is still at least one strange cast:
+static const char **LWLockTrancheArray = NULL; + LWLockTrancheArray = (const char **) // twice
These are not cases of "cheating". This is just the return value of a
memory allocation function being cast from void * to the appropriate
result type. That is an orthogonal style decision that I have
maintained in these cases.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
ISTM That there is still at least one strange cast:
+static const char **LWLockTrancheArray = NULL; + LWLockTrancheArray = (const char **) // twiceThese are not cases of "cheating". This is just the return value of a
memory allocation function being cast from void * to the appropriate
result type. That is an orthogonal style decision that I have
maintained in these cases.
Ok. I'm at the limit of my C abilities.
Your answer is about void * vs char *, I'm okay with that.
My question was about no const / const in the same operation.
Would it make sense that the function returns "const void *", i.e. the
cast is not on the const part but on the pointer type part?
--
Fabien.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Would it make sense that the function returns "const void *", i.e. the cast
is not on the const part but on the pointer type part?
Or maybe you do not really need a cast, the following code does not
generate any warning when compiled with clang & gcc.
#include <stdio.h>
// const void * would be ok as well
void * msg_fun(void)
{
return "hello world";
}
int main(void)
{
const char * msg = msg_fun();
printf("message: %s\n", msg);
return 0;
}
Or basically all is fine, I'm just nitpicking for nothing, shame on me.
As I said, I rather like more precise declarations.
--
Fabien.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Fabien COELHO <coelho@cri.ensmp.fr> writes:
ISTM That there is still at least one strange cast:
+static const char **LWLockTrancheArray = NULL; + LWLockTrancheArray = (const char **) // twice
These are not cases of "cheating". This is just the return value of a
memory allocation function being cast from void * to the appropriate
result type. That is an orthogonal style decision that I have
maintained in these cases.
Would it make sense that the function returns "const void *", i.e. the
cast is not on the const part but on the pointer type part?
Certainly not -- if malloc-like functions returned "const void *" then
you could never write on allocated space without having casted away
const.
In any case, what's shown above is not involving any funny stuff,
because the type of LWLockTrancheArray is pointer to non-const
array of pointers to const char strings. So it's correct to be
assigning a non-const pointer to it. If it were written like
"const char * const *" then the issues would be quite different.
As for your followup --- yes, we could just omit the cast altogether
and the compiler wouldn't complain, but that is not better style IMO.
The value of the cast really is to document what type we're expecting
the expression to produce. In context, that statement (today) is
LWLockTrancheArray = (char **)
MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated * sizeof(char *));
and the reader can see by inspection that the calculation of how much
to allocate (so many char-* items) is consistent with the char-**
result. It is not necessary to go find the declaration of
LWLockTrancheArray and verify that it's char **, because we trust the
compiler to whine if char ** isn't assignment-compatible with that.
But if we left off the cast and just assigned the function result directly
to the variable, then there would be nothing directly tying the variable's
type to this allocation computation.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Hello Tom,
ISTM That there is still at least one strange cast:
+static const char **LWLockTrancheArray = NULL; + LWLockTrancheArray = (const char **) // twiceThese are not cases of "cheating". This is just the return value of a
memory allocation function being cast from void * to the appropriate
result type. That is an orthogonal style decision that I have
maintained in these cases.Would it make sense that the function returns "const void *", i.e. the
cast is not on the const part but on the pointer type part?Certainly not -- if malloc-like functions returned "const void *" then
you could never write on allocated space without having casted away
const.
Ok. Sure.
LWLockTrancheArray = (char **)
MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated * sizeof(char *));and the reader can see by inspection that the calculation of how much
to allocate (so many char-* items) is consistent with the char-**
result. It is not necessary to go find the declaration of
LWLockTrancheArray and verify that it's char **, because we trust the
compiler to whine if char ** isn't assignment-compatible with that.
But if we left off the cast and just assigned the function result directly
to the variable, then there would be nothing directly tying the variable's
type to this allocation computation.
Thanks for the reflesher course about the intricacies of "const".
After your explanation, and on third thoughts, ISTM that the assignment
should not include "const" in the explicit cast, i.e., use
extern void * msg_func(void);
const char * msg = (char *) msg_func();
The variable or field is constant, not what the function returns, so
const char * msg = (const char *) msg_func();
does not really make full sense to me, and moreover the compiler does not
complain without the const.
--
Fabien.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Fabien COELHO <coelho@cri.ensmp.fr> writes:
LWLockTrancheArray = (char **)
MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated * sizeof(char *));
After your explanation, and on third thoughts, ISTM that the assignment
should not include "const" in the explicit cast,
Can't get terribly excited about that one way or the other. I think
the statement would be OK as-is, and it would also be fine as
LWLockTrancheArray = (const char **)
MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated * sizeof(const char *));
The other two possible combinations are not good of course --- not that
they'd generate invalid code, but that they'd require readers to expend
brain cells convincing themselves that the code wasn't wrong.
... and moreover the compiler does not
complain without the const.
Arguing on the basis of what your compiler does is a pretty shaky basis.
It's not impossible that someone else's compiler would complain if the
casted-to type isn't identical to the variable's type. I tend to agree
that a compiler *should* allow "char **" to be cast to "const char **"
silently, but that isn't necessarily what happens in the real world.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/10/17 11:42, Fabien COELHO wrote:
After your explanation, and on third thoughts, ISTM that the assignment
should not include "const" in the explicit cast, i.e., useextern void * msg_func(void);
const char * msg = (char *) msg_func();The variable or field is constant, not what the function returns, so
const char * msg = (const char *) msg_func();
does not really make full sense to me, and moreover the compiler does not
complain without the const.
The compiler knows how to handle the char * -> const char * case, but
not the char ** -> const char ** case.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/10/17 10:29, Fabien COELHO wrote:
Or basically all is fine, I'm just nitpicking for nothing, shame on me.
As I said, I rather like more precise declarations.
committed
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers