/*-------------------------------------------------------------------------
*
* keywords.c
- * lexical token lookup for reserved words in PostgreSQL
+ * lexical token lookup for key words in PostgreSQL
*
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.188 2007/06/11 01:16:25 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.189 2007/06/18 21:40:58 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/* NB: This file is also used by pg_dump. */
/*
- * List of (keyword-name, keyword-token-value) pairs.
+ * List of keyword (name, token-value, category) entries.
*
- * !!WARNING!!: This list must be sorted, because binary
+ * !!WARNING!!: This list must be sorted by ASCII name, because binary
* search is used to locate entries.
*/
static const ScanKeyword ScanKeywords[] = {
- /* name, value */
- {"abort", ABORT_P},
- {"absolute", ABSOLUTE_P},
- {"access", ACCESS},
- {"action", ACTION},
- {"add", ADD_P},
- {"admin", ADMIN},
- {"after", AFTER},
- {"aggregate", AGGREGATE},
- {"all", ALL},
- {"also", ALSO},
- {"alter", ALTER},
- {"always", ALWAYS},
- {"analyse", ANALYSE}, /* British spelling */
- {"analyze", ANALYZE},
- {"and", AND},
- {"any", ANY},
- {"array", ARRAY},
- {"as", AS},
- {"asc", ASC},
- {"assertion", ASSERTION},
- {"assignment", ASSIGNMENT},
- {"asymmetric", ASYMMETRIC},
- {"at", AT},
- {"authorization", AUTHORIZATION},
- {"backward", BACKWARD},
- {"before", BEFORE},
- {"begin", BEGIN_P},
- {"between", BETWEEN},
- {"bigint", BIGINT},
- {"binary", BINARY},
- {"bit", BIT},
- {"boolean", BOOLEAN_P},
- {"both", BOTH},
- {"by", BY},
- {"cache", CACHE},
- {"called", CALLED},
- {"cascade", CASCADE},
- {"cascaded", CASCADED},
- {"case", CASE},
- {"cast", CAST},
- {"chain", CHAIN},
- {"char", CHAR_P},
- {"character", CHARACTER},
- {"characteristics", CHARACTERISTICS},
- {"check", CHECK},
- {"checkpoint", CHECKPOINT},
- {"class", CLASS},
- {"close", CLOSE},
- {"cluster", CLUSTER},
- {"coalesce", COALESCE},
- {"collate", COLLATE},
- {"column", COLUMN},
- {"comment", COMMENT},
- {"commit", COMMIT},
- {"committed", COMMITTED},
- {"concurrently", CONCURRENTLY},
- {"connection", CONNECTION},
- {"constraint", CONSTRAINT},
- {"constraints", CONSTRAINTS},
- {"content", CONTENT_P},
- {"conversion", CONVERSION_P},
- {"convert", CONVERT},
- {"copy", COPY},
- {"cost", COST},
- {"create", CREATE},
- {"createdb", CREATEDB},
- {"createrole", CREATEROLE},
- {"createuser", CREATEUSER},
- {"cross", CROSS},
- {"csv", CSV},
- {"current", CURRENT_P},
- {"current_date", CURRENT_DATE},
- {"current_role", CURRENT_ROLE},
- {"current_time", CURRENT_TIME},
- {"current_timestamp", CURRENT_TIMESTAMP},
- {"current_user", CURRENT_USER},
- {"cursor", CURSOR},
- {"cycle", CYCLE},
- {"database", DATABASE},
- {"day", DAY_P},
- {"deallocate", DEALLOCATE},
- {"dec", DEC},
- {"decimal", DECIMAL_P},
- {"declare", DECLARE},
- {"default", DEFAULT},
- {"defaults", DEFAULTS},
- {"deferrable", DEFERRABLE},
- {"deferred", DEFERRED},
- {"definer", DEFINER},
- {"delete", DELETE_P},
- {"delimiter", DELIMITER},
- {"delimiters", DELIMITERS},
- {"desc", DESC},
- {"disable", DISABLE_P},
- {"discard", DISCARD},
- {"distinct", DISTINCT},
- {"do", DO},
- {"document", DOCUMENT_P},
- {"domain", DOMAIN_P},
- {"double", DOUBLE_P},
- {"drop", DROP},
- {"each", EACH},
- {"else", ELSE},
- {"enable", ENABLE_P},
- {"encoding", ENCODING},
- {"encrypted", ENCRYPTED},
- {"end", END_P},
- {"enum", ENUM_P},
- {"escape", ESCAPE},
- {"except", EXCEPT},
- {"excluding", EXCLUDING},
- {"exclusive", EXCLUSIVE},
- {"execute", EXECUTE},
- {"exists", EXISTS},
- {"explain", EXPLAIN},
- {"external", EXTERNAL},
- {"extract", EXTRACT},
- {"false", FALSE_P},
- {"family", FAMILY},
- {"fetch", FETCH},
- {"first", FIRST_P},
- {"float", FLOAT_P},
- {"for", FOR},
- {"force", FORCE},
- {"foreign", FOREIGN},
- {"forward", FORWARD},
- {"freeze", FREEZE},
- {"from", FROM},
- {"full", FULL},
- {"function", FUNCTION},
- {"global", GLOBAL},
- {"grant", GRANT},
- {"granted", GRANTED},
- {"greatest", GREATEST},
- {"group", GROUP_P},
- {"handler", HANDLER},
- {"having", HAVING},
- {"header", HEADER_P},
- {"hold", HOLD},
- {"hour", HOUR_P},
- {"if", IF_P},
- {"ilike", ILIKE},
- {"immediate", IMMEDIATE},
- {"immutable", IMMUTABLE},
- {"implicit", IMPLICIT_P},
- {"in", IN_P},
- {"including", INCLUDING},
- {"increment", INCREMENT},
- {"index", INDEX},
- {"indexes", INDEXES},
- {"inherit", INHERIT},
- {"inherits", INHERITS},
- {"initially", INITIALLY},
- {"inner", INNER_P},
- {"inout", INOUT},
- {"input", INPUT_P},
- {"insensitive", INSENSITIVE},
- {"insert", INSERT},
- {"instead", INSTEAD},
- {"int", INT_P},
- {"integer", INTEGER},
- {"intersect", INTERSECT},
- {"interval", INTERVAL},
- {"into", INTO},
- {"invoker", INVOKER},
- {"is", IS},
- {"isnull", ISNULL},
- {"isolation", ISOLATION},
- {"join", JOIN},
- {"key", KEY},
- {"lancompiler", LANCOMPILER},
- {"language", LANGUAGE},
- {"large", LARGE_P},
- {"last", LAST_P},
- {"leading", LEADING},
- {"least", LEAST},
- {"left", LEFT},
- {"level", LEVEL},
- {"like", LIKE},
- {"limit", LIMIT},
- {"listen", LISTEN},
- {"load", LOAD},
- {"local", LOCAL},
- {"localtime", LOCALTIME},
- {"localtimestamp", LOCALTIMESTAMP},
- {"location", LOCATION},
- {"lock", LOCK_P},
- {"login", LOGIN_P},
- {"match", MATCH},
- {"maxvalue", MAXVALUE},
- {"minute", MINUTE_P},
- {"minvalue", MINVALUE},
- {"mode", MODE},
- {"month", MONTH_P},
- {"move", MOVE},
- {"name", NAME_P},
- {"names", NAMES},
- {"national", NATIONAL},
- {"natural", NATURAL},
- {"nchar", NCHAR},
- {"new", NEW},
- {"next", NEXT},
- {"no", NO},
- {"nocreatedb", NOCREATEDB},
- {"nocreaterole", NOCREATEROLE},
- {"nocreateuser", NOCREATEUSER},
- {"noinherit", NOINHERIT},
- {"nologin", NOLOGIN_P},
- {"none", NONE},
- {"nosuperuser", NOSUPERUSER},
- {"not", NOT},
- {"nothing", NOTHING},
- {"notify", NOTIFY},
- {"notnull", NOTNULL},
- {"nowait", NOWAIT},
- {"null", NULL_P},
- {"nullif", NULLIF},
- {"nulls", NULLS_P},
- {"numeric", NUMERIC},
- {"object", OBJECT_P},
- {"of", OF},
- {"off", OFF},
- {"offset", OFFSET},
- {"oids", OIDS},
- {"old", OLD},
- {"on", ON},
- {"only", ONLY},
- {"operator", OPERATOR},
- {"option", OPTION},
- {"or", OR},
- {"order", ORDER},
- {"out", OUT_P},
- {"outer", OUTER_P},
- {"overlaps", OVERLAPS},
- {"overlay", OVERLAY},
- {"owned", OWNED},
- {"owner", OWNER},
- {"partial", PARTIAL},
- {"password", PASSWORD},
- {"placing", PLACING},
- {"plans", PLANS},
- {"position", POSITION},
- {"precision", PRECISION},
- {"prepare", PREPARE},
- {"prepared", PREPARED},
- {"preserve", PRESERVE},
- {"primary", PRIMARY},
- {"prior", PRIOR},
- {"privileges", PRIVILEGES},
- {"procedural", PROCEDURAL},
- {"procedure", PROCEDURE},
- {"quote", QUOTE},
- {"read", READ},
- {"real", REAL},
- {"reassign", REASSIGN},
- {"recheck", RECHECK},
- {"references", REFERENCES},
- {"reindex", REINDEX},
- {"relative", RELATIVE_P},
- {"release", RELEASE},
- {"rename", RENAME},
- {"repeatable", REPEATABLE},
- {"replace", REPLACE},
- {"replica", REPLICA},
- {"reset", RESET},
- {"restart", RESTART},
- {"restrict", RESTRICT},
- {"returning", RETURNING},
- {"returns", RETURNS},
- {"revoke", REVOKE},
- {"right", RIGHT},
- {"role", ROLE},
- {"rollback", ROLLBACK},
- {"row", ROW},
- {"rows", ROWS},
- {"rule", RULE},
- {"savepoint", SAVEPOINT},
- {"schema", SCHEMA},
- {"scroll", SCROLL},
- {"second", SECOND_P},
- {"security", SECURITY},
- {"select", SELECT},
- {"sequence", SEQUENCE},
- {"serializable", SERIALIZABLE},
- {"session", SESSION},
- {"session_user", SESSION_USER},
- {"set", SET},
- {"setof", SETOF},
- {"share", SHARE},
- {"show", SHOW},
- {"similar", SIMILAR},
- {"simple", SIMPLE},
- {"smallint", SMALLINT},
- {"some", SOME},
- {"stable", STABLE},
- {"standalone", STANDALONE_P},
- {"start", START},
- {"statement", STATEMENT},
- {"statistics", STATISTICS},
- {"stdin", STDIN},
- {"stdout", STDOUT},
- {"storage", STORAGE},
- {"strict", STRICT_P},
- {"strip", STRIP_P},
- {"substring", SUBSTRING},
- {"superuser", SUPERUSER_P},
- {"symmetric", SYMMETRIC},
- {"sysid", SYSID},
- {"system", SYSTEM_P},
- {"table", TABLE},
- {"tablespace", TABLESPACE},
- {"temp", TEMP},
- {"template", TEMPLATE},
- {"temporary", TEMPORARY},
- {"then", THEN},
- {"time", TIME},
- {"timestamp", TIMESTAMP},
- {"to", TO},
- {"trailing", TRAILING},
- {"transaction", TRANSACTION},
- {"treat", TREAT},
- {"trigger", TRIGGER},
- {"trim", TRIM},
- {"true", TRUE_P},
- {"truncate", TRUNCATE},
- {"trusted", TRUSTED},
- {"type", TYPE_P},
- {"uncommitted", UNCOMMITTED},
- {"unencrypted", UNENCRYPTED},
- {"union", UNION},
- {"unique", UNIQUE},
- {"unknown", UNKNOWN},
- {"unlisten", UNLISTEN},
- {"until", UNTIL},
- {"update", UPDATE},
- {"user", USER},
- {"using", USING},
- {"vacuum", VACUUM},
- {"valid", VALID},
- {"validator", VALIDATOR},
- {"value", VALUE_P},
- {"values", VALUES},
- {"varchar", VARCHAR},
- {"varying", VARYING},
- {"verbose", VERBOSE},
- {"version", VERSION_P},
- {"view", VIEW},
- {"volatile", VOLATILE},
- {"when", WHEN},
- {"where", WHERE},
- {"whitespace", WHITESPACE_P},
- {"with", WITH},
- {"without", WITHOUT},
- {"work", WORK},
- {"write", WRITE},
- {"xml", XML_P},
- {"xmlattributes", XMLATTRIBUTES},
- {"xmlconcat", XMLCONCAT},
- {"xmlelement", XMLELEMENT},
- {"xmlforest", XMLFOREST},
- {"xmlparse", XMLPARSE},
- {"xmlpi", XMLPI},
- {"xmlroot", XMLROOT},
- {"xmlserialize", XMLSERIALIZE},
- {"year", YEAR_P},
- {"yes", YES_P},
- {"zone", ZONE},
+ /* name, value, category */
+ {"abort", ABORT_P, UNRESERVED_KEYWORD},
+ {"absolute", ABSOLUTE_P, UNRESERVED_KEYWORD},
+ {"access", ACCESS, UNRESERVED_KEYWORD},
+ {"action", ACTION, UNRESERVED_KEYWORD},
+ {"add", ADD_P, UNRESERVED_KEYWORD},
+ {"admin", ADMIN, UNRESERVED_KEYWORD},
+ {"after", AFTER, UNRESERVED_KEYWORD},
+ {"aggregate", AGGREGATE, UNRESERVED_KEYWORD},
+ {"all", ALL, RESERVED_KEYWORD},
+ {"also", ALSO, UNRESERVED_KEYWORD},
+ {"alter", ALTER, UNRESERVED_KEYWORD},
+ {"always", ALWAYS, UNRESERVED_KEYWORD},
+ {"analyse", ANALYSE, RESERVED_KEYWORD}, /* British spelling */
+ {"analyze", ANALYZE, RESERVED_KEYWORD},
+ {"and", AND, RESERVED_KEYWORD},
+ {"any", ANY, RESERVED_KEYWORD},
+ {"array", ARRAY, RESERVED_KEYWORD},
+ {"as", AS, RESERVED_KEYWORD},
+ {"asc", ASC, RESERVED_KEYWORD},
+ {"assertion", ASSERTION, UNRESERVED_KEYWORD},
+ {"assignment", ASSIGNMENT, UNRESERVED_KEYWORD},
+ {"asymmetric", ASYMMETRIC, RESERVED_KEYWORD},
+ {"at", AT, UNRESERVED_KEYWORD},
+ {"authorization", AUTHORIZATION, TYPE_FUNC_NAME_KEYWORD},
+ {"backward", BACKWARD, UNRESERVED_KEYWORD},
+ {"before", BEFORE, UNRESERVED_KEYWORD},
+ {"begin", BEGIN_P, UNRESERVED_KEYWORD},
+ {"between", BETWEEN, TYPE_FUNC_NAME_KEYWORD},
+ {"bigint", BIGINT, COL_NAME_KEYWORD},
+ {"binary", BINARY, TYPE_FUNC_NAME_KEYWORD},
+ {"bit", BIT, COL_NAME_KEYWORD},
+ {"boolean", BOOLEAN_P, COL_NAME_KEYWORD},
+ {"both", BOTH, RESERVED_KEYWORD},
+ {"by", BY, UNRESERVED_KEYWORD},
+ {"cache", CACHE, UNRESERVED_KEYWORD},
+ {"called", CALLED, UNRESERVED_KEYWORD},
+ {"cascade", CASCADE, UNRESERVED_KEYWORD},
+ {"cascaded", CASCADED, UNRESERVED_KEYWORD},
+ {"case", CASE, RESERVED_KEYWORD},
+ {"cast", CAST, RESERVED_KEYWORD},
+ {"chain", CHAIN, UNRESERVED_KEYWORD},
+ {"char", CHAR_P, COL_NAME_KEYWORD},
+ {"character", CHARACTER, COL_NAME_KEYWORD},
+ {"characteristics", CHARACTERISTICS, UNRESERVED_KEYWORD},
+ {"check", CHECK, RESERVED_KEYWORD},
+ {"checkpoint", CHECKPOINT, UNRESERVED_KEYWORD},
+ {"class", CLASS, UNRESERVED_KEYWORD},
+ {"close", CLOSE, UNRESERVED_KEYWORD},
+ {"cluster", CLUSTER, UNRESERVED_KEYWORD},
+ {"coalesce", COALESCE, COL_NAME_KEYWORD},
+ {"collate", COLLATE, RESERVED_KEYWORD},
+ {"column", COLUMN, RESERVED_KEYWORD},
+ {"comment", COMMENT, UNRESERVED_KEYWORD},
+ {"commit", COMMIT, UNRESERVED_KEYWORD},
+ {"committed", COMMITTED, UNRESERVED_KEYWORD},
+ {"concurrently", CONCURRENTLY, UNRESERVED_KEYWORD},
+ {"connection", CONNECTION, UNRESERVED_KEYWORD},
+ {"constraint", CONSTRAINT, RESERVED_KEYWORD},
+ {"constraints", CONSTRAINTS, UNRESERVED_KEYWORD},
+ {"content", CONTENT_P, UNRESERVED_KEYWORD},
+ {"conversion", CONVERSION_P, UNRESERVED_KEYWORD},
+ {"convert", CONVERT, COL_NAME_KEYWORD},
+ {"copy", COPY, UNRESERVED_KEYWORD},
+ {"cost", COST, UNRESERVED_KEYWORD},
+ {"create", CREATE, RESERVED_KEYWORD},
+ {"createdb", CREATEDB, UNRESERVED_KEYWORD},
+ {"createrole", CREATEROLE, UNRESERVED_KEYWORD},
+ {"createuser", CREATEUSER, UNRESERVED_KEYWORD},
+ {"cross", CROSS, TYPE_FUNC_NAME_KEYWORD},
+ {"csv", CSV, UNRESERVED_KEYWORD},
+ {"current", CURRENT_P, UNRESERVED_KEYWORD},
+ {"current_date", CURRENT_DATE, RESERVED_KEYWORD},
+ {"current_role", CURRENT_ROLE, RESERVED_KEYWORD},
+ {"current_time", CURRENT_TIME, RESERVED_KEYWORD},
+ {"current_timestamp", CURRENT_TIMESTAMP, RESERVED_KEYWORD},
+ {"current_user", CURRENT_USER, RESERVED_KEYWORD},
+ {"cursor", CURSOR, UNRESERVED_KEYWORD},
+ {"cycle", CYCLE, UNRESERVED_KEYWORD},
+ {"database", DATABASE, UNRESERVED_KEYWORD},
+ {"day", DAY_P, UNRESERVED_KEYWORD},
+ {"deallocate", DEALLOCATE, UNRESERVED_KEYWORD},
+ {"dec", DEC, COL_NAME_KEYWORD},
+ {"decimal", DECIMAL_P, COL_NAME_KEYWORD},
+ {"declare", DECLARE, UNRESERVED_KEYWORD},
+ {"default", DEFAULT, RESERVED_KEYWORD},
+ {"defaults", DEFAULTS, UNRESERVED_KEYWORD},
+ {"deferrable", DEFERRABLE, RESERVED_KEYWORD},
+ {"deferred", DEFERRED, UNRESERVED_KEYWORD},
+ {"definer", DEFINER, UNRESERVED_KEYWORD},
+ {"delete", DELETE_P, UNRESERVED_KEYWORD},
+ {"delimiter", DELIMITER, UNRESERVED_KEYWORD},
+ {"delimiters", DELIMITERS, UNRESERVED_KEYWORD},
+ {"desc", DESC, RESERVED_KEYWORD},
+ {"disable", DISABLE_P, UNRESERVED_KEYWORD},
+ {"discard", DISCARD, UNRESERVED_KEYWORD},
+ {"distinct", DISTINCT, RESERVED_KEYWORD},
+ {"do", DO, RESERVED_KEYWORD},
+ {"document", DOCUMENT_P, UNRESERVED_KEYWORD},
+ {"domain", DOMAIN_P, UNRESERVED_KEYWORD},
+ {"double", DOUBLE_P, UNRESERVED_KEYWORD},
+ {"drop", DROP, UNRESERVED_KEYWORD},
+ {"each", EACH, UNRESERVED_KEYWORD},
+ {"else", ELSE, RESERVED_KEYWORD},
+ {"enable", ENABLE_P, UNRESERVED_KEYWORD},
+ {"encoding", ENCODING, UNRESERVED_KEYWORD},
+ {"encrypted", ENCRYPTED, UNRESERVED_KEYWORD},
+ {"end", END_P, RESERVED_KEYWORD},
+ {"enum", ENUM_P, UNRESERVED_KEYWORD},
+ {"escape", ESCAPE, UNRESERVED_KEYWORD},
+ {"except", EXCEPT, RESERVED_KEYWORD},
+ {"excluding", EXCLUDING, UNRESERVED_KEYWORD},
+ {"exclusive", EXCLUSIVE, UNRESERVED_KEYWORD},
+ {"execute", EXECUTE, UNRESERVED_KEYWORD},
+ {"exists", EXISTS, COL_NAME_KEYWORD},
+ {"explain", EXPLAIN, UNRESERVED_KEYWORD},
+ {"external", EXTERNAL, UNRESERVED_KEYWORD},
+ {"extract", EXTRACT, COL_NAME_KEYWORD},
+ {"false", FALSE_P, RESERVED_KEYWORD},
+ {"family", FAMILY, UNRESERVED_KEYWORD},
+ {"fetch", FETCH, UNRESERVED_KEYWORD},
+ {"first", FIRST_P, UNRESERVED_KEYWORD},
+ {"float", FLOAT_P, COL_NAME_KEYWORD},
+ {"for", FOR, RESERVED_KEYWORD},
+ {"force", FORCE, UNRESERVED_KEYWORD},
+ {"foreign", FOREIGN, RESERVED_KEYWORD},
+ {"forward", FORWARD, UNRESERVED_KEYWORD},
+ {"freeze", FREEZE, TYPE_FUNC_NAME_KEYWORD},
+ {"from", FROM, RESERVED_KEYWORD},
+ {"full", FULL, TYPE_FUNC_NAME_KEYWORD},
+ {"function", FUNCTION, UNRESERVED_KEYWORD},
+ {"global", GLOBAL, UNRESERVED_KEYWORD},
+ {"grant", GRANT, RESERVED_KEYWORD},
+ {"granted", GRANTED, UNRESERVED_KEYWORD},
+ {"greatest", GREATEST, COL_NAME_KEYWORD},
+ {"group", GROUP_P, RESERVED_KEYWORD},
+ {"handler", HANDLER, UNRESERVED_KEYWORD},
+ {"having", HAVING, RESERVED_KEYWORD},
+ {"header", HEADER_P, UNRESERVED_KEYWORD},
+ {"hold", HOLD, UNRESERVED_KEYWORD},
+ {"hour", HOUR_P, UNRESERVED_KEYWORD},
+ {"if", IF_P, UNRESERVED_KEYWORD},
+ {"ilike", ILIKE, TYPE_FUNC_NAME_KEYWORD},
+ {"immediate", IMMEDIATE, UNRESERVED_KEYWORD},
+ {"immutable", IMMUTABLE, UNRESERVED_KEYWORD},
+ {"implicit", IMPLICIT_P, UNRESERVED_KEYWORD},
+ {"in", IN_P, RESERVED_KEYWORD},
+ {"including", INCLUDING, UNRESERVED_KEYWORD},
+ {"increment", INCREMENT, UNRESERVED_KEYWORD},
+ {"index", INDEX, UNRESERVED_KEYWORD},
+ {"indexes", INDEXES, UNRESERVED_KEYWORD},
+ {"inherit", INHERIT, UNRESERVED_KEYWORD},
+ {"inherits", INHERITS, UNRESERVED_KEYWORD},
+ {"initially", INITIALLY, RESERVED_KEYWORD},
+ {"inner", INNER_P, TYPE_FUNC_NAME_KEYWORD},
+ {"inout", INOUT, COL_NAME_KEYWORD},
+ {"input", INPUT_P, UNRESERVED_KEYWORD},
+ {"insensitive", INSENSITIVE, UNRESERVED_KEYWORD},
+ {"insert", INSERT, UNRESERVED_KEYWORD},
+ {"instead", INSTEAD, UNRESERVED_KEYWORD},
+ {"int", INT_P, COL_NAME_KEYWORD},
+ {"integer", INTEGER, COL_NAME_KEYWORD},
+ {"intersect", INTERSECT, RESERVED_KEYWORD},
+ {"interval", INTERVAL, COL_NAME_KEYWORD},
+ {"into", INTO, RESERVED_KEYWORD},
+ {"invoker", INVOKER, UNRESERVED_KEYWORD},
+ {"is", IS, TYPE_FUNC_NAME_KEYWORD},
+ {"isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD},
+ {"isolation", ISOLATION, UNRESERVED_KEYWORD},
+ {"join", JOIN, TYPE_FUNC_NAME_KEYWORD},
+ {"key", KEY, UNRESERVED_KEYWORD},
+ {"lancompiler", LANCOMPILER, UNRESERVED_KEYWORD},
+ {"language", LANGUAGE, UNRESERVED_KEYWORD},
+ {"large", LARGE_P, UNRESERVED_KEYWORD},
+ {"last", LAST_P, UNRESERVED_KEYWORD},
+ {"leading", LEADING, RESERVED_KEYWORD},
+ {"least", LEAST, COL_NAME_KEYWORD},
+ {"left", LEFT, TYPE_FUNC_NAME_KEYWORD},
+ {"level", LEVEL, UNRESERVED_KEYWORD},
+ {"like", LIKE, TYPE_FUNC_NAME_KEYWORD},
+ {"limit", LIMIT, RESERVED_KEYWORD},
+ {"listen", LISTEN, UNRESERVED_KEYWORD},
+ {"load", LOAD, UNRESERVED_KEYWORD},
+ {"local", LOCAL, UNRESERVED_KEYWORD},
+ {"localtime", LOCALTIME, RESERVED_KEYWORD},
+ {"localtimestamp", LOCALTIMESTAMP, RESERVED_KEYWORD},
+ {"location", LOCATION, UNRESERVED_KEYWORD},
+ {"lock", LOCK_P, UNRESERVED_KEYWORD},
+ {"login", LOGIN_P, UNRESERVED_KEYWORD},
+ {"match", MATCH, UNRESERVED_KEYWORD},
+ {"maxvalue", MAXVALUE, UNRESERVED_KEYWORD},
+ {"minute", MINUTE_P, UNRESERVED_KEYWORD},
+ {"minvalue", MINVALUE, UNRESERVED_KEYWORD},
+ {"mode", MODE, UNRESERVED_KEYWORD},
+ {"month", MONTH_P, UNRESERVED_KEYWORD},
+ {"move", MOVE, UNRESERVED_KEYWORD},
+ {"name", NAME_P, UNRESERVED_KEYWORD},
+ {"names", NAMES, UNRESERVED_KEYWORD},
+ {"national", NATIONAL, COL_NAME_KEYWORD},
+ {"natural", NATURAL, TYPE_FUNC_NAME_KEYWORD},
+ {"nchar", NCHAR, COL_NAME_KEYWORD},
+ {"new", NEW, RESERVED_KEYWORD},
+ {"next", NEXT, UNRESERVED_KEYWORD},
+ {"no", NO, UNRESERVED_KEYWORD},
+ {"nocreatedb", NOCREATEDB, UNRESERVED_KEYWORD},
+ {"nocreaterole", NOCREATEROLE, UNRESERVED_KEYWORD},
+ {"nocreateuser", NOCREATEUSER, UNRESERVED_KEYWORD},
+ {"noinherit", NOINHERIT, UNRESERVED_KEYWORD},
+ {"nologin", NOLOGIN_P, UNRESERVED_KEYWORD},
+ {"none", NONE, COL_NAME_KEYWORD},
+ {"nosuperuser", NOSUPERUSER, UNRESERVED_KEYWORD},
+ {"not", NOT, RESERVED_KEYWORD},
+ {"nothing", NOTHING, UNRESERVED_KEYWORD},
+ {"notify", NOTIFY, UNRESERVED_KEYWORD},
+ {"notnull", NOTNULL, TYPE_FUNC_NAME_KEYWORD},
+ {"nowait", NOWAIT, UNRESERVED_KEYWORD},
+ {"null", NULL_P, RESERVED_KEYWORD},
+ {"nullif", NULLIF, COL_NAME_KEYWORD},
+ {"nulls", NULLS_P, UNRESERVED_KEYWORD},
+ {"numeric", NUMERIC, COL_NAME_KEYWORD},
+ {"object", OBJECT_P, UNRESERVED_KEYWORD},
+ {"of", OF, UNRESERVED_KEYWORD},
+ {"off", OFF, RESERVED_KEYWORD},
+ {"offset", OFFSET, RESERVED_KEYWORD},
+ {"oids", OIDS, UNRESERVED_KEYWORD},
+ {"old", OLD, RESERVED_KEYWORD},
+ {"on", ON, RESERVED_KEYWORD},
+ {"only", ONLY, RESERVED_KEYWORD},
+ {"operator", OPERATOR, UNRESERVED_KEYWORD},
+ {"option", OPTION, UNRESERVED_KEYWORD},
+ {"or", OR, RESERVED_KEYWORD},
+ {"order", ORDER, RESERVED_KEYWORD},
+ {"out", OUT_P, COL_NAME_KEYWORD},
+ {"outer", OUTER_P, TYPE_FUNC_NAME_KEYWORD},
+ {"overlaps", OVERLAPS, TYPE_FUNC_NAME_KEYWORD},
+ {"overlay", OVERLAY, COL_NAME_KEYWORD},
+ {"owned", OWNED, UNRESERVED_KEYWORD},
+ {"owner", OWNER, UNRESERVED_KEYWORD},
+ {"partial", PARTIAL, UNRESERVED_KEYWORD},
+ {"password", PASSWORD, UNRESERVED_KEYWORD},
+ {"placing", PLACING, RESERVED_KEYWORD},
+ {"plans", PLANS, UNRESERVED_KEYWORD},
+ {"position", POSITION, COL_NAME_KEYWORD},
+ {"precision", PRECISION, COL_NAME_KEYWORD},
+ {"prepare", PREPARE, UNRESERVED_KEYWORD},
+ {"prepared", PREPARED, UNRESERVED_KEYWORD},
+ {"preserve", PRESERVE, UNRESERVED_KEYWORD},
+ {"primary", PRIMARY, RESERVED_KEYWORD},
+ {"prior", PRIOR, UNRESERVED_KEYWORD},
+ {"privileges", PRIVILEGES, UNRESERVED_KEYWORD},
+ {"procedural", PROCEDURAL, UNRESERVED_KEYWORD},
+ {"procedure", PROCEDURE, UNRESERVED_KEYWORD},
+ {"quote", QUOTE, UNRESERVED_KEYWORD},
+ {"read", READ, UNRESERVED_KEYWORD},
+ {"real", REAL, COL_NAME_KEYWORD},
+ {"reassign", REASSIGN, UNRESERVED_KEYWORD},
+ {"recheck", RECHECK, UNRESERVED_KEYWORD},
+ {"references", REFERENCES, RESERVED_KEYWORD},
+ {"reindex", REINDEX, UNRESERVED_KEYWORD},
+ {"relative", RELATIVE_P, UNRESERVED_KEYWORD},
+ {"release", RELEASE, UNRESERVED_KEYWORD},
+ {"rename", RENAME, UNRESERVED_KEYWORD},
+ {"repeatable", REPEATABLE, UNRESERVED_KEYWORD},
+ {"replace", REPLACE, UNRESERVED_KEYWORD},
+ {"replica", REPLICA, UNRESERVED_KEYWORD},
+ {"reset", RESET, UNRESERVED_KEYWORD},
+ {"restart", RESTART, UNRESERVED_KEYWORD},
+ {"restrict", RESTRICT, UNRESERVED_KEYWORD},
+ {"returning", RETURNING, RESERVED_KEYWORD},
+ {"returns", RETURNS, UNRESERVED_KEYWORD},
+ {"revoke", REVOKE, UNRESERVED_KEYWORD},
+ {"right", RIGHT, TYPE_FUNC_NAME_KEYWORD},
+ {"role", ROLE, UNRESERVED_KEYWORD},
+ {"rollback", ROLLBACK, UNRESERVED_KEYWORD},
+ {"row", ROW, COL_NAME_KEYWORD},
+ {"rows", ROWS, UNRESERVED_KEYWORD},
+ {"rule", RULE, UNRESERVED_KEYWORD},
+ {"savepoint", SAVEPOINT, UNRESERVED_KEYWORD},
+ {"schema", SCHEMA, UNRESERVED_KEYWORD},
+ {"scroll", SCROLL, UNRESERVED_KEYWORD},
+ {"second", SECOND_P, UNRESERVED_KEYWORD},
+ {"security", SECURITY, UNRESERVED_KEYWORD},
+ {"select", SELECT, RESERVED_KEYWORD},
+ {"sequence", SEQUENCE, UNRESERVED_KEYWORD},
+ {"serializable", SERIALIZABLE, UNRESERVED_KEYWORD},
+ {"session", SESSION, UNRESERVED_KEYWORD},
+ {"session_user", SESSION_USER, RESERVED_KEYWORD},
+ {"set", SET, UNRESERVED_KEYWORD},
+ {"setof", SETOF, COL_NAME_KEYWORD},
+ {"share", SHARE, UNRESERVED_KEYWORD},
+ {"show", SHOW, UNRESERVED_KEYWORD},
+ {"similar", SIMILAR, TYPE_FUNC_NAME_KEYWORD},
+ {"simple", SIMPLE, UNRESERVED_KEYWORD},
+ {"smallint", SMALLINT, COL_NAME_KEYWORD},
+ {"some", SOME, RESERVED_KEYWORD},
+ {"stable", STABLE, UNRESERVED_KEYWORD},
+ {"standalone", STANDALONE_P, UNRESERVED_KEYWORD},
+ {"start", START, UNRESERVED_KEYWORD},
+ {"statement", STATEMENT, UNRESERVED_KEYWORD},
+ {"statistics", STATISTICS, UNRESERVED_KEYWORD},
+ {"stdin", STDIN, UNRESERVED_KEYWORD},
+ {"stdout", STDOUT, UNRESERVED_KEYWORD},
+ {"storage", STORAGE, UNRESERVED_KEYWORD},
+ {"strict", STRICT_P, UNRESERVED_KEYWORD},
+ {"strip", STRIP_P, UNRESERVED_KEYWORD},
+ {"substring", SUBSTRING, COL_NAME_KEYWORD},
+ {"superuser", SUPERUSER_P, UNRESERVED_KEYWORD},
+ {"symmetric", SYMMETRIC, RESERVED_KEYWORD},
+ {"sysid", SYSID, UNRESERVED_KEYWORD},
+ {"system", SYSTEM_P, UNRESERVED_KEYWORD},
+ {"table", TABLE, RESERVED_KEYWORD},
+ {"tablespace", TABLESPACE, UNRESERVED_KEYWORD},
+ {"temp", TEMP, UNRESERVED_KEYWORD},
+ {"template", TEMPLATE, UNRESERVED_KEYWORD},
+ {"temporary", TEMPORARY, UNRESERVED_KEYWORD},
+ {"then", THEN, RESERVED_KEYWORD},
+ {"time", TIME, COL_NAME_KEYWORD},
+ {"timestamp", TIMESTAMP, COL_NAME_KEYWORD},
+ {"to", TO, RESERVED_KEYWORD},
+ {"trailing", TRAILING, RESERVED_KEYWORD},
+ {"transaction", TRANSACTION, UNRESERVED_KEYWORD},
+ {"treat", TREAT, COL_NAME_KEYWORD},
+ {"trigger", TRIGGER, UNRESERVED_KEYWORD},
+ {"trim", TRIM, COL_NAME_KEYWORD},
+ {"true", TRUE_P, RESERVED_KEYWORD},
+ {"truncate", TRUNCATE, UNRESERVED_KEYWORD},
+ {"trusted", TRUSTED, UNRESERVED_KEYWORD},
+ {"type", TYPE_P, UNRESERVED_KEYWORD},
+ {"uncommitted", UNCOMMITTED, UNRESERVED_KEYWORD},
+ {"unencrypted", UNENCRYPTED, UNRESERVED_KEYWORD},
+ {"union", UNION, RESERVED_KEYWORD},
+ {"unique", UNIQUE, RESERVED_KEYWORD},
+ {"unknown", UNKNOWN, UNRESERVED_KEYWORD},
+ {"unlisten", UNLISTEN, UNRESERVED_KEYWORD},
+ {"until", UNTIL, UNRESERVED_KEYWORD},
+ {"update", UPDATE, UNRESERVED_KEYWORD},
+ {"user", USER, RESERVED_KEYWORD},
+ {"using", USING, RESERVED_KEYWORD},
+ {"vacuum", VACUUM, UNRESERVED_KEYWORD},
+ {"valid", VALID, UNRESERVED_KEYWORD},
+ {"validator", VALIDATOR, UNRESERVED_KEYWORD},
+ {"value", VALUE_P, UNRESERVED_KEYWORD},
+ {"values", VALUES, COL_NAME_KEYWORD},
+ {"varchar", VARCHAR, COL_NAME_KEYWORD},
+ {"varying", VARYING, UNRESERVED_KEYWORD},
+ {"verbose", VERBOSE, TYPE_FUNC_NAME_KEYWORD},
+ {"version", VERSION_P, UNRESERVED_KEYWORD},
+ {"view", VIEW, UNRESERVED_KEYWORD},
+ {"volatile", VOLATILE, UNRESERVED_KEYWORD},
+ {"when", WHEN, RESERVED_KEYWORD},
+ {"where", WHERE, RESERVED_KEYWORD},
+ {"whitespace", WHITESPACE_P, UNRESERVED_KEYWORD},
+ /*
+ * XXX we mark WITH as reserved to force it to be quoted in dumps, even
+ * though it is currently unreserved according to gram.y. This is because
+ * we expect we'll have to make it reserved to implement SQL WITH clauses.
+ * If that patch manages to do without reserving WITH, adjust this entry
+ * at that time; in any case this should be back in sync with gram.y
+ * after WITH clauses are implemented.
+ */
+ {"with", WITH, RESERVED_KEYWORD},
+ {"without", WITHOUT, UNRESERVED_KEYWORD},
+ {"work", WORK, UNRESERVED_KEYWORD},
+ {"write", WRITE, UNRESERVED_KEYWORD},
+ {"xml", XML_P, UNRESERVED_KEYWORD},
+ {"xmlattributes", XMLATTRIBUTES, COL_NAME_KEYWORD},
+ {"xmlconcat", XMLCONCAT, COL_NAME_KEYWORD},
+ {"xmlelement", XMLELEMENT, COL_NAME_KEYWORD},
+ {"xmlforest", XMLFOREST, COL_NAME_KEYWORD},
+ {"xmlparse", XMLPARSE, COL_NAME_KEYWORD},
+ {"xmlpi", XMLPI, COL_NAME_KEYWORD},
+ {"xmlroot", XMLROOT, COL_NAME_KEYWORD},
+ {"xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD},
+ {"year", YEAR_P, UNRESERVED_KEYWORD},
+ {"yes", YES_P, UNRESERVED_KEYWORD},
+ {"zone", ZONE, UNRESERVED_KEYWORD},
};
/*
SELECT viewname, definition FROM pg_views WHERE schemaname <> 'information_schema' ORDER BY viewname;
viewname | definition
--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- iexit | SELECT ih."name", ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE (ih.thepath ## r.thepath);
- pg_cursors | SELECT c."name", c."statement", c.is_holdable, c.is_binary, c.is_scrollable, c.creation_time FROM pg_cursor() c("name" text, "statement" text, is_holdable boolean, is_binary boolean, is_scrollable boolean, creation_time timestamp with time zone);
+ iexit | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE (ih.thepath ## r.thepath);
+ pg_cursors | SELECT c.name, c.statement, c.is_holdable, c.is_binary, c.is_scrollable, c.creation_time FROM pg_cursor() c(name text, statement text, is_holdable boolean, is_binary boolean, is_scrollable boolean, creation_time timestamp with time zone);
pg_group | SELECT pg_authid.rolname AS groname, pg_authid.oid AS grosysid, ARRAY(SELECT pg_auth_members.member FROM pg_auth_members WHERE (pg_auth_members.roleid = pg_authid.oid)) AS grolist FROM pg_authid WHERE (NOT pg_authid.rolcanlogin);
- pg_indexes | SELECT n.nspname AS schemaname, c.relname AS tablename, i.relname AS indexname, t.spcname AS "tablespace", pg_get_indexdef(i.oid) AS indexdef FROM ((((pg_index x JOIN pg_class c ON ((c.oid = x.indrelid))) JOIN pg_class i ON ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) LEFT JOIN pg_tablespace t ON ((t.oid = i.reltablespace))) WHERE ((c.relkind = 'r'::"char") AND (i.relkind = 'i'::"char"));
- pg_locks | SELECT l.locktype, l."database", l.relation, l.page, l.tuple, l.transactionid, l.classid, l.objid, l.objsubid, l."transaction", l.pid, l."mode", l."granted" FROM pg_lock_status() l(locktype text, "database" oid, relation oid, page integer, tuple smallint, transactionid xid, classid oid, objid oid, objsubid smallint, "transaction" xid, pid integer, "mode" text, "granted" boolean);
- pg_prepared_statements | SELECT p."name", p."statement", p.prepare_time, p.parameter_types, p.from_sql FROM pg_prepared_statement() p("name" text, "statement" text, prepare_time timestamp with time zone, parameter_types regtype[], from_sql boolean);
- pg_prepared_xacts | SELECT p."transaction", p.gid, p."prepared", u.rolname AS "owner", d.datname AS "database" FROM ((pg_prepared_xact() p("transaction" xid, gid text, "prepared" timestamp with time zone, ownerid oid, dbid oid) LEFT JOIN pg_authid u ON ((p.ownerid = u.oid))) LEFT JOIN pg_database d ON ((p.dbid = d.oid)));
+ pg_indexes | SELECT n.nspname AS schemaname, c.relname AS tablename, i.relname AS indexname, t.spcname AS tablespace, pg_get_indexdef(i.oid) AS indexdef FROM ((((pg_index x JOIN pg_class c ON ((c.oid = x.indrelid))) JOIN pg_class i ON ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) LEFT JOIN pg_tablespace t ON ((t.oid = i.reltablespace))) WHERE ((c.relkind = 'r'::"char") AND (i.relkind = 'i'::"char"));
+ pg_locks | SELECT l.locktype, l.database, l.relation, l.page, l.tuple, l.transactionid, l.classid, l.objid, l.objsubid, l.transaction, l.pid, l.mode, l.granted FROM pg_lock_status() l(locktype text, database oid, relation oid, page integer, tuple smallint, transactionid xid, classid oid, objid oid, objsubid smallint, transaction xid, pid integer, mode text, granted boolean);
+ pg_prepared_statements | SELECT p.name, p.statement, p.prepare_time, p.parameter_types, p.from_sql FROM pg_prepared_statement() p(name text, statement text, prepare_time timestamp with time zone, parameter_types regtype[], from_sql boolean);
+ pg_prepared_xacts | SELECT p.transaction, p.gid, p.prepared, u.rolname AS owner, d.datname AS database FROM ((pg_prepared_xact() p(transaction xid, gid text, prepared timestamp with time zone, ownerid oid, dbid oid) LEFT JOIN pg_authid u ON ((p.ownerid = u.oid))) LEFT JOIN pg_database d ON ((p.dbid = d.oid)));
pg_roles | SELECT pg_authid.rolname, pg_authid.rolsuper, pg_authid.rolinherit, pg_authid.rolcreaterole, pg_authid.rolcreatedb, pg_authid.rolcatupdate, pg_authid.rolcanlogin, pg_authid.rolconnlimit, '********'::text AS rolpassword, pg_authid.rolvaliduntil, pg_authid.rolconfig, pg_authid.oid FROM pg_authid;
- pg_rules | SELECT n.nspname AS schemaname, c.relname AS tablename, r.rulename, pg_get_ruledef(r.oid) AS definition FROM ((pg_rewrite r JOIN pg_class c ON ((c.oid = r.ev_class))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (r.rulename <> '_RETURN'::"name");
- pg_settings | SELECT a."name", a.setting, a.unit, a.category, a.short_desc, a.extra_desc, a.context, a.vartype, a.source, a.min_val, a.max_val FROM pg_show_all_settings() a("name" text, setting text, unit text, category text, short_desc text, extra_desc text, context text, vartype text, source text, min_val text, max_val text);
+ pg_rules | SELECT n.nspname AS schemaname, c.relname AS tablename, r.rulename, pg_get_ruledef(r.oid) AS definition FROM ((pg_rewrite r JOIN pg_class c ON ((c.oid = r.ev_class))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (r.rulename <> '_RETURN'::name);
+ pg_settings | SELECT a.name, a.setting, a.unit, a.category, a.short_desc, a.extra_desc, a.context, a.vartype, a.source, a.min_val, a.max_val FROM pg_show_all_settings() a(name text, setting text, unit text, category text, short_desc text, extra_desc text, context text, vartype text, source text, min_val text, max_val text);
pg_shadow | SELECT pg_authid.rolname AS usename, pg_authid.oid AS usesysid, pg_authid.rolcreatedb AS usecreatedb, pg_authid.rolsuper AS usesuper, pg_authid.rolcatupdate AS usecatupd, pg_authid.rolpassword AS passwd, (pg_authid.rolvaliduntil)::abstime AS valuntil, pg_authid.rolconfig AS useconfig FROM pg_authid WHERE pg_authid.rolcanlogin;
pg_stat_activity | SELECT d.oid AS datid, d.datname, pg_stat_get_backend_pid(s.backendid) AS procpid, pg_stat_get_backend_userid(s.backendid) AS usesysid, u.rolname AS usename, pg_stat_get_backend_activity(s.backendid) AS current_query, pg_stat_get_backend_waiting(s.backendid) AS waiting, pg_stat_get_backend_txn_start(s.backendid) AS txn_start, pg_stat_get_backend_activity_start(s.backendid) AS query_start, pg_stat_get_backend_start(s.backendid) AS backend_start, pg_stat_get_backend_client_addr(s.backendid) AS client_addr, pg_stat_get_backend_client_port(s.backendid) AS client_port FROM pg_database d, (SELECT pg_stat_get_backend_idset() AS backendid) s, pg_authid u WHERE ((pg_stat_get_backend_dbid(s.backendid) = d.oid) AND (pg_stat_get_backend_userid(s.backendid) = u.oid));
pg_stat_all_indexes | SELECT c.oid AS relid, i.oid AS indexrelid, n.nspname AS schemaname, c.relname, i.relname AS indexrelname, pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch FROM (((pg_class c JOIN pg_index x ON ((c.oid = x.indrelid))) JOIN pg_class i ON ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", 't'::"char"]));
pg_stat_all_tables | SELECT c.oid AS relid, n.nspname AS schemaname, c.relname, pg_stat_get_numscans(c.oid) AS seq_scan, pg_stat_get_tuples_returned(c.oid) AS seq_tup_read, (sum(pg_stat_get_numscans(i.indexrelid)))::bigint AS idx_scan, ((sum(pg_stat_get_tuples_fetched(i.indexrelid)))::bigint + pg_stat_get_tuples_fetched(c.oid)) AS idx_tup_fetch, pg_stat_get_tuples_inserted(c.oid) AS n_tup_ins, pg_stat_get_tuples_updated(c.oid) AS n_tup_upd, pg_stat_get_tuples_deleted(c.oid) AS n_tup_del, pg_stat_get_live_tuples(c.oid) AS n_live_tup, pg_stat_get_dead_tuples(c.oid) AS n_dead_tup, pg_stat_get_last_vacuum_time(c.oid) AS last_vacuum, pg_stat_get_last_autovacuum_time(c.oid) AS last_autovacuum, pg_stat_get_last_analyze_time(c.oid) AS last_analyze, pg_stat_get_last_autoanalyze_time(c.oid) AS last_autoanalyze FROM ((pg_class c LEFT JOIN pg_index i ON ((c.oid = i.indrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", 't'::"char"])) GROUP BY c.oid, n.nspname, c.relname;
pg_stat_bgwriter | SELECT pg_stat_get_bgwriter_timed_checkpoints() AS checkpoints_timed, pg_stat_get_bgwriter_requested_checkpoints() AS checkpoints_req, pg_stat_get_bgwriter_buf_written_checkpoints() AS buffers_checkpoint, pg_stat_get_bgwriter_buf_written_lru() AS buffers_lru, pg_stat_get_bgwriter_buf_written_all() AS buffers_all, pg_stat_get_bgwriter_maxwritten_lru() AS maxwritten_lru, pg_stat_get_bgwriter_maxwritten_all() AS maxwritten_all;
pg_stat_database | SELECT d.oid AS datid, d.datname, pg_stat_get_db_numbackends(d.oid) AS numbackends, pg_stat_get_db_xact_commit(d.oid) AS xact_commit, pg_stat_get_db_xact_rollback(d.oid) AS xact_rollback, (pg_stat_get_db_blocks_fetched(d.oid) - pg_stat_get_db_blocks_hit(d.oid)) AS blks_read, pg_stat_get_db_blocks_hit(d.oid) AS blks_hit, pg_stat_get_db_tuples_returned(d.oid) AS tup_returned, pg_stat_get_db_tuples_fetched(d.oid) AS tup_fetched, pg_stat_get_db_tuples_inserted(d.oid) AS tup_inserted, pg_stat_get_db_tuples_updated(d.oid) AS tup_updated, pg_stat_get_db_tuples_deleted(d.oid) AS tup_deleted FROM pg_database d;
- pg_stat_sys_indexes | SELECT pg_stat_all_indexes.relid, pg_stat_all_indexes.indexrelid, pg_stat_all_indexes.schemaname, pg_stat_all_indexes.relname, pg_stat_all_indexes.indexrelname, pg_stat_all_indexes.idx_scan, pg_stat_all_indexes.idx_tup_read, pg_stat_all_indexes.idx_tup_fetch FROM pg_stat_all_indexes WHERE (pg_stat_all_indexes.schemaname = ANY (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_stat_sys_tables | SELECT pg_stat_all_tables.relid, pg_stat_all_tables.schemaname, pg_stat_all_tables.relname, pg_stat_all_tables.seq_scan, pg_stat_all_tables.seq_tup_read, pg_stat_all_tables.idx_scan, pg_stat_all_tables.idx_tup_fetch, pg_stat_all_tables.n_tup_ins, pg_stat_all_tables.n_tup_upd, pg_stat_all_tables.n_tup_del, pg_stat_all_tables.n_live_tup, pg_stat_all_tables.n_dead_tup, pg_stat_all_tables.last_vacuum, pg_stat_all_tables.last_autovacuum, pg_stat_all_tables.last_analyze, pg_stat_all_tables.last_autoanalyze FROM pg_stat_all_tables WHERE (pg_stat_all_tables.schemaname = ANY (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_stat_user_indexes | SELECT pg_stat_all_indexes.relid, pg_stat_all_indexes.indexrelid, pg_stat_all_indexes.schemaname, pg_stat_all_indexes.relname, pg_stat_all_indexes.indexrelname, pg_stat_all_indexes.idx_scan, pg_stat_all_indexes.idx_tup_read, pg_stat_all_indexes.idx_tup_fetch FROM pg_stat_all_indexes WHERE (pg_stat_all_indexes.schemaname <> ALL (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_stat_user_tables | SELECT pg_stat_all_tables.relid, pg_stat_all_tables.schemaname, pg_stat_all_tables.relname, pg_stat_all_tables.seq_scan, pg_stat_all_tables.seq_tup_read, pg_stat_all_tables.idx_scan, pg_stat_all_tables.idx_tup_fetch, pg_stat_all_tables.n_tup_ins, pg_stat_all_tables.n_tup_upd, pg_stat_all_tables.n_tup_del, pg_stat_all_tables.n_live_tup, pg_stat_all_tables.n_dead_tup, pg_stat_all_tables.last_vacuum, pg_stat_all_tables.last_autovacuum, pg_stat_all_tables.last_analyze, pg_stat_all_tables.last_autoanalyze FROM pg_stat_all_tables WHERE (pg_stat_all_tables.schemaname <> ALL (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
+ pg_stat_sys_indexes | SELECT pg_stat_all_indexes.relid, pg_stat_all_indexes.indexrelid, pg_stat_all_indexes.schemaname, pg_stat_all_indexes.relname, pg_stat_all_indexes.indexrelname, pg_stat_all_indexes.idx_scan, pg_stat_all_indexes.idx_tup_read, pg_stat_all_indexes.idx_tup_fetch FROM pg_stat_all_indexes WHERE (pg_stat_all_indexes.schemaname = ANY (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_stat_sys_tables | SELECT pg_stat_all_tables.relid, pg_stat_all_tables.schemaname, pg_stat_all_tables.relname, pg_stat_all_tables.seq_scan, pg_stat_all_tables.seq_tup_read, pg_stat_all_tables.idx_scan, pg_stat_all_tables.idx_tup_fetch, pg_stat_all_tables.n_tup_ins, pg_stat_all_tables.n_tup_upd, pg_stat_all_tables.n_tup_del, pg_stat_all_tables.n_live_tup, pg_stat_all_tables.n_dead_tup, pg_stat_all_tables.last_vacuum, pg_stat_all_tables.last_autovacuum, pg_stat_all_tables.last_analyze, pg_stat_all_tables.last_autoanalyze FROM pg_stat_all_tables WHERE (pg_stat_all_tables.schemaname = ANY (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_stat_user_indexes | SELECT pg_stat_all_indexes.relid, pg_stat_all_indexes.indexrelid, pg_stat_all_indexes.schemaname, pg_stat_all_indexes.relname, pg_stat_all_indexes.indexrelname, pg_stat_all_indexes.idx_scan, pg_stat_all_indexes.idx_tup_read, pg_stat_all_indexes.idx_tup_fetch FROM pg_stat_all_indexes WHERE (pg_stat_all_indexes.schemaname <> ALL (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_stat_user_tables | SELECT pg_stat_all_tables.relid, pg_stat_all_tables.schemaname, pg_stat_all_tables.relname, pg_stat_all_tables.seq_scan, pg_stat_all_tables.seq_tup_read, pg_stat_all_tables.idx_scan, pg_stat_all_tables.idx_tup_fetch, pg_stat_all_tables.n_tup_ins, pg_stat_all_tables.n_tup_upd, pg_stat_all_tables.n_tup_del, pg_stat_all_tables.n_live_tup, pg_stat_all_tables.n_dead_tup, pg_stat_all_tables.last_vacuum, pg_stat_all_tables.last_autovacuum, pg_stat_all_tables.last_analyze, pg_stat_all_tables.last_autoanalyze FROM pg_stat_all_tables WHERE (pg_stat_all_tables.schemaname <> ALL (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
pg_statio_all_indexes | SELECT c.oid AS relid, i.oid AS indexrelid, n.nspname AS schemaname, c.relname, i.relname AS indexrelname, (pg_stat_get_blocks_fetched(i.oid) - pg_stat_get_blocks_hit(i.oid)) AS idx_blks_read, pg_stat_get_blocks_hit(i.oid) AS idx_blks_hit FROM (((pg_class c JOIN pg_index x ON ((c.oid = x.indrelid))) JOIN pg_class i ON ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", 't'::"char"]));
pg_statio_all_sequences | SELECT c.oid AS relid, n.nspname AS schemaname, c.relname, (pg_stat_get_blocks_fetched(c.oid) - pg_stat_get_blocks_hit(c.oid)) AS blks_read, pg_stat_get_blocks_hit(c.oid) AS blks_hit FROM (pg_class c LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = 'S'::"char");
pg_statio_all_tables | SELECT c.oid AS relid, n.nspname AS schemaname, c.relname, (pg_stat_get_blocks_fetched(c.oid) - pg_stat_get_blocks_hit(c.oid)) AS heap_blks_read, pg_stat_get_blocks_hit(c.oid) AS heap_blks_hit, (sum((pg_stat_get_blocks_fetched(i.indexrelid) - pg_stat_get_blocks_hit(i.indexrelid))))::bigint AS idx_blks_read, (sum(pg_stat_get_blocks_hit(i.indexrelid)))::bigint AS idx_blks_hit, (pg_stat_get_blocks_fetched(t.oid) - pg_stat_get_blocks_hit(t.oid)) AS toast_blks_read, pg_stat_get_blocks_hit(t.oid) AS toast_blks_hit, (pg_stat_get_blocks_fetched(x.oid) - pg_stat_get_blocks_hit(x.oid)) AS tidx_blks_read, pg_stat_get_blocks_hit(x.oid) AS tidx_blks_hit FROM ((((pg_class c LEFT JOIN pg_index i ON ((c.oid = i.indrelid))) LEFT JOIN pg_class t ON ((c.reltoastrelid = t.oid))) LEFT JOIN pg_class x ON ((t.reltoastidxid = x.oid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", 't'::"char"])) GROUP BY c.oid, n.nspname, c.relname, t.oid, x.oid;
- pg_statio_sys_indexes | SELECT pg_statio_all_indexes.relid, pg_statio_all_indexes.indexrelid, pg_statio_all_indexes.schemaname, pg_statio_all_indexes.relname, pg_statio_all_indexes.indexrelname, pg_statio_all_indexes.idx_blks_read, pg_statio_all_indexes.idx_blks_hit FROM pg_statio_all_indexes WHERE (pg_statio_all_indexes.schemaname = ANY (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_statio_sys_sequences | SELECT pg_statio_all_sequences.relid, pg_statio_all_sequences.schemaname, pg_statio_all_sequences.relname, pg_statio_all_sequences.blks_read, pg_statio_all_sequences.blks_hit FROM pg_statio_all_sequences WHERE (pg_statio_all_sequences.schemaname = ANY (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_statio_sys_tables | SELECT pg_statio_all_tables.relid, pg_statio_all_tables.schemaname, pg_statio_all_tables.relname, pg_statio_all_tables.heap_blks_read, pg_statio_all_tables.heap_blks_hit, pg_statio_all_tables.idx_blks_read, pg_statio_all_tables.idx_blks_hit, pg_statio_all_tables.toast_blks_read, pg_statio_all_tables.toast_blks_hit, pg_statio_all_tables.tidx_blks_read, pg_statio_all_tables.tidx_blks_hit FROM pg_statio_all_tables WHERE (pg_statio_all_tables.schemaname = ANY (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_statio_user_indexes | SELECT pg_statio_all_indexes.relid, pg_statio_all_indexes.indexrelid, pg_statio_all_indexes.schemaname, pg_statio_all_indexes.relname, pg_statio_all_indexes.indexrelname, pg_statio_all_indexes.idx_blks_read, pg_statio_all_indexes.idx_blks_hit FROM pg_statio_all_indexes WHERE (pg_statio_all_indexes.schemaname <> ALL (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_statio_user_sequences | SELECT pg_statio_all_sequences.relid, pg_statio_all_sequences.schemaname, pg_statio_all_sequences.relname, pg_statio_all_sequences.blks_read, pg_statio_all_sequences.blks_hit FROM pg_statio_all_sequences WHERE (pg_statio_all_sequences.schemaname <> ALL (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
- pg_statio_user_tables | SELECT pg_statio_all_tables.relid, pg_statio_all_tables.schemaname, pg_statio_all_tables.relname, pg_statio_all_tables.heap_blks_read, pg_statio_all_tables.heap_blks_hit, pg_statio_all_tables.idx_blks_read, pg_statio_all_tables.idx_blks_hit, pg_statio_all_tables.toast_blks_read, pg_statio_all_tables.toast_blks_hit, pg_statio_all_tables.tidx_blks_read, pg_statio_all_tables.tidx_blks_hit FROM pg_statio_all_tables WHERE (pg_statio_all_tables.schemaname <> ALL (ARRAY['pg_catalog'::"name", 'pg_toast'::"name", 'information_schema'::"name"]));
+ pg_statio_sys_indexes | SELECT pg_statio_all_indexes.relid, pg_statio_all_indexes.indexrelid, pg_statio_all_indexes.schemaname, pg_statio_all_indexes.relname, pg_statio_all_indexes.indexrelname, pg_statio_all_indexes.idx_blks_read, pg_statio_all_indexes.idx_blks_hit FROM pg_statio_all_indexes WHERE (pg_statio_all_indexes.schemaname = ANY (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_statio_sys_sequences | SELECT pg_statio_all_sequences.relid, pg_statio_all_sequences.schemaname, pg_statio_all_sequences.relname, pg_statio_all_sequences.blks_read, pg_statio_all_sequences.blks_hit FROM pg_statio_all_sequences WHERE (pg_statio_all_sequences.schemaname = ANY (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_statio_sys_tables | SELECT pg_statio_all_tables.relid, pg_statio_all_tables.schemaname, pg_statio_all_tables.relname, pg_statio_all_tables.heap_blks_read, pg_statio_all_tables.heap_blks_hit, pg_statio_all_tables.idx_blks_read, pg_statio_all_tables.idx_blks_hit, pg_statio_all_tables.toast_blks_read, pg_statio_all_tables.toast_blks_hit, pg_statio_all_tables.tidx_blks_read, pg_statio_all_tables.tidx_blks_hit FROM pg_statio_all_tables WHERE (pg_statio_all_tables.schemaname = ANY (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_statio_user_indexes | SELECT pg_statio_all_indexes.relid, pg_statio_all_indexes.indexrelid, pg_statio_all_indexes.schemaname, pg_statio_all_indexes.relname, pg_statio_all_indexes.indexrelname, pg_statio_all_indexes.idx_blks_read, pg_statio_all_indexes.idx_blks_hit FROM pg_statio_all_indexes WHERE (pg_statio_all_indexes.schemaname <> ALL (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_statio_user_sequences | SELECT pg_statio_all_sequences.relid, pg_statio_all_sequences.schemaname, pg_statio_all_sequences.relname, pg_statio_all_sequences.blks_read, pg_statio_all_sequences.blks_hit FROM pg_statio_all_sequences WHERE (pg_statio_all_sequences.schemaname <> ALL (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
+ pg_statio_user_tables | SELECT pg_statio_all_tables.relid, pg_statio_all_tables.schemaname, pg_statio_all_tables.relname, pg_statio_all_tables.heap_blks_read, pg_statio_all_tables.heap_blks_hit, pg_statio_all_tables.idx_blks_read, pg_statio_all_tables.idx_blks_hit, pg_statio_all_tables.toast_blks_read, pg_statio_all_tables.toast_blks_hit, pg_statio_all_tables.tidx_blks_read, pg_statio_all_tables.tidx_blks_hit FROM pg_statio_all_tables WHERE (pg_statio_all_tables.schemaname <> ALL (ARRAY['pg_catalog'::name, 'pg_toast'::name, 'information_schema'::name]));
pg_stats | SELECT n.nspname AS schemaname, c.relname AS tablename, a.attname, s.stanullfrac AS null_frac, s.stawidth AS avg_width, s.stadistinct AS n_distinct, CASE 1 WHEN s.stakind1 THEN s.stavalues1 WHEN s.stakind2 THEN s.stavalues2 WHEN s.stakind3 THEN s.stavalues3 WHEN s.stakind4 THEN s.stavalues4 ELSE NULL::anyarray END AS most_common_vals, CASE 1 WHEN s.stakind1 THEN s.stanumbers1 WHEN s.stakind2 THEN s.stanumbers2 WHEN s.stakind3 THEN s.stanumbers3 WHEN s.stakind4 THEN s.stanumbers4 ELSE NULL::real[] END AS most_common_freqs, CASE 2 WHEN s.stakind1 THEN s.stavalues1 WHEN s.stakind2 THEN s.stavalues2 WHEN s.stakind3 THEN s.stavalues3 WHEN s.stakind4 THEN s.stavalues4 ELSE NULL::anyarray END AS histogram_bounds, CASE 3 WHEN s.stakind1 THEN s.stanumbers1[1] WHEN s.stakind2 THEN s.stanumbers2[1] WHEN s.stakind3 THEN s.stanumbers3[1] WHEN s.stakind4 THEN s.stanumbers4[1] ELSE NULL::real END AS correlation FROM (((pg_statistic s JOIN pg_class c ON ((c.oid = s.starelid))) JOIN pg_attribute a ON (((c.oid = a.attrelid) AND (a.attnum = s.staattnum)))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE has_table_privilege(c.oid, 'select'::text);
- pg_tables | SELECT n.nspname AS schemaname, c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS "tablespace", c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM ((pg_class c LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) LEFT JOIN pg_tablespace t ON ((t.oid = c.reltablespace))) WHERE (c.relkind = 'r'::"char");
+ pg_tables | SELECT n.nspname AS schemaname, c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS tablespace, c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM ((pg_class c LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) LEFT JOIN pg_tablespace t ON ((t.oid = c.reltablespace))) WHERE (c.relkind = 'r'::"char");
pg_timezone_abbrevs | SELECT pg_timezone_abbrevs.abbrev, pg_timezone_abbrevs.utc_offset, pg_timezone_abbrevs.is_dst FROM pg_timezone_abbrevs() pg_timezone_abbrevs(abbrev, utc_offset, is_dst);
- pg_timezone_names | SELECT pg_timezone_names."name", pg_timezone_names.abbrev, pg_timezone_names.utc_offset, pg_timezone_names.is_dst FROM pg_timezone_names() pg_timezone_names("name", abbrev, utc_offset, is_dst);
+ pg_timezone_names | SELECT pg_timezone_names.name, pg_timezone_names.abbrev, pg_timezone_names.utc_offset, pg_timezone_names.is_dst FROM pg_timezone_names() pg_timezone_names(name, abbrev, utc_offset, is_dst);
pg_user | SELECT pg_shadow.usename, pg_shadow.usesysid, pg_shadow.usecreatedb, pg_shadow.usesuper, pg_shadow.usecatupd, '********'::text AS passwd, pg_shadow.valuntil, pg_shadow.useconfig FROM pg_shadow;
pg_views | SELECT n.nspname AS schemaname, c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner, pg_get_viewdef(c.oid) AS definition FROM (pg_class c LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = 'v'::"char");
rtest_v1 | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1;
shoelace | SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, (s.sl_len * u.un_fact) AS sl_len_cm FROM shoelace_data s, unit u WHERE (s.sl_unit = u.un_name);
shoelace_candelete | SELECT shoelace_obsolete.sl_name, shoelace_obsolete.sl_avail, shoelace_obsolete.sl_color, shoelace_obsolete.sl_len, shoelace_obsolete.sl_unit, shoelace_obsolete.sl_len_cm FROM shoelace_obsolete WHERE (shoelace_obsolete.sl_avail = 0);
shoelace_obsolete | SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color, shoelace.sl_len, shoelace.sl_unit, shoelace.sl_len_cm FROM shoelace WHERE (NOT (EXISTS (SELECT shoe.shoename FROM shoe WHERE (shoe.slcolor = shoelace.sl_color))));
- street | SELECT r."name", r.thepath, c.cname FROM ONLY road r, real_city c WHERE (c.outline ## r.thepath);
- toyemp | SELECT emp."name", emp.age, emp."location", (12 * emp.salary) AS annualsal FROM emp;
+ street | SELECT r.name, r.thepath, c.cname FROM ONLY road r, real_city c WHERE (c.outline ## r.thepath);
+ toyemp | SELECT emp.name, emp.age, emp.location, (12 * emp.salary) AS annualsal FROM emp;
(49 rows)
SELECT tablename, rulename, definition FROM pg_rules
ORDER BY tablename, rulename;
- tablename | rulename | definition
----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ tablename | rulename | definition
+---------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pg_settings | pg_settings_n | CREATE RULE pg_settings_n AS ON UPDATE TO pg_settings DO INSTEAD NOTHING;
- pg_settings | pg_settings_u | CREATE RULE pg_settings_u AS ON UPDATE TO pg_settings WHERE (new."name" = old."name") DO SELECT set_config(old."name", new.setting, false) AS set_config;
- rtest_emp | rtest_emp_del | CREATE RULE rtest_emp_del AS ON DELETE TO rtest_emp DO INSERT INTO rtest_emplog (ename, who, "action", newsal, oldsal) VALUES (old.ename, "current_user"(), 'fired'::bpchar, '$0.00'::money, old.salary);
- rtest_emp | rtest_emp_ins | CREATE RULE rtest_emp_ins AS ON INSERT TO rtest_emp DO INSERT INTO rtest_emplog (ename, who, "action", newsal, oldsal) VALUES (new.ename, "current_user"(), 'hired'::bpchar, new.salary, '$0.00'::money);
- rtest_emp | rtest_emp_upd | CREATE RULE rtest_emp_upd AS ON UPDATE TO rtest_emp WHERE (new.salary <> old.salary) DO INSERT INTO rtest_emplog (ename, who, "action", newsal, oldsal) VALUES (new.ename, "current_user"(), 'honored'::bpchar, new.salary, old.salary);
+ pg_settings | pg_settings_u | CREATE RULE pg_settings_u AS ON UPDATE TO pg_settings WHERE (new.name = old.name) DO SELECT set_config(old.name, new.setting, false) AS set_config;
+ rtest_emp | rtest_emp_del | CREATE RULE rtest_emp_del AS ON DELETE TO rtest_emp DO INSERT INTO rtest_emplog (ename, who, action, newsal, oldsal) VALUES (old.ename, "current_user"(), 'fired'::bpchar, '$0.00'::money, old.salary);
+ rtest_emp | rtest_emp_ins | CREATE RULE rtest_emp_ins AS ON INSERT TO rtest_emp DO INSERT INTO rtest_emplog (ename, who, action, newsal, oldsal) VALUES (new.ename, "current_user"(), 'hired'::bpchar, new.salary, '$0.00'::money);
+ rtest_emp | rtest_emp_upd | CREATE RULE rtest_emp_upd AS ON UPDATE TO rtest_emp WHERE (new.salary <> old.salary) DO INSERT INTO rtest_emplog (ename, who, action, newsal, oldsal) VALUES (new.ename, "current_user"(), 'honored'::bpchar, new.salary, old.salary);
rtest_nothn1 | rtest_nothn_r1 | CREATE RULE rtest_nothn_r1 AS ON INSERT TO rtest_nothn1 WHERE ((new.a >= 10) AND (new.a < 20)) DO INSTEAD NOTHING;
rtest_nothn1 | rtest_nothn_r2 | CREATE RULE rtest_nothn_r2 AS ON INSERT TO rtest_nothn1 WHERE ((new.a >= 30) AND (new.a < 40)) DO INSTEAD NOTHING;
rtest_nothn2 | rtest_nothn_r3 | CREATE RULE rtest_nothn_r3 AS ON INSERT TO rtest_nothn2 WHERE (new.a >= 100) DO INSTEAD INSERT INTO rtest_nothn3 (a, b) VALUES (new.a, new.b);
shoelace | shoelace_del | CREATE RULE shoelace_del AS ON DELETE TO shoelace DO INSTEAD DELETE FROM shoelace_data WHERE (shoelace_data.sl_name = old.sl_name);
shoelace | shoelace_ins | CREATE RULE shoelace_ins AS ON INSERT TO shoelace DO INSTEAD INSERT INTO shoelace_data (sl_name, sl_avail, sl_color, sl_len, sl_unit) VALUES (new.sl_name, new.sl_avail, new.sl_color, new.sl_len, new.sl_unit);
shoelace | shoelace_upd | CREATE RULE shoelace_upd AS ON UPDATE TO shoelace DO INSTEAD UPDATE shoelace_data SET sl_name = new.sl_name, sl_avail = new.sl_avail, sl_color = new.sl_color, sl_len = new.sl_len, sl_unit = new.sl_unit WHERE (shoelace_data.sl_name = old.sl_name);
- shoelace_data | log_shoelace | CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data WHERE (new.sl_avail <> old.sl_avail) DO INSERT INTO shoelace_log (sl_name, sl_avail, log_who, log_when) VALUES (new.sl_name, new.sl_avail, 'Al Bundy'::"name", 'Thu Jan 01 00:00:00 1970'::timestamp without time zone);
+ shoelace_data | log_shoelace | CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data WHERE (new.sl_avail <> old.sl_avail) DO INSERT INTO shoelace_log (sl_name, sl_avail, log_who, log_when) VALUES (new.sl_name, new.sl_avail, 'Al Bundy'::name, 'Thu Jan 01 00:00:00 1970'::timestamp without time zone);
shoelace_ok | shoelace_ok_ins | CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok DO INSTEAD UPDATE shoelace SET sl_avail = (shoelace.sl_avail + new.ok_quant) WHERE (shoelace.sl_name = new.ok_name);
(29 rows)