]> granicus.if.org Git - postgresql/commitdiff
Fix some multibyte related bugs.
authorHiroshi Inoue <inoue@tpf.co.jp>
Tue, 11 Sep 2001 06:39:20 +0000 (06:39 +0000)
committerHiroshi Inoue <inoue@tpf.co.jp>
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);