Akonadi
querybuilder.cpp
81 static void appendJoined(QString *statement, const QStringList &strings, QLatin1String glue = QLatin1String(", "))
133 void QueryBuilder::addJoin(JoinType joinType, const QString &table, const Query::Condition &condition)
135 Q_ASSERT((joinType == InnerJoin && (mType == Select || mType == Update)) || (joinType == LeftJoin && mType == Select));
147 void QueryBuilder::addJoin(JoinType joinType, const QString &table, const QString &col1, const QString &col2)
154 void QueryBuilder::addValueCondition(const QString &column, Query::CompareOperator op, const QVariant &value, ConditionType type)
160 void QueryBuilder::addColumnCondition(const QString &column, Query::CompareOperator op, const QString &column2, ConditionType type)
290 Q_ASSERT_X(mColumnValues.count() >= 1, "QueryBuilder::exec()", "At least one column needs to be changed");
333 Q_ASSERT_X(mType == Select, "QueryBuilder::exec()", "Order statements are only valid for SELECT queries");
390 if (!isBatch && static_cast<QMetaType::Type>(mBindValues[i].type()) == QMetaType::QVariantList) {
406 StorageDebugger::instance()->queryExecuted(reinterpret_cast<qint64>(DataStore::self()), mQuery, t.elapsed());
422 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction deadlock, retrying transaction";
430 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction deadlock, retrying transaction";
434 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction timeout, retrying transaction";
436 // Not sure retrying helps, maybe error is good enough.... but doesn't hurt to retry a few times before giving up.
439 } else if (mDatabaseType == DbType::Sqlite && !DbType::isSystemSQLite(DataStore::self()->database())) {
443 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction deadlock, retrying transaction";
448 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction timeout, retrying transaction";
533 if (cond.mComparedValue.canConvert(QVariant::List) && cond.mComparedValue.type() != QVariant::String
537 Q_ASSERT_X(!entries.isEmpty(), "QueryBuilder::buildWhereCondition()", "No values given for IN condition.");
const QSqlDriver * driver() const const
void append(const T &value)
bool isNull() const const
void setForwardOnly(bool forward)
QSqlRecord record() const const
std::optional< QSqlQuery > query(const QString &queryStatement)
Returns the cached (and prepared) query for queryStatement.
Definition: querycache.cpp:95
bool isEmpty() const const
void setLimit(int limit, int offset=-1)
Limits the amount of retrieved rows.
Definition: querybuilder.cpp:610
bool isValid() const const
int at() const const
QString number(int n, int base)
int size() const const
void setForUpdate(bool forUpdate=true)
Indicate to the database to acquire an exclusive lock on the rows already during SELECT statement.
Definition: querybuilder.cpp:644
bool isSelect() const const
QVariant lastInsertId() const const
void addColumnCondition(const QString &column, Query::CompareOperator op, const QString &column2, ConditionType type=WhereCondition)
Add a WHERE or HAVING condition which compares a column with another column.
Definition: querybuilder.cpp:160
QString getTableWithColumn(const QString &column) const
Returns concatenated table name with column name.
Definition: querybuilder.cpp:654
const T value(const Key &key, const T &defaultValue) const const
int count(const T &value) const const
JoinType
When the same table gets joined as both, Inner- and LeftJoin, it will be merged into a single InnerJo...
Definition: querybuilder.h:46
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
void setDistinct(bool distinct)
Specify whether duplicates should be included in the result.
Definition: querybuilder.cpp:605
QString & prepend(QChar ch)
bool isValid() const const
QString databaseText() const const
void clear()
void reserve(int size)
QMap< QString, QVariant > boundValues() const const
qlonglong toLongLong(bool *ok) const const
QVariant value(int index) const const
void setColumnValue(const QString &column, const QVariant &value)
Sets a column to the given value (only valid for INSERT and UPDATE queries).
Definition: querybuilder.cpp:600
QString lastQuery() const const
void setDatabaseType(DbType::Type type)
Sets the database which should execute the query.
Definition: querybuilder.cpp:128
bool exec(const QString &query)
void resize(int size)
Type
void addJoin(JoinType joinType, const QString &table, const Query::Condition &condition)
Join a table to the query.
Definition: querybuilder.cpp:133
qint64 insertId()
Returns the ID of the newly created record (only valid for INSERT queries)
Definition: querybuilder.cpp:621
void addAggregation(const QString &col, const QString &aggregate)
Adds an aggregation statement.
Definition: querybuilder.cpp:495
int size() const const
virtual QString formatValue(const QSqlField &field, bool trimStrings) const const
QVariant::Type type() const const
bool execBatch(QSqlQuery::BatchExecutionMode mode)
QueryBuilder(const QString &table, QueryType type=Select)
Creates a new query builder.
Definition: querybuilder.cpp:91
const T & at(int i) const const
void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
bool isEmpty() const const
const T & at(int i) const const
void addValueCondition(const QString &column, CompareOperator op, const QVariant &value)
Add a WHERE condition which compares a column with a given value.
Definition: query.cpp:12
int toInt(bool *ok, int base) const const
bool next()
QString getTable() const
Returns the name of the main table or subquery.
Definition: querybuilder.cpp:649
void addColumn(const QString &col)
Adds the given column to a select query.
Definition: querybuilder.cpp:483
bool isEmpty() const const
void addColumnCondition(const QString &column, CompareOperator op, const QString &column2)
Add a WHERE condition which compares a column with another column.
Definition: query.cpp:22
void addValueCondition(const QString &column, Query::CompareOperator op, const QVariant &value, ConditionType type=WhereCondition)
Add a WHERE or HAVING condition which compares a column with a given value.
Definition: querybuilder.cpp:154
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const const
qint64 elapsed() const const
QString & replace(int position, int n, QChar after)
bool canConvert(int targetTypeId) const const
ConditionType
Defines the place at which a condition should be evaluated.
Definition: querybuilder.h:56
VehicleSection::Type type(QStringView coachNumber, QStringView coachClassification)
QSqlError lastError() const const
QString text() const const
void setIdentificationColumn(const QString &column)
Sets the column used for identification in an INSERT statement.
Definition: querybuilder.cpp:616
void addGroupColumns(const QStringList &columns)
Add list of columns to GROUP BY.
Definition: querybuilder.cpp:594
QString left(int n) const const
void insert(const QString &queryStatement, const QSqlQuery &query)
Insert query into the cache for queryStatement.
Definition: querycache.cpp:100
bool first()
@ HavingCondition
add condition to HAVING part of the query NOTE: only supported for SELECT queries
Definition: querybuilder.h:61
QList< QVariant > toList() const const
void addColumns(const QStringList &cols)
Adds the given columns to a select query.
Definition: querybuilder.cpp:478
int count(const T &value) const const
void setSubQueryMode(Query::LogicOperator op, ConditionType type=WhereCondition)
Define how WHERE or HAVING conditions are combined.
Definition: querybuilder.cpp:571
int size() const const
void addCondition(const Query::Condition &condition, ConditionType type=WhereCondition)
Add a WHERE condition.
Definition: querybuilder.cpp:577
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
void setSubQueryMode(LogicOperator op)
Set how sub-conditions should be combined, default is And.
Definition: query.cpp:49
void addSortColumn(const QString &column, Query::SortOrder order=Query::Ascending)
Add sort column.
Definition: querybuilder.cpp:583
List
QString nativeErrorCode() const const
bool prepare(const QString &query)
bool isSystemSQLite(const QSqlDatabase &db)
Returns true when using QSQLITE driver shipped with Qt, FALSE otherwise.
Definition: dbtype.cpp:30
QString & append(QChar ch)
Helper class to construct arbitrary SQL queries.
Definition: querybuilder.h:31
void start()
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 03:58:07 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 03:58:07 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.