diff --git a/src/backend/access/brin/brin_tuple.c b/src/backend/access/brin/brin_tuple.c
index 93f00f6a8fe0b977b6a616cc4552fe220793d71f..08fa998a5259047bce66556d928a3b55cce4c481 100644
--- a/src/backend/access/brin/brin_tuple.c
+++ b/src/backend/access/brin/brin_tuple.c
@@ -304,7 +304,7 @@ brin_free_tuple(BrinTuple *tuple)
 }
 
 /*
- * Create an palloc'd copy of a BrinTuple.
+ * Create a palloc'd copy of a BrinTuple.
  */
 BrinTuple *
 brin_copy_tuple(BrinTuple *tuple, Size len)
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index 9a6dcdd4b1d1b793c0ad91ead2a1fab2f707978c..c2d52faa9602e30c49fb52b469e6a02a78f550b2 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -40,7 +40,7 @@ typedef struct
 	BTSpool    *spool;
 
 	/*
-	 * spool2 is needed only when the index is an unique index. Dead tuples
+	 * spool2 is needed only when the index is a unique index. Dead tuples
 	 * are put into spool2 instead of spool in order to avoid uniqueness
 	 * check.
 	 */
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
index 3ac339bebfceb4976684a69cba63dd9b1c7ad7c0..d9a3fabb8f83ccac44b74026de782b291d0e5ed0 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -291,7 +291,7 @@ AtAbort_Twophase(void)
 }
 
 /*
- * This is called after we have finished transfering state to the prepared
+ * This is called after we have finished transferring state to the prepared
  * PGXACT entry.
  */
 void
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 5e1bda4ed2cf47b93d54000b770eafa343f51093..10f0396561bbccd450d42f98505db03a79a1ffc4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -100,7 +100,7 @@ typedef struct
 	AclObjectKind acl_kind;		/* ACL_KIND_* of this object type */
 	bool		is_nsp_name_unique;		/* can the nsp/name combination (or
 										 * name alone, if there's no
-										 * namespace) be considered an unique
+										 * namespace) be considered a unique
 										 * identifier for an object of this
 										 * class? */
 } ObjectPropertyType;
