亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? like.c

?? postgresql8.3.4源碼,開源數(shù)據(jù)庫(kù)
?? C
字號(hào):
/*------------------------------------------------------------------------- * * like.c *	  like expression handling code. * *	 NOTES *		A big hack of the regexp.c code!! Contributed by *		Keith Parks <emkxp01@mtcc.demon.co.uk> (7/95). * * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION *	$PostgreSQL: pgsql/src/backend/utils/adt/like.c,v 1.73 2008/01/01 19:45:52 momjian Exp $ * *------------------------------------------------------------------------- */#include "postgres.h"#include <ctype.h>#include "mb/pg_wchar.h"#include "utils/builtins.h"#define LIKE_TRUE						1#define LIKE_FALSE						0#define LIKE_ABORT						(-1)static int	SB_MatchText(char *t, int tlen, char *p, int plen);static text *SB_do_like_escape(text *, text *);static int	MB_MatchText(char *t, int tlen, char *p, int plen);static text *MB_do_like_escape(text *, text *);static int	UTF8_MatchText(char *t, int tlen, char *p, int plen);static int	SB_IMatchText(char *t, int tlen, char *p, int plen);static int	GenericMatchText(char *s, int slen, char *p, int plen);static int	Generic_Text_IC_like(text *str, text *pat);/*-------------------- * Support routine for MatchText. Compares given multibyte streams * as wide characters. If they match, returns 1 otherwise returns 0. *-------------------- */static inline intwchareq(char *p1, char *p2){	int			p1_len;	/* Optimization:  quickly compare the first byte. */	if (*p1 != *p2)		return 0;	p1_len = pg_mblen(p1);	if (pg_mblen(p2) != p1_len)		return 0;	/* They are the same length */	while (p1_len--)	{		if (*p1++ != *p2++)			return 0;	}	return 1;}/* * Formerly we had a routine iwchareq() here that tried to do case-insensitive * comparison of multibyte characters.	It did not work at all, however, * because it relied on tolower() which has a single-byte API ... and * towlower() wouldn't be much better since we have no suitably cheap way * of getting a single character transformed to the system's wchar_t format. * So now, we just downcase the strings using lower() and apply regular LIKE * comparison.	This should be revisited when we install better locale support. */#define NextByte(p, plen)	((p)++, (plen)--)/* Set up to compile like_match.c for multibyte characters */#define CHAREQ(p1, p2) wchareq((p1), (p2))#define NextChar(p, plen) \	do { int __l = pg_mblen(p); (p) +=__l; (plen) -=__l; } while (0)#define CopyAdvChar(dst, src, srclen) \	do { int __l = pg_mblen(src); \		 (srclen) -= __l; \		 while (__l-- > 0) \			 *(dst)++ = *(src)++; \	   } while (0)#define MatchText	MB_MatchText#define do_like_escape	MB_do_like_escape#include "like_match.c"/* Set up to compile like_match.c for single-byte characters */#define CHAREQ(p1, p2) (*(p1) == *(p2))#define NextChar(p, plen) NextByte((p), (plen))#define CopyAdvChar(dst, src, srclen) (*(dst)++ = *(src)++, (srclen)--)#define MatchText	SB_MatchText#define do_like_escape	SB_do_like_escape#include "like_match.c"/* setup to compile like_match.c for single byte case insensitive matches */#define MATCH_LOWER#define NextChar(p, plen) NextByte((p), (plen))#define MatchText SB_IMatchText#include "like_match.c"/* setup to compile like_match.c for UTF8 encoding, using fast NextChar */#define NextChar(p, plen) \	do { (p)++; (plen)--; } while ((plen) > 0 && (*(p) & 0xC0) == 0x80 )#define MatchText	UTF8_MatchText#include "like_match.c"static inline intGenericMatchText(char *s, int slen, char *p, int plen){	if (pg_database_encoding_max_length() == 1)		return SB_MatchText(s, slen, p, plen);	else if (GetDatabaseEncoding() == PG_UTF8)		return UTF8_MatchText(s, slen, p, plen);	else		return MB_MatchText(s, slen, p, plen);}static inline intGeneric_Text_IC_like(text *str, text *pat){	char	   *s,			   *p;	int			slen,				plen;	/*	 * For efficiency reasons, in the single byte case we don't call lower()	 * on the pattern and text, but instead call to_lower on each character.	 * In the multi-byte case we don't have much choice :-(	 */	if (pg_database_encoding_max_length() > 1)	{		/* lower's result is never packed, so OK to use old macros here */		pat = DatumGetTextP(DirectFunctionCall1(lower, PointerGetDatum(pat)));		p = VARDATA(pat);		plen = (VARSIZE(pat) - VARHDRSZ);		str = DatumGetTextP(DirectFunctionCall1(lower, PointerGetDatum(str)));		s = VARDATA(str);		slen = (VARSIZE(str) - VARHDRSZ);		if (GetDatabaseEncoding() == PG_UTF8)			return UTF8_MatchText(s, slen, p, plen);		else			return MB_MatchText(s, slen, p, plen);	}	else	{		p = VARDATA_ANY(pat);		plen = VARSIZE_ANY_EXHDR(pat);		s = VARDATA_ANY(str);		slen = VARSIZE_ANY_EXHDR(str);		return SB_IMatchText(s, slen, p, plen);	}}/* *	interface routines called by the function manager */Datumnamelike(PG_FUNCTION_ARGS){	Name		str = PG_GETARG_NAME(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	char	   *s,			   *p;	int			slen,				plen;	s = NameStr(*str);	slen = strlen(s);	p = VARDATA_ANY(pat);	plen = VARSIZE_ANY_EXHDR(pat);	result = (GenericMatchText(s, slen, p, plen) == LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumnamenlike(PG_FUNCTION_ARGS){	Name		str = PG_GETARG_NAME(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	char	   *s,			   *p;	int			slen,				plen;	s = NameStr(*str);	slen = strlen(s);	p = VARDATA_ANY(pat);	plen = VARSIZE_ANY_EXHDR(pat);	result = (GenericMatchText(s, slen, p, plen) != LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumtextlike(PG_FUNCTION_ARGS){	text	   *str = PG_GETARG_TEXT_PP(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	char	   *s,			   *p;	int			slen,				plen;	s = VARDATA_ANY(str);	slen = VARSIZE_ANY_EXHDR(str);	p = VARDATA_ANY(pat);	plen = VARSIZE_ANY_EXHDR(pat);	result = (GenericMatchText(s, slen, p, plen) == LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumtextnlike(PG_FUNCTION_ARGS){	text	   *str = PG_GETARG_TEXT_PP(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	char	   *s,			   *p;	int			slen,				plen;	s = VARDATA_ANY(str);	slen = VARSIZE_ANY_EXHDR(str);	p = VARDATA_ANY(pat);	plen = VARSIZE_ANY_EXHDR(pat);	result = (GenericMatchText(s, slen, p, plen) != LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumbytealike(PG_FUNCTION_ARGS){	bytea	   *str = PG_GETARG_BYTEA_PP(0);	bytea	   *pat = PG_GETARG_BYTEA_PP(1);	bool		result;	char	   *s,			   *p;	int			slen,				plen;	s = VARDATA_ANY(str);	slen = VARSIZE_ANY_EXHDR(str);	p = VARDATA_ANY(pat);	plen = VARSIZE_ANY_EXHDR(pat);	result = (SB_MatchText(s, slen, p, plen) == LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumbyteanlike(PG_FUNCTION_ARGS){	bytea	   *str = PG_GETARG_BYTEA_PP(0);	bytea	   *pat = PG_GETARG_BYTEA_PP(1);	bool		result;	char	   *s,			   *p;	int			slen,				plen;	s = VARDATA_ANY(str);	slen = VARSIZE_ANY_EXHDR(str);	p = VARDATA_ANY(pat);	plen = VARSIZE_ANY_EXHDR(pat);	result = (SB_MatchText(s, slen, p, plen) != LIKE_TRUE);	PG_RETURN_BOOL(result);}/* * Case-insensitive versions */Datumnameiclike(PG_FUNCTION_ARGS){	Name		str = PG_GETARG_NAME(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	text	   *strtext;	strtext = DatumGetTextP(DirectFunctionCall1(name_text,												NameGetDatum(str)));	result = (Generic_Text_IC_like(strtext, pat) == LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumnameicnlike(PG_FUNCTION_ARGS){	Name		str = PG_GETARG_NAME(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	text	   *strtext;	strtext = DatumGetTextP(DirectFunctionCall1(name_text,												NameGetDatum(str)));	result = (Generic_Text_IC_like(strtext, pat) != LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumtexticlike(PG_FUNCTION_ARGS){	text	   *str = PG_GETARG_TEXT_PP(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	result = (Generic_Text_IC_like(str, pat) == LIKE_TRUE);	PG_RETURN_BOOL(result);}Datumtexticnlike(PG_FUNCTION_ARGS){	text	   *str = PG_GETARG_TEXT_PP(0);	text	   *pat = PG_GETARG_TEXT_PP(1);	bool		result;	result = (Generic_Text_IC_like(str, pat) != LIKE_TRUE);	PG_RETURN_BOOL(result);}/* * like_escape() --- given a pattern and an ESCAPE string, * convert the pattern to use Postgres' standard backslash escape convention. */Datumlike_escape(PG_FUNCTION_ARGS){	text	   *pat = PG_GETARG_TEXT_PP(0);	text	   *esc = PG_GETARG_TEXT_PP(1);	text	   *result;	if (pg_database_encoding_max_length() == 1)		result = SB_do_like_escape(pat, esc);	else		result = MB_do_like_escape(pat, esc);	PG_RETURN_TEXT_P(result);}/* * like_escape_bytea() --- given a pattern and an ESCAPE string, * convert the pattern to use Postgres' standard backslash escape convention. */Datumlike_escape_bytea(PG_FUNCTION_ARGS){	bytea	   *pat = PG_GETARG_BYTEA_PP(0);	bytea	   *esc = PG_GETARG_BYTEA_PP(1);	bytea	   *result = SB_do_like_escape((text *) pat, (text *) esc);	PG_RETURN_BYTEA_P((bytea *) result);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人伦理电影在线观看| 91超碰这里只有精品国产| 久久精品国产在热久久| 亚洲国产精品久久不卡毛片 | 久久99国产精品麻豆| 丝袜美腿亚洲综合| 日韩av一区二| 久久aⅴ国产欧美74aaa| 国产麻豆精品一区二区| 成人免费视频视频在线观看免费| 国产在线国偷精品免费看| 国产一区二区精品久久| 成人综合激情网| 成人黄页在线观看| 91色综合久久久久婷婷| 在线精品国精品国产尤物884a| 欧美天堂亚洲电影院在线播放| 欧美嫩在线观看| 亚洲精品一区二区三区精华液| 久久精品这里都是精品| 成人欧美一区二区三区在线播放| 亚洲一区精品在线| 美女精品一区二区| 成人国产亚洲欧美成人综合网| 99热99精品| 欧美久久久久久久久久| 久久先锋影音av| 亚洲欧美日韩中文播放 | 久久人人超碰精品| 中文字幕一区二区三区在线观看 | 五月天久久比比资源色| 极品少妇一区二区| 一本大道综合伊人精品热热| 91精品国模一区二区三区| 久久久激情视频| 亚洲成a天堂v人片| 国产91在线观看丝袜| 欧美日韩免费观看一区三区| 欧美精品一区二| 亚洲一区视频在线| 国产高清不卡一区二区| 精品视频999| 中文字幕乱码亚洲精品一区| 日韩专区欧美专区| 色94色欧美sute亚洲13| 国产蜜臀97一区二区三区| 日日夜夜免费精品| 粉嫩aⅴ一区二区三区四区| 中文字幕av免费专区久久| 亚洲成a人v欧美综合天堂| av在线不卡网| 国产亚洲午夜高清国产拍精品 | 天堂蜜桃一区二区三区| 北条麻妃一区二区三区| 欧美电影精品一区二区| 亚洲电影在线免费观看| 不卡影院免费观看| 国产亚洲欧洲997久久综合| 亚洲成人av一区二区三区| 91年精品国产| 国产精品素人视频| 国产成人欧美日韩在线电影| 日韩午夜电影在线观看| 日本亚洲天堂网| 欧美视频一区在线观看| 一区二区三区在线观看国产 | 337p亚洲精品色噜噜狠狠| 亚洲日韩欧美一区二区在线| 成人永久aaa| 久久精品综合网| 国产成人免费在线观看不卡| 久久久另类综合| 国产传媒欧美日韩成人| 久久美女艺术照精彩视频福利播放| 日韩av不卡一区二区| 欧美妇女性影城| 天天综合色天天综合| 欧美日韩精品一区视频| 亚洲成人在线免费| 91精品国产一区二区三区| 日本网站在线观看一区二区三区 | 久久久噜噜噜久噜久久综合| 国产一区三区三区| 国产欧美日韩精品一区| 99re这里只有精品6| 亚洲精品伦理在线| 欧美日韩在线播放一区| 日本午夜精品视频在线观看| 欧美成人性战久久| 国产v日产∨综合v精品视频| 国产精品久久久久影院| 色婷婷综合久久久久中文一区二区 | 中文字幕一区二区三区乱码在线| 成人av网站大全| 亚洲制服丝袜在线| 欧美精品三级在线观看| 久久超碰97人人做人人爱| 欧美激情在线观看视频免费| 色又黄又爽网站www久久| 亚洲国产美国国产综合一区二区 | 免播放器亚洲一区| 久久精品一区蜜桃臀影院| 99久久精品久久久久久清纯| 亚洲成a人v欧美综合天堂下载| 精品久久一区二区三区| 99久久久精品免费观看国产蜜| 一区二区三区免费| 精品少妇一区二区三区| 99热在这里有精品免费| 蜜桃一区二区三区四区| 国产精品卡一卡二| 欧美一区二区三区视频免费| 成人爽a毛片一区二区免费| 亚洲一区二区在线视频| 久久久精品黄色| 欧美日本在线一区| av一区二区三区黑人| 免费欧美日韩国产三级电影| 日韩毛片高清在线播放| 精品国产电影一区二区| 欧美午夜在线一二页| 成人久久视频在线观看| 久久av资源站| 亚洲电影第三页| 久久综合久色欧美综合狠狠| 欧美日韩大陆一区二区| 91小视频免费观看| 国产精品一级二级三级| 三级亚洲高清视频| 有码一区二区三区| 久久久久久久综合狠狠综合| 91麻豆精品国产91久久久久| 99久久精品免费看| 成人免费视频一区二区| 激情欧美日韩一区二区| 日本欧美韩国一区三区| 亚洲欧美色图小说| 日韩一区有码在线| 国产精品私人影院| 久久综合五月天婷婷伊人| 在线不卡中文字幕| 欧美性色综合网| 在线观看视频91| 91国内精品野花午夜精品| 不卡的电影网站| 成人黄色综合网站| 成人av电影免费观看| 国产+成+人+亚洲欧洲自线| 狠狠色狠狠色综合系列| 亚洲免费观看在线观看| 欧美日韩大陆在线| 欧美在线观看视频在线| 97精品电影院| 欧美人与z0zoxxxx视频| 在线一区二区三区四区五区| 91网站最新网址| jlzzjlzz亚洲女人18| 99精品热视频| 91美女在线视频| 日本黄色一区二区| 欧美四级电影网| 777奇米四色成人影色区| 日韩三级电影网址| 精品国内片67194| 国产日韩欧美制服另类| 亚洲欧洲国产日韩| 亚洲免费观看在线视频| 亚洲一区二区三区不卡国产欧美| 亚洲超碰精品一区二区| 日本中文字幕一区二区视频 | 亚洲第一狼人社区| 日本人妖一区二区| 国产福利不卡视频| 99re在线精品| 在线91免费看| 中文一区在线播放| 亚洲一区二区三区美女| 紧缚奴在线一区二区三区| 成人免费的视频| 欧美精品tushy高清| 久久精品亚洲麻豆av一区二区| 亚洲日本丝袜连裤袜办公室| 日韩精品电影一区亚洲| 国产成人一区二区精品非洲| 色综合久久综合网97色综合| 日韩精品一区国产麻豆| 国产精品久久久久久久岛一牛影视| 亚洲乱码日产精品bd| 免费黄网站欧美| 99在线精品观看| 欧美一二三区在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 一区二区免费视频| 国产成人免费在线观看不卡| 欧美亚日韩国产aⅴ精品中极品| 久久影院视频免费| 亚洲一区二区视频在线观看| 国产精品一区二区在线观看不卡| 在线精品视频免费播放| 中文字幕高清不卡|