qt5base-lts/src/sql
Milian Wolff 194403a348 Remove temporary string allocations when reading prepared statement.
Instead, we use the binary MySQL encoding and copy the data directly
into the QVariant of the desired type. This gets rid of the temporary
string allocations and greatly improves the performance of the added
benchmark. On my machine, the results are:

Before:
     0.562 msecs per iteration (total: 563, iterations: 1000)
     1,922,479.330 instructions per iteration (total: 1,922,479,330, iterations: 1000)

After:
     0.381 msecs per iteration (total: 381, iterations: 1000)
     774,132.957 instructions per iteration (total: 774,132,958, iterations: 1000)

Note that the same could be applied to floating point data types in
the future. Additionally, special support for MYSQL_TIME structure
coult be added to get rid of the string conversions there.

To ensure everything keeps working, a new auto test is added as well
that verifies the select statements and insertions of integral data
into a MySql table works as intended.

[ChangeLog][QtSql] Improve performance when reading integer values
from MySQL databases via prepared statements.

Change-Id: I21dd9277661971ded934546f09535014b63f8eb8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-13 16:53:45 +00:00
..
doc Merge remote-tracking branch 'origin/5.5' into dev 2015-07-01 11:05:26 +02:00
drivers Remove temporary string allocations when reading prepared statement. 2015-08-13 16:53:45 +00:00
kernel QtSql: Use Q_NULLPTR instead of 0 in all public headers 2015-07-08 12:32:16 +00:00
models QtSql: Use Q_NULLPTR instead of 0 in all public headers 2015-07-08 12:32:16 +00:00
README.module Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
sql.pro Enable bundling Qt in Android package in build system 2013-05-01 11:24:15 +02:00

Before building the Qt library, the Qt SQL module can be enabled for
specific databases using 'configure'.  'configure' is located at the
top of your QTDIR.

Specific databases drivers can be enabled using one of the following
options:

	./configure [-qt-sql-<driver>] [-plugin-sql-<driver>]

or disabled using the following option:

	./configure [-no-sql-<driver>]

Where <driver> is the name of the driver, for example 'psql'.  This
will configure the Qt library to compile the specified driver into
the Qt lib itself.

For example, to build the PostgreSQL driver directly into the Qt
library, configure Qt like this:

	./configure -qt-sql-psql

In addition, you may need to specify an extra include path, as some
database drivers require headers for the database they are using,
for example:

	./configure -qt-sql-psql -I/usr/local/include

If instead you need to build the PostgreSQL driver as a dynamically
loaded plugin, configure Qt like this:

	./configure -plugin-sql-psql

To compile drivers as dynamically loaded plugins, see the
QTDIR/plugins/src/sqldrivers directory.  Use 'configure -help'
for a complete list of configure options.  See the Qt documentation
for a complete list of supported database drivers.