Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5ca7c8e

Browse files
author
Michael Meskes
committed
Synced parser with backend.
1 parent 3c0d21a commit 5ca7c8e

File tree

2 files changed

+140
-50
lines changed

2 files changed

+140
-50
lines changed

src/interfaces/ecpg/ChangeLog

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,3 +1217,10 @@ Wed Jan 23 17:35:23 CET 2002
12171217
- Added patch to temporarily disable locale for descriptors too (Christof).
12181218
- Set ecpg version to 2.9.0.
12191219
- Set library version to 3.3.0.
1220+
1221+
Wed Mar 6 10:40:28 CET 2002
1222+
1223+
- Synced preproc.y with gram.y.
1224+
- Set ecpg version to 2.10.0.
1225+
- Set library version to 3.4.0.
1226+

src/interfaces/ecpg/preproc/preproc.y

Lines changed: 133 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ make_name(void)
197197
SCHEMA, SCROLL, SECOND_P, SELECT, SESSION, SESSION_USER, SET, SOME, SUBSTRING,
198198
TABLE, TEMPORARY, THEN, TIME, TIMESTAMP
199199
TO, TRAILING, TRANSACTION, TRIM, TRUE_P,
200-
UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UPDATE, USER, USING,
200+
UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UPDATE, USAGE, USER, USING,
201201
VALUES, VARCHAR, VARYING, VIEW,
202202
WHEN, WHERE, WITH, WITHOUT, WORK, YEAR_P, ZONE
203203

@@ -228,7 +228,8 @@ make_name(void)
228228
NONE, NOTHING, NOTIFY, NOTNULL, OFFSET, OIDS,
229229
OPERATOR, OWNER, PASSWORD, PROCEDURAL, REINDEX, RENAME, RESET,
230230
RETURNS, ROW, RULE, SEQUENCE, SETOF, SHARE,
231-
SHOW, START, STATEMENT, STATISTICS, STDIN, STDOUT, SYSID TEMP,
231+
SHOW, START, STATEMENT, STATISTICS, STDIN, STDOUT, STORAGE,
232+
SYSID, TEMP,
232233
TEMPLATE, TOAST, TRUNCATE, TRUSTED, UNLISTEN, UNTIL, VACUUM,
233234
VALID, VERBOSE, VERSION
234235

@@ -327,12 +328,16 @@ make_name(void)
327328
%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt
328329
%type <str> CreatePLangStmt TriggerFuncArgs TriggerFuncArg simple_select
329330
%type <str> ViewStmt LoadStmt CreatedbStmt createdb_opt_item
330-
%type <str> createdb_opt_list opt_encoding OptInherit
331+
%type <str> createdb_opt_list opt_encoding OptInherit opt_equal
332+
%type <str> AlterUserSetStmt privilege_list privilege privilege_target
333+
%type <str> opt_grant_grant_option opt_revoke_grant_option
334+
%type <str> function_with_argtypes_list function_with_argtypes
331335
%type <str> DropdbStmt ClusterStmt grantee RevokeStmt Bit bit
332-
%type <str> GrantStmt privileges operation_commalist operation PosAllConst
333-
%type <str> opt_with_grant opt_cursor ConstraintsSetStmt AllConst
336+
%type <str> GrantStmt privileges PosAllConst
337+
%type <str> opt_cursor ConstraintsSetStmt AllConst
334338
%type <str> case_expr when_clause_list case_default case_arg when_clause
335-
%type <str> select_clause opt_select_limit select_limit_value ConstraintTimeSpec
339+
%type <str> select_clause opt_select_limit select_limit_value
340+
%type <str> ConstraintTimeSpec AlterDatabaseSetStmt
336341
%type <str> select_offset_value ReindexStmt join_type opt_boolean
337342
%type <str> join_qual update_list AlterSchemaStmt joined_table
338343
%type <str> opt_level opt_lock lock_type OptGroupList OptGroupElem
@@ -406,10 +411,12 @@ opt_at: AT connection_target {
406411
argsinsert = NULL;
407412
};
408413

