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:
@ -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]
|
||||
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user