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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy