Thread: psqlodbc - prepared statement crash
I am using MS ODBCTest tool for testing purpose here, and it crashed after I did following steps:
1. Full connect to DSN.
2. SQLPrepare: select city, ? as i from public.city where city = ?
3. SQLBindParameter: number 1, value type SQL_C_CHAR, parameter type SQL_CHAR, value 1;
4. SQLBindParameter: number 2, value type SQL_C_CHAR, parameter type SQL_CHAR, value Abha;
5. SQLExecute
- your ODBC driver version
Unicode x64, 9.06.05.00
- your PostgreSQL database version
PostgreSQL 10, sample database dvdrental
- any error messages you saw on the screen
messages in ODBCTest tool console:
Full Connect(Default)
Env. Attr. SQL_ATTR_ODBC_VERSION set to SQL_OV_ODBC3
Successfully connected to DSN 'dvdrental'.
SQLPrepare:
In: StatementHandle = 0x00000000047221C0, StatementText = "select city, ? as i from public.city where city = ...", TextLength = 51
Return: SQL_SUCCESS=0
SQLBindParameter:
In: StatementHandle = 0x00000000047221C0, ParameterNumber = 1, InputOutputtype = SQL_PARAM_INPUT=1, ValueType = SQL_C_CHAR=1,
ParameterType = SQL_CHAR=1, ColumnSize = 0, DecimalDigits = 0, ParameterValuePtr = "1", BufferLength = 0, StrLen_or_IndPtr = SQL_NTS=-3, SQL_LEN_DATA_AT_EXEC = FALSE,
Buffer Size = 600
Return: SQL_SUCCESS=0
SQLBindParameter:
In: StatementHandle = 0x00000000047221C0, ParameterNumber = 2, InputOutputtype = SQL_PARAM_INPUT=1, ValueType = SQL_C_CHAR=1,
ParameterType = SQL_CHAR=1, ColumnSize = 0, DecimalDigits = 0, ParameterValuePtr = "Abha", BufferLength = 0, StrLen_or_IndPtr = SQL_NTS=-3, SQL_LEN_DATA_AT_EXEC = FALSE,
Buffer Size = 600
Return: SQL_SUCCESS=0
- the debug log (mylog_????.log) file (you will have to enable the mylog driver option)
attached
Song X. Gao | |
Email xgao@senturus.com |
Attachment
Sorry for the late reply.
You seem to turn on Mylog optipn of Global settings only.
Could you please turn on Mylog option of Advanced Options (DataSource) as well?
I have a question.
What does "city = ..." of
StatementText = "select city, ? as i from public.city where city = ...",
mean?
regards,
Hiroshi Inoue
I am using MS ODBCTest tool for testing purpose here, and it crashed after I did following steps:
1. Full connect to DSN.
2. SQLPrepare: select city, ? as i from public.city where city = ?
3. SQLBindParameter: number 1, value type SQL_C_CHAR, parameter type SQL_CHAR, value 1;
4. SQLBindParameter: number 2, value type SQL_C_CHAR, parameter type SQL_CHAR, value Abha;
5. SQLExecute
- your ODBC driver version
Unicode x64, 9.06.05.00
- your PostgreSQL database version
PostgreSQL 10, sample database dvdrental
- any error messages you saw on the screen
messages in ODBCTest tool console:
Full Connect(Default)
Env. Attr. SQL_ATTR_ODBC_VERSION set to SQL_OV_ODBC3
Successfully connected to DSN 'dvdrental'.
SQLPrepare:
In: StatementHandle = 0x00000000047221C0, StatementText = "select city, ? as i from public.city where city = ...", TextLength = 51
Return: SQL_SUCCESS=0
SQLBindParameter:
In: StatementHandle = 0x00000000047221C0, ParameterNumber = 1, InputOutputtype = SQL_PARAM_INPUT=1, ValueType = SQL_C_CHAR=1,
ParameterType = SQL_CHAR=1, ColumnSize = 0, DecimalDigits = 0, ParameterValuePtr = "1", BufferLength = 0, StrLen_or_IndPtr = SQL_NTS=-3, SQL_LEN_DATA_AT_EXEC = FALSE,
Buffer Size = 600
Return: SQL_SUCCESS=0
SQLBindParameter:
In: StatementHandle = 0x00000000047221C0, ParameterNumber = 2, InputOutputtype = SQL_PARAM_INPUT=1, ValueType = SQL_C_CHAR=1,
ParameterType = SQL_CHAR=1, ColumnSize = 0, DecimalDigits = 0, ParameterValuePtr = "Abha", BufferLength = 0, StrLen_or_IndPtr = SQL_NTS=-3, SQL_LEN_DATA_AT_EXEC = FALSE,
Buffer Size = 600
Return: SQL_SUCCESS=0
- the debug log (mylog_????.log) file (you will have to enable the mylog driver option)
attached
Song X. Gao
Solutions ArchitectEmail xgao@senturus.com
Mobile 732 406 6347
senturus.com
Hiroshi,
Thank you for looking into this issue.
I ran the same test case and new logs attached.
Dvdrental is a database I found online and imported into postgrsql 10.
Select city, ? as I from public.city where city.city = ?
Is the SQL I passed to SQLPrepare. Yes, city is a table and within city table there is a city column ;). Question marks (?) are parameters, I passed values via SQLBindParameter.
Thanks,
Song Gao
From: Inoue, Hiroshi [mailto:h-inoue@dream.email.ne.jp]
Sent: Wednesday, July 31, 2019 7:51 AM
To: Xuesong Gao <xgao@senturus.com>
Cc: pgsql-odbc@postgresql.org
Subject: Re: psqlodbc - prepared statement crash
Hi,
Sorry for the late reply.
You seem to turn on Mylog optipn of Global settings only.
Could you please turn on Mylog option of Advanced Options (DataSource) as well?
I have a question.
What does "city = ..." of
StatementText = "select city, ? as i from public.city where city = ...",
mean?
regards,
Hiroshi Inoue
On 2019/07/26 22:56, Xuesong Gao wrote:
I am using MS ODBCTest tool for testing purpose here, and it crashed after I did following steps:
1. Full connect to DSN.
2. SQLPrepare: select city, ? as i from public.city where city = ?
3. SQLBindParameter: number 1, value type SQL_C_CHAR, parameter type SQL_CHAR, value 1;
4. SQLBindParameter: number 2, value type SQL_C_CHAR, parameter type SQL_CHAR, value Abha;
5. SQLExecute
- your ODBC driver version
Unicode x64, 9.06.05.00
- your PostgreSQL database version
PostgreSQL 10, sample database dvdrental
- any error messages you saw on the screen
messages in ODBCTest tool console:
Full Connect(Default)
Env. Attr. SQL_ATTR_ODBC_VERSION set to SQL_OV_ODBC3
Successfully connected to DSN 'dvdrental'.
SQLPrepare:
In: StatementHandle = 0x00000000047221C0, StatementText = "select city, ? as i from public.city where city = ...", TextLength = 51
Return: SQL_SUCCESS=0
SQLBindParameter:
In: StatementHandle = 0x00000000047221C0, ParameterNumber = 1, InputOutputtype = SQL_PARAM_INPUT=1, ValueType = SQL_C_CHAR=1,
ParameterType = SQL_CHAR=1, ColumnSize = 0, DecimalDigits = 0, ParameterValuePtr = "1", BufferLength = 0, StrLen_or_IndPtr = SQL_NTS=-3, SQL_LEN_DATA_AT_EXEC = FALSE,
Buffer Size = 600
Return: SQL_SUCCESS=0
SQLBindParameter:
In: StatementHandle = 0x00000000047221C0, ParameterNumber = 2, InputOutputtype = SQL_PARAM_INPUT=1, ValueType = SQL_C_CHAR=1,
ParameterType = SQL_CHAR=1, ColumnSize = 0, DecimalDigits = 0, ParameterValuePtr = "Abha", BufferLength = 0, StrLen_or_IndPtr = SQL_NTS=-3, SQL_LEN_DATA_AT_EXEC = FALSE,
Buffer Size = 600
Return: SQL_SUCCESS=0
- the debug log (mylog_????.log) file (you will have to enable the mylog driver option)
attached
Song X. Gao
Solutions ArchitectEmail xgao@senturus.com
Mobile 732 406 6347
senturus.com