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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tab-complete.c

?? PostgreSQL 8.1.4的源碼 適用于Linux下的開源數據庫系統
?? C
?? 第 1 頁 / 共 5 頁
字號:
			 pg_strcasecmp(prev2_wd, "LEVEL") == 0 &&			 pg_strcasecmp(prev_wd, "REPEATABLE") == 0)		COMPLETE_WITH_CONST("READ");	else if ((pg_strcasecmp(prev3_wd, "SET") == 0 ||			  pg_strcasecmp(prev3_wd, "BEGIN") == 0 ||			  pg_strcasecmp(prev3_wd, "START") == 0 ||			  pg_strcasecmp(prev3_wd, "AS") == 0) &&			 (pg_strcasecmp(prev2_wd, "TRANSACTION") == 0 ||			  pg_strcasecmp(prev2_wd, "WORK") == 0) &&			 pg_strcasecmp(prev_wd, "READ") == 0)	{		static const char *const my_list[] =		{"ONLY", "WRITE", NULL};		COMPLETE_WITH_LIST(my_list);	}	/* Complete SET CONSTRAINTS <foo> with DEFERRED|IMMEDIATE */	else if (pg_strcasecmp(prev3_wd, "SET") == 0 &&			 pg_strcasecmp(prev2_wd, "CONSTRAINTS") == 0)	{		static const char *const constraint_list[] =		{"DEFERRED", "IMMEDIATE", NULL};		COMPLETE_WITH_LIST(constraint_list);	}	/* Complete SET ROLE */	else if (pg_strcasecmp(prev2_wd, "SET") == 0 &&			 pg_strcasecmp(prev_wd, "ROLE") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_roles);	/* Complete SET SESSION with AUTHORIZATION or CHARACTERISTICS... */	else if (pg_strcasecmp(prev2_wd, "SET") == 0 &&			 pg_strcasecmp(prev_wd, "SESSION") == 0)	{		static const char *const my_list[] =		{"AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION", NULL};		COMPLETE_WITH_LIST(my_list);	}	/* Complete SET SESSION AUTHORIZATION with username */	else if (pg_strcasecmp(prev3_wd, "SET") == 0			 && pg_strcasecmp(prev2_wd, "SESSION") == 0			 && pg_strcasecmp(prev_wd, "AUTHORIZATION") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_roles);	/* Complete SET <var> with "TO" */	else if (pg_strcasecmp(prev2_wd, "SET") == 0 &&			 pg_strcasecmp(prev4_wd, "UPDATE") != 0 &&			 pg_strcasecmp(prev_wd, "TABLESPACE") != 0 &&			 pg_strcasecmp(prev4_wd, "DOMAIN") != 0)		COMPLETE_WITH_CONST("TO");	/* Suggest possible variable values */	else if (pg_strcasecmp(prev3_wd, "SET") == 0 &&			 (pg_strcasecmp(prev_wd, "TO") == 0 || strcmp(prev_wd, "=") == 0))	{		if (pg_strcasecmp(prev2_wd, "DateStyle") == 0)		{			static const char *const my_list[] =			{"ISO", "SQL", "Postgres", "German",				"YMD", "DMY", "MDY",				"US", "European", "NonEuropean",			"DEFAULT", NULL};			COMPLETE_WITH_LIST(my_list);		}		else if (pg_strcasecmp(prev2_wd, "GEQO") == 0)		{			static const char *const my_list[] =			{"ON", "OFF", "DEFAULT", NULL};			COMPLETE_WITH_LIST(my_list);		}		else		{			static const char *const my_list[] =			{"DEFAULT", NULL};			COMPLETE_WITH_LIST(my_list);		}	}/* START TRANSACTION */	else if (pg_strcasecmp(prev_wd, "START") == 0)		COMPLETE_WITH_CONST("TRANSACTION");/* TRUNCATE */	else if (pg_strcasecmp(prev_wd, "TRUNCATE") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);/* UNLISTEN */	else if (pg_strcasecmp(prev_wd, "UNLISTEN") == 0)		COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(relname) FROM pg_catalog.pg_listener WHERE substring(pg_catalog.quote_ident(relname),1,%d)='%s' UNION SELECT '*'");/* UPDATE */	/* If prev. word is UPDATE suggest a list of tables */	else if (pg_strcasecmp(prev_wd, "UPDATE") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);	/* Complete UPDATE <table> with "SET" */	else if (pg_strcasecmp(prev2_wd, "UPDATE") == 0)		COMPLETE_WITH_CONST("SET");	/*	 * If the previous word is SET (and it wasn't caught above as the _first_	 * word) the word before it was (hopefully) a table name and we'll now	 * make a list of attributes.	 */	else if (pg_strcasecmp(prev_wd, "SET") == 0)		COMPLETE_WITH_ATTR(prev2_wd);/* UPDATE xx SET yy = */	else if (pg_strcasecmp(prev2_wd, "SET") == 0 &&			 pg_strcasecmp(prev4_wd, "UPDATE") == 0)		COMPLETE_WITH_CONST("=");/* * VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ] * VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ] */	else if (pg_strcasecmp(prev_wd, "VACUUM") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,								   " UNION SELECT 'FULL'"								   " UNION SELECT 'FREEZE'"								   " UNION SELECT 'ANALYZE'"								   " UNION SELECT 'VERBOSE'");	else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 &&			 (pg_strcasecmp(prev_wd, "FULL") == 0 ||			  pg_strcasecmp(prev_wd, "FREEZE") == 0))		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,								   " UNION SELECT 'ANALYZE'"								   " UNION SELECT 'VERBOSE'");	else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 &&			 pg_strcasecmp(prev_wd, "ANALYZE") == 0 &&			 (pg_strcasecmp(prev2_wd, "FULL") == 0 ||			  pg_strcasecmp(prev2_wd, "FREEZE") == 0))		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,								   " UNION SELECT 'VERBOSE'");	else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 &&			 pg_strcasecmp(prev_wd, "VERBOSE") == 0 &&			 (pg_strcasecmp(prev2_wd, "FULL") == 0 ||			  pg_strcasecmp(prev2_wd, "FREEZE") == 0))		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,								   " UNION SELECT 'ANALYZE'");	else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 &&			 pg_strcasecmp(prev_wd, "VERBOSE") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,								   " UNION SELECT 'ANALYZE'");	else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 &&			 pg_strcasecmp(prev_wd, "ANALYZE") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,								   " UNION SELECT 'VERBOSE'");	else if ((pg_strcasecmp(prev_wd, "ANALYZE") == 0 &&			  pg_strcasecmp(prev2_wd, "VERBOSE") == 0) ||			 (pg_strcasecmp(prev_wd, "VERBOSE") == 0 &&			  pg_strcasecmp(prev2_wd, "ANALYZE") == 0))		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);/* ANALYZE */	/* If the previous word is ANALYZE, produce list of tables */	else if (pg_strcasecmp(prev_wd, "ANALYZE") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);/* WHERE */	/* Simple case of the word before the where being the table name */	else if (pg_strcasecmp(prev_wd, "WHERE") == 0)		COMPLETE_WITH_ATTR(prev2_wd);/* ... FROM ... *//* TODO: also include SRF ? */	else if (pg_strcasecmp(prev_wd, "FROM") == 0 &&			 pg_strcasecmp(prev3_wd, "COPY") != 0 &&			 pg_strcasecmp(prev3_wd, "\\copy") != 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsv, NULL);/* Backslash commands *//* TODO:  \dc \dd \dl */	else if (strcmp(prev_wd, "\\connect") == 0 || strcmp(prev_wd, "\\c") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_databases);	else if (strcmp(prev_wd, "\\d") == 0 || strcmp(prev_wd, "\\d+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tisv, NULL);	else if (strcmp(prev_wd, "\\da") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_aggregates, NULL);	else if (strcmp(prev_wd, "\\db") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);	else if (strcmp(prev_wd, "\\dD") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL);	else if (strcmp(prev_wd, "\\df") == 0 || strcmp(prev_wd, "\\df+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL);	else if (strcmp(prev_wd, "\\di") == 0 || strcmp(prev_wd, "\\di+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL);	else if (strcmp(prev_wd, "\\dn") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_schemas);	else if (strcmp(prev_wd, "\\dp") == 0 || strcmp(prev_wd, "\\z") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsv, NULL);	else if (strcmp(prev_wd, "\\ds") == 0 || strcmp(prev_wd, "\\ds+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_sequences, NULL);	else if (strcmp(prev_wd, "\\dS") == 0 || strcmp(prev_wd, "\\dS+") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_system_relations);	else if (strcmp(prev_wd, "\\dt") == 0 || strcmp(prev_wd, "\\dt+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);	else if (strcmp(prev_wd, "\\dT") == 0 || strcmp(prev_wd, "\\dT+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);	else if (strcmp(prev_wd, "\\du") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_roles);	else if (strcmp(prev_wd, "\\dv") == 0 || strcmp(prev_wd, "\\dv+") == 0)		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);	else if (strcmp(prev_wd, "\\encoding") == 0)		COMPLETE_WITH_QUERY(Query_for_list_of_encodings);	else if (strcmp(prev_wd, "\\h") == 0 || strcmp(prev_wd, "\\help") == 0)		COMPLETE_WITH_LIST(sql_commands);	else if (strcmp(prev_wd, "\\pset") == 0)	{		static const char *const my_list[] =		{"format", "border", "expanded",			"null", "fieldsep", "tuples_only", "title", "tableattr", "pager",		"recordsep", NULL};		COMPLETE_WITH_LIST(my_list);	}	else if (strcmp(prev_wd, "\\cd") == 0 ||			 strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 ||			 strcmp(prev_wd, "\\g") == 0 ||		  strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 ||			 strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 ||			 strcmp(prev_wd, "\\s") == 0 ||			 strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0		)		matches = completion_matches(text, filename_completion_function);	/*	 * Finally, we look through the list of "things", such as TABLE, INDEX and	 * check if that was the previous word. If so, execute the query to get a	 * list of them.	 */	else	{		int			i;		for (i = 0; words_after_create[i].name; i++)		{			if (pg_strcasecmp(prev_wd, words_after_create[i].name) == 0)			{				if (words_after_create[i].query)					COMPLETE_WITH_QUERY(words_after_create[i].query);				else if (words_after_create[i].squery)					COMPLETE_WITH_SCHEMA_QUERY(*words_after_create[i].squery,											   NULL);				break;			}		}	}	/*	 * If we still don't have anything to match we have to fabricate some sort	 * of default list. If we were to just return NULL, readline automatically	 * attempts filename completion, and that's usually no good.	 */	if (matches == NULL)	{		COMPLETE_WITH_CONST("");#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER		rl_completion_append_character = '\0';#endif	}	/* free storage */	free(prev_wd);	free(prev2_wd);	free(prev3_wd);	free(prev4_wd);	free(prev5_wd);	/* Return our Grand List O' Matches */	return matches;}/* GENERATOR FUNCTIONS   These functions do all the actual work of completing the input. They get   passed the text so far and the count how many times they have been called so   far with the same text.   If you read the above carefully, you'll see that these don't get called   directly but through the readline interface.   The return value is expected to be the full completion of the text, going   through a list each time, or NULL if there are no more matches. The string   will be free()'d by readline, so you must run it through strdup() or   something of that sort.*//* This one gives you one from a list of things you can put after CREATE or DROP   as defined above.*/static char *create_command_generator(const char *text, int state){	static int	list_index,				string_length;	const char *name;	/* If this is the first time for this completion, init some values */	if (state == 0)	{		list_index = 0;		string_length = strlen(text);	}	/* find something that matches */	while ((name = words_after_create[list_index++].name))		if (pg_strncasecmp(name, text, string_length) == 0)			return pg_strdup(name);	/* if nothing matches, return NULL */	return NULL;}/* The following two functions are wrappers for _complete_from_query */static char *complete_from_query(const char *text, int state){	return _complete_from_query(0, text, state);}static char *complete_from_schema_query(const char *text, int state){	return _complete_from_query(1, text, state);}/* This creates a list of matching things, according to a query pointed to   by completion_charp.   The query can be one of two kinds:   - A simple query which must contain a %d and a %s, which will be replaced   by the string length of the text and the text itself. The query may also   have another %s in it, which will be replaced by the value of   completion_info_charp.	 or:   - A schema query used for completion of both schema and relation names;   these are more complex and must contain in the following order:	 %d %s %d %s %d %s %s %d %s   where %d is the string length of the text and %s the text itself.   It is assumed that strings should be escaped to become SQL literals   (that is, what is in the query is actually ... '%s' ...)   See top of file for examples of both kinds of query.*/static char *_complete_from_query(int is_schema_query, const char *text, int state){	static int	list_index,				string_length;	static PGresult *result = NULL;	/*	 * If this is the first time for this completion, we fetch a list of our	 * "things" from the backend.	 */	if (state == 0)	{		PQExpBufferData query_buffer;		char	   *e_text;		char	   *e_info_charp;		list_index = 0;		string_length = strlen(text);		/* Free any prior result */		PQclear(result);		result = NULL;		/* Set up suitably-escaped copies of textual inputs */		e_text = pg_malloc(string_length * 2 + 1);		PQescapeString(e_text, text, string_length);		if (completion_info_charp)		{			size_t		charp_len;			charp_len = strlen(completion_info_charp);			e_info_charp = pg_malloc(charp_len * 2 + 1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频一区| 狠狠色狠狠色合久久伊人| 欧美电影免费观看完整版| 99热国产精品| 国产一区二区美女诱惑| 亚洲一区在线看| 欧美激情中文不卡| 91精品国产综合久久久蜜臀粉嫩 | 99国产欧美久久久精品| 日韩国产高清影视| 一区二区免费视频| 国产精品久久久久久妇女6080| 日韩精品在线一区| 欧美日韩国产乱码电影| 97se亚洲国产综合在线| 国产成人综合网| 麻豆一区二区99久久久久| 天天影视色香欲综合网老头| 亚洲欧美成人一区二区三区| 亚洲国产精品精华液ab| 久久婷婷一区二区三区| 精品入口麻豆88视频| 制服丝袜亚洲网站| 欧美挠脚心视频网站| 在线视频一区二区免费| 97精品国产97久久久久久久久久久久| 国产精品一区二区91| 久久99九九99精品| 日本免费新一区视频 | 国产成人精品综合在线观看 | 欧美网站一区二区| 色综合欧美在线| 一本一道久久a久久精品 | 午夜av区久久| 亚洲高清视频的网址| 一区二区在线观看av| 一级女性全黄久久生活片免费| 亚洲欧洲日韩综合一区二区| 国产精品美女一区二区三区| 国产欧美精品一区| 国产精品久久久久9999吃药| 最新国产成人在线观看| 亚洲免费观看高清完整版在线| 最好看的中文字幕久久| 一区二区三区在线视频免费| 亚洲国产精品嫩草影院| 亚洲成人av免费| 日本不卡视频一二三区| 美女视频黄 久久| 国产原创一区二区三区| 丁香网亚洲国际| 97久久精品人人做人人爽50路| 色哟哟一区二区在线观看 | 91搞黄在线观看| 欧美日韩夫妻久久| 制服.丝袜.亚洲.另类.中文| 精品免费日韩av| 国产婷婷色一区二区三区| 中文字幕字幕中文在线中不卡视频| 中文字幕亚洲视频| 亚洲一区中文日韩| 男人操女人的视频在线观看欧美 | 成人久久18免费网站麻豆| 色综合久久天天综合网| 777久久久精品| 国产日韩v精品一区二区| 国产精品二三区| 五月天丁香久久| 国产在线视频不卡二| 91一区一区三区| 这里只有精品视频在线观看| 国产视频一区二区三区在线观看 | 久久99精品久久久久久国产越南 | 国产成人在线看| 91久久精品一区二区| 欧美一区二区三区视频免费| 国产夜色精品一区二区av| 亚洲一区二区欧美激情| 狠狠色狠狠色综合系列| 色久优优欧美色久优优| 日韩精品在线看片z| 亚洲婷婷综合色高清在线| 日韩成人伦理电影在线观看| 国产成人免费高清| 欧美日韩不卡在线| 欧美高清在线一区| 日韩精品一二三四| 91在线精品秘密一区二区| 日韩免费一区二区| 亚洲欧美日韩小说| 国产一区在线不卡| 欧美性极品少妇| 中文字幕不卡的av| 毛片av一区二区| 在线观看精品一区| 国产欧美日韩综合精品一区二区| 亚洲国产乱码最新视频| 岛国精品在线播放| 日韩一区二区免费在线观看| 亚洲视频一二三区| 国产精品一区久久久久| 在线不卡一区二区| 亚洲精品老司机| 成人蜜臀av电影| 欧美大片拔萝卜| 五月天国产精品| 一本色道久久综合亚洲91 | 日韩精品成人一区二区在线| 成人国产精品免费网站| 久久在线免费观看| 人人爽香蕉精品| 精品视频一区二区不卡| 亚洲女同女同女同女同女同69| 国产黄人亚洲片| 久久综合九色综合久久久精品综合 | 欧美在线观看一区| 亚洲天堂久久久久久久| 成人免费视频视频在线观看免费| 欧美zozo另类异族| 美日韩一级片在线观看| 欧美日韩免费一区二区三区视频| 亚洲人一二三区| 91捆绑美女网站| 亚洲欧美偷拍卡通变态| 成人福利视频在线看| 国产欧美一区二区三区沐欲| 精品一区二区三区视频在线观看 | 欧美电影免费观看高清完整版在线观看| 亚洲成人手机在线| 欧美亚洲丝袜传媒另类| 亚洲图片欧美色图| 欧美日韩午夜影院| 亚洲bdsm女犯bdsm网站| 51精品国自产在线| 轻轻草成人在线| 欧美成人艳星乳罩| 国产一区二区免费视频| 中文字幕第一页久久| 99re8在线精品视频免费播放| 亚洲欧美日韩国产手机在线| 欧美性色黄大片| 性做久久久久久久免费看| 欧美日本韩国一区二区三区视频| 午夜成人免费电影| 欧美不卡一二三| 国产精品 日产精品 欧美精品| 久久久综合视频| 成人app网站| 一区二区三区免费观看| 欧美日韩大陆在线| 久久成人麻豆午夜电影| 国产三级精品三级在线专区| 91亚洲精品一区二区乱码| 亚洲妇女屁股眼交7| 日韩一区二区三区观看| 国产福利一区二区| 亚洲图片欧美激情| 欧美精品一二三| 国产九色sp调教91| 亚洲视频精选在线| 欧美一区二区啪啪| 国产精品夜夜嗨| 亚洲视频精选在线| 在线播放视频一区| 国内精品国产成人国产三级粉色 | 在线观看av不卡| 国产91对白在线观看九色| 日本一区二区三级电影在线观看 | 6080亚洲精品一区二区| 国产在线精品一区二区| 中文字幕一区二区三区av| 欧美在线不卡一区| 久久国产乱子精品免费女| 国产精品天干天干在线综合| 欧美专区日韩专区| 狠狠色综合日日| 亚洲综合av网| 久久久久久久久久久久久女国产乱| 91在线看国产| 国内成+人亚洲+欧美+综合在线| 亚洲女子a中天字幕| 欧美www视频| 色偷偷88欧美精品久久久| 国内成人自拍视频| 亚洲电影中文字幕在线观看| 久久久久国产精品厨房| 欧美在线免费观看亚洲| 国产成人亚洲精品青草天美| 亚洲一区中文在线| 国产精品天美传媒沈樵| 日韩欧美成人一区| 欧美在线不卡视频| 成人av免费在线观看| 轻轻草成人在线| 亚洲午夜在线视频| 国产精品免费久久| 久久久久9999亚洲精品| 7777精品久久久大香线蕉| www.欧美精品一二区| 国产一区 二区|