akonadi/akonadi-16.04.2-qt-5.7.0-sq...

892 lines
33 KiB
Diff

diff -Nru akonadi-16.04.2/CMakeLists.txt akonadi-16.04.2.patched/CMakeLists.txt
--- akonadi-16.04.2/CMakeLists.txt 2016-05-31 11:33:56.000000000 +0200
+++ akonadi-16.04.2.patched/CMakeLists.txt 2016-06-30 22:38:55.661518771 +0200
@@ -31,14 +31,13 @@
SOVERSION 5)
# Find packages
-find_package(Qt5Core ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5Gui ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5Widgets ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5Sql ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5Network ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5Xml ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5DBus ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
-find_package(Qt5Test ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
+find_package(Qt5Core ${QT_REQUIRED_VERSION} REQUIRED COMPONENTS Private)
+find_package(Qt5Sql ${QT_REQUIRED_VERSION} REQUIRED COMPONENTS Private)
+find_package(Qt5DBus ${QT_REQUIRED_VERSION} REQUIRED)
+find_package(Qt5Network ${QT_REQUIRED_VERSION} REQUIRED)
+find_package(Qt5Test ${QT_REQUIRED_VERSION} REQUIRED)
+find_package(Qt5Widgets ${QT_REQUIRED_VERSION} REQUIRED)
+find_package(Qt5Xml ${QT_REQUIRED_VERSION} REQUIRED)
find_package(KF5ItemViews ${KF5_VERSION} CONFIG REQUIRED)
find_package(KF5KIO ${KF5_VERSION} CONFIG REQUIRED)
@@ -129,7 +128,7 @@
set(SQLITE_TYPE "OPTIONAL")
endif()
-if(AKONADI_BUILD_QSQLITE AND Qt5Core_VERSION VERSION_LESS 5.7.0) # API change in 5.7 breaks our sqlite driver
+if(AKONADI_BUILD_QSQLITE)
set(SQLITE_MIN_VERSION 3.6.23)
find_package(Sqlite ${SQLITE_MIN_VERSION})
set_package_properties(Sqlite PROPERTIES
diff -Nru akonadi-16.04.2/src/qsqlite/CMakeLists.txt akonadi-16.04.2.patched/src/qsqlite/CMakeLists.txt
--- akonadi-16.04.2/src/qsqlite/CMakeLists.txt 2016-05-31 11:33:56.000000000 +0200
+++ akonadi-16.04.2.patched/src/qsqlite/CMakeLists.txt 2016-06-30 22:27:54.489104785 +0200
@@ -9,6 +9,8 @@
set(QSQLITE_INSTALL_PREFIX "${PLUGIN_INSTALL_DIR}/sqldrivers")
include_directories(
+ ${Qt5Core_PRIVATE_INCLUDE_DIRS}
+ ${Qt5Sql_PRIVATE_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/src
${SQLITE_INCLUDE_DIR}
)
diff -Nru akonadi-16.04.2/src/qsqlite/src/QtSql/private/qobject_p.h akonadi-16.04.2.patched/src/qsqlite/src/QtSql/private/qobject_p.h
--- akonadi-16.04.2/src/qsqlite/src/QtSql/private/qobject_p.h 2016-05-31 11:33:56.000000000 +0200
+++ akonadi-16.04.2.patched/src/qsqlite/src/QtSql/private/qobject_p.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,434 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Copyright (C) 2013 Olivier Goffart <ogoffart@woboq.com>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QOBJECT_P_H
-#define QOBJECT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header
-// file may change from version to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtCore/qobject.h"
-#include "QtCore/qpointer.h"
-#include "QtCore/qsharedpointer.h"
-#include "QtCore/qcoreevent.h"
-#include "QtCore/qlist.h"
-#include "QtCore/qvector.h"
-#include "QtCore/qvariant.h"
-#include "QtCore/qreadwritelock.h"
-
-QT_BEGIN_NAMESPACE
-
-class QVariant;
-class QThreadData;
-class QObjectConnectionListVector;
-namespace QtSharedPointer { struct ExternalRefCountData; }
-
-/* for Qt Test */
-struct QSignalSpyCallbackSet
-{
- typedef void (*BeginCallback)(QObject *caller, int signal_or_method_index, void **argv);
- typedef void (*EndCallback)(QObject *caller, int signal_or_method_index);
- BeginCallback signal_begin_callback,
- slot_begin_callback;
- EndCallback signal_end_callback,
- slot_end_callback;
-};
-void Q_CORE_EXPORT qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set);
-
-extern QSignalSpyCallbackSet Q_CORE_EXPORT qt_signal_spy_callback_set;
-
-enum { QObjectPrivateVersion = QT_VERSION };
-
-class Q_CORE_EXPORT QAbstractDeclarativeData
-{
-public:
- static void (*destroyed)(QAbstractDeclarativeData *, QObject *);
- static void (*destroyed_qml1)(QAbstractDeclarativeData *, QObject *);
- static void (*parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *);
- static void (*signalEmitted)(QAbstractDeclarativeData *, QObject *, int, void **);
- static int (*receivers)(QAbstractDeclarativeData *, const QObject *, int);
- static bool (*isSignalConnected)(QAbstractDeclarativeData *, const QObject *, int);
-};
-
-// This is an implementation of QAbstractDeclarativeData that is identical with
-// the implementation in QtDeclarative and QtQml for the first bit
-struct QAbstractDeclarativeDataImpl : public QAbstractDeclarativeData
-{
- quint32 ownedByQml1:1;
- quint32 unused: 31;
-};
-
-class Q_CORE_EXPORT QObjectPrivate : public QObjectData
-{
- Q_DECLARE_PUBLIC(QObject)
-
-public:
- struct ExtraData
- {
- ExtraData() {}
- #ifndef QT_NO_USERDATA
- QVector<QObjectUserData *> userData;
- #endif
- QList<QByteArray> propertyNames;
- QList<QVariant> propertyValues;
- QVector<int> runningTimers;
- QList<QPointer<QObject> > eventFilters;
- QString objectName;
- };
-
- typedef void (*StaticMetaCallFunction)(QObject *, QMetaObject::Call, int, void **);
- struct Connection
- {
- QObject *sender;
- QObject *receiver;
- union {
- StaticMetaCallFunction callFunction;
- QtPrivate::QSlotObjectBase *slotObj;
- };
- // The next pointer for the singly-linked ConnectionList
- Connection *nextConnectionList;
- //senders linked list
- Connection *next;
- Connection **prev;
- QAtomicPointer<const int> argumentTypes;
- QAtomicInt ref_;
- ushort method_offset;
- ushort method_relative;
- uint signal_index : 27; // In signal range (see QObjectPrivate::signalIndex())
- ushort connectionType : 3; // 0 == auto, 1 == direct, 2 == queued, 4 == blocking
- ushort isSlotObject : 1;
- ushort ownArgumentTypes : 1;
- Connection() : nextConnectionList(0), ref_(2), ownArgumentTypes(true) {
- //ref_ is 2 for the use in the internal lists, and for the use in QMetaObject::Connection
- }
- ~Connection();
- int method() const { return method_offset + method_relative; }
- void ref() { ref_.ref(); }
- void deref() {
- if (!ref_.deref()) {
- Q_ASSERT(!receiver);
- delete this;
- }
- }
- };
- // ConnectionList is a singly-linked list
- struct ConnectionList {
- ConnectionList() : first(0), last(0) {}
- Connection *first;
- Connection *last;
- };
-
- struct Sender
- {
- QObject *sender;
- int signal;
- int ref;
- };
-
-
- QObjectPrivate(int version = QObjectPrivateVersion);
- virtual ~QObjectPrivate();
- void deleteChildren();
-
- void setParent_helper(QObject *);
- void moveToThread_helper();
- void setThreadData_helper(QThreadData *currentData, QThreadData *targetData);
- void _q_reregisterTimers(void *pointer);
-
- bool isSender(const QObject *receiver, const char *signal) const;
- QObjectList receiverList(const char *signal) const;
- QObjectList senderList() const;
-
- void addConnection(int signal, Connection *c);
- void cleanConnectionLists();
-
- static inline Sender *setCurrentSender(QObject *receiver,
- Sender *sender);
- static inline void resetCurrentSender(QObject *receiver,
- Sender *currentSender,
- Sender *previousSender);
-
- static QObjectPrivate *get(QObject *o) {
- return o->d_func();
- }
-
- int signalIndex(const char *signalName, const QMetaObject **meta = 0) const;
- inline bool isSignalConnected(uint signalIdx) const;
-
- // To allow abitrary objects to call connectNotify()/disconnectNotify() without making
- // the API public in QObject. This is used by QQmlNotifierEndpoint.
- inline void connectNotify(const QMetaMethod &signal);
- inline void disconnectNotify(const QMetaMethod &signal);
-
- template <typename Func1, typename Func2>
- static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
- const typename QtPrivate::FunctionPointer<Func2>::Object *receiverPrivate, Func2 slot,
- Qt::ConnectionType type = Qt::AutoConnection);
-
- template <typename Func1, typename Func2>
- static inline bool disconnect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
- const typename QtPrivate::FunctionPointer<Func2>::Object *receiverPrivate, Func2 slot);
-
- static QMetaObject::Connection connectImpl(const QObject *sender, int signal_index,
- const QObject *receiver, void **slot,
- QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type,
- const int *types, const QMetaObject *senderMetaObject);
- static QMetaObject::Connection connect(const QObject *sender, int signal_index, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type);
- static bool disconnect(const QObject *sender, int signal_index, void **slot);
-public:
- ExtraData *extraData; // extra data set by the user
- QThreadData *threadData; // id of the thread that owns the object
-
- QObjectConnectionListVector *connectionLists;
-
- Connection *senders; // linked list of connections connected to this object
- Sender *currentSender; // object currently activating the object
- mutable quint32 connectedSignals[2];
-
- union {
- QObject *currentChildBeingDeleted;
- QAbstractDeclarativeData *declarativeData; //extra data used by the declarative module
- };
-
- // these objects are all used to indicate that a QObject was deleted
- // plus QPointer, which keeps a separate list
- QAtomicPointer<QtSharedPointer::ExternalRefCountData> sharedRefcount;
-};
-
-
-/*! \internal
-
- Returns \c true if the signal with index \a signal_index from object \a sender is connected.
- Signals with indices above a certain range are always considered connected (see connectedSignals
- in QObjectPrivate).
-
- \a signal_index must be the index returned by QObjectPrivate::signalIndex;
-*/
-inline bool QObjectPrivate::isSignalConnected(uint signal_index) const
-{
- return signal_index >= sizeof(connectedSignals) * 8
- || (connectedSignals[signal_index >> 5] & (1 << (signal_index & 0x1f))
- || (declarativeData && QAbstractDeclarativeData::isSignalConnected
- && QAbstractDeclarativeData::isSignalConnected(declarativeData, q_func(), signal_index)));
-}
-
-inline QObjectPrivate::Sender *QObjectPrivate::setCurrentSender(QObject *receiver,
- Sender *sender)
-{
- Sender *previousSender = receiver->d_func()->currentSender;
- receiver->d_func()->currentSender = sender;
- return previousSender;
-}
-
-inline void QObjectPrivate::resetCurrentSender(QObject *receiver,
- Sender *currentSender,
- Sender *previousSender)
-{
- // ref is set to zero when this object is deleted during the metacall
- if (currentSender->ref == 1)
- receiver->d_func()->currentSender = previousSender;
- // if we've recursed, we need to tell the caller about the objects deletion
- if (previousSender)
- previousSender->ref = currentSender->ref;
-}
-
-inline void QObjectPrivate::connectNotify(const QMetaMethod &signal)
-{
- q_ptr->connectNotify(signal);
-}
-
-inline void QObjectPrivate::disconnectNotify(const QMetaMethod &signal)
-{
- q_ptr->disconnectNotify(signal);
-}
-
-namespace QtPrivate {
-template<typename Func, typename Args, typename R> class QPrivateSlotObject : public QSlotObjectBase
-{
- typedef QtPrivate::FunctionPointer<Func> FuncType;
- Func function;
- static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret)
- {
- switch (which) {
- case Destroy:
- delete static_cast<QPrivateSlotObject*>(this_);
- break;
- case Call:
- FuncType::template call<Args, R>(static_cast<QPrivateSlotObject*>(this_)->function,
- static_cast<typename FuncType::Object *>(QObjectPrivate::get(r)), a);
- break;
- case Compare:
- *ret = *reinterpret_cast<Func *>(a) == static_cast<QPrivateSlotObject*>(this_)->function;
- break;
- case NumOperations: ;
- }
- }
-public:
- explicit QPrivateSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {}
-};
-} //namespace QtPrivate
-
-template <typename Func1, typename Func2>
-inline QMetaObject::Connection QObjectPrivate::connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
- const typename QtPrivate::FunctionPointer<Func2>::Object *receiverPrivate, Func2 slot,
- Qt::ConnectionType type)
-{
- typedef QtPrivate::FunctionPointer<Func1> SignalType;
- typedef QtPrivate::FunctionPointer<Func2> SlotType;
- Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro<typename SignalType::Object>::Value,
- "No Q_OBJECT in the class with the signal");
-
- //compilation error if the arguments does not match.
- Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
- "The slot requires more arguments than the signal provides.");
- Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
- "Signal and slot arguments are not compatible.");
- Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible<typename SlotType::ReturnType, typename SignalType::ReturnType>::value),
- "Return type of the slot is not compatible with the return type of the signal.");
-
- const int *types = 0;
- if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection)
- types = QtPrivate::ConnectionTypes<typename SignalType::Arguments>::types();
-
- return QObject::connectImpl(sender, reinterpret_cast<void **>(&signal),
- receiverPrivate->q_ptr, reinterpret_cast<void **>(&slot),
- new QtPrivate::QPrivateSlotObject<Func2, typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value,
- typename SignalType::ReturnType>(slot),
- type, types, &SignalType::Object::staticMetaObject);
-}
-
-template <typename Func1, typename Func2>
-bool QObjectPrivate::disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object* sender, Func1 signal,
- const typename QtPrivate::FunctionPointer< Func2 >::Object* receiverPrivate, Func2 slot)
-{
- typedef QtPrivate::FunctionPointer<Func1> SignalType;
- typedef QtPrivate::FunctionPointer<Func2> SlotType;
- Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro<typename SignalType::Object>::Value,
- "No Q_OBJECT in the class with the signal");
- //compilation error if the arguments does not match.
- Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
- "Signal and slot arguments are not compatible.");
- return QObject::disconnectImpl(sender, reinterpret_cast<void **>(&signal),
- receiverPrivate->q_ptr, reinterpret_cast<void **>(&slot),
- &SignalType::Object::staticMetaObject);
-}
-
-Q_DECLARE_TYPEINFO(QObjectPrivate::Connection, Q_MOVABLE_TYPE);
-Q_DECLARE_TYPEINFO(QObjectPrivate::Sender, Q_MOVABLE_TYPE);
-
-class QSemaphore;
-class Q_CORE_EXPORT QMetaCallEvent : public QEvent
-{
-public:
- QMetaCallEvent(ushort method_offset, ushort method_relative, QObjectPrivate::StaticMetaCallFunction callFunction , const QObject *sender, int signalId,
- int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0);
- /*! \internal
- \a signalId is in the signal index range (see QObjectPrivate::signalIndex()).
- */
- QMetaCallEvent(QtPrivate::QSlotObjectBase *slotObj, const QObject *sender, int signalId,
- int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0);
-
- ~QMetaCallEvent();
-
- inline int id() const { return method_offset_ + method_relative_; }
- inline const QObject *sender() const { return sender_; }
- inline int signalId() const { return signalId_; }
- inline void **args() const { return args_; }
-
- virtual void placeMetaCall(QObject *object);
-
-private:
- QtPrivate::QSlotObjectBase *slotObj_;
- const QObject *sender_;
- int signalId_;
- int nargs_;
- int *types_;
- void **args_;
- QSemaphore *semaphore_;
- QObjectPrivate::StaticMetaCallFunction callFunction_;
- ushort method_offset_;
- ushort method_relative_;
-};
-
-class QBoolBlocker
-{
- Q_DISABLE_COPY(QBoolBlocker)
-public:
- explicit inline QBoolBlocker(bool &b, bool value=true):block(b), reset(b){block = value;}
- inline ~QBoolBlocker(){block = reset; }
-private:
- bool &block;
- bool reset;
-};
-
-void Q_CORE_EXPORT qDeleteInEventHandler(QObject *o);
-
-struct QAbstractDynamicMetaObject;
-struct Q_CORE_EXPORT QDynamicMetaObjectData
-{
- virtual ~QDynamicMetaObjectData() {}
- virtual void objectDestroyed(QObject *) { delete this; }
-
- virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) = 0;
- virtual int metaCall(QObject *, QMetaObject::Call, int _id, void **) = 0;
-};
-
-struct Q_CORE_EXPORT QAbstractDynamicMetaObject : public QDynamicMetaObjectData, public QMetaObject
-{
- virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) { return this; }
- virtual int createProperty(const char *, const char *) { return -1; }
- virtual int metaCall(QObject *, QMetaObject::Call c, int _id, void **a)
- { return metaCall(c, _id, a); }
- virtual int metaCall(QMetaObject::Call, int _id, void **) { return _id; } // Compat overload
-};
-
-QT_END_NAMESPACE
-
-#endif // QOBJECT_P_H
diff -Nru akonadi-16.04.2/src/qsqlite/src/QtSql/private/qsqlcachedresult_p.h akonadi-16.04.2.patched/src/qsqlite/src/QtSql/private/qsqlcachedresult_p.h
--- akonadi-16.04.2/src/qsqlite/src/QtSql/private/qsqlcachedresult_p.h 2016-05-31 11:33:56.000000000 +0200
+++ akonadi-16.04.2.patched/src/qsqlite/src/QtSql/private/qsqlcachedresult_p.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,100 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtSql module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSQLCACHEDRESULT_P_H
-#define QSQLCACHEDRESULT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtSql/qsqlresult.h"
-
-QT_BEGIN_NAMESPACE
-
-class QVariant;
-template <typename T> class QVector;
-
-class QSqlCachedResultPrivate;
-
-class Q_SQL_EXPORT QSqlCachedResult: public QSqlResult
-{
-public:
- virtual ~QSqlCachedResult();
-
- typedef QVector<QVariant> ValueCache;
-
-protected:
- QSqlCachedResult(const QSqlDriver * db);
-
- void init(int colCount);
- void cleanup();
- void clearValues();
-
- virtual bool gotoNext(ValueCache &values, int index) = 0;
-
- QVariant data(int i);
- bool isNull(int i);
- bool fetch(int i);
- bool fetchNext();
- bool fetchPrevious();
- bool fetchFirst();
- bool fetchLast();
-
- int colCount() const;
- ValueCache &cache();
-
- void virtual_hook(int id, void *data);
-private:
- bool cacheNext();
- QSqlCachedResultPrivate *d;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSQLCACHEDRESULT_P_H
diff -Nru akonadi-16.04.2/src/qsqlite/src/QtSql/private/qsqldriver_p.h akonadi-16.04.2.patched/src/qsqlite/src/QtSql/private/qsqldriver_p.h
--- akonadi-16.04.2/src/qsqlite/src/QtSql/private/qsqldriver_p.h 2016-05-31 11:33:56.000000000 +0200
+++ akonadi-16.04.2.patched/src/qsqlite/src/QtSql/private/qsqldriver_p.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtSql module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSQLDRIVER_P_H
-#define QSQLDRIVER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the QtSQL module. This header file may change from version to version
-// without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qobject_p.h"
-#include "qsqldriver.h"
-#include "qsqlerror.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSqlDriverPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QSqlDriver)
-
-public:
- enum DBMSType {UnknownDB, MSSqlServer, MySqlServer, PostgreSQL, Oracle, Sybase, SQLite, Interbase, DB2};
-
- QSqlDriverPrivate()
- : QObjectPrivate(),
- isOpen(false),
- isOpenError(false),
- precisionPolicy(QSql::LowPrecisionDouble),
- dbmsType(UnknownDB)
- { }
-
- uint isOpen;
- uint isOpenError;
- QSqlError error;
- QSql::NumericalPrecisionPolicy precisionPolicy;
- DBMSType dbmsType;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSQLDRIVER_P_H
diff -Nru akonadi-16.04.2/src/qsqlite/src/qsql_sqlite.cpp akonadi-16.04.2.patched/src/qsqlite/src/qsql_sqlite.cpp
--- akonadi-16.04.2/src/qsqlite/src/qsql_sqlite.cpp 2016-05-31 11:33:56.000000000 +0200
+++ akonadi-16.04.2.patched/src/qsqlite/src/qsql_sqlite.cpp 2016-06-30 22:27:54.490104785 +0200
@@ -51,8 +51,8 @@
#include <qvector.h>
#include <qdebug.h>
-#include "QtSql/private/qsqldriver_p.h"
-#include "QtSql/private/qsqlcachedresult_p.h"
+#include <QtSql/private/qsqldriver_p.h>
+#include <QtSql/private/qsqlcachedresult_p.h>
#if defined Q_OS_WIN
# include <qt_windows.h>
@@ -136,7 +136,10 @@
void virtual_hook(int id, void *data);
private:
- QSQLiteResultPrivate* d;
+#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
+ QSQLiteResultPrivate* d_ptr;
+#endif
+ Q_DECLARE_PRIVATE(QSQLiteResult)
};
@@ -144,24 +147,33 @@
{
public:
inline QSQLiteDriverPrivate() : access(0) {
- dbmsType = SQLite;
+ dbmsType = QSqlDriver::SQLite;
}
sqlite3 *access;
QList<QSQLiteResult *> results;
};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
+class QSQLiteResultPrivate : public QSqlCachedResultPrivate
+#else
class QSQLiteResultPrivate
+#endif
{
public:
+#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
+ QSQLiteResultPrivate(QSQLiteResult *res, const QSQLiteDriver *drv);
+#else
QSQLiteResultPrivate(QSQLiteResult *res);
+ QSQLiteResult* q_ptr;
+#endif
+
void cleanup();
bool fetchNext(QSqlCachedResult::ValueCache &values, int idx, bool initialFetch);
// initializes the recordInfo and the cache
void initColumns(bool emptyResultset);
void finalize();
- QSQLiteResult* q;
sqlite3 *access;
sqlite3_stmt *stmt;
@@ -170,15 +182,27 @@
bool skipRow; // skip the next fetchNext()?
QSqlRecord rInf;
QVector<QVariant> firstRow;
+
+ Q_DECLARE_PUBLIC(QSQLiteResult)
};
-QSQLiteResultPrivate::QSQLiteResultPrivate(QSQLiteResult* res) : q(res), access(0),
- stmt(0), skippedStatus(false), skipRow(false)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
+QSQLiteResultPrivate::QSQLiteResultPrivate(QSQLiteResult *res, const QSQLiteDriver *drv)
+ : QSqlCachedResultPrivate(res, drv)
+#else
+QSQLiteResultPrivate::QSQLiteResultPrivate(QSQLiteResult* res)
+ : q_ptr(res)
+#endif
+ , access(0)
+ , stmt(0)
+ , skippedStatus(false)
+ , skipRow(false)
{
}
void QSQLiteResultPrivate::cleanup()
{
+ Q_Q(QSQLiteResult);
finalize();
rInf.clear();
skippedStatus = false;
@@ -199,6 +223,7 @@
void QSQLiteResultPrivate::initColumns(bool emptyResultset)
{
+ Q_Q(QSQLiteResult);
int nCols = sqlite3_column_count(stmt);
if (nCols <= 0)
return;
@@ -251,6 +276,8 @@
bool QSQLiteResultPrivate::fetchNext(QSqlCachedResult::ValueCache &values, int idx, bool initialFetch)
{
+ Q_Q(QSQLiteResult);
+
int res;
int i;
@@ -351,20 +378,28 @@
}
QSQLiteResult::QSQLiteResult(const QSQLiteDriver* db)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
+ : QSqlCachedResult(*new QSQLiteResultPrivate(this, db))
+#else
: QSqlCachedResult(db)
+ , d_ptr(new QSQLiteResultPrivate(this))
+#endif
{
- d = new QSQLiteResultPrivate(this);
+ Q_D(QSQLiteResult);
d->access = db->d_func()->access;
const_cast<QSQLiteDriverPrivate*>(db->d_func())->results.append(this);
}
QSQLiteResult::~QSQLiteResult()
{
+ Q_D(QSQLiteResult);
const QSqlDriver *sqlDriver = driver();
if (sqlDriver)
const_cast<QSQLiteDriverPrivate*>(qobject_cast<const QSQLiteDriver *>(sqlDriver)->d_func())->results.removeOne(this);
d->cleanup();
+#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
delete d;
+#endif
}
void QSQLiteResult::virtual_hook(int id, void *data)
@@ -381,6 +416,8 @@
bool QSQLiteResult::prepare(const QString &query)
{
+ Q_D(QSQLiteResult);
+
if (!driver() || !driver()->isOpen() || driver()->isOpenError())
return false;
@@ -416,6 +453,7 @@
bool QSQLiteResult::exec()
{
+ Q_D(QSQLiteResult);
const QVector<QVariant> values = boundValues();
d->skippedStatus = false;
@@ -510,7 +548,7 @@
bool QSQLiteResult::gotoNext(QSqlCachedResult::ValueCache& row, int idx)
{
- return d->fetchNext(row, idx, false);
+ return d_func()->fetchNext(row, idx, false);
}
int QSQLiteResult::size()
@@ -520,13 +558,13 @@
int QSQLiteResult::numRowsAffected()
{
- return sqlite3_changes(d->access);
+ return sqlite3_changes(d_func()->access);
}
QVariant QSQLiteResult::lastInsertId() const
{
if (isActive()) {
- qint64 id = sqlite3_last_insert_rowid(d->access);
+ qint64 id = sqlite3_last_insert_rowid(d_func()->access);
if (id)
return id;
}
@@ -537,18 +575,18 @@
{
if (!isActive() || !isSelect())
return QSqlRecord();
- return d->rInf;
+ return d_func()->rInf;
}
void QSQLiteResult::detachFromResultSet()
{
- if (d->stmt)
- sqlite3_reset(d->stmt);
+ if (d_func()->stmt)
+ sqlite3_reset(d_func()->stmt);
}
QVariant QSQLiteResult::handle() const
{
- return qVariantFromValue(d->stmt);
+ return qVariantFromValue(d_func()->stmt);
}
/////////////////////////////////////////////////////////
@@ -660,7 +698,7 @@
if (isOpen()) {
Q_FOREACH (QSQLiteResult *result, d->results) {
- result->d->finalize();
+ result->d_func()->finalize();
}
if (sqlite3_close(d->access) != SQLITE_OK)