From 4bc230ad05a0d0fdbc8cd6be53f1123f8302512f Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Fri, 5 Jan 2024 13:26:36 +0100 Subject: [PATCH] SQL: rename enablePositionalBinding() to setPositionalBindingEnabled() ... and the getter to isPositionalBindingEnabled() for QSqlQuery and QSqlResult. This amends e532933a2a9ff0219f0179880e05c95e0ec5e19d [ChangeLog][QtSql][QSqlQuery] Add setPositionalBindingEnabled() to be able to disable positional binding. Task-number: QTBUG-119952 Fixes: QTBUG-120548 Change-Id: I0a0afb652d0fc9421f5692b0927a66b2a9b7b854 Reviewed-by: Friedemann Kleint (cherry picked from commit b1e5d9275d4cf6152e4e9456b1bc2d585a5512e2) Reviewed-by: Qt Cherry-pick Bot --- src/sql/kernel/qsqlquery.cpp | 28 ++++++++++--------- src/sql/kernel/qsqlquery.h | 4 +-- src/sql/kernel/qsqlresult.cpp | 4 +-- src/sql/kernel/qsqlresult.h | 4 +-- .../sql/kernel/qsqlquery/tst_qsqlquery.cpp | 8 ++++-- 5 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index d2147fc9957..778e04ceb65 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -1270,31 +1270,33 @@ QSql::NumericalPrecisionPolicy QSqlQuery::numericalPrecisionPolicy() const } /*! - Enables or disables the positional binding for this query, depending - on \a enable. - This is useful when the query contains a '?' which must not be handled - as a positional binding parameter but, for example, as a JSON operator - for a Postgres database. + Enables or disables the positional \l {Approaches to Binding Values}{binding} + for this query, depending on \a enable (default is \c true). + Disabling positional bindings is useful if the query itself contains a '?' + which must not be handled as a positional binding parameter but, for example, + as a JSON operator for a PostgreSQL database. + This function will have no effect when the database has native - support for positional bindings with question marks. + support for positional bindings with question marks (see also + \l{QSqlDriver::PositionalPlaceholders}). \since 6.7 - \sa positionalBindingEnabled() + \sa isPositionalBindingEnabled() */ -void QSqlQuery::enablePositionalBinding(bool enable) +void QSqlQuery::setPositionalBindingEnabled(bool enable) { - d->sqlResult->enablePositionalBinding(enable); + d->sqlResult->setPositionalBindingEnabled(enable); } /*! - Returns true when the positional binding is currently enabled. + Returns \c true if the positional binding is currently enabled. \since 6.7 - \sa enablePositionalBinding() + \sa setPositionalBindingEnabled() */ -bool QSqlQuery::positionalBindingEnabled() const +bool QSqlQuery::isPositionalBindingEnabled() const { - return d->sqlResult->positionalBindingEnabled(); + return d->sqlResult->isPositionalBindingEnabled(); } diff --git a/src/sql/kernel/qsqlquery.h b/src/sql/kernel/qsqlquery.h index e0071575d88..c02c9d54903 100644 --- a/src/sql/kernel/qsqlquery.h +++ b/src/sql/kernel/qsqlquery.h @@ -69,8 +69,8 @@ public: void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; - void enablePositionalBinding(bool enable); - bool positionalBindingEnabled() const; + void setPositionalBindingEnabled(bool enable); + bool isPositionalBindingEnabled() const; bool seek(int i, bool relative = false); bool next(); diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 97e2757f0b0..cdf17b0dac4 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -1016,7 +1016,7 @@ QSql::NumericalPrecisionPolicy QSqlResult::numericalPrecisionPolicy() const /*! \internal */ -void QSqlResult::enablePositionalBinding(bool enable) +void QSqlResult::setPositionalBindingEnabled(bool enable) { Q_D(QSqlResult); d->positionalBindingEnabled = enable; @@ -1024,7 +1024,7 @@ void QSqlResult::enablePositionalBinding(bool enable) /*! \internal */ -bool QSqlResult::positionalBindingEnabled() const +bool QSqlResult::isPositionalBindingEnabled() const { Q_D(const QSqlResult); return d->positionalBindingEnabled; diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h index 2307c12b6f4..42a4d8b686d 100644 --- a/src/sql/kernel/qsqlresult.h +++ b/src/sql/kernel/qsqlresult.h @@ -102,8 +102,8 @@ protected: virtual void detachFromResultSet(); virtual void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; - void enablePositionalBinding(bool enable); - bool positionalBindingEnabled() const; + void setPositionalBindingEnabled(bool enable); + bool isPositionalBindingEnabled() const; virtual bool nextResult(); void resetBindCount(); // HACK diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 70b71d66541..53f2ea48016 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -5067,7 +5067,8 @@ void tst_QSqlQuery::positionalBindingEnabled() QVERIFY_SQL(qry, exec("CREATE TABLE " + tableName + " (integer_col integer)")); QVERIFY_SQL(qry, exec("INSERT INTO " + tableName + "(integer_col) VALUES(42)")); - qry.enablePositionalBinding(true); + qry.setPositionalBindingEnabled(true); + QCOMPARE(qry.isPositionalBindingEnabled(), true); QVERIFY_SQL(qry, prepare("SELECT integer_col FROM " + tableName + " WHERE integer_col = :integer_val")); qry.bindValue(":integer_val", 42); QVERIFY_SQL(qry, exec()); @@ -5079,7 +5080,8 @@ void tst_QSqlQuery::positionalBindingEnabled() QVERIFY_SQL(qry, next()); QCOMPARE(qry.value(0).toInt(), 42); - qry.enablePositionalBinding(false); + qry.setPositionalBindingEnabled(false); + QCOMPARE(qry.isPositionalBindingEnabled(), false); QVERIFY_SQL(qry, prepare("SELECT integer_col FROM " + tableName + " WHERE integer_col = :integer_val")); qry.bindValue(":integer_val", 42); QVERIFY_SQL(qry, exec()); @@ -5109,7 +5111,7 @@ void tst_QSqlQuery::psqlJsonOperator() const QString &tableName = ts.tableName(); QSqlQuery qry(db); - qry.enablePositionalBinding(false); // don't allow / handle '?' as placeholder + qry.setPositionalBindingEnabled(false); // don't allow / handle '?' as placeholder QVERIFY_SQL(qry, exec("CREATE TABLE " + tableName + " (integer_col integer, json_col jsonb)")); QVERIFY_SQL(qry, exec("INSERT INTO " + tableName + "(integer_col, json_col) VALUES(42, '{\"a\": [1, 2]}')")); QVERIFY_SQL(qry, exec("INSERT INTO " + tableName + "(integer_col, json_col) VALUES(43, '{\"b\": [3, 4]}')"));