diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml
index 12e99869bbde584ca9e1eb1bc49848f1b7331ae5..ee1aca1eb243af4fbe994b881d08124a66b6c655 100644
--- a/doc/src/sgml/datatype.sgml
+++ b/doc/src/sgml/datatype.sgml
@@ -2329,7 +2329,7 @@ January 8 04:05:06 1999 PST
    <para>
     Time zones, and time-zone conventions, are influenced by
     political decisions, not just earth geometry. Time zones around the
-    world became somewhat standardized during the 1900's,
+    world became somewhat standardized during the 1900s,
     but continue to be prone to arbitrary changes, particularly with
     respect to daylight-savings rules.
     <productname>PostgreSQL</productname> uses the widely-used
diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
index 8f8858294dc32b5f0bd18e9025428317dbfbc3fe..fd568d6b23889e3dba975acff70440d812a2308f 100644
--- a/doc/src/sgml/mvcc.sgml
+++ b/doc/src/sgml/mvcc.sgml
@@ -1224,7 +1224,7 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222;
      correctly.  Advisory locks can be useful for locking strategies
      that are an awkward fit for the MVCC model.
      For example, a common use of advisory locks is to emulate pessimistic
-     locking strategies typical of so called <quote>flat file</> data
+     locking strategies typical of so-called <quote>flat file</> data
      management systems.
      While a flag stored in a table could be used for the same purpose,
      advisory locks are faster, avoid table bloat, and are automatically
diff --git a/doc/src/sgml/pgbench.sgml b/doc/src/sgml/pgbench.sgml
index 4a80b46416d4e610b6fbc6d174731f99b85653bb..a9262c9c2bd4c84df2a8d20921f8992b044027c6 100644
--- a/doc/src/sgml/pgbench.sgml
+++ b/doc/src/sgml/pgbench.sgml
@@ -719,7 +719,7 @@ END;
    (useful when multiple scripts were specified with <option>-f</>),
    and <replaceable>time_epoch</>/<replaceable>time_us</> are a
    UNIX epoch format timestamp and an offset
