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 ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html