SQL/OCI: Compile with MSVC/64bit
Make the oci driver compilable with MSVC 2022 / 64bit. One more reason to get those drivers checked within the CI. Pick-to: 6.7 6.5 Change-Id: Iec07adcd4cafde5e028ea306fb88e635a22e2234 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 2eb66149131b852f687302417cb2f76ef3184dbe)
This commit is contained in:
parent
cabd94bc67
commit
d8c7856312
@ -332,13 +332,13 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
|
|||||||
|
|
||||||
switch (val.typeId()) {
|
switch (val.typeId()) {
|
||||||
case QMetaType::QByteArray:
|
case QMetaType::QByteArray:
|
||||||
r = OCIBindByPos(sql, hbnd, err,
|
r = OCIBindByPos2(sql, 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())
|
||||||
: reinterpret_cast<QByteArray *>(data)->data(),
|
: reinterpret_cast<QByteArray *>(data)->data(),
|
||||||
reinterpret_cast<QByteArray *>(data)->size(),
|
reinterpret_cast<QByteArray *>(data)->size(),
|
||||||
SQLT_BIN, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
|
SQLT_BIN, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
|
||||||
break;
|
break;
|
||||||
case QMetaType::QTime:
|
case QMetaType::QTime:
|
||||||
case QMetaType::QDate:
|
case QMetaType::QDate:
|
||||||
@ -404,20 +404,20 @@ 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 = OCIBindByPos(sql, hbnd, err,
|
r = OCIBindByPos2(sql, hbnd, err,
|
||||||
pos + 1,
|
pos + 1,
|
||||||
const_cast<ushort *>(s.utf16()),
|
const_cast<ushort *>(s.utf16()),
|
||||||
s.length() * sizeof(QChar),
|
s.length() * sizeof(QChar),
|
||||||
SQLT_LNG, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
|
SQLT_LNG, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
|
||||||
break;
|
break;
|
||||||
} else if (!isOutValue(pos)) {
|
} else if (!isOutValue(pos)) {
|
||||||
// don't detach the string
|
// don't detach the string
|
||||||
r = OCIBindByPos(sql, hbnd, err,
|
r = OCIBindByPos2(sql, 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()),
|
||||||
(s.length() + 1) * sizeof(QChar),
|
(s.length() + 1) * sizeof(QChar),
|
||||||
SQLT_STR, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
|
SQLT_STR, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
|
||||||
if (r == OCI_SUCCESS)
|
if (r == OCI_SUCCESS)
|
||||||
setCharset(*hbnd, OCI_HTYPE_BIND);
|
setCharset(*hbnd, OCI_HTYPE_BIND);
|
||||||
break;
|
break;
|
||||||
@ -1477,7 +1477,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVariantList &boundValues, bool a
|
|||||||
|
|
||||||
case QMetaType::QString: {
|
case QMetaType::QString: {
|
||||||
const QString s = val.toString();
|
const QString s = val.toString();
|
||||||
columns[i].lengths[row] = (s.length() + 1) * sizeof(QChar);
|
columns[i].lengths[row] = ub2((s.length() + 1) * sizeof(QChar));
|
||||||
memcpy(dataPtr, s.utf16(), columns[i].lengths[row]);
|
memcpy(dataPtr, s.utf16(), columns[i].lengths[row]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1954,7 +1954,7 @@ bool QOCIResult::prepare(const QString& query)
|
|||||||
}
|
}
|
||||||
d->setStatementAttributes();
|
d->setStatementAttributes();
|
||||||
const OraText *txt = reinterpret_cast<const OraText *>(query.utf16());
|
const OraText *txt = reinterpret_cast<const OraText *>(query.utf16());
|
||||||
const int len = query.length() * sizeof(QChar);
|
const auto len = ub4(query.length() * sizeof(QChar));
|
||||||
r = OCIStmtPrepare(d->sql,
|
r = OCIStmtPrepare(d->sql,
|
||||||
d->err,
|
d->err,
|
||||||
txt,
|
txt,
|
||||||
@ -2246,7 +2246,7 @@ bool QOCIDriver::open(const QString & db,
|
|||||||
if (r == OCI_SUCCESS) {
|
if (r == OCI_SUCCESS) {
|
||||||
r = OCIServerAttach(d->srvhp, d->err,
|
r = OCIServerAttach(d->srvhp, d->err,
|
||||||
reinterpret_cast<const OraText *>(connectionString.utf16()),
|
reinterpret_cast<const OraText *>(connectionString.utf16()),
|
||||||
connectionString.length() * sizeof(QChar), OCI_DEFAULT);
|
sb4(connectionString.length() * sizeof(QChar)), OCI_DEFAULT);
|
||||||
}
|
}
|
||||||
Q_ASSERT(!d->svc);
|
Q_ASSERT(!d->svc);
|
||||||
if (r == OCI_SUCCESS || r == OCI_SUCCESS_WITH_INFO) {
|
if (r == OCI_SUCCESS || r == OCI_SUCCESS_WITH_INFO) {
|
||||||
@ -2262,11 +2262,11 @@ bool QOCIDriver::open(const QString & db,
|
|||||||
}
|
}
|
||||||
if (r == OCI_SUCCESS) {
|
if (r == OCI_SUCCESS) {
|
||||||
r = OCIAttrSet(d->authp, OCI_HTYPE_SESSION, const_cast<ushort *>(user.utf16()),
|
r = OCIAttrSet(d->authp, OCI_HTYPE_SESSION, const_cast<ushort *>(user.utf16()),
|
||||||
user.length() * sizeof(QChar), OCI_ATTR_USERNAME, d->err);
|
ub4(user.length() * sizeof(QChar)), OCI_ATTR_USERNAME, d->err);
|
||||||
}
|
}
|
||||||
if (r == OCI_SUCCESS) {
|
if (r == OCI_SUCCESS) {
|
||||||
r = OCIAttrSet(d->authp, OCI_HTYPE_SESSION, const_cast<ushort *>(password.utf16()),
|
r = OCIAttrSet(d->authp, OCI_HTYPE_SESSION, const_cast<ushort *>(password.utf16()),
|
||||||
password.length() * sizeof(QChar), OCI_ATTR_PASSWORD, d->err);
|
ub4(password.length() * sizeof(QChar)), OCI_ATTR_PASSWORD, d->err);
|
||||||
}
|
}
|
||||||
Q_ASSERT(!d->trans);
|
Q_ASSERT(!d->trans);
|
||||||
if (r == OCI_SUCCESS) {
|
if (r == OCI_SUCCESS) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user