We now save the size of the maximum of all results. This can be improve
performance if the result set sizes are similar. If the very different
we will allocate to much memory. Because it is not changing any results
it's hard to test. We maybe should add benchmarks later.
Change-Id: I07227200076365b7fe4d0ac3951981469f9d454f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
So we can distingish between a null value and zero or an empty string.
Change-Id: I9122fdafdf85cf04dcf8bca7bf294be9b28ee251
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Now you can add more than one constraint. And we added some
new constraints too.
Change-Id: I849d2d2ef6e44c897a65ff2bdfe8d172a345c991
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Sometimes we want not only the row id from one table but two or three.
Change-Id: I6d5444a71ecbfe6c1af8073be80b04932ea9268d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Sqlite has a function to get the last inserted rowid but very often you
want to get the updated rowid too.
Change-Id: Ie276a5039682813ad16597433996a2959f54d9ba
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
It is still only support references in columns but so far it is enough.
Change-Id: Iebb4866cf738d651270e54357b5e4a2837f05417
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
To call this function from a thread we have to lock it. There is no test
because there is no reasonable way to doing it. Anyway, this code is very
simple, so there no reason to see that there is an error in it.
Change-Id: Ibe57ddf421bc60929993afedecbde8c8486eb4db
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
It adds a layer if you don't know if the type is integer, float or string.
It does not handle bytearrays here because so far there is no need. There
are two classes, Sqlite::Value and Sqlite::ValueView. Value owns the
string, ValueView holds only a view the string. So there is no allocation.
It is designed to hold Utf-8 string like Sqlite but it can be easily
converted in and from QString or QVariant but mind about that this is not
free. ValueView has no constructors on perpose because it would be
ambiguous if there would be constructors for the other primitives of
the Sqlite layer like "int64", "double" and "string view".
Change-Id: Ia39364eb2fc1998e5c59fdb4316add22c748507d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Do not put every plugin's and lib's source folder into public includes.
We require includes of the style <somelib/foo.h> and <someplugin/bar.h>
if someone depends on somelib or someplugin.
Change-Id: I3a9f200b7c3879cf431b00a1bab4a70f7aa0a9ec
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This patch fixes the following compile errors when using CMake:
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'dlerror'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'pthread_join'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'pthread_mutexattr_settype'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'pthread_mutexattr_init'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'dlopen'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'dlsym'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'dlclose'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'pthread_mutex_trylock'
lib/qtcreator/libSqlite.so.4.10.82: error: undefined reference to 'pthread_mutexattr_destroy'
lib/qtcreator/libClangSupport.so.4.10.82: error: undefined reference to 'pthread_create'
Change-Id: I7bf4a9f173622c36ac3ea0c7bde5a0999e9b0edf
Reviewed-by: Tim Henning <tim.henning@kdab.com>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
We will maybe rank the functions in the future but today we don't use that
code.
Change-Id: I84c88b45ceae830c29c3c197e7d0d0c1a6d5c114
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This should be not be happen but better be save than sorry.
Change-Id: I7b4afe491c07f8d5da2dc13aaffd2f354384a3ae
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Based on Tobias Hunger's work from a few months ago.
The CMake configuration needs libclang and Qt paths specified as
CMAKE_PREFIX_PATH.
Auto tests are run with "ctest". At the moment the pass rate is 87%.
Change-Id: Iba98e39bf22077d52706dce6c85986be67a6eab0
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
We change QTC_ENABLE_CLANG_LIBTOOLING to QTC_DISABLE_CLANG_REFACTORING, so
you now have to opt out instead of opt in. We bump the minimum version of
LLVM to 7.0 too because we mentioned that in the README already.
Change-Id: Ic4ee29a74a3ed79634ed8ea50be84d7bdc7db4ef
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
We cannot change tables if other connections access the database.
Change-Id: I1915ab491952d9684cb9839957c84c8f7a15c308
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
It does not make any sense to specify the number of letters
and it is passed to QByteArray anyways which also accepts -1.
Change-Id: If3a9d8cb039853c7b29ea9c73828fb1983e2f584
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
With the PchTaskQueue the pipeline is almost complete.
Task-number: QTCREATORBUG-21346
Change-Id: I5f05d525db1679eb37dd1d462076c1ed42958099
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Initializing the database is not cheap so it is better to initializing it
only once. We simply check if the database file already exists and then
skip the initializing step.
Task-number: QTCREATORBUG-21174
Change-Id: I151090c5081c009f7913a30517065be2833791d8
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Follow-up fix for 8d0391a4f9.
Do not complete after '{' coming not after an identifier.
Take constructor completions only for '{' and function
completions only for '('. Filter constructor completions by
class/struct type.
Task-number: QTCREATORBUG-21004
Change-Id: I7ae2d6bee23cf907648c42b93eb12742942833f6
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
We were not reset a statement if we got an exception. There are now test
for it.
Change-Id: Ife7b4437fece9369767605ba7387bd0564c1bb8d
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
So we don't recompile them again and again.
Change-Id: I54c95e9d81df86f4944b9e3d45a7277f93f37312
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
If we get this any hope is lost any way but we now know why. ;-)
Change-Id: Ic08b104825dc51ce5453203e70a0804265e47330
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
We really want to delete the right copy and move constructor.
Change-Id: I9572c197b1be89fc1ce996d65e2de671f48abb4e
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
It can be happen that the entry is written by an other connection after
we tried to read and before we write. This would lead to a double entry
which be prevented by the unique index in the database. In that case we
simply try again and read the id from the database.
Change-Id: I6c9d94e95ae11556bb446813f64be0855be4ddbe
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
You use now a busy timeout of one second. This is preventing the throwing
of a exception for a busy time under one second.
Change-Id: Iae800a525ad009b594c29883ffb243c1be8b3874
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This can be always happen for write statements. It fixes the wrong behavior
of the transaction that it tried to rollback if begin fails. If begin fails
the transaction never started so there is nothing to rollback.
Change-Id: I8a03162257fa22a0bb66ccb844f90c6afbc7db64
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>