Fix some multibyte related bugs.
authorHiroshi Inoue
Tue, 11 Sep 2001 06:39:20 +0000 (06:39 +0000)
committerHiroshi Inoue
Tue, 11 Sep 2001 06:39:20 +0000 (06:39 +0000)
Psqlodbc is 7.01.0007 now.

Hiroshi Inoue

src/interfaces/odbc/connection.c
src/interfaces/odbc/convert.c
src/interfaces/odbc/info.c
src/interfaces/odbc/parse.c

index 9685c9358b5dea69ec64d8c2e1bb9af695481101..b055bd01444ea3bd284af816b40a4ca038c879dd 100644 (file)
@@ -551,13 +551,19 @@ CC_connect(ConnectionClass *self, char do_password)
             ci->drivers.bools_as_char);
 
 #ifdef MULTIBYTE
-       encoding = check_client_encoding(ci->drivers.conn_settings);
+       encoding = check_client_encoding(ci->conn_settings);
        if (encoding && strcmp(encoding, "OTHER"))
            self->client_encoding = strdup(encoding);
+       else
+       { 
+           encoding = check_client_encoding(ci->drivers.conn_settings);
+           if (encoding && strcmp(encoding, "OTHER"))
+               self->client_encoding = strdup(encoding);
+       }
        qlog("                extra_systable_prefixes='%s', conn_settings='%s' conn_encoding='%s'\n",
             ci->drivers.extra_systable_prefixes,
             ci->drivers.conn_settings,
-            check_client_encoding(ci->drivers.conn_settings));
+            encoding ? encoding : "");
 #else
        qlog("                extra_systable_prefixes='%s', conn_settings='%s'\n",
             ci->drivers.extra_systable_prefixes,
index 9c1c6e3737add14d9bdf4f93d3cabd72334844de..8052709fdac3c50e7e5ce31b2a89558203fb368f 100644 (file)
@@ -1156,7 +1156,11 @@ copy_statement_with_parameters(StatementClass *stmt)
                }
                opos += lit_call_len; 
                CVT_APPEND_STR("SELECT ");
+#ifdef MULTIBYTE
+               if (multibyte_strchr(&old_statement[opos], '('))
+#else
                if (strchr(&old_statement[opos], '('))
+#endif /* MULTIBYTE */
                    proc_no_param = FALSE;
                continue; 
            }
index 663e207abb57eb1405dffbc9c09704595338e297..1f458ba043ead93c2fb3d54130ae20be9a7f4f27 100644 (file)
@@ -826,7 +826,6 @@ PGAPI_GetTypeInfo(
 
 
 RETCODE SQL_API
-/*SQLGetFunctions(*/
 PGAPI_GetFunctions(
                HDBC hdbc,
                UWORD fFunction,
@@ -2202,6 +2201,8 @@ PGAPI_Statistics(
            " and i.indexrelid = c.oid"
            " and c.relam = a.oid"
            , table_name);
+   if (PG_VERSION_GT(SC_get_conn(stmt), 6.4))
+       strcat(index_query, " order by i.indisprimary desc");
 
    result = PGAPI_ExecDirect(hindx_stmt, index_query, strlen(index_query));
    if ((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO))
index f6254cae9470c955874dec9dbb72c2b7a43125a5..0f0aff6e04e9988cfbf154140bca1cb03f76b0c9 100644 (file)
@@ -616,7 +616,14 @@ in_expr = TRUE;
 
                    /* lower case table name */
                    for (ptr = ti[stmt->ntab]->name; *ptr; ptr++)
+                   {
+#ifdef MULTIBYTE
+                       if ((unsigned char) *ptr >= 0x80)
+                           ptr++;
+                       else
+#endif /* MULTIBYTE */
                        *ptr = tolower((unsigned char) *ptr);
+                   }
                }
                mylog("got table = '%s'\n", ti[stmt->ntab]->name);