mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
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.
This commit is contained in:
@ -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_ */
|
||||
|
Reference in New Issue
Block a user