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
From a8163e84c83887e4a3b81642c137995932701bb5 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pete...@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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to