Skip to content

Commit c819a7a

Browse files
committed
Fix MDEV-27055 (regression of MDEV-24493)
1 parent 94fb9d9 commit c819a7a

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

storage/connect/odbconn.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1422,7 +1422,7 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
14221422
PGLOBAL& g = m_G;
14231423
void *buffer;
14241424
bool b;
1425-
UWORD n;
1425+
UWORD n, k;
14261426
SWORD len, tp, ncol = 0;
14271427
ODBCCOL *colp;
14281428
RETCODE rc;
@@ -1489,15 +1489,16 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
14891489
} else {
14901490
do {
14911491
rc = SQLExecDirect(hstmt, (PUCHAR)sql, SQL_NTS);
1492-
} while (rc == SQL_STILL_EXECUTING);
1492+
} while (rc == SQL_STILL_EXECUTING);
14931493

14941494
if (!Check(rc))
14951495
ThrowDBX(rc, "SQLExecDirect", hstmt);
14961496

14971497
do {
14981498
rc = SQLNumResultCols(hstmt, &ncol);
1499-
} while (rc == SQL_STILL_EXECUTING);
1499+
} while (rc == SQL_STILL_EXECUTING);
15001500

1501+
k = 0; // used for column number
15011502
} // endif Srcdef
15021503

15031504
for (n = 0, colp = tocols; colp; colp = (PODBCCOL)colp->GetNext())
@@ -1519,18 +1520,23 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
15191520
sprintf(m_G->Message, MSG(INV_COLUMN_TYPE),
15201521
colp->GetResultType(), SVP(colp->GetName()));
15211522
ThrowDBX(m_G->Message);
1522-
} // endif tp
1523+
} // endif tp
1524+
1525+
if (m_Tdb->Srcdef)
1526+
k = colp->GetIndex();
1527+
else
1528+
k++;
15231529

15241530
if (trace(1))
15251531
htrc("Binding col=%u type=%d buf=%p len=%d slen=%p\n",
1526-
n, tp, buffer, len, colp->GetStrLen());
1532+
k, tp, buffer, len, colp->GetStrLen());
15271533

1528-
rc = SQLBindCol(hstmt, colp->GetIndex(), tp, buffer, len, colp->GetStrLen());
1534+
rc = SQLBindCol(hstmt, k, tp, buffer, len, colp->GetStrLen());
15291535

15301536
if (!Check(rc))
15311537
ThrowDBX(rc, "SQLBindCol", hstmt);
15321538

1533-
} // endif pcol
1539+
} // endif colp
15341540

15351541
} catch(DBX *x) {
15361542
if (trace(1))

0 commit comments

Comments
 (0)