summaryrefslogtreecommitdiff
path: root/src/test/regress/expected/regex.linux.utf8.out
AgeCommit message (Collapse)Author
2022-01-05On second thought, remove regex.linux.utf8 regression test altogether.Tom Lane
The code-coverage report says that this test doesn't increase coverage by one single line, which I now realize is because I made src/test/modules/test_regex/sql/test_regex_utf8.sql to cover all the code that this would. So really it's pointless and we should just drop it.
2022-01-05Enable routine running of regex.linux.utf8 regression test.Tom Lane
Up to now this has just sat there as a test you could invoke via EXTRA_TESTS, which of course nobody does. I'm feeling encouraged because c2e8bd275 hasn't yet broke anything, so let's try making this run with a suitable guard condition (similar to collate.linux.utf8).
2016-09-05Make locale-dependent regex character classes work for large char codes.Tom Lane
Previously, we failed to recognize Unicode characters above U+7FF as being members of locale-dependent character classes such as [[:alpha:]]. (Actually, the same problem occurs for large pg_wchar values in any multibyte encoding, but UTF8 is the only case people have actually complained about.) It's impractical to get Spencer's original code to handle character classes or ranges containing many thousands of characters, because it insists on considering each member character individually at regex compile time, whether or not the character will ever be of interest at run time. To fix, choose a cutoff point MAX_SIMPLE_CHR below which we process characters individually as before, and deal with entire ranges or classes as single entities above that. We can actually make things cheaper than before for chars below the cutoff, because the color map can now be a simple linear array for those chars, rather than the multilevel tree structure Spencer designed. It's more expensive than before for chars above the cutoff, because we must do a binary search in a list of high chars and char ranges used in the regex pattern, plus call iswalpha() and friends for each locale-dependent character class used in the pattern. However, multibyte encodings are normally designed to give smaller codes to popular characters, so that we can expect that the slow path will be taken relatively infrequently. In any case, the speed penalty appears minor except when we have to apply iswalpha() etc. to high character codes at runtime --- and the previous coding gave wrong answers for those cases, so whether it was faster is moot. Tom Lane, reviewed by Heikki Linnakangas Discussion: <[email protected]>