diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml
index c50ba60e21c..4a7c5748b9a 100644
--- a/doc/src/sgml/indexam.sgml
+++ b/doc/src/sgml/indexam.sgml
@@ -892,7 +892,7 @@ amtranslatestrategy (StrategyNumber strategy, Oid opfamily, Oid opcintype);
StrategyNumber
amtranslatecmptype (CompareType cmptype, Oid opfamily, Oid opcintype);
- These functions, if implemented, will be called by the planer and executor
+ These functions, if implemented, will be called by the planner and executor
to convert between fixed CompareType values and the specific
strategy numbers used by the access method. These functions can be
implemented by access methods that implement functionality similar to the
diff --git a/doc/src/sgml/ref/pgupgrade.sgml b/doc/src/sgml/ref/pgupgrade.sgml
index 7bdd85c5cff..15b2300f318 100644
--- a/doc/src/sgml/ref/pgupgrade.sgml
+++ b/doc/src/sgml/ref/pgupgrade.sgml
@@ -801,7 +801,7 @@ psql --username=postgres --file=script.sql postgres
- Because not all statistics are not transferred by
+ Because not all statistics are transferred by
pg_upgrade, you will be instructed to run a command to
regenerate that information at the end of the upgrade. You might need to
set connection parameters to match your new cluster.
diff --git a/src/backend/statistics/attribute_stats.c b/src/backend/statistics/attribute_stats.c
index 6bcbee0edba..0f152a32107 100644
--- a/src/backend/statistics/attribute_stats.c
+++ b/src/backend/statistics/attribute_stats.c
@@ -539,7 +539,7 @@ get_attr_expr(Relation rel, int attnum)
return NULL;
/*
- * The index attnum points directly to a relation attnum, then it's no an
+ * The index attnum points directly to a relation attnum, then it's not an
* expression attribute.
*/
if (rel->rd_index->indkey.values[attnum - 1] != 0)
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index 8adf2730277..591f43d901f 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -1828,7 +1828,7 @@ LWLockDisownInternal(LWLock *lock)
/*
* Helper function to release lock, shared between LWLockRelease() and
- * LWLockeleaseDisowned().
+ * LWLockReleaseDisowned().
*/
static void
LWLockReleaseInternal(LWLock *lock, LWLockMode mode)
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c
index 3c9ebbcd69c..01545490ab0 100644
--- a/src/backend/utils/activity/pgstat_backend.c
+++ b/src/backend/utils/activity/pgstat_backend.c
@@ -87,7 +87,7 @@ pgstat_fetch_stat_backend(ProcNumber procNumber)
/*
* Returns statistics of a backend by pid.
*
- * This routine includes sanity checks to ensire that the backend exists and
+ * This routine includes sanity checks to ensure that the backend exists and
* is running. "bktype" can be optionally defined to return the BackendType
* of the backend whose statistics are returned.
*/
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 700ccb6df9b..868ab24cf70 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -1654,7 +1654,7 @@ CacheInvalidateSmgr(RelFileLocatorBackend rlocator)
/* verify optimization stated above stays valid */
StaticAssertStmt(MAX_BACKENDS_BITS <= 23,
- "MAX_BACKEND_BITS is too big for inval.c");
+ "MAX_BACKENDS_BITS is too big for inval.c");
msg.sm.id = SHAREDINVALSMGR_ID;
msg.sm.backend_hi = rlocator.backend >> 16;
diff --git a/src/common/pg_lzcompress.c b/src/common/pg_lzcompress.c
index 86354d660fd..bf4f4d8a451 100644
--- a/src/common/pg_lzcompress.c
+++ b/src/common/pg_lzcompress.c
@@ -167,7 +167,7 @@
*
* Acknowledgments:
*
- * Many thanks to Adisak Pochanayon, who's article about SLZ
+ * Many thanks to Adisak Pochanayon, whose article about SLZ
* inspired me to write the PostgreSQL compression this way.
*
* Jan Wieck
diff --git a/src/pl/plpython/plpy_exec.c b/src/pl/plpython/plpy_exec.c
index 00747bb811b..66f71d701fd 100644
--- a/src/pl/plpython/plpy_exec.c
+++ b/src/pl/plpython/plpy_exec.c
@@ -309,7 +309,7 @@ PLy_exec_function(FunctionCallInfo fcinfo, PLyProcedure *proc)
*
* the python function is expected to return Py_None if the tuple is
* acceptable and unmodified. Otherwise it should return a PyUnicode
- * object who's value is SKIP, or MODIFY. SKIP means don't perform
+ * object whose value is SKIP, or MODIFY. SKIP means don't perform
* this action. MODIFY means the tuple has been modified, so update
* tuple and perform action. SKIP and MODIFY assume the trigger fires
* BEFORE the event and is ROW level. postgres expects the function
diff --git a/src/tools/testwrap b/src/tools/testwrap
index 8ae8fb79ba7..5e59efdf3fa 100755
--- a/src/tools/testwrap
+++ b/src/tools/testwrap
@@ -43,7 +43,7 @@ env_dict = {**os.environ,
'TESTLOGDIR': os.path.join(testdir, 'log')}
-# The configuration time value of PG_TEST_EXTRA is supplied via arguement
+# The configuration time value of PG_TEST_EXTRA is supplied via argument
# --pg-test-extra. But it can be overridden by environment variable
# PG_TEST_EXTRA at the time of running a test. Hence use value from arguments
# only if PG_TEST_EXTRA is not set in the test environment, which already