| Bug #9445 | Don`t return sqltype for numeric and decimal fields | ||
|---|---|---|---|
| Submitted: | 29 Mar 2005 7:43 | Modified: | 4 Apr 2005 20:54 |
| Reporter: | Vitaliy Vorobyov | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | Connector / ODBC | Severity: | S2 (Serious) |
| Version: | 3.51.11 | OS: | Windows (Windows XP SP1) |
| Assigned to: | CPU Architecture: | Any | |
[30 Mar 2005 11:44]
Vasily Kishkin
I created test program and tried to repeat the bug. I could't do it. I attached the test program. Result of program: Connect.... Drop.... Create.... Test.... ColName = D2,bColName = 2,SqlType = 3,ColDef = 32,Scale = 2,Nullable = 1 ColName = D4,bColName = 2,SqlType = 3,ColDef = 32,Scale = 4,Nullable = 1 Disconnect....
[30 Mar 2005 11:46]
Vasily Kishkin
test program of bug # 9445
Attachment: test.c (text/plain), 5.20 KiB.
[19 Apr 2005 13:47]
Ralph Gadsby
I'm experiencing a similar problem where SQLdescribecol is returning the wrong data type (SQL_C_DEFAULT instead of SQL_C_CHAR) for all decimal type columns. Platform is XP SP1.
Table definition (partial):
mysql> DESC WRCUST
-> ;
+-------------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+---------------+------+-----+---------+-------+
| WRCUST_NUMBER | char(10) | NO | PRI | | |
| WRCUST_NAME | char(30) | NO | | | |
| WRCUST_ADDRESS1 | char(30) | NO | | | |
| WRCUST_ADDRESS2 | char(30) | NO | | | |
| WRCUST_ADDRESS3 | char(30) | NO | | | |
| WRCUST_ADDRESS4 | char(30) | NO | | | |
| WRCUST_ZIP | char(9) | NO | | | |
| WRCUST_TEL_NO | char(15) | NO | | | |
| WRCUST_FAX_NO | char(15) | NO | | | |
| WRCUST_CONTACT_NM | char(30) | NO | | | |
| WRCUST_CREDIT_LMT | decimal(15,3) | NO | | 0.000 | |
| WRCUST_ON_ORDER_AMT | decimal(15,3) | NO | | 0.000 | |
ODBC trace information:
pro32srv b04-86c ENTER SQLDescribeCol
HSTMT 00AD21C8
UWORD 11
UCHAR * 0x01DADE10
SWORD 31
SWORD * 0x01DADE48
SWORD * 0x01DADE08
SQLULEN * 0x01DADE3C
SWORD * 0x01DADE0C
SWORD * 0x01DADE34
pro32srv b04-86c EXIT SQLDescribeCol with return code 0 (SQL_SUCCESS)
HSTMT 00AD21C8
UWORD 11
UCHAR * 0x01DADE10 [ 17] "WRCUST_CREDIT_LMT"
SWORD 31
SWORD * 0x01DADE48 (17)
SWORD * 0x01DADE08 (0)
SQLULEN * 0x01DADE3C (11)
SWORD * 0x01DADE0C (3)
SWORD * 0x01DADE34 (0)
pro32srv b04-86c ENTER SQLBindCol
HSTMT 00AD21C8
UWORD 11
SWORD 99 <SQL_C_DEFAULT>
PTR 0x00F42744
SQLLEN 18
SQLLEN * 0x00EBD714
pro32srv b04-86c EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
HSTMT 00AD21C8
UWORD 11
SWORD 99 <SQL_C_DEFAULT>
PTR 0x00F42744
SQLLEN 18
SQLLEN * 0x00EBD714 (10)

Description: SQLDescribeCol don`t return DataTypePtr. How to repeat: 1. create table t32(d2 decimal(32,2), d4 decimal(32,4); 2. insert into t32(d2, d4) values(123456789012345678901234567890.22, 1234567890123456789012345678.22); log of odbcte32.exe SQLExecDirect: In: Statementhandle = 0x003B1730, StatementText = "select * from t32", Statementlength = 17 Return: SQL_SUCCESS=0 Describe Column All: icol, szColName, *pcbColName, *pfSqlType, *pcbColDef, *pibScale, *pfNullable 1, d2, 2, , 33, 2, SQL_NULLABLE=1 2, d4, 2, , 31, 2, SQL_NULLABLE=1 SQLDescribeCol: In: StatementHandle = 0x003B1730, ColumnNumber = 1, ColumnName = 0x000A5CA0, BufferLength = 300, NameLengthPtr = 0x000A5718, DataTypePtr = 0x000B2FF0, ColumnSizePtr = 0x00098FA0, DecimalDigits = 0x0009A3C8, NullablePtr = 0x0009A3E0 Return: SQL_SUCCESS=0 Out: *ColumnName = "d2", *NameLengthPtr = 2, *DataTypePtr = 0, *ColumnSizePtr = 33, *DecimalDigits = 2, *NullablePtr = SQL_NULLABLE=1 SQLDescribeCol: In: StatementHandle = 0x003B1730, ColumnNumber = 2, ColumnName = 0x0009EBB8, BufferLength = 300, NameLengthPtr = 0x0009A480, DataTypePtr = 0x000A5718, ColumnSizePtr = 0x000B2FF0, DecimalDigits = 0x0009A3C8, NullablePtr = 0x0009A3E0 Return: SQL_SUCCESS=0 Out: *ColumnName = "d4", *NameLengthPtr = 2, *DataTypePtr = 0, *ColumnSizePtr = 31, *DecimalDigits = 2, *NullablePtr = SQL_NULLABLE=1 Get Data All: TST1005: Highest bound column is 2. "d2", "d4" 123456789012345678901234567890.22, 1234567890123456789012345678.22 1 row fetched from 2 columns. Suggested fix: n/a