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:
parent
54d6769456
commit
4a8350da23
@ -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 **>(¶m),
|
reinterpret_cast<void **>(¶m),
|
||||||
@ -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 **>(¶m),
|
reinterpret_cast<void **>(¶m),
|
||||||
@ -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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user