409-
stmt: AlterSchemaStmt { output_statement($1, 0, connection); }
410-
| AlterTableStmt { output_statement($1, 0, connection); }
414+
stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
411415
| AlterGroupStmt { output_statement($1, 0, connection); }
416+
| AlterSchemaStmt { output_statement($1, 0, connection); }
417+
| AlterTableStmt { output_statement($1, 0, connection); }
412418
| AlterUserStmt { output_statement($1, 0, connection); }
419+
| AlterUserSetStmt { output_statement($1, 0, connection); }
413420
| ClosePortalStmt { output_statement($1, 0, connection); }
414421
| CommentStmt { output_statement($1, 0, connection); }
415422
| CopyStmt { output_statement($1, 0, connection); }
@@ -634,6 +641,16 @@ AlterUserStmt: ALTER USER UserId OptUserList
634641
}
635642
;
636643

644+
AlterUserSetStmt: ALTER USER UserId VariableSetStmt
645+
{
646+
$$ = cat_str(3, make_str("alter user"), $3, $4);
647+
}
648+
| ALTER USER UserId VariableResetStmt
649+
{
650+
$$ = cat_str(3, make_str("alter user"), $3, $4);
651+
}
652+
;
653+
637654
/*****************************************************************************
638655
*
639656
* Drop a postgresql DBMS user
@@ -976,6 +993,11 @@ AlterTableStmt:
976993
{
977994
$$ = cat_str(7, make_str("alter table"), $3, make_str("alter"), $5, $6, make_str("set statistics"), $9);
978995
}
996+
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */
997+
| ALTER TABLE relation_expr ALTER opt_column ColId SET STORAGE ColId
998+
{
999+
$$ = cat_str(7, make_str("alter table"), $3, make_str("alter"), $5, $6, make_str("set storage"), $9);
1000+
}
9791001
/* ALTER TABLE <relation> DROP [COLUMN] <colname> {RESTRICT|CASCADE} */
9801002
| ALTER TABLE relation_expr DROP opt_column ColId drop_behavior
9811003
{
@@ -1714,13 +1736,19 @@ comment_text: StringConst { $$ = $1; }
17141736
/*****************************************************************************
17151737
*
17161738
* QUERY:
1717-
* GRANT [privileges] ON [TABLE] relation_name_list TO [GROUP] grantee, ...
1739+
* GRANT and REVOKE statements
17181740
*
17191741
*****************************************************************************/
17201742

1721-
GrantStmt: GRANT privileges ON opt_table relation_name_list TO grantee_list opt_with_grant
1743+
GrantStmt: GRANT privileges ON privilege_target TO grantee_list opt_grant_grant_option
1744+
{
1745+
$$ = cat_str(7, make_str("grant"), $2, make_str("on"), $4, make_str("to"), $6, $7);
1746+
}
1747+
;
1748+
1749+
RevokeStmt: REVOKE opt_revoke_grant_option privileges ON privilege_target FROM grantee_list
17221750
{
1723-
$$ = cat_str(8, make_str("grant"), $2, make_str("on"), $4, $5, make_str("to"), $7, $8);
1751+
$$ = cat_str(8, make_str("revoke"), $2, $3, make_str("on"), $5, make_str("from"), $7);
17241752
}
17251753
;
17261754

@@ -1732,23 +1760,23 @@ privileges: ALL PRIVILEGES
17321760
{
17331761
$$ = make_str("all");
17341762
}
1735-
| operation_commalist
1763+
| privilege_list
17361764
{
17371765
$$ = $1;
17381766
}
17391767
;
17401768

1741-
operation_commalist: operation
1769+
privilege_list: privilege
17421770
{
17431771
$$ = $1;
17441772
}
1745-
| operation_commalist ',' operation
1773+
| privilege_list ',' privilege
17461774
{
17471775
$$ = cat_str(3, $1, make_str(","), $3);
17481776
}
17491777
;
17501778

1751-
operation: SELECT
1779+
privilege: SELECT
17521780
{
17531781
$$ = make_str("select");
17541782
}
@@ -1776,8 +1804,38 @@ operation: SELECT
17761804
{
17771805
$$ = make_str("trigger");
17781806
}
1807+
| EXECUTE
1808+
{
1809+
$$ = make_str("execute");
1810+
}
1811+
| USAGE
1812+
{
1813+
$$ = make_str("usage");
1814+
}
17791815
;
17801816

1817+
privilege_target: relation_name_list
1818+
{
1819+
$$ = $1;
1820+
}
1821+
| TABLE relation_name_list
1822+
{
1823+
$$ = cat2_str(make_str("table"), $2);
1824+
}
1825+
| FUNCTION function_with_argtypes_list
1826+
{
1827+
$$ = cat2_str(make_str("function"), $2);
1828+
}
1829+
| LANGUAGE name_list
1830+
{
1831+
$$ = cat2_str(make_str("language") , $2);
1832+
}
1833+
;
1834+
1835+
grantee_list: grantee { $$ = $1; }
1836+
| grantee_list ',' grantee { $$ = cat_str(3, $1, make_str(","), $3); }
1837+
;
1838+
17811839
grantee: PUBLIC
17821840
{
17831841
$$ = make_str("public");
@@ -1792,33 +1850,30 @@ grantee: PUBLIC
17921850
}
17931851
;
17941852

1795-
grantee_list: grantee { $$ = $1; }
1796-
| grantee_list ',' grantee { $$ = cat_str(3, $1, make_str(","), $3); }
1797-
;
1798-
1799-
opt_with_grant: WITH GRANT OPTION
1800-
{
1801-
mmerror(PARSE_ERROR, ET_WARNING, "Currently unsupported GRANT/WITH GRANT OPTION will be passed to backend");
1802-
$$ = make_str("with grant option");
1803-
}
1853+
opt_grant_grant_option: WITH GRANT OPTION
1854+
{
1855+
mmerror(PARSE_ERROR, ET_WARNING, "Currently unsupported GRANT/WITH GRANT OPTION will be passed to backend");
1856+
$$ = make_str("with grant option");
1857+
}
18041858
| /*EMPTY*/ { $$ = EMPTY; }
18051859
;
18061860

1861+
opt_revoke_grant_option: GRANT OPTION FOR
1862+
{
1863+
mmerror(PARSE_ERROR, ET_WARNING, "Currently unsupported REVOKE/GRANT OPTION FOR will be passed to backend");
1864+
$$ = make_str("with grant option");
1865+
}
1866+
| /*EMPTY*/ { $$ = EMPTY; }
1867+
;
18071868

1808-
/*****************************************************************************
1809-
*
1810-
* QUERY:
1811-
* REVOKE privileges ON [TABLE relation_name_list FROM [user], ...
1812-
*
1813-
*****************************************************************************/
1814-
1815-
RevokeStmt: REVOKE privileges ON opt_table relation_name_list FROM grantee_list
1816-
{
1817-
$$ = cat_str(8, make_str("revoke"), $2, make_str("on"), $4, $5, make_str("from"), $7);
1818-
}
1869+
function_with_argtypes_list: function_with_argtypes
1870+
{ $$ = $1; }
1871+
| function_with_argtypes_list ',' function_with_argtypes
1872+
{ $$ = cat_str(3, $1, make_str(","), $3); }
18191873
;
18201874

1821-
1875+
function_with_argtypes: func_name func_args
1876+
{ $$ = cat2_str($1, $2); };
18221877

18231878
/*****************************************************************************
18241879
*
@@ -2188,9 +2243,9 @@ TransactionStmt: ABORT_TRANS opt_trans { $$ = make_str("rollback"); }
21882243
| ROLLBACK opt_trans opt_chain { $$ = cat2_str(make_str("rollback"), $3); }
21892244
;
21902245

2191-
opt_trans: WORK { $$ = ""; }
2192-
| TRANSACTION { $$ = ""; }
2193-
| /*EMPTY*/ { $$ = ""; }
2246+
opt_trans: WORK { $$ = EMPTY; }
2247+
| TRANSACTION { $$ = EMPTY; }
2248+
| /*EMPTY*/ { $$ = EMPTY; }
21942249
;
21952250

21962251
opt_chain: AND NO CHAIN { $$ = make_str("and no chain"); }
@@ -2252,20 +2307,49 @@ createdb_opt_list: createdb_opt_item
22522307
{ $$ = cat2_str($1, $2); }
22532308
;
22542309

2255-
createdb_opt_item: LOCATION '=' StringConst { $$ = cat2_str(make_str("location ="), $3); }
2256-
| LOCATION '=' DEFAULT { $$ = make_str("location = default"); }
2257-
| TEMPLATE '=' name { $$ = cat2_str(make_str("template ="), $3); }
2258-
| TEMPLATE '=' DEFAULT { $$ = make_str("template = default"); }
2259-
| ENCODING '=' PosIntStringConst
2310+
createdb_opt_item: LOCATION opt_equal StringConst { $$ = cat_str(3,make_str("location"), $2, $3); }
2311+
| LOCATION opt_equal DEFAULT { $$ = cat_str(3, make_str("location"), $2, make_str("default")); }
2312+
| TEMPLATE opt_equal name { $$ = cat_str(3, make_str("template"), $2, $3); }
2313+
| TEMPLATE opt_equal DEFAULT { $$ = cat_str(3, make_str("template"), $2, make_str("default")); }
2314+
| ENCODING opt_equal PosIntStringConst
2315+
{
2316+
$$ = cat_str(3, make_str("encoding"), $2, $3);
2317+
}
2318+
| ENCODING opt_equal DEFAULT
2319+
{
2320+
$$ = cat_str(3, make_str("encoding"), $2, make_str("default"));
2321+
}
2322+
| OWNER opt_equal name
22602323
{
2261-
$$ = cat2_str(make_str("encoding ="), $3);
2324+
$$ = cat_str(3, make_str("owner"), $2, $3);
22622325
}
2263-
| ENCODING '=' DEFAULT
2326+
| OWNER opt_equal DEFAULT
22642327
{
2265-
$$ = make_str("encoding = default");
2328+
$$ = cat_str(3, make_str("owner"), $2, make_str("default"));
22662329
}
22672330
;
22682331

2332+
opt_equal: '=' { $$ = make_str("="); }
2333+
| /* EMPTY */ { $$ = EMPTY; }
2334+
;
2335+
2336+
/*****************************************************************************
2337+
*
2338+
* ALTER DATABASE
2339+
*
2340+
*
2341+
*****************************************************************************/
2342+
2343+
AlterDatabaseSetStmt: ALTER DATABASE database_name VariableSetStmt
2344+
{
2345+
$$ = cat_str(3, make_str("alter database"), $3, $4);
2346+
}
2347+
| ALTER DATABASE database_name VariableResetStmt
2348+
{
2349+
$$ = cat_str(3, make_str("alter database"), $3, $4);
2350+
}
2351+
;
2352+
22692353
/*****************************************************************************
22702354
*
22712355
* DROP DATABASE
@@ -2702,10 +2786,7 @@ select_limit: LIMIT select_limit_value OFFSET select_offset_value
27022786
| OFFSET select_offset_value
27032787
{ $$ = cat2_str(make_str("offset"), $2); }
27042788
| LIMIT select_limit_value ',' select_offset_value
2705-
{ $$ = cat_str(4, make_str("limit"), $2, make_str(","), $4); }
2706-
/* enable this in 7.3, bjm 2001-10-22
27072789
{ mmerror(PARSE_ERROR, ET_WARNING, "No longer supported LIMIT #,# syntax passed to backend."); }
2708-
*/
27092790
;
27102791

27112792
opt_select_limit: select_limit { $$ = $1; }
@@ -5147,6 +5228,7 @@ unreserved_keyword:
51475228
| STATISTICS { $$ = make_str("statistics"); }
51485229
| STDIN { $$ = make_str("stdin"); }
51495230
| STDOUT { $$ = make_str("stdout"); }
5231+
| STORAGE { $$ = make_str("storage"); }
51505232
| SYSID { $$ = make_str("sysid"); }
51515233
| TEMP { $$ = make_str("temp"); }
51525234
| TEMPLATE { $$ = make_str("template"); }
@@ -5162,6 +5244,7 @@ unreserved_keyword:
51625244
| UNLISTEN { $$ = make_str("unlisten"); }
51635245
| UNTIL { $$ = make_str("until"); }
51645246
| UPDATE { $$ = make_str("update"); }
5247+
| USAGE { $$ = make_str("usage"); }
51655248
| VACUUM { $$ = make_str("vacuum"); }
51665249
| VALID { $$ = make_str("valid"); }
51675250
| VALUES { $$ = make_str("values"); }

0 commit comments

Comments
 (0)