SQL/OCI: do not shadow QSqlCachedResultPrivate::sql

Rename QOCIResultPrivate::sql to QOCIResultPrivate::stmtp to avoid
shadowing of the sql member from base class.
Remove some useless casts as a drive-by.

Task-number: QTBUG-136024
Change-Id: I2a5951991039c4de7aecc29f9161dede7b4f3473
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 3208ad494c7c03b964487787e246aedc444397dc)
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
This commit is contained in:
Christian Ehrlicher 2025-04-18 21:16:41 +02:00
parent 54d6769456
commit 4a8350da23
2 changed files with 54 additions and 56 deletions

View File

@ -218,13 +218,13 @@ public:
OCIEnv *env; OCIEnv *env;
OCIError *err = nullptr; OCIError *err = nullptr;
OCISvcCtx *&svc; OCISvcCtx *&svc;
OCIStmt *sql = nullptr; OCIStmt *stmtp = nullptr;
bool transaction; bool transaction;
int serverVersion; int serverVersion;
int prefetchRows, prefetchMem; int prefetchRows, prefetchMem;
void setStatementAttributes(); void setStatementAttributes();
int bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, int pos, int bindValue(OCIStmt *stmtp, OCIBind **hbnd, OCIError *err, int pos,
const QVariant &val, dvoid *indPtr, ub4 *tmpSize, TempStorage &tmpStorage); const QVariant &val, dvoid *indPtr, ub4 *tmpSize, TempStorage &tmpStorage);
int bindValues(QVariantList &values, IndicatorArray &indicators, SizeArray &tmpSizes, int bindValues(QVariantList &values, IndicatorArray &indicators, SizeArray &tmpSizes,
TempStorage &tmpStorage); TempStorage &tmpStorage);
@ -273,12 +273,12 @@ public:
void QOCIResultPrivate::setStatementAttributes() void QOCIResultPrivate::setStatementAttributes()
{ {
Q_ASSERT(sql); Q_ASSERT(stmtp);
int r = 0; int r = 0;
if (prefetchRows >= 0) { if (prefetchRows >= 0) {
r = OCIAttrSet(sql, r = OCIAttrSet(stmtp,
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
&prefetchRows, &prefetchRows,
0, 0,
@ -289,7 +289,7 @@ void QOCIResultPrivate::setStatementAttributes()
" Couldn't set OCI_ATTR_PREFETCH_ROWS: ", err); " Couldn't set OCI_ATTR_PREFETCH_ROWS: ", err);
} }
if (prefetchMem >= 0) { if (prefetchMem >= 0) {
r = OCIAttrSet(sql, r = OCIAttrSet(stmtp,
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
&prefetchMem, &prefetchMem,
0, 0,
@ -301,7 +301,7 @@ void QOCIResultPrivate::setStatementAttributes()
} }
} }
int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, int pos, int QOCIResultPrivate::bindValue(OCIStmt *stmtp, OCIBind **hbnd, OCIError *err, int pos,
const QVariant &val, dvoid *indPtr, ub4 *tmpSize, TempStorage &tmpStorage) const QVariant &val, dvoid *indPtr, ub4 *tmpSize, TempStorage &tmpStorage)
{ {
int r = OCI_SUCCESS; int r = OCI_SUCCESS;
@ -309,7 +309,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
switch (val.typeId()) { switch (val.typeId()) {
case QMetaType::QByteArray: case QMetaType::QByteArray:
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
isOutValue(pos) isOutValue(pos)
? const_cast<char *>(reinterpret_cast<QByteArray *>(data)->constData()) ? const_cast<char *>(reinterpret_cast<QByteArray *>(data)->constData())
@ -321,7 +321,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
case QMetaType::QDate: case QMetaType::QDate:
case QMetaType::QDateTime: { case QMetaType::QDateTime: {
QOCIDateTime *ptr = new QOCIDateTime(env, err, val.toDateTime()); QOCIDateTime *ptr = new QOCIDateTime(env, err, val.toDateTime());
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
&ptr->dateTime, &ptr->dateTime,
sizeof(OCIDateTime *), sizeof(OCIDateTime *),
@ -330,7 +330,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
break; break;
} }
case QMetaType::Int: case QMetaType::Int:
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
// if it's an out value, the data is already detached // if it's an out value, the data is already detached
// so the const cast is safe. // so the const cast is safe.
@ -339,7 +339,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
SQLT_INT, indPtr, 0, 0, 0, 0, OCI_DEFAULT); SQLT_INT, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
break; break;
case QMetaType::UInt: case QMetaType::UInt:
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
// if it's an out value, the data is already detached // if it's an out value, the data is already detached
// so the const cast is safe. // so the const cast is safe.
@ -350,7 +350,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
case QMetaType::LongLong: case QMetaType::LongLong:
{ {
QByteArray ba = qMakeOCINumber(val.toLongLong(), err); QByteArray ba = qMakeOCINumber(val.toLongLong(), err);
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
ba.data(), ba.data(),
ba.size(), ba.size(),
@ -361,7 +361,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
case QMetaType::ULongLong: case QMetaType::ULongLong:
{ {
QByteArray ba = qMakeOCINumber(val.toULongLong(), err); QByteArray ba = qMakeOCINumber(val.toULongLong(), err);
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
ba.data(), ba.data(),
ba.size(), ba.size(),
@ -370,7 +370,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
break; break;
} }
case QMetaType::Double: case QMetaType::Double:
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
// if it's an out value, the data is already detached // if it's an out value, the data is already detached
// so the const cast is safe. // so the const cast is safe.
@ -381,7 +381,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
case QMetaType::QString: { case QMetaType::QString: {
const QString s = val.toString(); const QString s = val.toString();
if (isBinaryValue(pos)) { if (isBinaryValue(pos)) {
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
const_cast<ushort *>(s.utf16()), const_cast<ushort *>(s.utf16()),
s.length() * sizeof(QChar), s.length() * sizeof(QChar),
@ -389,7 +389,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
break; break;
} else if (!isOutValue(pos)) { } else if (!isOutValue(pos)) {
// don't detach the string // don't detach the string
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
// safe since oracle doesn't touch OUT values // safe since oracle doesn't touch OUT values
const_cast<ushort *>(s.utf16()), const_cast<ushort *>(s.utf16()),
@ -406,7 +406,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
if (val.canConvert<QOCIRowIdPointer>() && !isOutValue(pos)) { if (val.canConvert<QOCIRowIdPointer>() && !isOutValue(pos)) {
// use a const pointer to prevent a detach // use a const pointer to prevent a detach
const QOCIRowIdPointer rptr = qvariant_cast<QOCIRowIdPointer>(val); const QOCIRowIdPointer rptr = qvariant_cast<QOCIRowIdPointer>(val);
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
// it's an IN value, so const_cast is ok // it's an IN value, so const_cast is ok
const_cast<OCIRowid **>(&rptr->id), const_cast<OCIRowid **>(&rptr->id),
@ -417,9 +417,9 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
QOCIResultPrivate *resPrivate = static_cast<QOCIResultPrivate *>(res->d_ptr); QOCIResultPrivate *resPrivate = static_cast<QOCIResultPrivate *>(res->d_ptr);
if (res->internal_prepare()) { if (res->internal_prepare()) {
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
&resPrivate->sql, &resPrivate->stmtp,
(sb4)0, (sb4)0,
SQLT_RSET, indPtr, 0, 0, 0, 0, OCI_DEFAULT); SQLT_RSET, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
@ -436,13 +436,13 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
if (isOutValue(pos)) { if (isOutValue(pos)) {
ba.reserve((s.capacity() + 1) * sizeof(QChar)); ba.reserve((s.capacity() + 1) * sizeof(QChar));
*tmpSize = ba.size(); *tmpSize = ba.size();
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
ba.data(), ba.data(),
ba.capacity(), ba.capacity(),
SQLT_STR, indPtr, tmpSize, 0, 0, 0, OCI_DEFAULT); SQLT_STR, indPtr, tmpSize, 0, 0, 0, OCI_DEFAULT);
} else { } else {
r = OCIBindByPos2(sql, hbnd, err, r = OCIBindByPos2(stmtp, hbnd, err,
pos + 1, pos + 1,
ba.data(), ba.data(),
ba.size(), ba.size(),
@ -473,7 +473,7 @@ int QOCIResultPrivate::bindValues(QVariantList &values, IndicatorArray &indicato
sb2 *indPtr = &indicators[i]; sb2 *indPtr = &indicators[i];
*indPtr = QSqlResultPrivate::isVariantNull(val) ? -1 : 0; *indPtr = QSqlResultPrivate::isVariantNull(val) ? -1 : 0;
bindValue(sql, &hbnd, err, i, val, indPtr, &tmpSizes[i], tmpStorage); bindValue(stmtp, &hbnd, err, i, val, indPtr, &tmpSizes[i], tmpStorage);
} }
return r; return r;
} }
@ -851,7 +851,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
sb4 parmStatus = 0; sb4 parmStatus = 0;
ub4 count = 1; ub4 count = 1;
int idx = 0; int idx = 0;
parmStatus = OCIParamGet(d->sql, parmStatus = OCIParamGet(d->stmtp,
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
d->err, d->err,
reinterpret_cast<void **>(&param), reinterpret_cast<void **>(&param),
@ -889,7 +889,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
qCWarning(lcOci, "QOCICols: Unable to allocate the OCIDateTime descriptor"); qCWarning(lcOci, "QOCICols: Unable to allocate the OCIDateTime descriptor");
break; break;
} }
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -900,7 +900,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
0, 0, OCI_DEFAULT); 0, 0, OCI_DEFAULT);
break; break;
case QMetaType::Double: case QMetaType::Double:
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -911,7 +911,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
0, 0, OCI_DEFAULT); 0, 0, OCI_DEFAULT);
break; break;
case QMetaType::Int: case QMetaType::Int:
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -922,7 +922,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
0, 0, OCI_DEFAULT); 0, 0, OCI_DEFAULT);
break; break;
case QMetaType::LongLong: case QMetaType::LongLong:
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -936,7 +936,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
// RAW and LONG RAW fields can't be bound to LOB locators // RAW and LONG RAW fields can't be bound to LOB locators
if (ofi.oraType == SQLT_BIN) { if (ofi.oraType == SQLT_BIN) {
// qDebug("binding SQLT_BIN"); // qDebug("binding SQLT_BIN");
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -947,7 +947,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
0, 0, OCI_DYNAMIC_FETCH); 0, 0, OCI_DYNAMIC_FETCH);
} else if (ofi.oraType == SQLT_LBI) { } else if (ofi.oraType == SQLT_LBI) {
// qDebug("binding SQLT_LBI"); // qDebug("binding SQLT_LBI");
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -957,7 +957,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
&(fieldInf[idx].ind), &(fieldInf[idx].ind),
0, 0, OCI_DYNAMIC_FETCH); 0, 0, OCI_DYNAMIC_FETCH);
} else if (ofi.oraType == SQLT_CLOB) { } else if (ofi.oraType == SQLT_CLOB) {
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -968,7 +968,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
0, 0, OCI_DEFAULT); 0, 0, OCI_DEFAULT);
} else { } else {
// qDebug("binding SQLT_BLOB"); // qDebug("binding SQLT_BLOB");
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -981,7 +981,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
break; break;
case QMetaType::QString: case QMetaType::QString:
if (ofi.oraType == SQLT_LNG) { if (ofi.oraType == SQLT_LNG) {
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -993,7 +993,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
} else { } else {
dataSize += dataSize + sizeof(QChar); dataSize += dataSize + sizeof(QChar);
//qDebug("OCIDefineByPosStr(%d): %d", count, dataSize); //qDebug("OCIDefineByPosStr(%d): %d", count, dataSize);
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -1010,7 +1010,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
// this should make enough space even with character encoding // this should make enough space even with character encoding
dataSize = (dataSize + 1) * sizeof(utext) ; dataSize = (dataSize + 1) * sizeof(utext) ;
//qDebug("OCIDefineByPosDef(%d): %d", count, dataSize); //qDebug("OCIDefineByPosDef(%d): %d", count, dataSize);
r = OCIDefineByPos(d->sql, r = OCIDefineByPos(d->stmtp,
&dfn, &dfn,
d->err, d->err,
count, count,
@ -1026,7 +1026,7 @@ QOCICols::QOCICols(qsizetype size, QOCIResultPrivate* dp)
fieldInf[idx].def = dfn; fieldInf[idx].def = dfn;
++count; ++count;
++idx; ++idx;
parmStatus = OCIParamGet(d->sql, parmStatus = OCIParamGet(d->stmtp,
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
d->err, d->err,
reinterpret_cast<void **>(&param), reinterpret_cast<void **>(&param),
@ -1073,7 +1073,7 @@ int QOCICols::readPiecewise(QVariantList &values, int index)
bool nullField; bool nullField;
do { do {
r = OCIStmtGetPieceInfo(d->sql, d->err, reinterpret_cast<void **>(&dfn), &typep, r = OCIStmtGetPieceInfo(d->stmtp, d->err, reinterpret_cast<void **>(&dfn), &typep,
&in_outp, &iterp, &idxp, &piecep); &in_outp, &iterp, &idxp, &piecep);
if (r != OCI_SUCCESS) if (r != OCI_SUCCESS)
qOraWarning("OCIResultPrivate::readPiecewise: unable to get piece info:", d->err); qOraWarning("OCIResultPrivate::readPiecewise: unable to get piece info:", d->err);
@ -1086,7 +1086,7 @@ int QOCICols::readPiecewise(QVariantList &values, int index)
&chunkSize, piecep, NULL, NULL); &chunkSize, piecep, NULL, NULL);
if (r != OCI_SUCCESS) if (r != OCI_SUCCESS)
qOraWarning("OCIResultPrivate::readPiecewise: unable to set piece info:", d->err); qOraWarning("OCIResultPrivate::readPiecewise: unable to set piece info:", d->err);
status = OCIStmtFetch (d->sql, d->err, 1, OCI_FETCH_NEXT, OCI_DEFAULT); status = OCIStmtFetch (d->stmtp, d->err, 1, OCI_FETCH_NEXT, OCI_DEFAULT);
if (status == -1) { if (status == -1) {
sb4 errcode; sb4 errcode;
OCIErrorGet(d->err, 1, 0, &errcode, 0, 0,OCI_HTYPE_ERROR); OCIErrorGet(d->err, 1, 0, &errcode, 0, 0,OCI_HTYPE_ERROR);
@ -1311,7 +1311,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVariantList &boundValues, bool a
singleCol.indicators = new sb2[1]; singleCol.indicators = new sb2[1];
*singleCol.indicators = QSqlResultPrivate::isVariantNull(boundValues.at(i)) ? -1 : 0; *singleCol.indicators = QSqlResultPrivate::isVariantNull(boundValues.at(i)) ? -1 : 0;
r = d->bindValue(d->sql, &singleCol.bindh, d->err, i, r = d->bindValue(d->stmtp, &singleCol.bindh, d->err, i,
boundValues.at(i), singleCol.indicators, &tmpSizes[i], tmpStorage); boundValues.at(i), singleCol.indicators, &tmpSizes[i], tmpStorage);
if (r != OCI_SUCCESS && r != OCI_SUCCESS_WITH_INFO) { if (r != OCI_SUCCESS && r != OCI_SUCCESS_WITH_INFO) {
@ -1483,7 +1483,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVariantList &boundValues, bool a
#ifdef QOCI_DEBUG #ifdef QOCI_DEBUG
qCDebug(lcOci, "OCIBindByPos2(%p, %p, %p, %d, %p, %d, %d, %p, %p, 0, %d, %p, OCI_DEFAULT)", qCDebug(lcOci, "OCIBindByPos2(%p, %p, %p, %d, %p, %d, %d, %p, %p, 0, %d, %p, OCI_DEFAULT)",
d->sql, &bindColumn.bindh, d->err, i + 1, bindColumn.data, d->stmtp, &bindColumn.bindh, d->err, i + 1, bindColumn.data,
bindColumn.maxLen, bindColumn.bindAs, bindColumn.indicators, bindColumn.lengths, bindColumn.maxLen, bindColumn.bindAs, bindColumn.indicators, bindColumn.lengths,
arrayBind ? bindColumn.maxarr_len : 0, arrayBind ? &bindColumn.curelep : 0); arrayBind ? bindColumn.maxarr_len : 0, arrayBind ? &bindColumn.curelep : 0);
@ -1496,7 +1496,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVariantList &boundValues, bool a
// binding the column // binding the column
r = OCIBindByPos2( r = OCIBindByPos2(
d->sql, &bindColumn.bindh, d->err, i + 1, d->stmtp, &bindColumn.bindh, d->err, i + 1,
bindColumn.data, bindColumn.data,
bindColumn.maxLen, bindColumn.maxLen,
bindColumn.bindAs, bindColumn.bindAs,
@ -1536,7 +1536,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVariantList &boundValues, bool a
} }
//finally we can execute //finally we can execute
r = OCIStmtExecute(d->svc, d->sql, d->err, r = OCIStmtExecute(d->svc, d->stmtp, d->err,
arrayBind ? 1 : columns[0].recordCount, arrayBind ? 1 : columns[0].recordCount,
0, NULL, NULL, 0, NULL, NULL,
d->transaction ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS); d->transaction ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS);
@ -1777,7 +1777,7 @@ void QOCICols::getValues(QVariantList &v, int index)
QOCIResultPrivate::QOCIResultPrivate(QOCIResult *q, const QOCIDriver *drv) QOCIResultPrivate::QOCIResultPrivate(QOCIResult *q, const QOCIDriver *drv)
: QSqlCachedResultPrivate(q, drv), : QSqlCachedResultPrivate(q, drv),
env(drv_d_func()->env), env(drv_d_func()->env),
svc(const_cast<OCISvcCtx*&>(drv_d_func()->svc)), svc(drv_d_func()->svc),
transaction(drv_d_func()->transaction), transaction(drv_d_func()->transaction),
serverVersion(drv_d_func()->serverVersion), serverVersion(drv_d_func()->serverVersion),
prefetchRows(drv_d_func()->prefetchRows), prefetchRows(drv_d_func()->prefetchRows),
@ -1796,7 +1796,7 @@ QOCIResultPrivate::~QOCIResultPrivate()
{ {
delete cols; delete cols;
if (sql && OCIHandleFree(sql, OCI_HTYPE_STMT) != OCI_SUCCESS) if (stmtp && OCIHandleFree(stmtp, OCI_HTYPE_STMT) != OCI_SUCCESS)
qCWarning(lcOci, "~QOCIResult: unable to free statement handle"); qCWarning(lcOci, "~QOCIResult: unable to free statement handle");
if (OCIHandleFree(err, OCI_HTYPE_ERROR) != OCI_SUCCESS) if (OCIHandleFree(err, OCI_HTYPE_ERROR) != OCI_SUCCESS)
@ -1819,7 +1819,7 @@ QOCIResult::~QOCIResult()
QVariant QOCIResult::handle() const QVariant QOCIResult::handle() const
{ {
Q_D(const QOCIResult); Q_D(const QOCIResult);
return QVariant::fromValue(d->sql); return QVariant::fromValue(d->stmtp);
} }
bool QOCIResult::reset (const QString& query) bool QOCIResult::reset (const QString& query)
@ -1837,7 +1837,7 @@ bool QOCIResult::gotoNext(QSqlCachedResult::ValueCache &values, int index)
bool piecewise = false; bool piecewise = false;
int r = OCI_SUCCESS; int r = OCI_SUCCESS;
r = OCIStmtFetch(d->sql, d->err, 1, OCI_FETCH_NEXT, OCI_DEFAULT); r = OCIStmtFetch(d->stmtp, d->err, 1, OCI_FETCH_NEXT, OCI_DEFAULT);
if (index < 0) //not interested in values if (index < 0) //not interested in values
return r == OCI_SUCCESS || r == OCI_SUCCESS_WITH_INFO; return r == OCI_SUCCESS || r == OCI_SUCCESS_WITH_INFO;
@ -1893,7 +1893,7 @@ int QOCIResult::numRowsAffected()
{ {
Q_D(QOCIResult); Q_D(QOCIResult);
int rowCount; int rowCount;
OCIAttrGet(d->sql, OCIAttrGet(d->stmtp,
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
&rowCount, &rowCount,
NULL, NULL,
@ -1913,16 +1913,16 @@ bool QOCIResult::internal_prepare()
d->cols = nullptr; d->cols = nullptr;
QSqlCachedResult::cleanup(); QSqlCachedResult::cleanup();
if (d->sql) { if (d->stmtp) {
r = OCIHandleFree(d->sql, OCI_HTYPE_STMT); r = OCIHandleFree(d->stmtp, OCI_HTYPE_STMT);
if (r == OCI_SUCCESS) if (r == OCI_SUCCESS)
d->sql = nullptr; d->stmtp = nullptr;
else else
qOraWarning("QOCIResult::prepare: unable to free statement handle:", d->err); qOraWarning("QOCIResult::prepare: unable to free statement handle:", d->err);
} }
r = OCIHandleAlloc(d->env, r = OCIHandleAlloc(d->env,
reinterpret_cast<void **>(&d->sql), reinterpret_cast<void **>(&d->stmtp),
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
0, nullptr); 0, nullptr);
if (r != OCI_SUCCESS) { if (r != OCI_SUCCESS) {
@ -1948,7 +1948,7 @@ bool QOCIResult::prepare(const QString& query)
const OraText *txt = reinterpret_cast<const OraText *>(query.utf16()); const OraText *txt = reinterpret_cast<const OraText *>(query.utf16());
const auto len = ub4(query.length() * sizeof(QChar)); const auto len = ub4(query.length() * sizeof(QChar));
Q_D(QOCIResult); Q_D(QOCIResult);
r = OCIStmtPrepare(d->sql, r = OCIStmtPrepare(d->stmtp,
d->err, d->err,
txt, txt,
len, len,
@ -1974,7 +1974,7 @@ bool QOCIResult::exec()
IndicatorArray indicators(boundValueCount()); IndicatorArray indicators(boundValueCount());
SizeArray tmpSizes(boundValueCount()); SizeArray tmpSizes(boundValueCount());
r = OCIAttrGet(d->sql, r = OCIAttrGet(d->stmtp,
OCI_HTYPE_STMT, OCI_HTYPE_STMT,
&stmtType, &stmtType,
NULL, NULL,
@ -2009,7 +2009,7 @@ bool QOCIResult::exec()
if (!isCursor) { if (!isCursor) {
// execute // execute
r = OCIStmtExecute(d->svc, r = OCIStmtExecute(d->svc,
d->sql, d->stmtp,
d->err, d->err,
iters, iters,
0, 0,
@ -2029,7 +2029,7 @@ bool QOCIResult::exec()
if (stmtType == OCI_STMT_SELECT) { if (stmtType == OCI_STMT_SELECT) {
ub4 parmCount = 0; ub4 parmCount = 0;
int r = OCIAttrGet(d->sql, OCI_HTYPE_STMT, reinterpret_cast<void **>(&parmCount), int r = OCIAttrGet(d->stmtp, OCI_HTYPE_STMT, reinterpret_cast<void **>(&parmCount),
0, OCI_ATTR_PARAM_COUNT, d->err); 0, OCI_ATTR_PARAM_COUNT, d->err);
if (r == 0 && !d->cols) if (r == 0 && !d->cols)
d->cols = new QOCICols(parmCount, d); d->cols = new QOCICols(parmCount, d);
@ -2062,7 +2062,7 @@ QVariant QOCIResult::lastInsertId() const
if (isActive()) { if (isActive()) {
QOCIRowIdPointer ptr(new QOCIRowId(d->env)); QOCIRowIdPointer ptr(new QOCIRowId(d->env));
int r = OCIAttrGet(d->sql, OCI_HTYPE_STMT, ptr.constData()->id, int r = OCIAttrGet(d->stmtp, OCI_HTYPE_STMT, ptr.constData()->id,
0, OCI_ATTR_ROWID, d->err); 0, OCI_ATTR_ROWID, d->err);
if (r == OCI_SUCCESS) if (r == OCI_SUCCESS)
return QVariant::fromValue(ptr); return QVariant::fromValue(ptr);

View File

@ -70,8 +70,6 @@ protected:
class Q_EXPORT_SQLDRIVER_OCI QOCIResult : public QSqlCachedResult class Q_EXPORT_SQLDRIVER_OCI QOCIResult : public QSqlCachedResult
{ {
friend class QOCIDriver;
friend class QOCIResultPrivate;
friend class QOCICols; friend class QOCICols;
public: public:
explicit QOCIResult(const QOCIDriver * db); explicit QOCIResult(const QOCIDriver * db);