ecpg - GRANT bug
От | Lee Kindness |
---|---|
Тема | ecpg - GRANT bug |
Дата | |
Msg-id | 15306.42927.291752.242179@elsick.csl.co.uk обсуждение исходный текст |
Ответы |
Re: ecpg - GRANT bug
(Bruce Momjian <pgman@candle.pha.pa.us>)
Re: ecpg - GRANT bug (Tom Lane <tgl@sss.pgh.pa.us>) Re: ecpg - GRANT bug (Bruce Momjian <pgman@candle.pha.pa.us>) Re: ecpg - GRANT bug (Bruce Momjian <pgman@candle.pha.pa.us>) |
Список | pgsql-hackers |
Tom Lane writes:> Uh, isn't the correct fix> ! $$ = 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 acceptthat 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. Onlyrelation 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. Regards, Lee. Index: interfaces/ecpg/preproc/preproc.y =================================================================== RCS file: /projects/cvsroot/pgsql/src/interfaces/ecpg/preproc/preproc.y,v retrieving revision 1.159 diff -c -r1.159 preproc.y *** interfaces/ecpg/preproc/preproc.y 2001/10/14 12:07:57 1.159 --- interfaces/ecpg/preproc/preproc.y 2001/10/15 09:06:29 *************** *** 1693,1699 **** 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); } ; --- 1693,1699 ---- GrantStmt: GRANT privileges ON opt_table relation_name_list TO grantee_list opt_with_grant { ! $$ = cat_str(8, make_str("grant"), $2, make_str("on"), $4, $5, make_str("to"), $7, $8); } ; *************** *** 1769,1779 **** | 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*/ ; --- 1769,1776 ---- | grantee_list ',' grantee { $$ = cat_str(3, $1, make_str(","), $3); } ; ! opt_with_grant: WITH GRANT OPTION { $$ = make_str("with grant option"); } ! | /*EMPTY*/ { $$ = EMPTY; } ;
В списке pgsql-hackers по дате отправления: