Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
a3ec44a5
Commit
a3ec44a5
authored
Jul 01, 2002
by
Michael Meskes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit old versions into main branch again.
Michael
parent
97862234
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
119 additions
and
207 deletions
+119
-207
src/interfaces/ecpg/preproc/keywords.c
src/interfaces/ecpg/preproc/keywords.c
+1
-11
src/interfaces/ecpg/preproc/pgc.l
src/interfaces/ecpg/preproc/pgc.l
+14
-14
src/interfaces/ecpg/preproc/preproc.y
src/interfaces/ecpg/preproc/preproc.y
+104
-182
No files found.
src/interfaces/ecpg/preproc/keywords.c
View file @
a3ec44a5
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.5
1 2002/06/30 09:34:13
meskes Exp $
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.5
2 2002/07/01 06:56:10
meskes Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -44,7 +44,6 @@ static ScanKeyword ScanKeywords[] = {
{
"as"
,
AS
},
{
"asc"
,
ASC
},
{
"assertion"
,
ASSERTION
},
{
"assignment"
,
ASSIGNMENT
},
{
"at"
,
AT
},
{
"authorization"
,
AUTHORIZATION
},
{
"backward"
,
BACKWARD
},
...
...
@@ -99,7 +98,6 @@ static ScanKeyword ScanKeywords[] = {
{
"deferred"
,
DEFERRED
},
{
"definer"
,
DEFINER
},
{
"delete"
,
DELETE_P
},
{
"delimiter"
,
DELIMITER
},
{
"delimiters"
,
DELIMITERS
},
{
"desc"
,
DESC
},
{
"distinct"
,
DISTINCT
},
...
...
@@ -173,8 +171,6 @@ static ScanKeyword ScanKeywords[] = {
{
"listen"
,
LISTEN
},
{
"load"
,
LOAD
},
{
"local"
,
LOCAL
},
{
"localtime"
,
LOCALTIME
},
{
"localtimestamp"
,
LOCALTIMESTAMP
},
{
"location"
,
LOCATION
},
{
"lock"
,
LOCK_P
},
{
"match"
,
MATCH
},
...
...
@@ -215,13 +211,11 @@ static ScanKeyword ScanKeywords[] = {
{
"out"
,
OUT_P
},
{
"outer"
,
OUTER_P
},
{
"overlaps"
,
OVERLAPS
},
{
"overlay"
,
OVERLAY
},
{
"owner"
,
OWNER
},
{
"partial"
,
PARTIAL
},
{
"password"
,
PASSWORD
},
{
"path"
,
PATH_P
},
{
"pendant"
,
PENDANT
},
{
"placing"
,
PLACING
},
{
"position"
,
POSITION
},
{
"precision"
,
PRECISION
},
{
"primary"
,
PRIMARY
},
...
...
@@ -257,8 +251,6 @@ static ScanKeyword ScanKeywords[] = {
{
"setof"
,
SETOF
},
{
"share"
,
SHARE
},
{
"show"
,
SHOW
},
{
"similar"
,
SIMILAR
},
{
"simple"
,
SIMPLE
},
{
"smallint"
,
SMALLINT
},
{
"some"
,
SOME
},
{
"stable"
,
STABLE
},
...
...
@@ -300,7 +292,6 @@ static ScanKeyword ScanKeywords[] = {
{
"using"
,
USING
},
{
"vacuum"
,
VACUUM
},
{
"valid"
,
VALID
},
{
"validator"
,
VALIDATOR
},
{
"values"
,
VALUES
},
{
"varchar"
,
VARCHAR
},
{
"varying"
,
VARYING
},
...
...
@@ -313,7 +304,6 @@ static ScanKeyword ScanKeywords[] = {
{
"with"
,
WITH
},
{
"without"
,
WITHOUT
},
{
"work"
,
WORK
},
{
"write"
,
WRITE
},
{
"year"
,
YEAR_P
},
{
"zone"
,
ZONE
},
};
...
...
src/interfaces/ecpg/preproc/pgc.l
View file @
a3ec44a5
...
...
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.9
5 2002/06/30 09:34:13
meskes Exp $
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.9
6 2002/07/01 06:56:10
meskes Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -89,14 +89,14 @@ static struct _if_value
* We use exclusive states for quoted strings, extended comments,
* and to eliminate parsing troubles for numeric strings.
* Exclusive states:
* <xb> bit string literal
* <xb
it
> bit string literal
* <xc> extended C-style comments - thomas 1997-07-12
* <xd> delimited identifiers (double-quoted identifiers) - thomas 1997-10-27
* <xh> hexadecimal numeric string - thomas 1997-11-16
* <xq> quoted strings - thomas 1997-07-30
*/
%x xb
%x xb
it
%x xc
%x xd
%x xdc
...
...
@@ -108,10 +108,10 @@ static struct _if_value
/* Bit string
*/
xb
start
[bB]{quote}
xb
stop
{quote}
xbinside [^']*
xbcat {quote}{whitespace_with_newline}{quote}
xb
itstart
[bB]{quote}
xb
itstop
{quote}
xbi
ti
nside [^']*
xb
it
cat {quote}{whitespace_with_newline}{quote}
/* Hexadecimal number
*/
...
...
@@ -318,13 +318,13 @@ cppline {space}*#(.*\\{space})*.*
<xc><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated /* comment"); }
<SQL>{xbstart} {
<SQL>{xb
it
start} {
token_start = yytext;
BEGIN(xb);
BEGIN(xb
it
);
startlit();
addlitchar('b');
}
<xb
>{xb
stop} {
<xb
it>{xbit
stop} {
BEGIN(SQL);
if (literalbuf[strspn(literalbuf, "01") + 1] != '\0')
mmerror(PARSE_ERROR, ET_ERROR, "invalid bit string input.");
...
...
@@ -333,10 +333,10 @@ cppline {space}*#(.*\\{space})*.*
}
<xh>{xhinside} |
<xb
>{xb
inside} { addlit(yytext, yyleng); }
<xb
it>{xbit
inside} { addlit(yytext, yyleng); }
<xh>{xhcat} |
<xb
>{xb
cat} { /* ignore */ }
<xb><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated bit string"); }
<xb
it>{xbit
cat} { /* ignore */ }
<xb
it
><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated bit string"); }
<SQL>{xhstart} {
token_start = yytext;
...
...
@@ -378,7 +378,7 @@ cppline {space}*#(.*\\{space})*.*
<xq>{xqdouble} { addlitchar('\''); }
<xq>{xqinside} { addlit(yytext, yyleng); }
<xq>{xqescape} { addlit(yytext, yyleng); }
<xq>{xqoctesc} { addlit(yytext, yyleng); }
/* addlitchar does not work here since character must remain octal */
<xq>{xqoctesc} { addlit(yytext, yyleng); }
<xq>{xqcat} { /* ignore */ }
<xq><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated quoted string"); }
...
...
src/interfaces/ecpg/preproc/preproc.y
View file @
a3ec44a5
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.19
1 2002/06/30 09:34:14
meskes Exp $ */
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.19
2 2002/07/01 06:56:10
meskes Exp $ */
/* Copyright comment */
%{
...
...
@@ -179,7 +179,7 @@ make_name(void)
/* ordinary key words in alphabetical order */
%token <keyword> ABORT_TRANS, ABSOLUTE, ACCESS, ACTION, ADD, AFTER,
AGGREGATE, ALL, ALTER, ANALYSE, ANALYZE, AND, ANY, AS, ASC, ASSERTION,
A
SSIGNMENT, A
T, AUTHORIZATION,
AT, AUTHORIZATION,
BACKWARD, BEFORE, BEGIN_TRANS, BETWEEN, BIGINT, BINARY, BIT, BOTH,
BOOLEAN, BY,
...
...
@@ -191,14 +191,14 @@ make_name(void)
CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, CYCLE,
DATABASE, DAY_P, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, DEFERRED,
DEFINER, DELETE_P, DELIMITER
, DELIMITER
S, DESC, DISTINCT, DO, DOMAIN_P, DOUBLE, DROP,
DEFINER, DELETE_P, DELIMITERS, DESC, DISTINCT, DO, DOMAIN_P, DOUBLE, DROP,
EACH, ELSE, ENCODING, ENCRYPTED, END_TRANS, ESCAPE, EXCEPT, EXCLUSIVE,
EXECUTE, EXISTS, EXPLAIN, EXTERNAL, EXTRACT,
FALSE_P, FETCH, FLOAT_P, FOR, FORCE, FOREIGN, FORWARD, FREEZE, FROM,
FULL, FUNCTION,
G
ET, G
LOBAL, GRANT, GROUP_P,
GLOBAL, GRANT, GROUP_P,
HANDLER, HAVING, HOUR_P,
ILIKE, IMMEDIATE, IMMUTABLE, IMPLICIT, IN_P, INCREMENT, INDEX, INHERITS,
...
...
@@ -209,7 +209,7 @@ make_name(void)
KEY,
LANCOMPILER, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LIMIT, LISTEN,
LOAD, LOCAL, LOCA
LTIME, LOCALTIMESTAMP, LOCA
TION, LOCK_P,
LOAD, LOCAL, LOCATION, LOCK_P,
MATCH, MAXVALUE, MINUTE_P, MINVALUE, MODE, MONTH_P, MOVE,
...
...
@@ -218,17 +218,16 @@ make_name(void)
NUMERIC,
OF, OFF, OFFSET, OIDS, OLD, ON, ONLY, OPERATOR, OPTION, OR, ORDER,
OUT_P, OUTER_P, OVERLAPS, O
VERLAY, O
WNER,
OUT_P, OUTER_P, OVERLAPS, OWNER,
PARTIAL, PASSWORD, PATH_P, PENDANT, P
LACING, P
OSITION, PRECISION, PRIMARY,
PARTIAL, PASSWORD, PATH_P, PENDANT, POSITION, PRECISION, PRIMARY,
PRIOR, PRIVILEGES, PROCEDURE, PROCEDURAL,
READ, REAL, REFERENCES, REINDEX, RELATIVE, RENAME, REPLACE, RESET,
RESTRICT, RETURNS, REVOKE, RIGHT, ROLLBACK, ROW, RULE,
SCHEMA, SCROLL, SECOND_P, SECURITY, SELECT, SEQUENCE, SERIALIZABLE,
SESSION, SESSION_USER, SET, SETOF, SHARE, SHOW, SIMILAR, SIMPLE,
SMALLINT, SOME,
SESSION, SESSION_USER, SET, SETOF, SHARE, SHOW, SMALLINT, SOME,
STABLE, START, STATEMENT, STATISTICS, STDIN, STDOUT, STORAGE, STRICT,
SUBSTRING, SYSID,
...
...
@@ -237,8 +236,8 @@ make_name(void)
UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UNLISTEN, UNTIL, UPDATE, USAGE,
USER, USING,
VACUUM, VALID, VAL
IDATOR, VAL
UES, VARCHAR, VARYING, VERBOSE, VERSION, VIEW, VOLATILE,
WHEN, WHERE, WITH, WITHOUT, WORK,
WRITE
VACUUM, VALID, VALUES, VARCHAR, VARYING, VERBOSE, VERSION, VIEW, VOLATILE,
WHEN, WHERE, WITH, WITHOUT, WORK,
YEAR_P,
ZONE
...
...
@@ -265,7 +264,7 @@ make_name(void)
%right NOT
%right '='
%nonassoc '<' '>'
%nonassoc LIKE ILIKE
SIMILAR
%nonassoc LIKE ILIKE
%nonassoc ESCAPE
%nonassoc OVERLAPS
%nonassoc BETWEEN
...
...
@@ -283,7 +282,6 @@ make_name(void)
%right UMINUS
%left '[' ']'
%left '(' ')'
%left COLLATE
%left TYPECAST
%left '.'
...
...
@@ -296,46 +294,46 @@ make_name(void)
%type <str> ConstraintElem key_actions ColQualList type_name DropSchemaStmt
%type <str> target_list target_el update_target_list alias_clause
%type <str> update_target_el opt_id qualified_name database_name
%type <str> access_method attr_name index_name name func_name
opt_mode
%type <str> file_name AexprConst c_expr ConstTypename var_list
copy_from
%type <str> access_method attr_name index_name name func_name
%type <str> file_name AexprConst c_expr ConstTypename var_list
%type <str> in_expr_nodes a_expr b_expr TruncateStmt CommentStmt
%type <str> opt_indirection expr_list extract_list extract_arg
copy_opt_item
%type <str> opt_indirection expr_list extract_list extract_arg
%type <str> position_list substr_list substr_from alter_column_default
%type <str> trim_list in_expr substr_for attrs drop_behavior
TableLikeClause
%type <str> trim_list in_expr substr_for attrs drop_behavior
%type <str> Typename SimpleTypename Generic Numeric opt_float opt_numeric
%type <str> opt_decimal Character character opt_varying opt_charset
%type <str> opt_collate opt_timezone opt_interval table_ref
copy_opt_list
%type <str> opt_collate opt_timezone opt_interval table_ref
%type <str> row_expr row_descriptor row_list ConstDatetime opt_chain
%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr
%type <str> sortby OptUseOp qualified_name_list name_list ColId_or_Sconst
%type <str> group_clause having_clause from_clause opt_distinct
opt_oids
%type <str> group_clause having_clause from_clause opt_distinct
%type <str> join_outer where_clause relation_expr sub_type opt_arg
%type <str> opt_column_list insert_rest InsertStmt OptimizableStmt
%type <str> columnList DeleteStmt LockStmt UpdateStmt CursorStmt
%type <str> NotifyStmt columnElem
UnlistenStmt
%type <str> NotifyStmt columnElem
copy_dirn UnlistenStmt copy_null
%type <str> copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary
%type <str> FetchStmt direction fetch_how_many from_in
%type <str>
opt_with_copy
FetchStmt direction fetch_how_many from_in
%type <str> ClosePortalStmt DropStmt VacuumStmt AnalyzeStmt opt_verbose
%type <str> opt_full func_arg OptWithOids opt_freeze opt_ecpg_into
%type <str> analyze_keyword opt_name_list ExplainStmt index_params
%type <str> index_list func_index index_elem opt_class access_method_clause
%type <str> index_opt_unique IndexStmt func_return ConstInterval
%type <str> func_args_list func_args opt_with def_arg
add_drop overlay_list
%type <str> func_args_list func_args opt_with def_arg
%type <str> def_elem def_list definition DefineStmt select_with_parens
%type <str> opt_instead event RuleActionList opt_using CreateAssertStmt
%type <str> RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type
%type <str> RuleStmt opt_column opt_name oper_argtypes NumConst
%type <str> MathOp RemoveFuncStmt aggr_argtype for_update_clause
%type <str> RemoveAggrStmt opt_procedural select_no_parens
opt_validator
%type <str> RemoveOperStmt RenameStmt all_Op opt_
t
rusted opt_lancompiler
%type <str> RemoveAggrStmt opt_procedural select_no_parens
%type <str> RemoveOperStmt RenameStmt all_Op opt_
T
rusted opt_lancompiler
%type <str> VariableSetStmt var_value zone_value VariableShowStmt
%type <str> VariableResetStmt AlterTableStmt from_list
overlay_placing
%type <str> VariableResetStmt AlterTableStmt from_list
%type <str> opt_trans user_list OptUserList OptUserElem relation_name
%type <str> CreateUserStmt AlterUserStmt CreateSeqStmt OptSeqList
%type <str> OptSeqElem TriggerForSpec TriggerForOpt TriggerForType
%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt
%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt
opt_assignment
%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt
%type <str> CreatePLangStmt TriggerFuncArgs TriggerFuncArg simple_select
%type <str> ViewStmt LoadStmt CreatedbStmt createdb_opt_item
%type <str> createdb_opt_list opt_encoding OptInherit opt_equal
...
...
@@ -352,7 +350,7 @@ make_name(void)
%type <str> join_qual update_list AlterSchemaStmt joined_table
%type <str> opt_level opt_lock lock_type OptGroupList OptGroupElem
%type <str> OptConstrFromTable OptTempTableName StringConst
%type <str> constraints_set_mode comment_type opt_
definition
%type <str> constraints_set_mode comment_type opt_
empty_parentheses
%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete
%type <str> opt_force key_update CreateSchemaStmt PosIntStringConst
%type <str> IntConst PosIntConst grantee_list func_type opt_or_replace
...
...
@@ -381,7 +379,7 @@ make_name(void)
%type <str> struct_type s_struct vt_declarations variable_declarations
%type <str> var_declaration type_declaration
%type <str> s_union union_type ECPGSetAutocommit on_off
%type <str> ECPGAllocateDescr ECPGDeallocateDescr opt_symbol
%type <str> ECPGAllocateDescr ECPGDeallocateDescr
symbol
opt_symbol
%type <str> ECPGGetDescriptorHeader ECPGColLabel
%type <str> reserved_keyword unreserved_keyword
%type <str> col_name_keyword func_name_keyword
...
...
@@ -400,6 +398,8 @@ make_name(void)
%type <index> opt_array_bounds opt_type_array_bounds
%type <ival> Iresult
%token YYERROR_VERBOSE
%%
prog: statements;
...
...
@@ -659,14 +659,12 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
*
*****************************************************************************/
CreateUserStmt: CREATE USER UserId opt_with OptUserList
{ $$ = cat_str(4, make_str("create user"), $3, $4, $5); }
CreateUserStmt: CREATE USER UserId OptUserList
{ $$ = cat_str(3, make_str("create user"), $3, $4); }
| CREATE USER UserId WITH OptUserList
{ $$ = cat_str(4, make_str("create user"), $3, make_str("with"), $5); }
;
opt_with: WITH { $$ = make_str("with"); }
| /* EMPTY */ { $$ = EMPTY; }
;
/*****************************************************************************
*
* Alter a postgresql DBMS user
...
...
@@ -674,8 +672,10 @@ opt_with: WITH { $$ = make_str("with"); }
*
*****************************************************************************/
AlterUserStmt: ALTER USER UserId opt_with OptUserList
{ $$ = cat_str(4, make_str("alter user"), $3, $4, $5); }
AlterUserStmt: ALTER USER UserId OptUserList
{ $$ = cat_str(3, make_str("alter user"), $3, $4); }
| ALTER USER UserId WITH OptUserList
{ $$ = cat_str(4, make_str("alter user"), $3, make_str("with"), $5); }
;
AlterUserSetStmt: ALTER USER UserId SET set_rest
...
...
@@ -702,11 +702,7 @@ OptUserList: OptUserList OptUserElem { $$ = cat2_str($1, $2); }
;
OptUserElem: PASSWORD Sconst
{ $$ = cat2_str(make_str("password"), $2); }
| ENCRYPTED PASSWORD Sconst
{ $$ = cat2_str(make_str("encrypted password"), $3); }
| UNENCRYPTED PASSWORD Sconst
{ $$ = cat2_str(make_str("unencrypted password"), $3); }
{ $$ = cat2_str(make_str("password"), $2); }
| SYSID Iconst
{ $$ = cat2_str(make_str("sysid"), $2); }
| CREATEDB
...
...
@@ -735,8 +731,10 @@ user_list: user_list ',' UserId
*
*
****************************************************************************/
CreateGroupStmt: CREATE GROUP_P UserId opt_with OptGroupList
{ $$ = cat_str(4, make_str("create group"), $3, $4, $5); }
CreateGroupStmt: CREATE GROUP_P UserId OptGroupList
{ $$ = cat_str(3, make_str("create group"), $3, $4); }
| CREATE GROUP_P UserId WITH OptGroupList
{ $$ = cat_str(4, make_str("create group"), $3, make_str("with"), $5); }
;
/*
...
...
@@ -759,14 +757,12 @@ OptGroupElem: USER user_list
*
*
*****************************************************************************/
AlterGroupStmt: ALTER GROUP_P UserId add_drop USER user_list
{ $$ = cat_str(4, make_str("alter group"), $3, $4, make_str("user"), $6); }
AlterGroupStmt: ALTER GROUP_P UserId ADD USER user_list
{ $$ = cat_str(4, make_str("alter group"), $3, make_str("add user"), $6); }
| ALTER GROUP_P UserId DROP USER user_list
{ $$ = cat_str(4, make_str("alter group"), $3, make_str("drop user"), $6); }
;
add_drop: ADD { $$ = make_str("add"); }
| DROP { $$ = make_str("drop"); }
;
/*****************************************************************************
*
* Drop a postgresql group
...
...
@@ -839,8 +835,8 @@ set_rest: ColId TO var_list_or_default
{ $$ = cat_str(3, $1, make_str("="), $3); }
| TIME ZONE zone_value
{ $$ = cat2_str(make_str("time zone"), $3); }
| TRANSACTION ISOLATION LEVEL opt_level
opt_mode
{ $$ = cat
_str(3, make_str("transaction isolation level"), $4, $5
); }
| TRANSACTION ISOLATION LEVEL opt_level
{ $$ = cat
2_str(make_str("transaction isolation level"), $4
); }
| SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL opt_level
{ $$ = cat2_str(make_str("session characteristics as transaction isolation level"), $7); }
| NAMES opt_encoding
...
...
@@ -867,13 +863,6 @@ opt_level: READ COMMITTED { $$ = make_str("read committed"); }
| SERIALIZABLE { $$ = make_str("serializable"); }
;
opt_mode: READ WRITE { $$ = make_str("read write"); }
| READ ONLY {
mmerror(PARSE_ERROR, ET_WARNING, "Currently unsupported SET TRANSACTION/READ ONLY will be passed to backend");
$$ = make_str("read copy");
}
| /* EMPTY */ { $$ = EMPTY; }
;
var_value: opt_boolean { $$ = $1; }
| AllConst { $$ = $1; }
...
...
@@ -1032,19 +1021,16 @@ opt_id: ColId { $$ = $1; }
/*****************************************************************************
*
* QUERY :
* COPY <relname> FROM/TO [WITH options]
*
* BINARY, OIDS, and DELIMITERS kept in old locations
* for backward compatibility. 2002-06-18
* COPY [BINARY] <relname> FROM/TO
* [USING DELIMITERS <delimiter>]
*
*****************************************************************************/
CopyStmt: COPY opt_binary qualified_name opt_oids copy_from
copy_file_name copy_delimiter opt_with copy_opt_list
{ $$ = cat_str(9, make_str("copy"), $2, $3, $4, $5, $6, $7, $8i, $9); }
CopyStmt: COPY opt_binary qualified_name opt_with_copy copy_dirn copy_file_name copy_delimiter copy_null
{ $$ = cat_str(8, make_str("copy"), $2, $3, $4, $5, $6, $7, $8); }
;
copy_
from
: TO { $$ = make_str("to"); }
copy_
dirn
: TO { $$ = make_str("to"); }
| FROM { $$ = make_str("from"); }
;
...
...
@@ -1057,24 +1043,18 @@ copy_file_name: StringConst { $$ = $1; }
| STDIN { $$ = make_str("stdin"); }
| STDOUT { $$ = make_str("stdout"); }
;
copy_opt_list: copy_opt_list copy_opt_item { $$ = cat2_str($1, $2); }
| /*EMPTY*/ { $$ = EMPTY; }
;
copy_opt_item: BINARY { $$ = make_str("binary"); }
| OIDS { $$ = make_str("oids"); }
| DELIMITER opt_as Sconst { $$ = cat_str(3, make_str("delimiter"), $2, $3); }
| NULL_P opt_as Sconst { $$ = cat_str(3, make_str("null"), $2, $3); }
;
opt_binary:
BINARY
{ $$ = make_str("binary"); }
| /*EMPTY*/ { $$ = EMPTY; }
opt_binary:
BINARY
{ $$ = make_str("binary"); }
| /*EMPTY*/
{ $$ = EMPTY; }
;
opt_oids: WITH OIDS { $$ = make_str("with oids"); }
| /*EMPTY*/ { $$ = EMPTY; }
opt_with_copy: WITH OIDS { $$ = make_str("with oids"); }
| /*EMPTY*/ { $$ = EMPTY; }
;
/*
* the default copy delimiter is tab but the user can configure it
*/
copy_delimiter: opt_using DELIMITERS StringConst
{ $$ = cat_str(3, $1, make_str("delimiters"), $3); }
| /*EMPTY*/
...
...
@@ -1085,6 +1065,12 @@ opt_using: USING { $$ = make_str("using"); }
| /* EMPTY */ { $$ = EMPTY; }
;
copy_null: WITH NULL_P AS StringConst
{ $$ = cat2_str(make_str("with null as"), $4); }
| /* EMPTY */
{ $$ = EMPTY; }
;
/*****************************************************************************
*
* QUERY :
...
...
@@ -1128,7 +1114,6 @@ OptTableElementList: OptTableElementList ',' OptTableElement
;
OptTableElement: columnDef { $$ = $1; }
| TableLikeClause { $$ = $1; }
| TableConstraint { $$ = $1; }
;
...
...
@@ -1197,9 +1182,6 @@ ConstraintAttr: DEFERRABLE { $$ = make_str("deferrable"); }
| INITIALLY IMMEDIATE { $$ = make_str("initially immediate"); }
;
TableLikeClause: LIKE any_name { $$ = cat2_str(make_str("like"), $2); }
;
/* ConstraintElem specifies constraint syntax which is not embedded into
* a column definition. ColConstraintElem specifies the embedded form.
* - thomas 1997-12-03
...
...
@@ -1241,8 +1223,6 @@ key_match: MATCH FULL
mmerror(PARSE_ERROR, ET_WARNING, "Currently unsupported FOREIGN KEY/MATCH PARTIAL will be passed to backend");
$$ = make_str("match partial");
}
| MATCH SIMPLE
{ $$ = make_str("match simple"); }
| /*EMPTY*/
{ $$ = EMPTY; }
;
...
...
@@ -1349,12 +1329,12 @@ OptSeqElem: CACHE NumConst
*
*****************************************************************************/
CreatePLangStmt: CREATE opt_
t
rusted opt_procedural LANGUAGE ColId_or_Sconst
HANDLER handler_name opt_
validator opt_
lancompiler
CreatePLangStmt: CREATE opt_
T
rusted opt_procedural LANGUAGE ColId_or_Sconst
HANDLER handler_name opt_lancompiler
{ $$ = cat_str(8, make_str("create"), $2, $3, make_str("language"), $5, make_str("handler"), $7, $8); }
;
opt_
t
rusted: TRUSTED { $$ = make_str("trusted"); }
opt_
T
rusted: TRUSTED { $$ = make_str("trusted"); }
| /*EMPTY*/ { $$ = EMPTY; }
;
...
...
@@ -1374,10 +1354,6 @@ opt_lancompiler: LANCOMPILER StringConst
{ $$ = ""; }
;
opt_validator: VALIDATOR handler_name { $$ = cat2_str(make_str("validator"), $2); }
| /* EMPTY */ { $$ = EMPTY; }
;
DropPLangStmt: DROP opt_procedural LANGUAGE StringConst
{ $$ = cat_str(4, make_str("drop"), $2, make_str("language"), $4); }
;
...
...
@@ -1468,7 +1444,6 @@ ConstraintAttributeSpec: ConstraintDeferrabilitySpec { $$ = $1; }
$$ = cat2_str($1, $2);
}
| /*EMPTY*/ { $$ = EMPTY; }
;
ConstraintDeferrabilitySpec: NOT DEFERRABLE
...
...
@@ -1844,32 +1819,18 @@ RecipeStmt: EXECUTE RECIPE recipe_name
*****************************************************************************/
CreateFunctionStmt: CREATE opt_or_replace FUNCTION func_name func_args
RETURNS func_return createfunc_opt_list opt_
definition
RETURNS func_return createfunc_opt_list opt_
with
{ $$ = cat_str(8, make_str("create"), $2, make_str("function"), $4, $5, make_str("returns"), $7, $8); }
| CREATE opt_or_replace CAST '(' func_type AS func_type ')'
WITH FUNCTION func_name func_args opt_assignment opt_definition
{ $$ = cat_str(11, make_str("create"), $2, make_str("cast ("), $5, make_str("as"), $7, make_str(") with function"), $11, $12, $13, $14); }
| CREATE opt_or_replace CAST '(' func_type AS func_type ')'
WITH FUNCTION func_name func_args AS Sconst opt_definition
{ $$ = cat_str(12, make_str("create"), $2, make_str("cast ("), $5, make_str("as"), $7, make_str(") with function"), $11, $12, make_str("as)", $14, $15); }
| CREATE opt_or_replace CAST '(' func_type AS func_type ')'
createfunc_opt_list opt_definition
{ $$ = cat_str(i9, make_str("create"), $2, make_str("cast ("), $5, make_str("as"), $7, make_str(")"), $9, $10); }
;
opt_or_replace: OR REPLACE { $$ = make_str("or replace"); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/
{ $$ = EMPTY; }
;
opt_definition: WITH definition { $$ = cat2_str(make_str("with"), $2); }
| /*EMPTY*/ { $$ = EMPTY; }
;
opt_assignment: AS ASSIGNMENT { $$ = make_str("as assignment"); }
| /*EMPTY*/ { $$ = EMPTY; }
opt_with: WITH definition { $$ = cat2_str(make_str("with"), $2); }
| /*EMPTY*/ { $$ = EMPTY; }
;
func_args: '(' func_args_list ')'
{ $$ = cat_str(3, make_str("("), $2, make_str(")")); }
| '(' ')'
...
...
@@ -1975,16 +1936,8 @@ createfunc_opt_item: AS func_as
*
*****************************************************************************/
RemoveFuncStmt: DROP FUNCTION func_name func_args opt_drop_behavior
{
if (strcmp($5, "restrict") != 0)
mmerror(PARSE_ERROR, ET_WARNING, "Unsupported DROP FUNCTION/CASCADE will be passed to backend");
$$ = cat_str(4, make_str("drop function"), $3, $4, $5);
}
| DROP CAST '(' func_type AS func_type ')' opt_drop_behavior
{
$$ = cat_str(6, make_str("drop cast ("), $4, make_Str("as"), $6, make_str(")", $8);
}
RemoveFuncStmt: DROP FUNCTION func_name func_args
{ $$ = cat_str(3, make_str("drop function"), $3, $4); }
;
RemoveAggrStmt: DROP AGGREGATE func_name '(' aggr_argtype ')'
...
...
@@ -2194,14 +2147,16 @@ LoadStmt: LOAD file_name
*
*****************************************************************************/
CreatedbStmt: CREATE DATABASE database_name opt_with createdb_opt_list
{ $$ = cat_str(4, make_str("create database"), $3, $4, $5); }
CreatedbStmt: CREATE DATABASE database_name WITH createdb_opt_list
{ $$ = cat_str(4, make_str("create database"), $3, make_str("with"), $5); }
| CREATE DATABASE database_name
{ $$ = cat2_str(make_str("create database"), $3); }
;
createdb_opt_list: createdb_opt_list createdb_opt_item
createdb_opt_list: createdb_opt_item
{ $$ = $1; }
| createdb_opt_list createdb_opt_item
{ $$ = cat2_str($1, $2); }
| /* EMPTY */
{ $$ = EMPTY; }
;
createdb_opt_item: LOCATION opt_equal StringConst
...
...
@@ -3083,8 +3038,6 @@ a_expr: c_expr
{ $$ = $1; }
| a_expr TYPECAST Typename
{ $$ = cat_str(3, $1, make_str("::"), $3); }
| a_expr COLLATE Typename
{ $$ = cat_str(3, $1, make_str("collate"), $3); }
| a_expr AT TIME ZONE c_expr
{ $$ = cat_str(3, $1, make_str("at time zone"), $5); }
/*
...
...
@@ -3154,14 +3107,6 @@ a_expr: c_expr
{ $$ = cat_str(3, $1, make_str("not ilike"), $4); }
| a_expr NOT ILIKE a_expr ESCAPE a_expr
{ $$ = cat_str(5, $1, make_str("not ilike"), $4, make_str("escape"), $6); }
| a_expr SIMILAR TO a_expr %prec SIMILAR
{ $$ = cat_str(3, $1, make_str("similar to"), $4); }
| a_expr SIMILAR TO a_expr ESCAPE a_expr
{ $$ = cat_str(5, $1, make_str("similar to"), $4, make_str("escape"), $6); }
| a_expr NOT SIMILAR TO a_expr %prec SIMILAR
{ $$ = cat_str(3, $1, make_str("not similar to"), $5); }
| a_expr NOT SIMILAR TO a_expr ESCAPE a_expr
{ $$ = cat_str(5, $1, make_str("not similar to"), $5, make_str("escape"), $7); }
| a_expr ISNULL
{ $$ = cat2_str($1, make_str("isnull")); }
| a_expr IS NULL_P
...
...
@@ -3287,32 +3232,22 @@ c_expr: columnref
{ $$ = cat2_str($1, make_str("(*)")); }
| CURRENT_DATE
{ $$ = make_str("current_date"); }
| CURRENT_TIME
{ $$ =
make_str("current_time"
); }
| CURRENT_TIME
opt_empty_parentheses
{ $$ =
cat2_str(make_str("current_time"), $2
); }
| CURRENT_TIME '(' PosIntConst ')'
{ $$ = make_str("current_time"); }
| CURRENT_TIMESTAMP
{ $$ =
make_str("current_timestamp"
); }
| CURRENT_TIMESTAMP
opt_empty_parentheses
{ $$ =
cat2_str(make_str("current_timestamp"), $2
); }
| CURRENT_TIMESTAMP '(' PosIntConst ')'
{ $$ = make_str("current_timestamp"); }
| LOCALTIME
{ $$ = make_str("localtime"); }
| LOCALTIME '(' Iconst ')'
{ $$ = cat_str(3, make_str("localtime ("), $3, make_str(")")); }
| LOCALTIMESTAMP
{ $$ = make_str("localtimestamp"); }
| LOCALTIMESTAMP '(' Iconst ')'
{ $$ = cat_str(3, make_str("localtime ("), $3, make_str(")")); }
| CURRENT_USER
{ $$ = make_str("current_user"); }
| SESSION_USER
{ $$ = make_str("session_user"); }
| USER
{ $$ = make_str("user"); }
| CURRENT_USER opt_empty_parentheses
{ $$ = cat2_str(make_str("current_user"), $2); }
| SESSION_USER opt_empty_parentheses
{ $$ = cat2_str(make_str("session_user"), $2); }
| USER opt_empty_parentheses
{ $$ = cat2_str(make_str("user"), $2); }
| EXTRACT '(' extract_list ')'
{ $$ = cat_str(3, make_str("extract("), $3, make_str(")")); }
| OVERLAY '(' overlay_list ')'
{ $$ = cat_str(3, make_str("overlay("), $3, make_str(")")); }
| POSITION '(' position_list ')'
{ $$ = cat_str(3, make_str("position("), $3, make_str(")")); }
| SUBSTRING '(' substr_list ')'
...
...
@@ -3371,15 +3306,6 @@ extract_arg: IDENT { $$ = $1; }
| StringConst { $$ = $1; }
;
overlay_list: a_expr overlay_placing substr_from substr_for
{ $$ = cat_str(4, $1, $2, $3, $4); }
| a_expr overlay_placing substr_from
{ $$ = cat_str(3, $1, $2, $3); }
;
overlay_placing: PLACING a_expr { $$ = cat2_str(make_str("placing"), $2); }
;
/* position_list uses b_expr not a_expr to avoid conflict with general IN */
position_list: b_expr IN_P b_expr
{ $$ = cat_str(3, $1, make_str("in"), $3); }
...
...
@@ -3490,6 +3416,11 @@ attrs: '.' attr_name
{ $$ = cat_str(3, make_str("."), $2, $3); }
;
opt_empty_parentheses: '(' ')' { $$ = make_str("()"); }
| /*EMPTY*/ { $$ = EMPTY; }
;
/*****************************************************************************
*
* target lists
...
...
@@ -4146,7 +4077,7 @@ type: simple_type
enum_type: SQL_ENUM opt_symbol enum_definition
{ $$ = cat_str(3, make_str("enum"), $2, $3); }
| SQL_ENUM
ColLabe
l
| SQL_ENUM
symbo
l
{ $$ = cat2_str(make_str("enum"), $2); }
;
...
...
@@ -4868,10 +4799,13 @@ ECPGTypeName: SQL_BOOL { $$ = make_str("bool"); }
| SQL_UNSIGNED { $$ = make_str("unsigned"); }
;
opt_symbol:
ColLabel
opt_symbol:
symbol { $$ = $1; }
| /*EMPTY*/ { $$ = EMPTY; }
;
symbol: ColLabel { $$ = $1; }
;
/*
* Name classification hierarchy.
*
...
...
@@ -4947,8 +4881,7 @@ unreserved_keyword:
| AFTER { $$ = make_str("after"); }
| AGGREGATE { $$ = make_str("aggregate"); }
| ALTER { $$ = make_str("alter"); }
| ASSERTION { $$ = make_str("assertion"); }
| ASSIGNMENT { $$ = make_str("assignment"); }
| ASSERTION { $$ = make_str("assertion"); }
| AT { $$ = make_str("at"); }
| BACKWARD { $$ = make_str("backward"); }
| BEFORE { $$ = make_str("before"); }
...
...
@@ -4975,7 +4908,6 @@ unreserved_keyword:
| DECLARE { $$ = make_str("declare"); }
| DEFERRED { $$ = make_str("deferred"); }
| DELETE_P { $$ = make_str("delete"); }
| DELIMITER { $$ = make_str("delimiter"); }
| DELIMITERS { $$ = make_str("delimiters"); }
| DOMAIN_P { $$ = make_str("domain"); }
| DOUBLE { $$ = make_str("double"); }
...
...
@@ -4991,7 +4923,6 @@ unreserved_keyword:
| FORCE { $$ = make_str("force"); }
| FORWARD { $$ = make_str("forward"); }
| FUNCTION { $$ = make_str("function"); }
| GET { $$ = make_str("get"); }
| GLOBAL { $$ = make_str("global"); }
| HANDLER { $$ = make_str("handler"); }
| HOUR_P { $$ = make_str("hour"); }
...
...
@@ -5064,8 +4995,6 @@ unreserved_keyword:
| SET { $$ = make_str("set"); }
| SHARE { $$ = make_str("share"); }
| SHOW { $$ = make_str("show"); }
| SIMPLE { $$ = make_str("simple"); }
| STABLE { $$ = make_str("stable"); }
| START { $$ = make_str("start"); }
| STATEMENT { $$ = make_str("statement"); }
| STATISTICS { $$ = make_str("statistics"); }
...
...
@@ -5090,14 +5019,12 @@ unreserved_keyword:
| USAGE { $$ = make_str("usage"); }
| VACUUM { $$ = make_str("vacuum"); }
| VALID { $$ = make_str("valid"); }
| VALIDATOR { $$ = make_str("validator"); }
| VALUES { $$ = make_str("values"); }
| VARYING { $$ = make_str("varying"); }
| VERSION { $$ = make_str("version"); }
| VIEW { $$ = make_str("view"); }
| WITH { $$ = make_str("with"); }
| WITHOUT { $$ = make_str("without"); }
| WRITE { $$ = make_str("write"); }
| WORK { $$ = make_str("work"); }
| YEAR_P { $$ = make_str("year"); }
| ZONE { $$ = make_str("zone"); }
...
...
@@ -5135,7 +5062,6 @@ col_name_keyword:
| NONE { $$ = make_str("none"); }
| NULLIF { $$ = make_str("nullif"); }
| NUMERIC { $$ = make_str("numeric"); }
| OVERLAY { $$ = make_str("overlay"); }
| POSITION { $$ = make_str("position"); }
| REAL { $$ = make_str("real"); }
| SETOF { $$ = make_str("setof"); }
...
...
@@ -5177,7 +5103,6 @@ func_name_keyword:
| OUTER_P { $$ = make_str("outer"); }
| OVERLAPS { $$ = make_str("overlaps"); }
| RIGHT { $$ = make_str("right"); }
| SIMILAR { $$ = make_str("similar"); }
| VERBOSE { $$ = make_str("verbose"); }
;
...
...
@@ -5227,8 +5152,6 @@ reserved_keyword:
| INTO { $$ = make_str("into"); }
| LEADING { $$ = make_str("leading"); }
| LIMIT { $$ = make_str("limit"); }
| LOCALTIME { $$ = make_str("localtime"); }
| LOCALTIMESTAMP { $$ = make_str("localtimestamp"); }
| NEW { $$ = make_str("new"); }
| NOT { $$ = make_str("not"); }
| NULL_P { $$ = make_str("null"); }
...
...
@@ -5239,7 +5162,6 @@ reserved_keyword:
| ONLY { $$ = make_str("only"); }
| OR { $$ = make_str("or"); }
| ORDER { $$ = make_str("order"); }
| PLACING { $$ = make_str("playcing"); }
| PRIMARY { $$ = make_str("primary"); }
| REFERENCES { $$ = make_str("references"); }
| SELECT { $$ = make_str("select"); }
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment