From dfb12a985094b95c417de01661bd634ac9f2738b Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Sun, 29 Oct 2000 09:44:58 +0000 Subject: [PATCH] Removed multibyte stuff since client does not know about encoding in the backendFixed quoting bug reported by Sascha Demetrio (sd@b-comp.de). --- src/interfaces/ecpg/ChangeLog | 6 ++++++ src/interfaces/ecpg/lib/execute.c | 16 ++++++++++++---- src/interfaces/ecpg/preproc/preproc.y | 14 -------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index ed909933d1..f81453ba28 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -989,5 +989,11 @@ Wed Oct 25 08:53:07 CEST 2000 Wed Oct 25 21:22:17 CEST 2000 - Synced gram.y and preproc.y. + +Son Oct 29 11:26:06 CET 2000 + + - Removed multibyte stuff since client does not know about encoding + in the backend. + - Fixed quoting bug reported by Sascha Demetrio (sd@b-comp.de). - Set ecpg version to 2.8.0. - Set library version to 3.2.0. diff --git a/src/interfaces/ecpg/lib/execute.c b/src/interfaces/ecpg/lib/execute.c index de27637ea7..f1d11105f0 100644 --- a/src/interfaces/ecpg/lib/execute.c +++ b/src/interfaces/ecpg/lib/execute.c @@ -102,6 +102,7 @@ quote_postgres(char *arg, int lineno) return (res); res[ri++] = '\''; + for (i = 0; arg[i]; i++, ri++) { switch (arg[i]) @@ -118,6 +119,7 @@ quote_postgres(char *arg, int lineno) res[ri] = arg[i]; } + res[ri++] = '\''; res[ri] = '\0'; @@ -247,10 +249,17 @@ next_insert(char *text) char *ptr = text; bool string = false; +printf("%s\n", text); for (; *ptr != '\0' && (*ptr != '?' || string); ptr++) - if (*ptr == '\'' && *(ptr - 1) != '\\') - string = string ? false : true; + { + if (*ptr == '\\') /* escape character */ + ptr++; + else + if (*ptr == '\'' ) + string = string ? false : true; + } +printf("%s\n", ptr); return (*ptr == '\0') ? NULL : ptr; } @@ -704,7 +713,6 @@ ECPGexecute(struct statement * stmt) strcpy(newcopy, copiedquery); if ((p = next_insert(newcopy + hostvarl)) == NULL) { - /* * We have an argument but we dont have the matched up string * in the string @@ -995,7 +1003,7 @@ ECPGdo(int lineno, const char *connection_name, char *query,...) * * Copyright (c) 2000, Christof Petig * - * $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.12 2000/10/02 16:15:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.13 2000/10/29 09:44:58 meskes Exp $ */ PGconn *ECPG_internal_get_connection(char *name); diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index 9b32dd546d..eb4a03cbf7 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -11,10 +11,6 @@ #include "extern.h" -#ifdef MULTIBYTE -#include "mb/pg_wchar.h" -#endif - /* * Variables containing simple states. */ @@ -838,11 +834,7 @@ VariableSetStmt: SET ColId TO var_value } | SET NAMES opt_encoding { -#ifdef MULTIBYTE $$ = cat2_str(make_str("set names"), $3); -#else - mmerror(ET_ERROR, "SET NAMES is not supported."); -#endif } ; @@ -2252,16 +2244,10 @@ createdb_opt_location: LOCATION '=' StringConst { $$ = cat2_str(make_str("locat createdb_opt_encoding: ENCODING '=' PosIntStringConst { -#ifndef MULTIBYTE - mmerror(ET_ERROR, "Multi-byte support is not enabled."); -#endif $$ = cat2_str(make_str("encoding ="), $3); } | ENCODING '=' DEFAULT { -#ifndef MULTIBYTE - mmerror(ET_ERROR, "Multi-byte support is not enabled."); -#endif $$ = make_str("encoding = default"); } | /*EMPTY*/ { $$ = NULL; }