> ! $$ = cat_str(8, make_str("grant"), $2, make_str("on"), $4, $5,
> make_str("to"), $7, $8);
> ISTM your patch loses the opt_with_grant clause. (Of course the
> backend doesn't currently accept that clause anyway, but that's no
> reason for ecpg to drop it.)
My patch doesn't loose the option, it's never been passed on anyway:
opt_with_grant: WITH GRANT OPTION
{
mmerror(ET_ERROR, "WITH GRANT OPTION is not supported. Only relation owners can
set privileges");
}
| /*EMPTY*/
;
The existing code in ecpg/preproc/preproc.y to handle the WITH option
simply throws an error and aborts the processing... The patch below
prevents the segfault and also passes on the WITH option to the
backend, probably a better fix.
Lee Kindness
GrantStmt: GRANT privileges ON opt_table relation_name_list TO grantee_list opt_with_grant
{
- $$ = cat_str(7, make_str("grant"), $2, make_str("on"), $4, $5, make_str("to"), $7);
+ $$ = cat_str(8, make_str("grant"), $2, make_str("on"), $4, $5, make_str("to"), $7, $8);
}
;
| grantee_list ',' grantee { $$ = cat_str(3, $1, make_str(","), $3); }
;
-opt_with_grant: WITH GRANT OPTION
- {
- mmerror(ET_ERROR, "WITH GRANT OPTION is not supported. Only relation owners can set privileges");
- }
- | /*EMPTY*/
+opt_with_grant: WITH GRANT OPTION { $$ = make_str("with grant option"); }
+ | /*EMPTY*/ { $$ = EMPTY; }
;