Skip site navigation (1) Skip section navigation (2)

ODBC NLS Problem

From: "salman razzaq" <salmanpostgresgeek(at)gmail(dot)com>
To: pgsql-odbc(at)postgresql(dot)org
Subject: ODBC NLS Problem
Date: 2008-04-24 13:33:46
Message-ID: 39c59e6a0804240633g1578586fu96079d5100d4b328@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-odbc
Hi all,
   I just ran into a problem while calling a function using ODBC. The
function name is in japenese.

OS = Ubuntu, 7.10

But, when I call the function  using the following syntax

{ ? = call 参照カーソル_inout_callee2(?,?)}

the server throws me a syntax error. when analyzing the server logs, I found
that call is replaced with SELECT * FROM. The query actually passing to the
server is

SELECT * FROM参照カーソル_inout_callee2('','') .

When further analyzing the query, I found that there was no space between
FROM keyword and procedure name.

Then, I debug the ODBC source code, I found the problem in convert.c at
function inner_process_tokens. But, I am confused over here why we need this
condition (condition is bolded). Below is the code snippet.


         /*
          * Handle literals (date, time, timestamp) and ODBC scalar
          * functions
          */
         else if (oldchar == '{')
         {
                 if (SQL_ERROR == convert_escape(qp, qb))
                 {
                         if (0 == qb->errornumber)
                         {
                                 qb->errornumber = STMT_EXEC_ERROR;
                                 qb->errormsg = "ODBC escape convert error";
                         }
                         mylog("%s convert_escape error\n", func);
                         return SQL_ERROR;
                 }
*                 if (isalnum((UCHAR)F_OldPtr(qp)[1]))*
                         CVT_APPEND_CHAR(qb, ' ');
                 return SQL_SUCCESS;
         }


The condition says that if the first character of the function name is alpha
numeric, then append the space character. From man pages of isalnum, it says
that for "C" locale characters, it will return true. This means that ASCII
characters will be considered.

Any help will be appreciated.


Thanks.

pgsql-odbc by date

Next:From: Jan-Peter.SeifertDate: 2008-04-28 15:25:45
Subject: UTF8 server & "ANSI"-Client: Which Driver?
Previous:From: Jeff CrumbleyDate: 2008-04-21 19:44:24
Subject: 64 bit ODBC for WIndows 2003 64 bit

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group