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
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();
}

View File

@ -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();

View File

@ -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;

View File

@ -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

View File

@ -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]}')"));