-   in microseconds (suitable for creating a ISO 8601
+   in microseconds (suitable for creating an ISO 8601
    timestamp with fractional seconds) showing when
    the transaction completed.
   </para>
diff --git a/doc/src/sgml/pgcrypto.sgml b/doc/src/sgml/pgcrypto.sgml
index 6b78f2c1c6319677ebd186da4468ebf86b22dd42..c0d14521a429039478b7673754e70b4f00dc33fd 100644
--- a/doc/src/sgml/pgcrypto.sgml
+++ b/doc/src/sgml/pgcrypto.sgml
@@ -538,7 +538,7 @@ pgp_pub_encrypt_bytea(data bytea, key bytea [, options text ]) returns bytea
 </synopsis>
    <para>
     Encrypt <parameter>data</> with a public PGP key <parameter>key</>.
-    Giving this function a secret key will produce a error.
+    Giving this function a secret key will produce an error.
    </para>
    <para>
     The <parameter>options</> parameter can contain option settings,
diff --git a/doc/src/sgml/pltcl.sgml b/doc/src/sgml/pltcl.sgml
index 9f252e97caba6b8aa09f2034883813a7adeadb76..47c53fc7d61a111aec59e1476e53e97ca209d4ac 100644
--- a/doc/src/sgml/pltcl.sgml
+++ b/doc/src/sgml/pltcl.sgml
@@ -51,7 +51,7 @@
     Sometimes it is desirable to write Tcl functions that are not restricted
     to safe Tcl.  For example, one might want a Tcl function that sends
     email.  To handle these cases, there is a variant of <application>PL/Tcl</> called <literal>PL/TclU</>
-    (for untrusted Tcl).  This is the exact same language except that a full
+    (for untrusted Tcl).  This is exactly the same language except that a full
     Tcl interpreter is used.  <emphasis>If <application>PL/TclU</> is used, it must be
     installed as an untrusted procedural language</emphasis> so that only
     database superusers can create functions in it.  The writer of a <application>PL/TclU</>
diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml
index 850e8921d9eb72d020c3b80f90c00f7056efa99b..a018849498136360af353779e01659193164ce35 100644
--- a/doc/src/sgml/queries.sgml
+++ b/doc/src/sgml/queries.sgml
@@ -1939,7 +1939,7 @@ DELETE FROM parts
     statements in <literal>WITH</>, the order in which the specified updates
     actually happen is unpredictable.  All the statements are executed with
     the same <firstterm>snapshot</> (see <xref linkend="mvcc">), so they
-    cannot <quote>see</> each others' effects on the target tables.  This
+    cannot <quote>see</> one another's effects on the target tables.  This
     alleviates the effects of the unpredictability of the actual order of row
     updates, and means that <literal>RETURNING</> data is the only way to
     communicate changes between different <literal>WITH</> sub-statements and
diff --git a/doc/src/sgml/ref/alter_tsdictionary.sgml b/doc/src/sgml/ref/alter_tsdictionary.sgml
index 7c12037041552e13dd8be5c5168a827a834dbea9..d1f81b2b38db8a4b55e07a1c6b8ce874144fdd4b 100644
--- a/doc/src/sgml/ref/alter_tsdictionary.sgml
+++ b/doc/src/sgml/ref/alter_tsdictionary.sgml
@@ -126,7 +126,7 @@ ALTER TEXT SEARCH DICTIONARY my_dict ( StopWords = newrussian );
 </programlisting>
 
   <para>
-   The following example command changes the language option to dutch,
+   The following example command changes the language option to <literal>dutch</>,
    and removes the stopword option entirely.
   </para>
 
diff --git a/doc/src/sgml/ref/comment.sgml b/doc/src/sgml/ref/comment.sgml
index 1c8b37c83282dc792ebb5b4e826cc906e63db6fe..f1196f95851956ece412cd189183934771f62f26 100644
--- a/doc/src/sgml/ref/comment.sgml
+++ b/doc/src/sgml/ref/comment.sgml
@@ -290,7 +290,7 @@ COMMENT ON SERVER myserver IS 'my foreign server';
 COMMENT ON TABLE my_schema.my_table IS 'Employee Information';
 COMMENT ON TABLESPACE my_tablespace IS 'Tablespace for indexes';
 COMMENT ON TEXT SEARCH CONFIGURATION my_config IS 'Special word filtering';
-COMMENT ON TEXT SEARCH DICTIONARY swedish IS 'Snowball stemmer for swedish language';
+COMMENT ON TEXT SEARCH DICTIONARY swedish IS 'Snowball stemmer for Swedish language';
 COMMENT ON TEXT SEARCH PARSER my_parser IS 'Splits text into words';
 COMMENT ON TEXT SEARCH TEMPLATE snowball IS 'Snowball stemmer';
 COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for RI';
diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml
index 2ad8b5fd42c9475fea62d2276b37398c75b15c8f..5a4c52d4c2d72a6c81d8549053072d1042e174f6 100644
--- a/doc/src/sgml/release-7.4.sgml
+++ b/doc/src/sgml/release-7.4.sgml
@@ -3797,7 +3797,7 @@ DROP SCHEMA information_schema CASCADE;
     </para>
     <para>
      This enabled <command>GRANT</command> to give other users the
-     ability to grant privileges on a object.
+     ability to grant privileges on an object.
     </para>
    </listitem>
   </itemizedlist>
diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml
index d1881fdf946ebef6ddcd226b3b9c1ea22d82a4bf..7f6a74bac9fd80d531ea5ad41b71d3fd2eaf7172 100644
--- a/doc/src/sgml/release-8.2.sgml
+++ b/doc/src/sgml/release-8.2.sgml
@@ -5883,7 +5883,7 @@
       <para>
        The new syntax is <link linkend="SQL-CREATEINDEX"><command>CREATE
        INDEX CONCURRENTLY</></link>.  The default behavior is
-       still to block table modification while a index is being
+       still to block table modification while an index is being
        created.
       </para>
      </listitem>
diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml
index 1c42f1ba7d908912ba5c0fe6893d9e60484bfc94..ec8e43f6eaeba3b263054c8ea2e2cfba7fe02128 100644
--- a/doc/src/sgml/release-old.sgml
+++ b/doc/src/sgml/release-old.sgml
@@ -4849,7 +4849,7 @@ New DECLARE and FETCH feature(Thomas)
 libpq's internal structures now not exported(Tom)
 Allow up to 8 key indexes(Bruce)
 Remove ARCHIVE key word, that is no longer used(Thomas)
-pg_dump -n flag to suppress quotes around indentifiers
+pg_dump -n flag to suppress quotes around identifiers
 disable system columns for views(Jan)
 new INET and CIDR types for network addresses(TomH, Paul)
 no more double quotes in psql output
@@ -5250,7 +5250,7 @@ Support SQL92 syntax for type coercion of literal strings
        (e.g. "DATETIME 'now'")(Thomas)
 Add conversions for int2, int4, and OID types to and from text(Thomas)
 Use shared lock when building indexes(Vadim)
-Free memory allocated for an user query inside transaction block after
+Free memory allocated for a user query inside transaction block after
        this query is done, was turned off in &lt;= 6.2.1(Vadim)
 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
 New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
@@ -6514,7 +6514,7 @@ Incompatible changes:
 New tools:
  * pgperl - a Perl (4.036) interface to Postgres95
  * pg_dump - a utility for dumping out a postgres database into a
-        script file containing query commands. The script files are in a ASCII
+        script file containing query commands. The script files are in an ASCII
         format and can be used to reconstruct the database, even on other
         machines and other architectures. (Also good for converting
         a Postgres 4.2 database to Postgres95 database.)
diff --git a/doc/src/sgml/stylesheet.dsl b/doc/src/sgml/stylesheet.dsl
index 29e885d1c8cec25d014d6ffb6e9e8d031b067ad0..8c7e0caddabdfacea749739348b6ba357fc1d58d 100644
--- a/doc/src/sgml/stylesheet.dsl
+++ b/doc/src/sgml/stylesheet.dsl
@@ -626,7 +626,7 @@
 
 ;; By default, the part and reference title pages get wrong page
 ;; numbers: The first title page gets roman numerals carried over from
-;; preface/toc -- we want arabic numerals.  We also need to make sure
+;; preface/toc -- we want Arabic numerals.  We also need to make sure
 ;; that page-number-restart is set of #f explicitly, because otherwise
 ;; it will carry over from the previous component, which is not good.
 ;;
diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml
index 53051982e2fc648874e7d3f64624e79d2b00299f..12e07eda2fde4b093e59a3d3da04ff6e19cc18eb 100644
--- a/doc/src/sgml/textsearch.sgml
+++ b/doc/src/sgml/textsearch.sgml
@@ -2423,7 +2423,7 @@ more sample word(s) : more indexed word(s)
 </programlisting>
 
     where  the colon (<symbol>:</symbol>) symbol acts as a delimiter between a
-    a phrase and its replacement.
+    phrase and its replacement.
    </para>
 
    <para>
diff --git a/doc/src/sgml/xml2.sgml b/doc/src/sgml/xml2.sgml
index adc923bacc06e66412486eb06c249da88ecba6c9..28213a4430999ff882f1dea7d7b7bb07b0eaa8db 100644
--- a/doc/src/sgml/xml2.sgml
+++ b/doc/src/sgml/xml2.sgml
@@ -321,7 +321,7 @@ AS t(article_id integer, author text, page_count integer, title text);
 
   <para>
    The calling <command>SELECT</> statement doesn't necessarily have be
-   be just <literal>SELECT *</> &mdash; it can reference the output
+   just <literal>SELECT *</> &mdash; it can reference the output
    columns by name or join them to other tables. The function produces a
    virtual table with which you can perform any operation you wish (e.g.
    aggregation, joining, sorting etc). So we could also have:
diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml
index 1e6efd58e4018feded609c13bcf6cc074727994b..8568e21216b787e54bf23e9138cc12d54d2c6f2b 100644
--- a/doc/src/sgml/xoper.sgml
+++ b/doc/src/sgml/xoper.sgml
@@ -189,7 +189,7 @@ SELECT (a + b) AS c FROM test_complex;
 
    <para>
     Unlike commutators, a pair of unary operators could validly be marked
-    as each others' negators; that would mean (A x) equals NOT (B x)
+    as each other's negators; that would mean (A x) equals NOT (B x)
     for all x, or the equivalent for right unary operators.
    </para>