Update to latest Snowball sources.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 7dc95cc3b94f2f558606e5ec307466a4e3dbc832
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2026-01-05T20:22:37Z
Update to latest Snowball sources.

It's been almost a year since we last did this, and upstream has
been busy.  They've added stemmers for Polish and Esperanto,
and also deprecated their old Dutch stemmer in favor of the
Kraaij-Pohlmann algorithm.  (The "dutch" stemmer is now the
latter, and "dutch_porter" is the old algorithm.)

Upstream also decided to rename their internal header "header.h"
to something less generic: "snowball_runtime.h".  Seems like a good
thing, but it complicates this patch a bit because we were relying on
interposing our own version of "header.h" to control system header
inclusion order.  (We're partially failing at that now, because now the
generated stemmer files include <stddef.h> before snowball_runtime.h.
I think that'll be okay, but if the buildfarm complains then we'll
have to do more-extensive editing of the generated files.)

I realized that we weren't documenting the available stemmers in
any user-visible place, except indirectly through sample \dFd output.
That's incomplete because we only provide built-in dictionaries for
the recommended stemmers for each language, not alternative stemmers
such as dutch_porter.  So I added a list to the documentation.

I did not do anything with the stopword lists.  If those are still
available from snowballstem.org, they are mighty well hidden.

Discussion: https://postgr.es/m/1185975.1767569534@sss.pgh.pa.us

Files

PathChange+/−
doc/src/sgml/textsearch.sgml modified +52 −0
src/backend/snowball/dict_snowball.c modified +12 −2
src/backend/snowball/libstemmer/api.c modified +11 −37
src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c modified +555 −577
src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c modified +698 −666
src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c modified +181 −143
src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c modified +1877 −461
src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch_porter.c added +665 −0
src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c modified +707 −603
src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c modified +370 −316
src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c modified +828 −665
src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c modified +313 −234
src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c modified +302 −241
src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c modified +211 −177
src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c modified +517 −478
src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c modified +248 −172
src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c modified +332 −279
src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c modified +475 −426
src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c modified +539 −478
src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c modified +295 −182
src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c modified +551 −550
src/backend/snowball/libstemmer/stem_ISO_8859_2_polish.c added +520 −0
src/backend/snowball/libstemmer/stem_KOI8_R_russian.c modified +312 −290
src/backend/snowball/libstemmer/stem_UTF_8_arabic.c modified +808 −746
src/backend/snowball/libstemmer/stem_UTF_8_armenian.c modified +270 −258
src/backend/snowball/libstemmer/stem_UTF_8_basque.c modified +557 −578
src/backend/snowball/libstemmer/stem_UTF_8_catalan.c modified +700 −667
src/backend/snowball/libstemmer/stem_UTF_8_danish.c modified +183 −143
src/backend/snowball/libstemmer/stem_UTF_8_dutch.c modified +1914 −486
src/backend/snowball/libstemmer/stem_UTF_8_dutch_porter.c added +680 −0
src/backend/snowball/libstemmer/stem_UTF_8_english.c modified +717 −607
src/backend/snowball/libstemmer/stem_UTF_8_esperanto.c added +820 −0
src/backend/snowball/libstemmer/stem_UTF_8_estonian.c modified +1033 −977
src/backend/snowball/libstemmer/stem_UTF_8_finnish.c modified +376 −320
src/backend/snowball/libstemmer/stem_UTF_8_french.c modified +847 −676
src/backend/snowball/libstemmer/stem_UTF_8_german.c modified +319 −235
src/backend/snowball/libstemmer/stem_UTF_8_greek.c modified +2142 −2076
src/backend/snowball/libstemmer/stem_UTF_8_hindi.c modified +152 −156
src/backend/snowball/libstemmer/stem_UTF_8_hungarian.c modified +554 −546
src/backend/snowball/libstemmer/stem_UTF_8_indonesian.c modified +302 −241
src/backend/snowball/libstemmer/stem_UTF_8_irish.c modified +211 −177
src/backend/snowball/libstemmer/stem_UTF_8_italian.c modified +525 −482
src/backend/snowball/libstemmer/stem_UTF_8_lithuanian.c modified +584 −595
src/backend/snowball/libstemmer/stem_UTF_8_nepali.c modified +282 −316
src/backend/snowball/libstemmer/stem_UTF_8_norwegian.c modified +250 −172
src/backend/snowball/libstemmer/stem_UTF_8_polish.c added +523 −0
src/backend/snowball/libstemmer/stem_UTF_8_porter.c modified +338 −282
src/backend/snowball/libstemmer/stem_UTF_8_portuguese.c modified +481 −429
src/backend/snowball/libstemmer/stem_UTF_8_romanian.c modified +502 −459
src/backend/snowball/libstemmer/stem_UTF_8_russian.c modified +324 −301
src/backend/snowball/libstemmer/stem_UTF_8_serbian.c modified +5227 −4921
src/backend/snowball/libstemmer/stem_UTF_8_spanish.c modified +543 −480
src/backend/snowball/libstemmer/stem_UTF_8_swedish.c modified +297 −182
src/backend/snowball/libstemmer/stem_UTF_8_tamil.c modified +704 −657
src/backend/snowball/libstemmer/stem_UTF_8_turkish.c modified +1253 −1118
src/backend/snowball/libstemmer/stem_UTF_8_yiddish.c modified +670 −565
src/backend/snowball/libstemmer/utilities.c modified +103 −102
src/backend/snowball/Makefile modified +5 −0
src/backend/snowball/meson.build modified +6 −1
src/backend/snowball/README modified +13 −9
src/backend/snowball/snowball_create.pl modified +2 −0
src/bin/initdb/initdb.c modified +2 −0
src/include/snowball/libstemmer/api.h modified +10 −8
src/include/snowball/libstemmer/header.h deleted +0 −61
src/include/snowball/libstemmer/snowball_runtime.h added +109 −0
src/include/snowball/libstemmer/stem_ISO_8859_1_basque.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_catalan.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_dutch_porter.h added +14 −0
src/include/snowball/libstemmer/stem_ISO_8859_1_english.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_french.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_german.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h modified +1 −2
src/include/snowball/libstemmer/stem_ISO_8859_2_polish.h added +14 −0
src/include/snowball/libstemmer/stem_KOI8_R_russian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_arabic.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_armenian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_basque.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_catalan.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_danish.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_dutch.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_dutch_porter.h added +14 −0
src/include/snowball/libstemmer/stem_UTF_8_english.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_esperanto.h added +14 −0
src/include/snowball/libstemmer/stem_UTF_8_estonian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_finnish.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_french.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_german.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_greek.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_hindi.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_hungarian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_indonesian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_irish.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_italian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_nepali.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_norwegian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_polish.h added +14 −0
src/include/snowball/libstemmer/stem_UTF_8_porter.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_portuguese.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_romanian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_russian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_serbian.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_spanish.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_swedish.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_tamil.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_turkish.h modified +1 −2
src/include/snowball/libstemmer/stem_UTF_8_yiddish.h modified +1 −2
src/include/snowball/snowball_runtime.h (from src/include/snowball/header.h) renamed +11 −11

Discussion