Re: ecpg - GRANT bug

Lee Kindness <lkindness@csl.co.uk>

From: Lee Kindness <lkindness@csl.co.uk>
To: Bruce Momjian <pgman@candle.pha.pa.us>
Cc: Lee Kindness <lkindness@csl.co.uk>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@postgresql.org, Michael Meskes <meskes@postgresql.org>
Date: 2001-10-16T09:16:38Z
Lists: pgsql-bugs, pgsql-hackers
Bruce Momjian writes:
 > Lee Kindness writes:
 > > In which case a number of other cases should be weeded out of
 > > parser.y and passed onto the backend:
 > > [ snip ]
 > > Let me known if you want a patch for these cases too.
 > Sure, send them on over.

Patch below, it changes:

 1. A number of mmerror(ET_ERROR) to mmerror(ET_NOTICE), passing on
    the (currently) unsupported options to the backend with warning.

 2. Standardises warning messages in such cases.

 3. Corrects typo in passing of 'CREATE FUNCTION/INOUT' parameter.

Patch:

? interfaces/ecpg/preproc/ecpg
Index: interfaces/ecpg/preproc/preproc.y
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/ecpg/preproc/preproc.y,v
retrieving revision 1.161
diff -c -r1.161 preproc.y
*** interfaces/ecpg/preproc/preproc.y	2001/10/15 20:15:09	1.161
--- interfaces/ecpg/preproc/preproc.y	2001/10/16 09:15:53
***************
*** 1074,1084 ****
  		| LOCAL TEMPORARY	{ $$ = make_str("local temporary"); }
  		| LOCAL TEMP		{ $$ = make_str("local temp"); }
  		| GLOBAL TEMPORARY	{
! 					  mmerror(ET_ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
  					  $$ = make_str("global temporary");
  					}
  		| GLOBAL TEMP		{
! 					  mmerror(ET_ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
  					  $$ = make_str("global temp");
  					}
  		| /*EMPTY*/		{ $$ = EMPTY; }
--- 1074,1084 ----
  		| LOCAL TEMPORARY	{ $$ = make_str("local temporary"); }
  		| LOCAL TEMP		{ $$ = make_str("local temp"); }
  		| GLOBAL TEMPORARY	{
! 					  mmerror(ET_NOTICE, "Currently unsupported CREATE TABLE/GLOBAL TEMPORARY will be passed to backend");
  					  $$ = make_str("global temporary");
  					}
  		| GLOBAL TEMP		{
! 					  mmerror(ET_NOTICE, "Currently unsupported CREATE TABLE/GLOBAL TEMP will be passed to backend");
  					  $$ = make_str("global temp");
  					}
  		| /*EMPTY*/		{ $$ = EMPTY; }
***************
*** 1103,1110 ****
  				{
  					if (strlen($4) > 0)
  					{
! 						sprintf(errortext, "CREATE TABLE/COLLATE %s not yet implemented; clause ignored", $4);
! 						mmerror(ET_NOTICE, errortext);
  					}
  					$$ = cat_str(4, $1, $2, $3, $4);
  				}
--- 1103,1110 ----
  				{
  					if (strlen($4) > 0)
  					{
!  						sprintf(errortext, "Currently unsupported CREATE TABLE/COLLATE %s will be passed to backend", $4);
!  						mmerror(ET_NOTICE, errortext);
  					}
  					$$ = cat_str(4, $1, $2, $3, $4);
  				}
***************
*** 1219,1225 ****
  		}
  		| MATCH PARTIAL		
  		{
! 			mmerror(ET_NOTICE, "FOREIGN KEY/MATCH PARTIAL not yet implemented");
  			$$ = make_str("match partial");
  		}
  		| /*EMPTY*/
--- 1219,1225 ----
  		}
  		| MATCH PARTIAL		
  		{
! 			mmerror(ET_NOTICE, "Currently unsupported FOREIGN KEY/MATCH PARTIAL will be passed to backend");
  			$$ = make_str("match partial");
  		}
  		| /*EMPTY*/
