This simplifies the usage and the implementation of the SqliteTableModel
a bit by making the two operating modes it supports (manual query and
interactive query) more obvious in its public interface as well as
simplifying the control flow in the private implementation.
Change some function parameters which are named like "dont..." to make a
positive statement. This should hopefully avoid some confisions with
double negation.
The feature is implemented using the SQLite backup API.
https://sqlite.org/backup.html
This allows saving in-memory databases and saving database files to another
file name.
When opening a database and clicking on a table in the Database
Structure tab, the buttons for modifying or deleting the table were
still disabled. Only on the second click activated the buttons
correctly.
See issue #2528.
This fixes two issues when executing SQL statements:
- When reusing a model object the row count was not reset. This meant
that when the second query returned less rows than the first a bunch
of "loading..." cells were still visible.
- The workaround for making sure the plot dock was only updated when the
data was ready (instead of just the row count), now that the data is
ready before the row count, would stop the worker thread from ever
finishing.
See issue #2535.
This partially reverts 89587a7d67 to fix
some issues it introduced. Using the knowledge we gained in the further
optimisation process, this commit now gets us the best of both worlds:
good performance when executing complex queries as well as a more
straightforward way to deal with the multithreaded nature of data
loading.
See issue #2537.
In MainWindow::closeEvent() now it calls Settings::sync() to call
QSettings->sync(). Qt documentation
(https://doc.qt.io/qt-5/qsettings.html#sync) says:
"This function is called automatically from QSettings's destructor and
by the event loop at regular intervals, so you normally don't need to
call it yourself."
On my Linux machine QSettings was not syncing to the
~/.config/sqlitebrowser/sqlitebrowser.conf (e.g. if I was doing View ->
Window Layout -> Simplify Window Layout and then close quickly was not
saved). Other settings recently changed before exiting would have been
the same.
Note that Settings is fully static so this seems to be an easy fix.
Previously RemoteDock was not resizeable too small due to all the
widgets (which have minimum size)
Now with QScrollArea a vertical scroll bar appears if needed allowing
MainWindow too be smaller
This updates the qmake and cmake files to enable C++14 support in the
compiler. It also simplifies a function by using a new function
introduced in C++14.
This fixes a remaining issue which was introduced in the series of
commits made for improving the performance of running SELECT statements
in the Execute SQL tab. The problem here was that rerunning a query did
not show any results in the view.
See issue #2165.
This speeds up executing SELECT statements in the Execute SQL tab even
further. Before this the statement was executed twice: once to determine
whether it returns any data and another time to actually get the data.
This is still done after this commit, however the process to determine
whether a statement returns any data is optimised in a way which almost
reduces the runtime of this step to zero.
See issue #2165.
This further improves the performance of SELECT statements by not
triggering the row count determiniation if it is not needed. So for
queries which return less rows than the configured prefetch block size
we save an extra query. Because this requires querying the data first
and the row count second (before this the order was reversed) the data
also appears faster in the UI.
This commit also fixes another issue which was introduced in commit
89587a7d67: When setting a filter which
made the query not return any data, the column names and the filter row
became invisible. Because of that it was also impossible to change the
filter again.
This improves the performance of running SQL queries in the
SqliteTableModel class by avoiding an extra query for figuring out the
column names and data types of the returned data.
See issue #2165.
The previous commit broke the application of the type affinity rules for
already existing tables. Now the problem is at least restricted to
the case when the new "Use local number conventions" is used.
See issue #2140.
This will allow to import numbers in CSV which use ',' as decimal separator
and '.' as thousands separator, when the system locale is Spanish (Spain),
for example.
Additionally this commit detects the full range supported by SQLite for
INTEGER and REAL numbers, that is, 64 bit integers are not converted to
REAL and double precision reals are not converted to TEXT.
See issues #1347 and #2140.
This adds a shortcut for opening recent files in read-only mode when
they were opened in read-write mode before and vice versa by pressing
Ctrl + Shift + %n instead of Ctrl + %n.
It also allows you to hold the Shift key while clicking a recent file
menu item to achieve the same effect.
See issue #2484.
Enable usage of URI filenames in SQLite calls. In theory, this should
not break any current use case as we tend to pass full paths to SQLite
and they should never start with "file:" or similar.
This should make it possible to attach databases using full URI
specifiers.
See issue #2493.
The default format changes to scientific format when the width of the
number would be longer. The user will be able to select fixed format for
integer numbers in the contextual menu. Note that precision is set to 0,
because in the fixed format trailing zeros are not omitted.
See issue #2498
This adds a new action to the Tools menu which creates a new SQL tab
with a statement to count the number of rows of all tables and views.
See issue #2464.