diff --git a/doc/src/sgml/brin.sgml b/doc/src/sgml/brin.sgml
index 2202b7a..c1b6e1a 100644
--- a/doc/src/sgml/brin.sgml
+++ b/doc/src/sgml/brin.sgml
@@ -58,6 +58,24 @@
   store more index entries), but at the same time the summary data stored can
   be more precise and more data blocks can be skipped during an index scan.
  </para>
+
+ <sect2 id="brin-operation">
+  <title>Index Maintenance</title>
+
+  <para>
+   At the time of creation, all existing index pages are scanned and a
+   summary is created for each range, including the possibly-incomplete
+   range at the end.  As new pages are filled with data, page ranges that
+   are already summarized will cause the summary information to be updated
+   with the new tuples.  When a new page is created that does not fall
+   into the last summarized range, that range does not automatically
+   acquire a summary tuple; those insertions remain unsummarized until
+   a summarization run is invoked later, which creates initial summaries
+   for all unsummarized ranges.  This process can be invoked manually
+   by the <function>brin_summarize_new_pages(regclass)</function> function,
+   or automatically when <command>VACUUM</command> processes the table.
+  </para>
+ </sect2>
 </sect1>
 
 <sect1 id="brin-builtin-opclasses">
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 81c1d3f..577d3bd 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -18281,6 +18281,48 @@ SELECT (pg_stat_file('filename')).modification;
 
   </sect2>
 
+  <sect2>
+   <title>Indexing Helper Functions</title>
+
+   <indexterm>
+    <primary>brin_summarize_new_values</primary>
+   </indexterm>
+
+   <para>
+    <xref linkend="functions-admin-indexing"> shows the functions
+    available for index maintenance tasks.
+   </para>
+
+   <table id="functions-admin-indexing">
+    <title>Indexing Helper Functions</title>
+    <tgroup cols="3">
+     <thead>
+      <row><entry>Name</entry> <entry>Return Type</entry> <entry>Description</entry></row>
+     </thead>
+
+     <tbody>
+      <row>
+       <entry>
+        <literal><function>brin_summarize_new_values(<parameter>index_oid</parameter>)</function></literal>
+       </entry>
+       <entry><type>integer</type></entry>
+       <entry>summarize page ranges not already summarized</entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </table>
+
+   <para>
+    <function>brin_summarize_new_values</> receives a BRIN index OID as
+    argument; it scans the table that the index is for, looking for pages
+    that are not currently summarized.  Then the data in those pages is
+    scanned and a new summary index tuple is constructed and inserted into
+    the index.  It returns the number of new page range summaries that were
+    inserted into the index.
+   </para>
+
+  </sect2>
+
   </sect1>
 
   <sect1 id="functions-trigger">
