You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafodion.apache.org by ?? ? <al...@hotmail.com> on 2018/01/29 05:17:36 UTC

Info session

did anyone ever encountered the error as followings:


*** ERROR[2109] Invalid Character error converting SQL statement from character set UTF8 to character set UCS2 (character position 379, byte offset 379). [2018-01-26 10:11:47]


as we checked, LANG=zh_CN.UTF-8 and authentication details as below:

[cid:ac95b784-e819-4839-8315-b1e78ce4c109]


i found the source code for the query in the mxosrvr SrvrConnect::isInfoSession()

SELECT [first 1]"
                    "'%s' as \"SESSION_ID\","
                    "'%s' as \"SERVER_PROCESS_NAME\","
                    "'%s' as \"SERVER_PROCESS_ID\","
                    "'%s' as \"SERVER_HOST\","
                    "'%s' as \"SERVER_PORT\","
                    "'%s' as \"MAPPED_SLA\","
                    "'%s' as \"MAPPED_CONNECT_PROFILE\","
                    "'%s' as \"MAPPED_DISCONNECT_PROFILE\","
                    "'%d' as \"CONNECTED_INTERVAL_SEC\","
                    "'%s' as \"CONNECT_TIME\","
                    "'%s' as \"DATABASE_USER_NAME\","
                    "'%s' as \"USER_NAME\","
                    "'%s' as \"ROLE_NAME\","
                    "'%s' as \"APP_NAME\","
                    "'%s' as \"TENANT_NAME\""

                    "FROM (values(1)) X(A);

then used the sprintf to fill the parameters:
sprintf (buffer, pattern,
      srvrGlobal->sessionId,
      serverProcessName.c_str(),
      serverProcessId.c_str(),
      serverHost.c_str(),
      serverPort.c_str(),
      sla.c_str(),
      connectProfile.c_str(),
      disconnectProfile.c_str(),
      (int)(time(NULL) - connectedTimestamp),
      connecttime,
      srvrGlobal->QSDBUserName,
      srvrGlobal->QSUserName,
      srvrGlobal->QSRoleName,
      appName.c_str(),
      srvrGlobal->tenantName);

i guess maybe some value encode not properly parsed  caused the error. since could not reproduce yet locally, still checking.


any clue will be appreciated.


Nice Day

Alex

RE: Info session

Posted by ?涛 彭 <al...@hotmail.com>.
I think we found the cause, while the LANG=zh-CN.GBK, this issue will happen. It seems the GBK and UTF-8 have different scope. So while convert GBK into UTF-8, some of them are out of range. Then utf-8 into UCS2 will have problem. We will create a Jira to track this.

Thanks and regards
Alex
From: Dave Birdsall<ma...@esgyn.com>
Sent: 2018年1月30日 2:05
To: dev@trafodion.apache.org<ma...@trafodion.apache.org>
Subject: RE: Info session

Hi,

I'd look at buffer[379] and see what's there. That seems to be a UTF-8 character that can't be mapped to UCS2.

Dave

From: ?? ? [mailto:alex_peng1986@hotmail.com]
Sent: Sunday, January 28, 2018 9:18 PM
To: dev@trafodion.incubator.apache.org
Subject: Info session


did anyone ever encountered the error as followings:



*** ERROR[2109] Invalid Character error converting SQL statement from character set UTF8 to character set UCS2 (character position 379, byte offset 379). [2018-01-26 10:11:47]



as we checked, LANG=zh_CN.UTF-8 and authentication details as below:

[cid:ac95b784-e819-4839-8315-b1e78ce4c109]

