From 1e16a8107db9a50435b39e09c6f9c52c45e63e1a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 10 Apr 2011 18:02:17 -0400 Subject: Teach regular expression operators to honor collations. This involves getting the character classification and case-folding functions in the regex library to use the collations infrastructure. Most of this work had been done already in connection with the upper/lower and LIKE logic, so it was a simple matter of transposition. While at it, split out these functions into a separate source file regc_pg_locale.c, so that they can be correctly labeled with the Postgres project's license rather than the Scriptics license. These functions are 100% Postgres-written code whereas what remains in regc_locale.c is still mostly not ours, so lumping them both under the same copyright notice was getting more and more misleading. --- src/include/regex/regex.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/include/regex/regex.h') diff --git a/src/include/regex/regex.h b/src/include/regex/regex.h index cab439df78e..cec4b837cd1 100644 --- a/src/include/regex/regex.h +++ b/src/include/regex/regex.h @@ -73,6 +73,7 @@ typedef struct #define REG_USHORTEST 020000 int re_csize; /* sizeof(character) */ char *re_endp; /* backward compatibility kludge */ + Oid re_collation; /* Collation that defines LC_CTYPE behavior */ /* the rest is opaque pointers to hidden innards */ char *re_guts; /* `char *' is more portable than `void *' */ char *re_fns; @@ -161,9 +162,10 @@ typedef struct /* * the prototypes for exported functions */ -extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int); +extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid); extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int); extern void pg_regfree(regex_t *); extern size_t pg_regerror(int, const regex_t *, char *, size_t); +extern void pg_set_regex_collation(Oid collation); #endif /* _REGEX_H_ */ -- cgit v1.2.3