postgres.git / summary / log / commit / refs

commit    cce1fa9dbcc134281e6d17f34d2f30cd51345184
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Aug 17 22:17:51 2026 +0000

    Doc: clean up documentation about text search datatype limits.
    
    textsearch.sgml neglected to mention that the MAXSTRPOS total-length
    limit applies to tsquery as well as tsvector.  It also claims that
    there is a 32K limit on the total number of nodes in a tsquery, which
    is wrong.  (I suspect that QueryOperator.left may once have been
    int16, which would give rise to such a limit.  But it's uint32 now,
    so you'd hit the 1GB varlena limit well before overflowing that.)
    
    While at it, re-order the bullet points into an order that makes
    more sense, to me anyway.
    
    Reported-by: Claude Code (via Noah Misch)
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    Reviewed-by: Chao Li <li.evan.chao@gmail.com>
    Discussion: https://postgr.es/m/455079.1786897319@sss.pgh.pa.us
    Backpatch-through: 14


doc/src/sgml/textsearch.sgml | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml index c0025827e78..b256e01f613 100644 --- a/doc/src/sgml/textsearch.sgml +++ b/doc/src/sgml/textsearch.sgml @@ -3990,29 +3990,24 @@ Parser: "pg_catalog.default" <para>The length of each lexeme must be less than 2 kilobytes</para> </listitem> <listitem> - <para>The length of a <type>tsvector</type> (lexemes + positions) must be - less than 1 megabyte</para> - </listitem> - <listitem> - <!-- TODO: number of lexemes in what? This is unclear --> - <para>The number of lexemes must be less than - 2<superscript>64</superscript></para> + <para>No more than 256 positions per lexeme</para> </listitem> <listitem> <para>Position values in <type>tsvector</type> must be greater than 0 and no more than 16,383</para> </listitem> <listitem> - <para>The match distance in a <literal>&lt;<replaceable>N</replaceable>&gt;</literal> - (FOLLOWED BY) <type>tsquery</type> operator cannot be more than - 16,384</para> + <para>The length of a <type>tsvector</type>'s data (lexemes + positions) + must be less than 1 megabyte</para> </listitem> <listitem> - <para>No more than 256 positions per lexeme</para> + <para>The length of a <type>tsquery</type>'s data (lexemes only) + must be less than 1 megabyte</para> </listitem> <listitem> - <para>The number of nodes (lexemes + operators) in a <type>tsquery</type> - must be less than 32,768</para> + <para>The match distance in a <literal>&lt;<replaceable>N</replaceable>&gt;</literal> + (FOLLOWED BY) <type>tsquery</type> operator cannot be more than + 16,384</para> </listitem> </itemizedlist> </para> [parent: 05556bdf938d]