i found the source code for the query in the mxosrvr SrvrConnect::isInfoSession()
SELECT [first 1]"
                    "'%s' as \"SESSION_ID\","
                    "'%s' as \"SERVER_PROCESS_NAME\","
                    "'%s' as \"SERVER_PROCESS_ID\","
                    "'%s' as \"SERVER_HOST\","
                    "'%s' as \"SERVER_PORT\","
                    "'%s' as \"MAPPED_SLA\","
                    "'%s' as \"MAPPED_CONNECT_PROFILE\","
                    "'%s' as \"MAPPED_DISCONNECT_PROFILE\","
                    "'%d' as \"CONNECTED_INTERVAL_SEC\","
                    "'%s' as \"CONNECT_TIME\","
                    "'%s' as \"DATABASE_USER_NAME\","
                    "'%s' as \"USER_NAME\","
                    "'%s' as \"ROLE_NAME\","
                    "'%s' as \"APP_NAME\","
                    "'%s' as \"TENANT_NAME\""

                    "FROM (values(1)) X(A);

then used the sprintf to fill the parameters:
sprintf (buffer, pattern,
      srvrGlobal->sessionId,
      serverProcessName.c_str(),
      serverProcessId.c_str(),
      serverHost.c_str(),
      serverPort.c_str(),
      sla.c_str(),
      connectProfile.c_str(),
      disconnectProfile.c_str(),
      (int)(time(NULL) - connectedTimestamp),
      connecttime,
      srvrGlobal->QSDBUserName,
      srvrGlobal->QSUserName,
      srvrGlobal->QSRoleName,
      appName.c_str(),
      srvrGlobal->tenantName);

i guess maybe some value encode not properly parsed  caused the error. since could not reproduce yet locally, still checking.


any clue will be appreciated.



Nice Day

Alex


RE: Info session

Posted by Dave Birdsall <da...@esgyn.com>.
Hi,

I'd look at buffer[379] and see what's there. That seems to be a UTF-8 character that can't be mapped to UCS2.

Dave

From: ?? ? [mailto:alex_peng1986@hotmail.com]
Sent: Sunday, January 28, 2018 9:18 PM
To: dev@trafodion.incubator.apache.org
Subject: Info session


did anyone ever encountered the error as followings:



*** ERROR[2109] Invalid Character error converting SQL statement from character set UTF8 to character set UCS2 (character position 379, byte offset 379). [2018-01-26 10:11:47]



as we checked, LANG=zh_CN.UTF-8 and authentication details as below:

[cid:ac95b784-e819-4839-8315-b1e78ce4c109]

i found the source code for the query in the mxosrvr SrvrConnect::isInfoSession()
SELECT [first 1]"
                    "'%s' as \"SESSION_ID\","
                    "'%s' as \"SERVER_PROCESS_NAME\","
                    "'%s' as \"SERVER_PROCESS_ID\","
                    "'%s' as \"SERVER_HOST\","
                    "'%s' as \"SERVER_PORT\","
                    "'%s' as \"MAPPED_SLA\","
                    "'%s' as \"MAPPED_CONNECT_PROFILE\","
                    "'%s' as \"MAPPED_DISCONNECT_PROFILE\","
                    "'%d' as \"CONNECTED_INTERVAL_SEC\","
                    "'%s' as \"CONNECT_TIME\","
                    "'%s' as \"DATABASE_USER_NAME\","
                    "'%s' as \"USER_NAME\","
                    "'%s' as \"ROLE_NAME\","
                    "'%s' as \"APP_NAME\","
                    "'%s' as \"TENANT_NAME\""

                    "FROM (values(1)) X(A);

then used the sprintf to fill the parameters:
sprintf (buffer, pattern,
      srvrGlobal->sessionId,
      serverProcessName.c_str(),
      serverProcessId.c_str(),
      serverHost.c_str(),
      serverPort.c_str(),
      sla.c_str(),
      connectProfile.c_str(),
      disconnectProfile.c_str(),
      (int)(time(NULL) - connectedTimestamp),
      connecttime,
      srvrGlobal->QSDBUserName,
      srvrGlobal->QSUserName,
      srvrGlobal->QSRoleName,
      appName.c_str(),
      srvrGlobal->tenantName);

i guess maybe some value encode not properly parsed  caused the error. since could not reproduce yet locally, still checking.


any clue will be appreciated.



Nice Day

Alex