diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2003-05-15 15:50:21 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2003-05-15 15:50:21 +0000 |
commit | 2c0556068fc308ed9cce06c85de7e42305d34b86 (patch) | |
tree | 2c9f5561bdc7b660e2fbc5eb2dd67a24f7a654f8 /src/backend/utils/adt/name.c | |
parent | 2a2f6cfa3983e6834299857c80bc07d32d1e019a (diff) | |
download | postgresql-2c0556068fc308ed9cce06c85de7e42305d34b86.tar.gz postgresql-2c0556068fc308ed9cce06c85de7e42305d34b86.zip |
Indexing support for pattern matching operations via separate operator
class when lc_collate is not C.
Diffstat (limited to 'src/backend/utils/adt/name.c')
-rw-r--r-- | src/backend/utils/adt/name.c | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/src/backend/utils/adt/name.c b/src/backend/utils/adt/name.c index b7a56cb1cb1..37dca0b0c63 100644 --- a/src/backend/utils/adt/name.c +++ b/src/backend/utils/adt/name.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.45 2003/05/09 21:19:49 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.46 2003/05/15 15:50:18 petere Exp $ * *------------------------------------------------------------------------- */ @@ -182,6 +182,65 @@ namege(PG_FUNCTION_ARGS) } +/* + * comparison routines for LIKE indexing support + */ + +Datum +name_pattern_eq(PG_FUNCTION_ARGS) +{ + Name arg1 = PG_GETARG_NAME(0); + Name arg2 = PG_GETARG_NAME(1); + + PG_RETURN_BOOL(memcmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) == 0); +} + +Datum +name_pattern_ne(PG_FUNCTION_ARGS) +{ + Name arg1 = PG_GETARG_NAME(0); + Name arg2 = PG_GETARG_NAME(1); + + PG_RETURN_BOOL(memcmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) != 0); +} + +Datum +name_pattern_lt(PG_FUNCTION_ARGS) +{ + Name arg1 = PG_GETARG_NAME(0); + Name arg2 = PG_GETARG_NAME(1); + + PG_RETURN_BOOL(memcmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) < 0); +} + +Datum +name_pattern_le(PG_FUNCTION_ARGS) +{ + Name arg1 = PG_GETARG_NAME(0); + Name arg2 = PG_GETARG_NAME(1); + + PG_RETURN_BOOL(memcmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) <= 0); +} + +Datum +name_pattern_gt(PG_FUNCTION_ARGS) +{ + Name arg1 = PG_GETARG_NAME(0); + Name arg2 = PG_GETARG_NAME(1); + + PG_RETURN_BOOL(memcmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) > 0); +} + +Datum +name_pattern_ge(PG_FUNCTION_ARGS) +{ + Name arg1 = PG_GETARG_NAME(0); + Name arg2 = PG_GETARG_NAME(1); + + PG_RETURN_BOOL(memcmp(NameStr(*arg1), NameStr(*arg2), NAMEDATALEN) >= 0); +} + + /* (see char.c for comparison/operation routines) */ int |