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

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

?? tab-complete.c

?? PostgreSQL 8.1.4的源碼 適用于Linux下的開源數(shù)據(jù)庫(kù)系統(tǒng)
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/* * psql - the PostgreSQL interactive terminal * * Copyright (c) 2000-2005, PostgreSQL Global Development Group * * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.138.2.1 2005/11/14 17:46:07 momjian Exp $ *//*---------------------------------------------------------------------- * This file implements a somewhat more sophisticated readline "TAB * completion" in psql. It is not intended to be AI, to replace * learning SQL, or to relieve you from thinking about what you're * doing. Also it does not always give you all the syntactically legal * completions, only those that are the most common or the ones that * the programmer felt most like implementing. * * CAVEAT: Tab completion causes queries to be sent to the backend. * The number of tuples returned gets limited, in most default * installations to 1000, but if you still don't like this prospect, * you can turn off tab completion in your ~/.inputrc (or else * ${INPUTRC}) file so: * *	 $if psql *	 set disable-completion on *	 $endif * * See `man 3 readline' or `info readline' for the full details. Also, * hence the * * BUGS: * * - If you split your queries across lines, this whole thing gets *	 confused. (To fix this, one would have to read psql's query *	 buffer rather than readline's line buffer, which would require *	 some major revisions of things.) * * - Table or attribute names with spaces in it may confuse it. * * - Quotes, parenthesis, and other funny characters are not handled *	 all that gracefully. *---------------------------------------------------------------------- */#include "postgres_fe.h"#include "tab-complete.h"#include "input.h"/* If we don't have this, we might as well forget about the whole thing: */#ifdef USE_READLINE#include <ctype.h>#include "libpq-fe.h"#include "pqexpbuffer.h"#include "common.h"#include "settings.h"#ifdef HAVE_RL_FILENAME_COMPLETION_FUNCTION#define filename_completion_function rl_filename_completion_function#else/* missing in some header files */extern char *filename_completion_function();#endif#ifdef HAVE_RL_COMPLETION_MATCHES#define completion_matches rl_completion_matches#endif/* * This struct is used to define "schema queries", which are custom-built * to obtain possibly-schema-qualified names of database objects.  There is * enough similarity in the structure that we don't want to repeat it each * time.  So we put the components of each query into this struct and * assemble them with the common boilerplate in _complete_from_query(). */typedef struct SchemaQuery{	/*	 * Name of catalog or catalogs to be queried, with alias, eg.	 * "pg_catalog.pg_class c".  Note that "pg_namespace n" will be added.	 */	const char *catname;	/*	 * Selection condition --- only rows meeting this condition are candidates	 * to display.	If catname mentions multiple tables, include the necessary	 * join condition here.  For example, "c.relkind = 'r'". Write NULL (not	 * an empty string) if not needed.	 */	const char *selcondition;	/*	 * Visibility condition --- which rows are visible without schema	 * qualification?  For example, "pg_catalog.pg_table_is_visible(c.oid)".	 */	const char *viscondition;	/*	 * Namespace --- name of field to join to pg_namespace.oid. For example,	 * "c.relnamespace".	 */	const char *namespace;	/*	 * Result --- the appropriately-quoted name to return, in the case of an	 * unqualified name.  For example, "pg_catalog.quote_ident(c.relname)".	 */	const char *result;	/*	 * In some cases a different result must be used for qualified names.	 * Enter that here, or write NULL if result can be used.	 */	const char *qualresult;} SchemaQuery;/* Store maximum number of records we want from database queries * (implemented via SELECT ... LIMIT xx). */static int	completion_max_records;/* * Communication variables set by COMPLETE_WITH_FOO macros and then used by * the completion callback functions.  Ugly but there is no better way. */static const char *completion_charp;	/* to pass a string */static const char *const * completion_charpp;	/* to pass a list of strings */static const char *completion_info_charp;		/* to pass a second string */static const SchemaQuery *completion_squery;	/* to pass a SchemaQuery *//* A couple of macros to ease typing. You can use these to complete the given   string with   1) The results from a query you pass it. (Perhaps one of those below?)   2) The results from a schema query you pass it.   3) The items from a null-pointer-terminated list.   4) A string constant   5) The list of attributes to the given table.*/#define COMPLETE_WITH_QUERY(query) \do { completion_charp = query; matches = completion_matches(text, complete_from_query); } while(0)#define COMPLETE_WITH_SCHEMA_QUERY(query,addon) \do { completion_squery = &(query); completion_charp = addon; matches = completion_matches(text, complete_from_schema_query); } while(0)#define COMPLETE_WITH_LIST(list) \do { completion_charpp = list; matches = completion_matches(text, complete_from_list); } while(0)#define COMPLETE_WITH_CONST(string) \do { completion_charp = string; matches = completion_matches(text, complete_from_const); } while(0)#define COMPLETE_WITH_ATTR(table) \do {completion_charp = Query_for_list_of_attributes; completion_info_charp = table; matches = completion_matches(text, complete_from_query); } while(0)/* * Assembly instructions for schema queries */static const SchemaQuery Query_for_list_of_aggregates = {	/* catname */	"pg_catalog.pg_proc p",	/* selcondition */	"p.proisagg",	/* viscondition */	"pg_catalog.pg_function_is_visible(p.oid)",	/* namespace */	"p.pronamespace",	/* result */	"pg_catalog.quote_ident(p.proname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_datatypes = {	/* catname */	"pg_catalog.pg_type t",	/* selcondition --- ignore table rowtypes and array types */	"(t.typrelid = 0 "	" OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) "	"AND t.typname !~ '^_'",	/* viscondition */	"pg_catalog.pg_type_is_visible(t.oid)",	/* namespace */	"t.typnamespace",	/* result */	"pg_catalog.format_type(t.oid, NULL)",	/* qualresult */	"pg_catalog.quote_ident(t.typname)"};static const SchemaQuery Query_for_list_of_domains = {	/* catname */	"pg_catalog.pg_type t",	/* selcondition */	"t.typtype = 'd'",	/* viscondition */	"pg_catalog.pg_type_is_visible(t.oid)",	/* namespace */	"t.typnamespace",	/* result */	"pg_catalog.quote_ident(t.typname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_functions = {	/* catname */	"pg_catalog.pg_proc p",	/* selcondition */	NULL,	/* viscondition */	"pg_catalog.pg_function_is_visible(p.oid)",	/* namespace */	"p.pronamespace",	/* result */	"pg_catalog.quote_ident(p.proname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_indexes = {	/* catname */	"pg_catalog.pg_class c",	/* selcondition */	"c.relkind IN ('i')",	/* viscondition */	"pg_catalog.pg_table_is_visible(c.oid)",	/* namespace */	"c.relnamespace",	/* result */	"pg_catalog.quote_ident(c.relname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_sequences = {	/* catname */	"pg_catalog.pg_class c",	/* selcondition */	"c.relkind IN ('S')",	/* viscondition */	"pg_catalog.pg_table_is_visible(c.oid)",	/* namespace */	"c.relnamespace",	/* result */	"pg_catalog.quote_ident(c.relname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_tables = {	/* catname */	"pg_catalog.pg_class c",	/* selcondition */	"c.relkind IN ('r')",	/* viscondition */	"pg_catalog.pg_table_is_visible(c.oid)",	/* namespace */	"c.relnamespace",	/* result */	"pg_catalog.quote_ident(c.relname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_tisv = {	/* catname */	"pg_catalog.pg_class c",	/* selcondition */	"c.relkind IN ('r', 'i', 'S', 'v')",	/* viscondition */	"pg_catalog.pg_table_is_visible(c.oid)",	/* namespace */	"c.relnamespace",	/* result */	"pg_catalog.quote_ident(c.relname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_tsv = {	/* catname */	"pg_catalog.pg_class c",	/* selcondition */	"c.relkind IN ('r', 'S', 'v')",	/* viscondition */	"pg_catalog.pg_table_is_visible(c.oid)",	/* namespace */	"c.relnamespace",	/* result */	"pg_catalog.quote_ident(c.relname)",	/* qualresult */	NULL};static const SchemaQuery Query_for_list_of_views = {	/* catname */	"pg_catalog.pg_class c",	/* selcondition */	"c.relkind IN ('v')",	/* viscondition */	"pg_catalog.pg_table_is_visible(c.oid)",	/* namespace */	"c.relnamespace",	/* result */	"pg_catalog.quote_ident(c.relname)",	/* qualresult */	NULL};/* * Queries to get lists of names of various kinds of things, possibly * restricted to names matching a partially entered name.  In these queries, * %s will be replaced by the text entered so far (suitably escaped to * become a SQL literal string).  %d will be replaced by the length of the * string (in unescaped form).	A second %s, if present, will be replaced * by a suitably-escaped version of the string provided in * completion_info_charp. * * Beware that the allowed sequences of %s and %d are determined by * _complete_from_query(). */#define Query_for_list_of_attributes \"SELECT pg_catalog.quote_ident(attname) "\"  FROM pg_catalog.pg_attribute a, pg_catalog.pg_class c "\" WHERE c.oid = a.attrelid "\"   AND a.attnum > 0 "\"   AND NOT a.attisdropped "\"   AND substring(pg_catalog.quote_ident(attname),1,%d)='%s' "\"   AND pg_catalog.quote_ident(relname)='%s' "\"   AND pg_catalog.pg_table_is_visible(c.oid)"#define Query_for_list_of_databases \"SELECT pg_catalog.quote_ident(datname) FROM pg_catalog.pg_database "\" WHERE substring(pg_catalog.quote_ident(datname),1,%d)='%s'"#define Query_for_list_of_tablespaces \"SELECT pg_catalog.quote_ident(spcname) FROM pg_catalog.pg_tablespace "\" WHERE substring(pg_catalog.quote_ident(spcname),1,%d)='%s'"#define Query_for_list_of_encodings \" SELECT DISTINCT pg_catalog.pg_encoding_to_char(conforencoding) "\"   FROM pg_catalog.pg_conversion "\"  WHERE substring(pg_catalog.pg_encoding_to_char(conforencoding),1,%d)=UPPER('%s')"#define Query_for_list_of_languages \"SELECT pg_catalog.quote_ident(lanname) "\"  FROM pg_language "\" WHERE lanname != 'internal' "\"   AND substring(pg_catalog.quote_ident(lanname),1,%d)='%s' "#define Query_for_list_of_schemas \"SELECT pg_catalog.quote_ident(nspname) FROM pg_catalog.pg_namespace "\" WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s'"#define Query_for_list_of_set_vars \"SELECT name FROM "\" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\"  WHERE context IN ('user', 'superuser') "\"  UNION ALL SELECT 'constraints' "\"  UNION ALL SELECT 'transaction' "\"  UNION ALL SELECT 'session' "\"  UNION ALL SELECT 'role' "\"  UNION ALL SELECT 'all') ss "\" WHERE substring(name,1,%d)='%s'"#define Query_for_list_of_show_vars \"SELECT name FROM "\" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\"  UNION ALL SELECT 'session authorization' "\"  UNION ALL SELECT 'all') ss "\" WHERE substring(name,1,%d)='%s'"#define Query_for_list_of_system_relations \"SELECT pg_catalog.quote_ident(relname) "\"  FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\" WHERE c.relkind IN ('r', 'v', 's', 'S') "\"   AND substring(pg_catalog.quote_ident(relname),1,%d)='%s' "\"   AND c.relnamespace = n.oid "\"   AND n.nspname = 'pg_catalog'"#define Query_for_list_of_roles \" SELECT pg_catalog.quote_ident(rolname) "\"   FROM pg_catalog.pg_roles "\"  WHERE substring(pg_catalog.quote_ident(rolname),1,%d)='%s'"#define Query_for_list_of_grant_roles \" SELECT pg_catalog.quote_ident(rolname) "\"   FROM pg_catalog.pg_roles "\"  WHERE substring(pg_catalog.quote_ident(rolname),1,%d)='%s'"\

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91女人视频在线观看| 亚洲国产精品欧美一二99| 丝瓜av网站精品一区二区| 91福利在线免费观看| 日本亚洲免费观看| 久久久亚洲午夜电影| 成人免费的视频| 91精品91久久久中77777| **网站欧美大片在线观看| 91在线观看美女| 丝袜美腿亚洲综合| 欧美videos大乳护士334| 成人激情小说乱人伦| 亚洲成a人片在线不卡一二三区| 538在线一区二区精品国产| 亚洲一区二区三区自拍| 精品成人免费观看| 国产成人亚洲精品狼色在线| 亚洲视频一区二区免费在线观看| 欧美日韩不卡一区| 99久久综合精品| 麻豆一区二区99久久久久| 亚洲综合一区二区精品导航| 久久精品视频在线免费观看| 欧美性猛交xxxxxxxx| 高清在线不卡av| 韩国成人精品a∨在线观看| 一区二区三区视频在线观看| 国产午夜久久久久| 亚洲国产精品精华液2区45| 欧美妇女性影城| 欧美丰满美乳xxx高潮www| 高清国产一区二区| 成人免费视频视频| 成人爽a毛片一区二区免费| 久久99热这里只有精品| 日韩av午夜在线观看| 国产精品美女一区二区在线观看| 国产精品久久综合| 国产精品久久久久久久浪潮网站| 久久夜色精品国产噜噜av| 久久综合视频网| 欧美激情一区二区在线| 中文字幕在线观看一区| 国产精品久久久久久福利一牛影视| 欧美色视频在线观看| 欧美日韩高清不卡| 国产网站一区二区| 国产一区二区在线视频| 成人精品小蝌蚪| 欧美日韩免费观看一区二区三区| 欧美系列日韩一区| 久久一日本道色综合| 国产日韩欧美不卡在线| 亚洲国产精品一区二区久久 | 一个色综合网站| 午夜久久久久久电影| 国产91综合一区在线观看| 成人免费黄色大片| 国产乱子伦视频一区二区三区| 99re视频精品| 久久亚洲影视婷婷| 亚洲美女免费在线| 亚洲 欧美综合在线网络| 国产二区国产一区在线观看| 欧美性猛交xxxx黑人交| 国产精品全国免费观看高清 | 1024亚洲合集| 不卡在线观看av| 91精品在线免费| 亚洲一线二线三线视频| 99视频精品免费视频| 日本一区二区动态图| 国产资源在线一区| 久久嫩草精品久久久久| 中文字幕一区二区三区在线不卡| 亚洲人妖av一区二区| 成人做爰69片免费看网站| 色综合天天综合网天天狠天天| 久久免费视频一区| 国产成人免费视频精品含羞草妖精 | fc2成人免费人成在线观看播放| 精品国产一二三| 粉嫩蜜臀av国产精品网站| 亚洲欧美一区二区不卡| 色老汉av一区二区三区| 天堂久久久久va久久久久| 日韩欧美另类在线| 国产精品一区三区| 亚洲免费观看高清完整版在线观看熊 | 国产剧情一区二区三区| 精品久久国产字幕高潮| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美天天综合网| 久久国产精品露脸对白| 久久一二三国产| 粉嫩高潮美女一区二区三区| 中文字幕一区视频| 日韩一区二区三| 日韩成人精品在线观看| 国产剧情av麻豆香蕉精品| 中文字幕精品一区二区精品绿巨人 | 九九国产精品视频| 亚洲男人的天堂在线观看| 日韩欧美资源站| 国产在线播精品第三| 一级精品视频在线观看宜春院| 亚洲精品一区二区三区精华液 | 五月天激情综合| 亚洲丶国产丶欧美一区二区三区| 欧美国产禁国产网站cc| 欧美一二三区精品| 欧美日韩免费观看一区三区| 久久久久久久av麻豆果冻| 欧美日韩国产另类一区| 国产成人免费视| 成人激情动漫在线观看| 国产伦精品一区二区三区视频青涩| 日产精品久久久久久久性色| 久久精品无码一区二区三区| 欧美美女一区二区在线观看| 欧美日韩一区二区三区不卡| 欧美在线制服丝袜| 欧洲另类一二三四区| 欧美午夜电影网| 91日韩在线专区| 欧美综合一区二区三区| 欧美日韩日日摸| 精品国产亚洲在线| 中文字幕一区二区三| 中文字幕亚洲一区二区va在线| 亚洲精品国产第一综合99久久| 亚洲自拍偷拍欧美| 亚洲福利电影网| 国内精品视频一区二区三区八戒| 国产一级精品在线| 91日韩在线专区| 日韩美女一区二区三区四区| 精品国产三级a在线观看| 国产精品色哟哟网站| 五月婷婷综合激情| 国产99一区视频免费 | 中文一区二区在线观看| 五月天婷婷综合| 91在线观看成人| 精品国产乱码久久久久久蜜臀| 亚洲人快播电影网| 久久国产精品99久久人人澡| 欧美日韩情趣电影| 亚洲免费观看高清完整版在线观看| 五月婷婷综合在线| 成人免费在线观看入口| 亚洲精品日韩综合观看成人91| 久久草av在线| 欧美精选一区二区| 亚洲综合成人在线| 在线视频国内一区二区| 亚洲欧美日韩中文播放| 91丝袜美腿高跟国产极品老师| www成人在线观看| 麻豆传媒一区二区三区| 欧美一级高清片| 性做久久久久久久免费看| 91高清视频免费看| 亚洲一区国产视频| 欧美日本在线视频| 91精品在线麻豆| 九色综合狠狠综合久久| 久久久久久久久岛国免费| av激情综合网| 亚洲第一av色| 日韩一区二区三区免费看| 椎名由奈av一区二区三区| 国产精品久线观看视频| 波多野洁衣一区| 亚洲欧美日本在线| 欧美日韩国产精品自在自线| 美女视频一区在线观看| 国产女人aaa级久久久级| 色综合久久久久综合99| 日日夜夜精品免费视频| 国产日本欧美一区二区| 欧美系列日韩一区| 国产毛片精品国产一区二区三区| 国产精品久久久久婷婷| 欧美白人最猛性xxxxx69交| 99久久久无码国产精品| 另类小说图片综合网| 国产欧美日韩一区二区三区在线观看| 中文字幕一区av| 777xxx欧美| 91片在线免费观看| 91色视频在线| 色婷婷久久久综合中文字幕| 国产福利一区二区三区视频在线 | 亚洲国产精品传媒在线观看| 欧美日韩夫妻久久| 日韩一级二级三级| 欧美乱妇一区二区三区不卡视频| www.日韩av|