@@ -3241,7 +3241,7 @@ pg_identify_object(PG_FUNCTION_ARGS)
 
 			/*
 			 * We only return the object name if it can be used (together with
-			 * the schema name, if any) as an unique identifier.
+			 * the schema name, if any) as a unique identifier.
 			 */
 			if (get_object_namensp_unique(address.classId))
 			{
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 99acd4a6a2ca614c19481c98e588b57bad7925ff..351d48ece629fe07319ed5818486f9db8deb7ff1 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1051,7 +1051,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
 				 */
 
 				/*
-				 * A expression using mutable functions is probably wrong,
+				 * An expression using mutable functions is probably wrong,
 				 * since if you aren't going to get the same result for the
 				 * same data every time, it's not clear what the index entries
 				 * mean at all.
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index 06ec82e2461852fa84de41964212cfb2e26b8694..31666edfa8a1d3d679d53ca0fee4725fe88376b2 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -304,7 +304,7 @@ ExecInsert(TupleTableSlot *slot,
 	 * inserting the record into the heap and all indexes.
 	 *
 	 * ExecWithCheckOptions will elog(ERROR) if a violation is found, so
-	 * the tuple will never be seen, if it violates the the WITH CHECK
+	 * the tuple will never be seen, if it violates the WITH CHECK
 	 * OPTION.
 	 *
 	 * ExecWithCheckOptions() will skip any WCOs which are not of
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index 99f4b65ea658bda7935da7633cc24128dcecc47c..d4939415f072b3c88098d55e2d906807fbf5f261 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -130,7 +130,7 @@ BackgroundWorkerShmemInit(void)
 		/*
 		 * Copy contents of worker list into shared memory.  Record the shared
 		 * memory slot assigned to each worker.  This ensures a 1-to-1
-		 * correspondence betwen the postmaster's private list and the array
+		 * correspondence between the postmaster's private list and the array
 		 * in shared memory.
 		 */
 		slist_foreach(siter, &BackgroundWorkerList)
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index 9b40bc8eca5de836fb12828c8f4bfbebde7b9035..c878f629854120f8678356a98977ffe5ebee675e 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -1597,7 +1597,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
 
 	/*
 	 * We may overwrite the work from some other backend, but that's ok, our
-	 * snapshot is valid as well, we'll just have done some superflous work.
+	 * snapshot is valid as well, we'll just have done some superfluous work.
 	 */
 	if (rename(tmppath, path) != 0)
 	{
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index 5813e71da0279524237644d3e6d2a85b6ce5115d..1acd2f090b585f961169281235fb1b2318aac246 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -848,7 +848,7 @@ LWLockDequeueSelf(LWLock *lock)
 
 		/*
 		 * Somebody else dequeued us and has or will wake us up. Deal with the
-		 * superflous absorption of a wakeup.
+		 * superfluous absorption of a wakeup.
 		 */
 
 		/*
@@ -1183,7 +1183,7 @@ LWLockAcquireOrWait(LWLock *lock, LWLockMode mode)
 		{
 			/*
 			 * Wait until awakened.  Like in LWLockAcquire, be prepared for bogus
-			 * wakups, because we share the semaphore with ProcWaitForSignal.
+			 * wakeups, because we share the semaphore with ProcWaitForSignal.
 			 */
 			LOG_LWDEBUG("LWLockAcquireOrWait", lock, "waiting");
 
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 8826a5d50b22ddcfed3972d10fae35e168965aec..1907a8745880204860a8b3af14e095e4109efe90 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -516,7 +516,7 @@ RegisterRelcacheInvalidation(Oid dbId, Oid relId)
 /*
  * RegisterSnapshotInvalidation
  *
- * Register a invalidation event for MVCC scans against a given catalog.
+ * Register an invalidation event for MVCC scans against a given catalog.
  * Only needed for catalogs that don't have catcaches.
  */
 static void
diff --git a/src/bin/pg_archivecleanup/pg_archivecleanup.c b/src/bin/pg_archivecleanup/pg_archivecleanup.c
index 2ff2a270b65e1315c8b3a952331a692223163930..ba6e242f15569f4644d1c5a6398ecd25d37fc59b 100644
--- a/src/bin/pg_archivecleanup/pg_archivecleanup.c
+++ b/src/bin/pg_archivecleanup/pg_archivecleanup.c
@@ -46,7 +46,7 @@ char		exclusiveCleanupFileName[MAXPGPATH];		/* the oldest file we
  *	accessible directory. If you want to make other assumptions,
  *	such as using a vendor-specific archive and access API, these
  *	routines are the ones you'll need to change. You're
- *	enouraged to submit any changes to pgsql-hackers@postgresql.org
+ *	encouraged to submit any changes to pgsql-hackers@postgresql.org
  *	or personally to the current maintainer. Those changes may be
  *	folded in to later versions of this program.
  */
diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c
index fa44d0362bd082536ad811ee4df6072abf9b303c..e4e16d7dc18c16b87e9a01bdd59119dbd13d58f2 100644
--- a/src/bin/pg_basebackup/pg_recvlogical.c
+++ b/src/bin/pg_basebackup/pg_recvlogical.c
@@ -603,7 +603,7 @@ main(int argc, char **argv)
 		{"verbose", no_argument, NULL, 'v'},
 		{"version", no_argument, NULL, 'V'},
 		{"help", no_argument, NULL, '?'},
-/* connnection options */
+/* connection options */
 		{"dbname", required_argument, NULL, 'd'},
 		{"host", required_argument, NULL, 'h'},
 		{"port", required_argument, NULL, 'p'},
@@ -670,7 +670,7 @@ main(int argc, char **argv)
 			case 'v':
 				verbose++;
 				break;
-/* connnection options */
+/* connection options */
 			case 'd':
 				dbname = pg_strdup(optarg);
 				break;
diff --git a/src/bin/pg_upgrade/parallel.c b/src/bin/pg_upgrade/parallel.c
index c6978b596b4099d88af5df4933ee1598da7d5221..97fa0dc356bd848252441ea6c67f05996c47c415 100644
--- a/src/bin/pg_upgrade/parallel.c
+++ b/src/bin/pg_upgrade/parallel.c
@@ -175,7 +175,7 @@ win32_exec_prog(exec_thread_arg *args)
  *	parallel_transfer_all_new_dbs
  *
  *	This has the same API as transfer_all_new_dbs, except it does parallel execution
- *	by transfering multiple tablespaces in parallel
+ *	by transferring multiple tablespaces in parallel
  */
 void
 parallel_transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
diff --git a/src/bin/pg_upgrade/relfilenode.c b/src/bin/pg_upgrade/relfilenode.c
index fe058807b68ef76bc903e4f017bb9a5b7d67a8d3..7b3215af5665a2535dda608bea4606140deba3c3 100644
--- a/src/bin/pg_upgrade/relfilenode.c
+++ b/src/bin/pg_upgrade/relfilenode.c
@@ -35,7 +35,7 @@ transfer_all_new_tablespaces(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
 	  user_opts.transfer_mode == TRANSFER_MODE_LINK ? "Linking" : "Copying");
 
 	/*
-	 * Transfering files by tablespace is tricky because a single database can
+	 * Transferring files by tablespace is tricky because a single database can
 	 * use multiple tablespaces.  For non-parallel mode, we just pass a NULL
 	 * tablespace path, which matches all tablespaces.  In parallel mode, we
 	 * pass the default tablespace and all user-created tablespaces and let
diff --git a/src/include/access/attnum.h b/src/include/access/attnum.h
index 82e811dd0fe36eea6999d3a80cadcf47c2f307ba..0fe27ecfbae001050d88beb941d1293dac539392 100644
--- a/src/include/access/attnum.h
+++ b/src/include/access/attnum.h
@@ -46,7 +46,7 @@ typedef int16 AttrNumber;
  *		Returns the attribute offset for an attribute number.
  *
  * Note:
- *		Assumes the attribute number is for an user defined attribute.
+ *		Assumes the attribute number is for a user defined attribute.
  */
 #define AttrNumberGetAttrOffset(attNum) \
 ( \
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index fdf3ea322885f93b607518d532b8dc12147d6d3e..8da6aa952f09af98e48426410b0ecb5f168bf079 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -168,7 +168,7 @@ typedef struct xl_xact_assignment
  * 'xl_xact_xinfo->xinfo'. The presence of the xinfo field itself is signalled
  * by a set XLOG_XACT_HAS_INFO bit in the xl_info field.
  *
- * NB: All the individual data chunks should be be sized to multiples of
+ * NB: All the individual data chunks should be sized to multiples of
  * sizeof(int) and only require int32 alignment.
  */
 
diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h
index 254cf678d6165e20373b55ed49a4c81f06d635a8..f7222fc1779eb124d88569886235123360ae6c65 100644
--- a/src/include/mb/pg_wchar.h
+++ b/src/include/mb/pg_wchar.h
@@ -88,7 +88,7 @@ typedef unsigned int pg_wchar;
  * interoperable anyway).
  *
  * Note that XEmacs's implementation is different from what emacs does.
- * We follow emacs's implementaion, rathter than XEmacs's.
+ * We follow emacs's implementation, rather than XEmacs's.
  *----------------------------------------------------
  */
 
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index f4dc0dbedc90b8835abc6ddf939a28bbedb0d3f0..c63cf54c8ebc4b85d9649ba2f2f5bad7821e08a6 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -356,8 +356,8 @@ tas(volatile slock_t *lock)
 /*
  * Solaris has always run sparc processors in TSO (total store) mode, but
  * linux didn't use to and the *BSDs still don't. So, be careful about
- * acquire/release semantics. The CPU will treat superflous membars as NOPs,
- * so it's just code space.
+ * acquire/release semantics. The CPU will treat superfluous membars as
+ * NOPs, so it's just code space.
  */
 #define HAS_TEST_AND_SET
 
diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c
index 49cb817a5076b0473422f6fe58e190625c22c26b..3b0855f7225b8687481ebec2fb33c5718a62a645 100644
--- a/src/interfaces/ecpg/pgtypeslib/datetime.c
+++ b/src/interfaces/ecpg/pgtypeslib/datetime.c
@@ -323,7 +323,7 @@ PGTYPESdate_fmt_asc(date dDate, const char *fmtstring, char *outbuf)
  * PGTYPESdate_defmt_asc
  *
  * function works as follows:
- *	 - first we analyze the paramters
+ *	 - first we analyze the parameters
  *	 - if this is a special case with no delimiters, add delimters
  *	 - find the tokens. First we look for numerical values. If we have found
  *	   less than 3 tokens, we check for the months' names and thereafter for
diff --git a/src/interfaces/ecpg/pgtypeslib/numeric.c b/src/interfaces/ecpg/pgtypeslib/numeric.c
index 84d73b7bb7bd12406b31e95386f8ed51440ae652..0504f3cac8a632939a0a66ced9f38b77be16b79d 100644
--- a/src/interfaces/ecpg/pgtypeslib/numeric.c
+++ b/src/interfaces/ecpg/pgtypeslib/numeric.c
@@ -1376,7 +1376,7 @@ PGTYPESnumeric_cmp(numeric *var1, numeric *var2)
 	if (var1->sign == NUMERIC_NEG && var2->sign == NUMERIC_NEG)
 	{
 		/*
-		 * instead of inverting the result, we invert the paramter ordering
+		 * instead of inverting the result, we invert the parameter ordering
 		 */
 		return cmp_abs(var2, var1);
 	}
diff --git a/src/port/pgmkdirp.c b/src/port/pgmkdirp.c
index d9c95b522c9e797365ede97578f80c562467be4e..d943559760d8980a1582f0bee064c0bea52b5597 100644
--- a/src/port/pgmkdirp.c
+++ b/src/port/pgmkdirp.c
@@ -93,7 +93,7 @@ pg_mkdir_p(char *path, int omode)
 	/*
 	 * POSIX 1003.2: For each dir operand that does not name an existing
 	 * directory, effects equivalent to those caused by the following command
-	 * shall occcur:
+	 * shall occur:
 	 *
 	 * mkdir -p -m $(umask -S),u+wx $(dirname dir) && mkdir [-m mode] dir
 	 *