***************
*** 1614,1620 ****
  		| BACKWARD	{ $$ = make_str("backward"); }
  		| RELATIVE      { $$ = make_str("relative"); }
                  | ABSOLUTE	{
! 					mmerror(ET_NOTICE, "FETCH/ABSOLUTE not supported, backend will use RELATIVE");
  					$$ = make_str("absolute");
  				}
  		;
--- 1614,1620 ----
  		| BACKWARD	{ $$ = make_str("backward"); }
  		| RELATIVE      { $$ = make_str("relative"); }
                  | ABSOLUTE	{
! 					mmerror(ET_NOTICE, "Currently unsupported FETCH/ABSOLUTE will be passed to backend, backend will use RELATIVE");
  					$$ = make_str("absolute");
  				}
  		;
***************
*** 1769,1775 ****
  		| grantee_list ',' grantee 	{ $$ = cat_str(3, $1, make_str(","), $3); }
  		;
  
! opt_with_grant:  WITH GRANT OPTION { $$ = make_str("with grant option"); }
  		| /*EMPTY*/ { $$ = EMPTY; }
  		;
  
--- 1769,1779 ----
  		| grantee_list ',' grantee 	{ $$ = cat_str(3, $1, make_str(","), $3); }
  		;
  
! opt_with_grant:  WITH GRANT OPTION
!                                 {
! 					mmerror(ET_NOTICE, "Currently unsupported GRANT/WITH GRANT OPTION will be passed to backend");
! 					$$ = make_str("with grant option");
! 				}
  		| /*EMPTY*/ { $$ = EMPTY; }
  		;
  
***************
*** 1919,1932 ****
  
  opt_arg:  IN    { $$ = make_str("in"); }
  	| OUT	{ 
! 		  mmerror(ET_ERROR, "CREATE FUNCTION/OUT parameters are not supported");
  
  	 	  $$ = make_str("out");
  		}
  	| INOUT	{ 
! 		  mmerror(ET_ERROR, "CREATE FUNCTION/INOUT parameters are not supported");
  
! 	 	  $$ = make_str("oinut");
  		}
  	;
  
--- 1923,1936 ----
  
  opt_arg:  IN    { $$ = make_str("in"); }
  	| OUT	{ 
! 		  mmerror(ET_NOTICE, "Currently unsupported CREATE FUNCTION/OUT will be passed to backend");
  
  	 	  $$ = make_str("out");
  		}
  	| INOUT	{ 
! 		  mmerror(ET_NOTICE, "Currently unsupported CREATE FUNCTION/INOUT will be passed to backend");
  
! 	 	  $$ = make_str("inout");
  		}
  	;
  
***************
*** 2164,2170 ****
  
  opt_chain: AND NO CHAIN 	{ $$ = make_str("and no chain"); }
  	| AND CHAIN		{
! 				  mmerror(ET_ERROR, "COMMIT/CHAIN not yet supported");
  
  				  $$ = make_str("and chain");
  				}
--- 2168,2174 ----
  
  opt_chain: AND NO CHAIN 	{ $$ = make_str("and no chain"); }
  	| AND CHAIN		{
! 				  mmerror(ET_NOTICE, "Currently unsupported COMMIT/CHAIN will be passed to backend");
  
  				  $$ = make_str("and chain");
  				}
***************
*** 2609,2620 ****
  			}
                         | GLOBAL TEMPORARY opt_table relation_name
                          {
! 				mmerror(ET_ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
  				$$ = cat_str(3, make_str("global temporary"), $3, $4);
                          }
                         | GLOBAL TEMP opt_table relation_name
                          {
! 				mmerror(ET_ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
  				$$ = cat_str(3, make_str("global temp"), $3, $4);
                          }
                         | TABLE relation_name
--- 2613,2624 ----
  			}
                         | GLOBAL TEMPORARY opt_table relation_name
                          {
! 				mmerror(ET_NOTICE, "Currently unsupported CREATE TABLE/GLOBAL TEMPORARY will be passed to backend");
  				$$ = cat_str(3, make_str("global temporary"), $3, $4);
                          }
                         | GLOBAL TEMP opt_table relation_name
                          {
! 				mmerror(ET_NOTICE, "Currently unsupported CREATE TABLE/GLOBAL TEMP will be passed to backend");
  				$$ = cat_str(3, make_str("global temp"), $3, $4);
                          }
                         | TABLE relation_name