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 <Friedemann.Kleint@qt.io>
(cherry picked from commit b1e5d9275d4cf6152e4e9456b1bc2d585a5512e2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Christian Ehrlicher 2024-01-05 13:26:36 +01:00 committed by Qt Cherry-pick Bot
parent 656576d3b4
commit 4bc230ad05
5 changed files with 26 additions and 22 deletions

View File

@ -1270,31 +1270,33 @@ QSql::NumericalPrecisionPolicy QSqlQuery::numericalPrecisionPolicy() const
} }
/*! /*!
Enables or disables the positional binding for this query, depending Enables or disables the positional \l {Approaches to Binding Values}{binding}
on \a enable. for this query, depending on \a enable (default is \c true).
This is useful when the query contains a '?' which must not be handled Disabling positional bindings is useful if the query itself contains a '?'
as a positional binding parameter but, for example, as a JSON operator which must not be handled as a positional binding parameter but, for example,
for a Postgres database. as a JSON operator for a PostgreSQL database.
This function will have no effect when the database has native 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 \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 \since 6.7
\sa enablePositionalBinding() \sa setPositionalBindingEnabled()
*/ */
bool QSqlQuery::positionalBindingEnabled() const bool QSqlQuery::isPositionalBindingEnabled() const
{ {
return d->sqlResult->positionalBindingEnabled(); return d->sqlResult->isPositionalBindingEnabled();
} }

View File

@ -69,8 +69,8 @@ public:
void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
void enablePositionalBinding(bool enable); void setPositionalBindingEnabled(bool enable);
bool positionalBindingEnabled() const; bool isPositionalBindingEnabled() const;
bool seek(int i, bool relative = false); bool seek(int i, bool relative = false);
bool next(); bool next();

View File

@ -1016,7 +1016,7 @@ QSql::NumericalPrecisionPolicy QSqlResult::numericalPrecisionPolicy() const
/*! \internal /*! \internal
*/ */
void QSqlResult::enablePositionalBinding(bool enable) void QSqlResult::setPositionalBindingEnabled(bool enable)
{ {
Q_D(QSqlResult); Q_D(QSqlResult);
d->positionalBindingEnabled = enable; d->positionalBindingEnabled = enable;
@ -1024,7 +1024,7 @@ void QSqlResult::enablePositionalBinding(bool enable)
/*! \internal /*! \internal
*/ */
bool QSqlResult::positionalBindingEnabled() const bool QSqlResult::isPositionalBindingEnabled() const
{ {
Q_D(const QSqlResult); Q_D(const QSqlResult);
return d->positionalBindingEnabled; return d->positionalBindingEnabled;

View File

@ -102,8 +102,8 @@ protected:
virtual void detachFromResultSet(); virtual void detachFromResultSet();
virtual void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy); virtual void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy);
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
void enablePositionalBinding(bool enable); void setPositionalBindingEnabled(bool enable);
bool positionalBindingEnabled() const; bool isPositionalBindingEnabled() const;
virtual bool nextResult(); virtual bool nextResult();
void resetBindCount(); // HACK void resetBindCount(); // HACK

View File

@ -5067,7 +5067,8 @@ void tst_QSqlQuery::positionalBindingEnabled()
QVERIFY_SQL(qry, exec("CREATE TABLE " + tableName + " (integer_col integer)")); QVERIFY_SQL(qry, exec("CREATE TABLE " + tableName + " (integer_col integer)"));
QVERIFY_SQL(qry, exec("INSERT INTO " + tableName + "(integer_col) VALUES(42)")); 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")); QVERIFY_SQL(qry, prepare("SELECT integer_col FROM " + tableName + " WHERE integer_col = :integer_val"));
qry.bindValue(":integer_val", 42); qry.bindValue(":integer_val", 42);
QVERIFY_SQL(qry, exec()); QVERIFY_SQL(qry, exec());
@ -5079,7 +5080,8 @@ void tst_QSqlQuery::positionalBindingEnabled()
QVERIFY_SQL(qry, next()); QVERIFY_SQL(qry, next());
QCOMPARE(qry.value(0).toInt(), 42); 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")); QVERIFY_SQL(qry, prepare("SELECT integer_col FROM " + tableName + " WHERE integer_col = :integer_val"));
qry.bindValue(":integer_val", 42); qry.bindValue(":integer_val", 42);
QVERIFY_SQL(qry, exec()); QVERIFY_SQL(qry, exec());
@ -5109,7 +5111,7 @@ void tst_QSqlQuery::psqlJsonOperator()
const QString &tableName = ts.tableName(); const QString &tableName = ts.tableName();
QSqlQuery qry(db); 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("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(42, '{\"a\": [1, 2]}')"));
QVERIFY_SQL(qry, exec("INSERT INTO " + tableName + "(integer_col, json_col) VALUES(43, '{\"b\": [3, 4]}')")); QVERIFY_SQL(qry, exec("INSERT INTO " + tableName + "(integer_col, json_col) VALUES(43, '{\"b\": [3, 4]}')"));