[bug-report]SQLRowCount set affected row numbers is incorrect when use SQLBindParameter and SQLSetStmtAttr for SQL_ATTR_PARAMSET_SIZE

From: Chang Lu <luchang0624(at)gmail(dot)com>
To: pgsql-odbc(at)lists(dot)postgresql(dot)org
Subject: [bug-report]SQLRowCount set affected row numbers is incorrect when use SQLBindParameter and SQLSetStmtAttr for SQL_ATTR_PARAMSET_SIZE
Date: 2024-07-18 09:54:14
Message-ID: CAFztmHGu2R6LDrBCWsamGEZziZWz7si7z8o4NXgww-6E=i=T3w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Hi,

I'm tring to insert and update a lot of records using SQLBindParameter
and SQLSetStmtAttr, but SQLRowsCount returned record number affected by
ONLY the LAST SINGLE SQL STATEMENT.

Here is my code sequence.

1.
status = SQLBindParameter(cda,
KCPD_SCAST(KCPD_SQLUSMALLINT, parm_pos),
KCPD_SCAST(KCPD_SQLSMALLINT, param_type),
ftype,
KCPD_SCAST(KCPD_SQLSMALLINT, mapped_sqltype),
temp_column_size,
sqltype == SQL_TYPE_TIMESTAMP ? kcpd_odbc_date_scale : 0,
KCPD_RCAST(KCPD_SQLPOINTER, v.p_v),
buflen,
v.p_len);

2.
status = SQLSetStmtAttr(cda,
SQL_ATTR_PARAMSET_SIZE,
KCPD_RCAST(void*, temp_iters),
SQL_NTS);

3.
status = SQLExecute(cda);

4.
SQLRowCount(cda, affected_num);

I inserted 1000 records into the table, but affected_num set by
SQLRowCount is 1

I searched the source code for this issue, and found in CC_send_query_append
(connection.c:2062)
[image: image.png]

My question is :
Is this line (connection.cpp : 2062) has a bug? I think it may use '+='
rather than '='.
lack of libpg.dll and headers, I cannot compile the source code and check
my idea.

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message Dave Cramer 2024-07-18 10:02:32 Re: [bug-report]SQLRowCount set affected row numbers is incorrect when use SQLBindParameter and SQLSetStmtAttr for SQL_ATTR_PARAMSET_SIZE
Previous Message Dave Cramer 2024-07-11 12:54:31 Re: DataType bytea Precision returning a negative value