Removed multibyte stuff since client does not know about encoding in the backendFixed...
authorMichael Meskes
Sun, 29 Oct 2000 09:44:58 +0000 (09:44 +0000)
committerMichael Meskes
Sun, 29 Oct 2000 09:44:58 +0000 (09:44 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/lib/execute.c
src/interfaces/ecpg/preproc/preproc.y

index ed909933d15a93c572c138557750739f8a228cc2..f81453ba28cacca538adbe7837dc3d667eac0001 100644 (file)
@@ -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 ([email protected]).
    - Set ecpg version to 2.8.0. 
    - Set library version to 3.2.0.
index de27637ea7600f8ce57d2f1014e088ce20eb165b..f1d11105f074d1d4eb2839ecc362962b08f98eed 100644 (file)
@@ -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);
index 9b32dd546d0c54ecc85b7a92d90ecf0761cd0c9b..eb4a03cbf7b875cd1c75d790c67ce5b148069774 100644 (file)
 
 #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; }