1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Improve regression test coverage for src/backend/tsearch/spell.c.

In passing, throw an error if the AF count is too small, rather than
just silently discarding extra affix entries.

Note that the new regression test cases require installing the
updated src/backend/tsearch/dicts files.

Arthur Zakirov

Discussion: https://postgr.es/m/20180413113447.GA32474@zakirov.localdomain
This commit is contained in:
Tom Lane
2018-04-13 13:49:52 -04:00
parent d25c2ee9c0
commit 8bf358c18e
7 changed files with 77 additions and 6 deletions

View File

@ -1,15 +1,23 @@
FLAG long
AF 7
AF 11
AF cZ #1
AF cL #2
AF sGsJpUsS #3
AF sSpB #4
AF cZsS #5
AF sScZs\ #6
AF sScZs\sE #6
AF sA #7
AF CaCp #8
AF CcCp #9
AF sD #10
AF sB #11
COMPOUNDFLAG cZ
COMPOUNDBEGIN Ca
COMPOUNDMIDDLE Cb
COMPOUNDEND Cc
COMPOUNDPERMITFLAG Cp
ONLYINCOMPOUND cL
PFX pB Y 1
@ -28,7 +36,18 @@ SFX sS Y 1
SFX sS 0 S [^SXZHY]
SFX sA Y 1
SFX sA Y IES [^AEIOU]Y
SFX sA Y IES [^AEIOU]Y{1}
SFX sB Y 1
SFX sB 0 ED K{1}
# Affixes with compound flags
SFX s\ N 1
SFX s\ 0 Y/2 [^Y]
SFX sE N 1
SFX sE 0 S/2 [^S]
# Check duplicate affixes
SFX sD N 1
SFX sD 0 S/2 [^S]

View File

@ -1,4 +1,5 @@
book/3
book/11
booking/4
footballklubber
foot/5
@ -6,3 +7,5 @@ football/1
ball/6
klubber/1
sky/7
ex-/8
machina/9

View File

@ -18,6 +18,14 @@ SFX 302 0 ING [^E]
SFX 303 Y 1
SFX 303 0 S [^SXZHY]
# Remove ED suffix from lexeme for base words with K ending
SFX 306 Y 1
SFX 306 0 ED K{1}
# Just add Y to lexeme for base words with Y ending
SFX 307 Y 1
SFX 307 Y 0 Y*
SFX 304 Y 1
SFX 304 Y IES [^AEIOU]Y

View File

@ -1,8 +1,9 @@
book/302,301,202,303
book/306
booking/303,201
footballklubber
foot/101,303
football/101
ball/303,101,305
klubber/101
sky/304
sky/304,307

View File

@ -1303,7 +1303,7 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
{
Conf->useFlagAliases = true;
naffix = atoi(sflag);
if (naffix == 0)
if (naffix <= 0)
ereport(ERROR,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid number of flag vector aliases")));
@ -1318,7 +1318,7 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
Conf->AffixData[curaffix] = VoidString;
curaffix++;
}
/* Other lines is aliases */
/* Other lines are aliases */
else
{
if (curaffix < naffix)
@ -1326,6 +1326,11 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
Conf->AffixData[curaffix] = cpstrdup(Conf, sflag);
curaffix++;
}
else
ereport(ERROR,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("number of aliases exceeds specified number %d",
naffix - 1)));
}
goto nextline;
}