From: | "Inoue, Hiroshi" <h-inoue(at)dream(dot)email(dot)ne(dot)jp> |
---|---|
To: | Xuesong Gao <xgao(at)senturus(dot)com> |
Cc: | "pgsql-odbc(at)postgresql(dot)org" <pgsql-odbc(at)postgresql(dot)org> |
Subject: | Re: PostgreSQL ODBC SQL_CONVERT_* in SQLGetInfo support |
Date: | 2020-07-03 11:25:17 |
Message-ID: | 37f23b3c-2fc3-72bf-8bcd-678760ced63d@dream.email.ne.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
Hi,
I would take care of this issue.
regards,
Hiroshi Inoue
On 2020/07/02 2:14, Xuesong Gao wrote:
>
> Hi,
>
> I am using PostgreSQL ODBC with Power BI and got this error in Power
> BI log:
>
> Failed to convert from wchar to wvarchar for expression \"Snapshot
> Year Month\". You can override this by using SqlGetInfo for converting
> from WCHAR to WVARCHAR.
>
> It turned out that info.c does not return correct values even though
> PostgreSQL support conversions between different data type. So I put
> following line there and it starts working:
>
> case SQL_CONVERT_BIT:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_BIT |
>
> SQL_CVT_INTEGER |
>
> SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR |
> SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR;
>
> break;
>
> case SQL_CONVERT_TINYINT:
>
> len = sizeof(SQLUINTEGER);
>
> value = 0; /* PostgreSQL does not support tinyint */
>
> break;
>
> case SQL_CONVERT_INTEGER:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_BIT |
>
> SQL_CVT_SMALLINT | SQL_CVT_INTEGER | SQL_CVT_BIGINT |
>
> SQL_CVT_REAL | SQL_CVT_FLOAT | SQL_CVT_DOUBLE | SQL_CVT_NUMERIC |
> SQL_CVT_DECIMAL |
>
> SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR |
> SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR;
>
> break;
>
> case SQL_CONVERT_SMALLINT:
>
> case SQL_CONVERT_BIGINT:
>
> case SQL_CONVERT_REAL:
>
> case SQL_CONVERT_FLOAT:
>
> case SQL_CONVERT_DOUBLE:
>
> case SQL_CONVERT_NUMERIC:
>
> case SQL_CONVERT_DECIMAL:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_SMALLINT | SQL_CVT_INTEGER | SQL_CVT_BIGINT |
>
> SQL_CVT_REAL | SQL_CVT_FLOAT | SQL_CVT_DOUBLE | SQL_CVT_NUMERIC |
> SQL_CVT_DECIMAL |
>
> SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR |
> SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR;
>
> break;
>
> case SQL_CONVERT_CHAR:
>
> case
> SQL_CONVERT_VARCHAR: /* ODBC 1.0 */
>
> case SQL_CONVERT_LONGVARCHAR:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_BIT |
>
> SQL_CVT_SMALLINT | SQL_CVT_INTEGER | SQL_CVT_BIGINT |
>
> SQL_CVT_REAL | SQL_CVT_FLOAT | SQL_CVT_DOUBLE | SQL_CVT_NUMERIC |
> SQL_CVT_DECIMAL |
>
> SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR |
> SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR |
>
> SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP;
>
> break;
>
> case SQL_CONVERT_DATE:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR |
> SQL_CVT_WCHAR | SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR |
>
> SQL_CVT_DATE | SQL_CVT_TIMESTAMP;
>
> break;
>
> case SQL_CONVERT_TIME:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR |
> SQL_CVT_WCHAR | SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR |
>
> SQL_CVT_TIME;
>
> break;
>
> case SQL_CONVERT_TIMESTAMP:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR |
> SQL_CVT_WCHAR | SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR |
>
> SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP;
>
> break;
>
> case SQL_CONVERT_BINARY:
>
> case
> SQL_CONVERT_VARBINARY: /* ODBC 1.0 */
>
> len = sizeof(SQLUINTEGER);
>
> value = 0; /* PostgreSQL does not support binary, varbinary */
>
> break;
>
> case SQL_CONVERT_LONGVARBINARY:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_LONGVARBINARY;
>
> break;
>
> #ifdef UNICODE_SUPPORT
>
> case SQL_CONVERT_WCHAR:
>
> case SQL_CONVERT_WLONGVARCHAR:
>
> case SQL_CONVERT_WVARCHAR:
>
> len = sizeof(SQLUINTEGER);
>
> value = SQL_CVT_BIT |
>
> SQL_CVT_SMALLINT | SQL_CVT_INTEGER | SQL_CVT_BIGINT |
>
> SQL_CVT_REAL | SQL_CVT_FLOAT | SQL_CVT_DOUBLE | SQL_CVT_NUMERIC |
> SQL_CVT_DECIMAL |
>
> SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR |
> SQL_CVT_WVARCHAR | SQL_CVT_WLONGVARCHAR |
>
> SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP;
>
> break;
>
> #endif /* UNICODE_SUPPORT */
>
>
>
> *Song X. Gao*
> Solutions Architect
>
> Email xgao(at)senturus(dot)com <mailto:xgao(at)senturus(dot)com>
> Mobile 732 406 6347
> *senturus.com* <http://www.senturus.com/>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cardwell | 2020-07-10 22:20:21 | Configuring postgresql12-odbc to use the correct protocol version |
Previous Message | Xuesong Gao | 2020-07-01 17:14:59 | PostgreSQL ODBC SQL_CONVERT_* in SQLGetInfo support |