Akonadi
querybuilder.cpp
79 static void appendJoined(QString *statement, const QStringList &strings, QLatin1String glue = QLatin1String(", "))
111 void QueryBuilder::addJoin(JoinType joinType, const QString &table, const Query::Condition &condition)
113 Q_ASSERT((joinType == InnerJoin && (mType == Select || mType == Update)) || (joinType == LeftJoin && mType == Select));
125 void QueryBuilder::addJoin(JoinType joinType, const QString &table, const QString &col1, const QString &col2)
132 void QueryBuilder::addValueCondition(const QString &column, Query::CompareOperator op, const QVariant &value, ConditionType type)
138 void QueryBuilder::addColumnCondition(const QString &column, Query::CompareOperator op, const QString &column2, ConditionType type)
267 Q_ASSERT_X(mColumnValues.count() >= 1, "QueryBuilder::exec()", "At least one column needs to be changed");
310 Q_ASSERT_X(mType == Select, "QueryBuilder::exec()", "Order statements are only valid for SELECT queries");
364 if (!isBatch && static_cast<QMetaType::Type>(mBindValues[i].type()) == QMetaType::QVariantList) {
380 StorageDebugger::instance()->queryExecuted(reinterpret_cast<qint64>(DataStore::self()), mQuery, t.elapsed());
396 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction deadlock, retrying transaction";
404 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction deadlock, retrying transaction";
408 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction timeout, retrying transaction";
410 // Not sure retrying helps, maybe error is good enough.... but doesn't hurt to retry a few times before giving up.
413 } else if (mDatabaseType == DbType::Sqlite && !DbType::isSystemSQLite(DataStore::self()->database())) {
417 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction deadlock, retrying transaction";
422 qCWarning(AKONADISERVER_LOG) << "QueryBuilder::exec(): database reported transaction timeout, retrying transaction";
510 Q_ASSERT_X(!entries.isEmpty(), "QueryBuilder::buildWhereCondition()", "No values given for IN condition.");
void setDistinct(bool distinct)
Specify whether duplicates should be included in the result.
Definition: querybuilder.cpp:578
bool canConvert(int targetTypeId) const const
List
qlonglong toLongLong(bool *ok) const const
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:132
void start()
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const const
QString databaseText() const const
QVariantList
void setForUpdate(bool forUpdate=true)
Indicate to the database to acquire an exclusive lock on the rows already during SELECT statement...
Definition: querybuilder.cpp:616
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:573
void setDatabaseType(DbType::Type type)
Sets the database which should execute the query.
Definition: querybuilder.cpp:106
std::optional< QSqlQuery > query(const QString &queryStatement)
Returns the cached (and prepared) query for queryStatement.
Definition: querycache.cpp:95
QVariant value(int index) const const
qint64 insertId()
Returns the ID of the newly created record (only valid for INSERT queries)
Definition: querybuilder.cpp:593
QList< QVariant > toList() const const
void addAggregation(const QString &col, const QString &aggregate)
Adds an aggregation statement.
Definition: querybuilder.cpp:469
JoinType
When the same table gets joined as both, Inner- and LeftJoin, it will be merged into a single InnerJo...
Definition: querybuilder.h:41
Definition: aggregatedfetchscope.cpp:19
bool exec(const QString &query)
const T & at(int i) const const
void setSubQueryMode(Query::LogicOperator op, ConditionType type=WhereCondition)
Define how WHERE or HAVING conditions are combined.
Definition: querybuilder.cpp:544
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
NOTE: only supported for UPDATE and SELECT queries.
Definition: querybuilder.h:43
bool isSystemSQLite(const QSqlDatabase &db)
Returns true when using QSQLITE driver shipped with Qt, FALSE otherwise.
Definition: dbtype.cpp:30
void addJoin(JoinType joinType, const QString &table, const Query::Condition &condition)
Join a table to the query.
Definition: querybuilder.cpp:111
int size() const const
void clear()
void addColumn(const QString &col)
Adds the given column to a select query.
Definition: querybuilder.cpp:457
void setIdentificationColumn(const QString &column)
Sets the column used for identification in an INSERT statement.
Definition: querybuilder.cpp:588
QMap< QString, QVariant > boundValues() const const
bool prepare(const QString &query)
add condition to WHERE part of the query
Definition: querybuilder.h:53
QString number(int n, int base)
void resize(int size)
int count(const T &value) const const
void append(const T &value)
void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
QueryBuilder(const QString &table, QueryType type=Select)
Creates a new query builder.
Definition: querybuilder.cpp:89
add condition to HAVING part of the query NOTE: only supported for SELECT queries ...
Definition: querybuilder.h:56
int toInt(bool *ok, int base) const const
void addSortColumn(const QString &column, Query::SortOrder order=Query::Ascending)
Add sort column.
Definition: querybuilder.cpp:556
bool isEmpty() const const
bool execBatch(QSqlQuery::BatchExecutionMode mode)
bool isEmpty() const const
bool next()
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
ConditionType
Defines the place at which a condition should be evaluated.
Definition: querybuilder.h:51
void setForwardOnly(bool forward)
NOTE: only supported for SELECT queries.
Definition: querybuilder.h:45
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
QSqlRecord record() const const
const T & at(int i) const const
void setSubQueryMode(LogicOperator op)
Set how sub-conditions should be combined, default is And.
Definition: query.cpp:49
void addGroupColumns(const QStringList &columns)
Add list of columns to GROUP BY.
Definition: querybuilder.cpp:567
bool isEmpty() const const
const QChar at(int position) const const
int count(const T &value) const const
void insert(const QString &queryStatement, const QSqlQuery &query)
Insert query into the cache for queryStatement.
Definition: querycache.cpp:100
QSqlError lastError() const const
void reserve(int size)
QString left(int n) const const
bool isValid() const const
QString nativeErrorCode() 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:138
QString text() const const
void addColumns(const QStringList &cols)
Adds the given columns to a select query.
Definition: querybuilder.cpp:452
T & first()
int size() const const
qint64 elapsed() const const
Helper class to construct arbitrary SQL queries.
Definition: querybuilder.h:31
void addCondition(const Query::Condition &condition, ConditionType type=WhereCondition)
Add a WHERE condition.
Definition: querybuilder.cpp:550
QVariant lastInsertId() const const
const T value(const Key &key, const T &defaultValue) 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
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Mar 8 2021 23:16:47 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Mar 8 2021 23:16:47 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.