Commit Graph

613 Commits

Author SHA1 Message Date
Liang Qi
a224dfc9d1 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	tests/auto/corelib/io/qprocess/tst_qprocess.cpp

Change-Id: Ib6955eb874b516b185b45d6c38cec646fbaa95f4
2016-02-29 12:34:31 +01:00
Mark Brand
3ca2eea00d QSqlDriver:sqlStatement: respect generated flags for WHERE too
Change-Id: I90034cd1a8dc0473c36d788c6737493a51641b02
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2016-02-24 16:38:17 +00:00
Mark Brand
1db9962cef QSqlDriver::sqlStatement: documentation fix
Change-Id: I12bd612c48020594b5377b04aeccc51f7c4be53d
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Vyacheslav Grigoryev <armagvvg@gmail.com>
2016-02-24 16:38:09 +00:00
Liang Qi
4fe2fbcf82 Merge remote-tracking branch 'origin/5.6' into 5.7
This also reverts commit 018e670a26.

The change was introduced in 5.6. After the refactoring, 14960f52,
in 5.7 branch and a merge, it is not needed any more.

Conflicts:
	.qmake.conf
	src/corelib/io/qstandardpaths_mac.mm
	src/corelib/tools/qsharedpointer_impl.h
	tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp

Change-Id: If4fdff0ebf2b9b5df9f9db93ea0022d5ee3da2a4
2016-02-18 20:50:35 +01:00
Vyacheslav Grigoryev
34472e946a QSqlDriver: use table prefix in WHERE clauses
If the WHERE clause is used in a query involving multiple tables,
such as generated by QSqlRelationalTableModel, the table prefix
may be necessary to disambiguate column references. It is harmless
if not needed.

Task-number: QTBUG-43320
Change-Id: I39e1ab7359bf748afa8bcd8578220e3abb3ee24a
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2016-02-17 23:13:58 +00:00
Marc Mutz
6f7a5b0ecf QtSql: eradicate remaining Q_FOREACH loops
Change-Id: I86afe7104d506b840130517ae8066588fab2d745
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2016-02-17 16:17:50 +00:00
Marc Mutz
88e043a8bd QOCIDriver: optimize string handling in tables()
- Instead of a QStringList, use a const char 2D array
  to hold the system user names. Don't remove the
  current user from that list, skip it duing processing.
- Extract Method make_where_clause, optimize it and
  cache its result. Instead of creating a QStringList
  and join()ing it at the end (sometimes twice), append
  to the result QString directly. Reserve the max size
  of the result string, which is statically known.
- Keep the query select statements in QLatin1String.
  They are only used in QStringBuilder expressions.

Change-Id: I0593d2812da671a541d49a6136f3ff3d784c63d5
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-17 16:17:46 +00:00
Eric Lemanissier
21d19f760c Improve sql allocated cache reuse
This change avoids unnecessary allocation of QSqlCachedResult cache.

Change-Id: Ief592ab05b50f5e328490c504af088ec74d1938f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2016-02-16 21:22:19 +00:00
Marc Mutz
a93ff2c248 Reduce allocations in QSQLiteDriver::open()'s connection options parsing
- Use splitRef() instead of split(), avoiding small temporary
  QStrings.
- Don't remove all spaces before splitting, trim strings at
  the QStringRef level later, where needed. This will reject
  nonsense strings like QSQL_ LITE _BUSY_ TI MEOUT= 1 2 3 that
  were previously (wrongly) accepted.
- Use C++11 range-for loop.

Change-Id: I875c4cf47b7a283ba55783f70c903bb9947e1cd7
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2016-02-15 23:12:54 +00:00
Ulf Hermann
4fb7eb0da7 Drop most "#ifndef QT_NO_LIBRARY"
As we can load plugins without QLibrary now, we don't have to #ifdef
out the code that does so anymore.

Change-Id: I1dc20216830a882dbd5a1b431183407e6b19c837
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-08 10:40:33 +00:00
Liang Qi
158a3a4159 Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	src/corelib/io/qiodevice_p.h
	src/corelib/kernel/qvariant_p.h
	src/corelib/tools/qsimd.cpp
	src/gui/kernel/qguiapplication.cpp
	tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp

Change-Id: I742a093cbb231b282b43e463ec67173e0d29f57a
2016-01-21 08:17:21 +01:00
Liang Qi
8f569c740a Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts:
	config.tests/common/atomic64/atomic64.cpp
	configure
	src/3rdparty/forkfd/forkfd.c
	src/corelib/io/forkfd_qt.cpp
	src/widgets/kernel/qwidgetwindow.cpp
	tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
	tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
	tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
	tools/configure/configureapp.cpp

Change-Id: Ic6168d82e51a0ef1862c3a63bee6722e8f138414
2016-01-19 10:03:01 +01:00
Jani Heikkinen
1a88b2f768 Updated license headers
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)

Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-15 12:25:24 +00:00
Vincas Dargis
e8eaf82e58 PostgreSQL: Fix memory leak in QPSQLDriverPrivate::getPSQLVersion()
Memory leak occurs when 'release' pointer variable is overwritten
for second use without releasing resources it is currently pointing
to. Leak occurs only in specific edge case depending on
client/server versions.

Task-number: QTBUG-49789
Change-Id: Ie5be8996ed158309f20dbb3574f956d2eb137460
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-12-12 10:21:13 +00:00
Mark Brand
02a730331e qsql_sqlite: fix segfault in dtor of orphan result
d79ae90466 accidentally removed the check
on the driver pointer before dereferencing it. This causes a segfault
when deleting a result object after its driver has already been deleted.
This situation can arise when a database is removed, explicitly or
probably also upon unloading the driver plugin, while related
results still exist. The problem affected
qttools/tests/auto/qhelpcontentmode.

Task-number: QTBUG-49836
Change-Id: I8ce8f8a5e27d787309ac2ff644b388e333d76435
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-12-09 08:41:54 +00:00
Mark Brand
371c2e4786 qsql_sqlite and qsql_sqlite2: don't hold driver data in result
Change-Id: Ia4f6adc6daaea97ac06246e9d01c6561de1227ea
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-12-09 07:32:32 +00:00
Mark Brand
a5cd081879 qsql: remove QSqlCachedResultPrivate::forwardOnly
The override creates unnecessary complexity.

Change-Id: I72e6cfd2515315ecb5e7a9744a275f06c90be8d9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-12-09 07:32:22 +00:00
Mark Brand
2b1534848b qsql_odbc: remove forwardOnly override
Change-Id: I243a374f8053639dcb3213478a1c65855d8613b4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-12-09 07:32:07 +00:00
Mark Brand
c456fb366a qsql: remove empty Result destructors
Change-Id: If7594421fe5a584912e092feb18002f56d6d30f3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-12-05 00:19:39 +00:00
Mark Brand
d79ae90466 qsql: apply Qt's PIMPL idiom to Q*ResultPrivate
QResult and QResultPrivate are not derived from QObject and
QObjectPrivate respectively, but can still benefit from Qt's
PIMPL idiom. There are several interrelated aspects to this:

  - Base all driver ResultPrivate classes on QResultPrivate.
    Previously, each level in the Result hierarchy tended to keep
    its own private data class.

  - The ResultPrivate class initializes its own Result (q_ptr)
    and Driver members. This ensures that these pointers are
    correctly set in time for the ResultPrivate constructors
    and Result constructors. This is more efficient and makes
    it a lot easier to follow what's being allocated, initialized,
    and cleaned-up.

  - Use macros Q_DECLARE_PRIVATE, Q_DECLARE_PUBLIC, Q_D, and
    Q_Q for access to and from ResultPrivate objects.

  - ResultPrivate classes refer frequently to their counterpart
    DriverPrivate. Various patterns were used to do this. Now
    Q_DECLARE_SQLDRIVER_PRIVATE arranges this uniformly while
    hiding ugly casting. It creates a public method in the
    ResultPrivate returning the correctly typed pointer to the
    corresponding DriverPrivate object. Since the method is public,
    the Result class and helper classes and functions can also use it.

  - The explicit const is removed from QResultPrivate::sqldriver,
    even though it is treated (mostly) like a const within the
    context of Result and ResultPrivate. This is the same pattern
    seen in Qt's PIMPL idiom. The macro created getter methods
    take care of const.

  - qsql_mysql was using a signal/slot connection to zero its own
    copy of the driver pointer when the driver was destroyed. This is
    no longer necessary.

Change-Id: Ida4933bc92fb3e9a05ea4b53b48085894734e36e
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-12-05 00:19:27 +00:00
Mark Brand
22639e65d2 qsql: move QSqlCachedResultPrivate to header
Later changes will subclass this class. Moving to the header now
for better readable patches.

Change-Id: If17607d69169aa5c449c36c9445308164e387f29
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-11-30 08:33:33 +00:00
Mark Brand
6303f5c7b8 qsqldriver: use Q_D macro
Change-Id: Ic05165e99e6a5ab8fccc0da5f571f8579f2ab5b2
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-11-30 08:33:20 +00:00
Mark Brand
d8aac3313c qsql: add missing Q_DECL_OVERRIDE
Change-Id: Ic562ee9e287f21d73b94f6dc3c4884a2ed33b9fe
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-11-30 08:32:51 +00:00
Marc Mutz
51089a5742 Use Q_UNLIKELY for every qFatal()/qCritical()
If, after checking a condition, we issue a qFatal()
or a qCritical(), by definition that check is
unlikely to be true.

Tell the compiler so it can move the error handling
code out of the normal code path to increase the
effective icache size.

Moved conditional code around where possible so that
we could always use Q_UNLIKELY, instead of having to
revert to Q_LIKELY here and there.

In some cases, simplified the expressions newly wrapped
in Q_UNLIKELY as a drive-by.

Change-Id: I67537d62b04bc6977d69254690c5ebbdf98bfd6d
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-11-29 22:59:17 +00:00
Mark Brand
d6ecdb4344 qsql: move Q<driver>Result out of header
Leaf result classes do not need to be exposed in the headers. The
implementations were inconsistent on this point.

Change-Id: I5bd41ae9e77b932f6232218a014400a59f2ef5a0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-11-27 12:15:15 +00:00
Mark Brand
6333edfdf3 qsql: add missing Q_EXPORT_SQLDRIVER_* macros
and remove a stray one.

Change-Id: I1a10688e6cf916aa93f383ecc9e9aa8e28966e95
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Andre Somers <andre@familiesomers.nl>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-11-27 12:15:05 +00:00
Mark Brand
bd30cb2a91 qsql: remove stray includes and forward decls
Change-Id: I9b8f6283c7e98ab071473f684f3fc22b1c0c7273
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-11-26 16:09:34 +00:00
Mark Brand
299358dcc5 QSqlResult: const for driver
Change-Id: Ia30e165152b5ed3056235faec9d7168bbc95fca4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-11-25 07:27:33 +00:00
Mark Brand
195edca79b qsql_odbc: rename QODBCPrivate to QODBCResultPrivate
This naming pattern is consistent with the other drivers and prepares
for subsequent changes.

Change-Id: I77d1edcfd52727cd1126adbf70a808dfbf3255be
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-11-25 07:27:17 +00:00
Liang Qi
746f54c6df Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/dev 2015-11-23 19:17:25 +00:00
Mark Brand
550fbf96b0 qsql_ibase: use virtual createResult
This method is virtual probably to avoid having to use the specific
driver type in cases like this.

Change-Id: Ifd9d5e2d320b744e098a0b24ae6f3a89cfc15c9a
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-11-23 16:26:13 +00:00
Mark Brand
d19b6c646e qsql_oci: fix option types
These are signed values. Notice the initialization to -1, which
apparently never worked. The unsigned types previously used may
be due to confusion with other arguments of OCIAttrSet():

sword OCIAttrSet ( dvoid       *trgthndlp,
                   ub4         trghndltyp,
                   dvoid       *attributep,
                   ub4         size,
                   ub4         attrtype,
                   OCIError    *errhp );

Examples found in web searches also use signed int.

Change-Id: I8db273a554fa0ef454a8dfce5d83983f79cf6cb9
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-11-23 16:26:03 +00:00
Mark Brand
f906e1471a qsql_db2: fix build failure
Casting between Qt::Handle (void*) and db2's SQLHANDLE (int) is
not tolerated by gcc 5. Neither is the missing enum value in the
switch.

Change-Id: Ibce0adc68376e6c411cae238b26abc6682d0392c
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-11-23 16:25:53 +00:00
Friedemann Kleint
efd8e6922c QSqlQueryModel::clear(): Call begin/endResetModel().
Call begin/endResetModel() in QSqlQueryModel and all
derived classes.

Task-number: QTBUG-49404
Change-Id: I11492d6386efb4c945c246a6379aaa6ca4502a25
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-11-19 07:24:13 +00:00
Nico Vertriest
5c4c5dd7a2 Doc: corrected snippet QSqlTableModel
Wrongly used QSQLQueryModel previously

Task-number: QTBUG-35860
Change-Id: I059ba45e54ac67b75b68eb0b804f66642b87a29f
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-11-16 15:25:35 +00:00
Friedemann Kleint
73b7096822 Fix build of PostgreSQL plugin with -Werror on Windows/64bit.
Fix MSVC warning:
sql\drivers\psql\qsql_psql.cpp(452): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data

Change-Id: I44a902a9169efa568dcd82bdc08c5b97e661d65a
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-11-06 16:48:17 +00:00
Topi Reinio
d159fe199f Doc: Update examplesinstallpath to include the repository name
The examplesinstallpath variable in .qdocconf files defines the path
under QT_INSTALL_EXAMPLES where examples are found.

To match the way examples are packaged in Qt 5.6, prefix each
install path with the repository name.

Task-number: QTBUG-48736
Change-Id: I6a35c94fdacaad21cd044411aba02027b9019300
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
2015-10-21 09:50:16 +00:00
Liang Qi
b7ac036b72 Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts:
	src/network/socket/qabstractsocket.cpp
	src/plugins/platforms/winrt/qwinrtscreen.cpp
	src/sql/drivers/mysql/qsql_mysql.cpp

Change-Id: Ifb73623d09f53340ee5e10283f1f86b580998902
2015-10-13 23:03:51 +02:00
Friedemann Kleint
bba86a01c9 Libraries: Fix single-character string literals.
Use character literals where applicable.

Change-Id: I8e198774c2247c1cc1d852a41b59b301199b7878
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-10-13 16:37:37 +00:00
Nico Vertriest
58664dbeb3 Doc: fixed links to qmake documentation
Task-number: QTBUG-43810
Change-Id: I56676d6f6f95ed79bd1719404b4e48c26490eea6
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-09-25 10:57:51 +00:00
Samuel Gaist
0de6c52bfe Fix QMYSQL plugin database connection setup check
Opening a connection to an e.g. inactive server will return true
regardless of the server accessibility.
This patch aims to fix the current checks done.

The first one is an allocation check which should only fail if there's
not enough memory but is currently wrote as if the connection failed
there.

The second check that is "failing" is the connection setup. The return
value should either be NULL or the same value provided as first
parameter. That is now verified.

[ChangeLog][QtSql][QSqlDatabase] Fixed a bug where opening a
connection to a MySQL database using the QMYSQL plugin would always
return true even if the server was unreachable. This bug could
also lead to crashes depending on the platform used.

Task-number: QTBUG-47784
Task-number: QTBUG-47452
Change-Id: I91651684b5a342eaa7305473e26d8371b35396c4
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-09-15 04:38:22 +00:00
Nico Vertriest
9588e1bba3 Doc: Corrected link issues in qtbase
Task-number: QTBUG-43810
Change-Id: I0a019becc53b222cb6a7df1fafdccd57aca5b598
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-09-04 08:41:18 +00:00
Liang Qi
afab1546a7 Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts:
	qmake/doc/snippets/code/doc_src_qmake-manual.pro
	qmake/doc/src/qmake-manual.qdoc
	src/corelib/io/qstorageinfo_unix.cpp
	src/corelib/tools/qbytearray.cpp
	src/widgets/kernel/qwidgetwindow.cpp
	tests/auto/corelib/io/qprocess/tst_qprocess.cpp
	tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
	tests/auto/network/access/qnetworkreply/BLACKLIST

Change-Id: I9efcd7e1cce1c394eed425c43aa6fce7d2edf31c
2015-08-26 20:06:57 +02:00
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
Oswald Buddenhagen
68316e6584 Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	doc/global/manifest-meta.qdocconf
	src/corelib/global/qnamespace.qdoc
	src/corelib/io/qstorageinfo_unix.cpp
	src/corelib/tools/qtools_p.h
	src/sql/drivers/psql/qsql_psql.cpp

Change-Id: I23a15ac84e03ad61d865e3df872b013eb0752949
2015-07-17 17:53:19 +02:00
Marc Mutz
5e1b12066a QtSql: Use Q_NULLPTR instead of 0 in all public headers
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.

Task-number: QTBUG-45291
Change-Id: Ie14e5280c430b6a254f8f686534450c1e5995374
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-07-08 12:32:16 +00:00
Liang Qi
0aa2d318b1 Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
	src/corelib/global/qglobal.cpp
	src/corelib/global/qglobal.h
	src/corelib/global/qsysinfo.h
	src/corelib/global/qsystemdetection.h
	src/corelib/kernel/qobjectdefs.h
	src/plugins/plugins.pro
	tests/auto/widgets/itemviews/qlistview/qlistview.pro

Change-Id: Ib55aa79d707c4c1453fb9d697f6cf92211ed665c
2015-07-01 11:05:26 +02:00
Nico Vertriest
a7f2af0911 Replace MAC OS X with OS X
Task-number: QTBUG-46374
Change-Id: I7bc633ab551740bd328a24b0ccae1d534af47138
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-06-30 07:33:31 +00:00
Marc Mutz
435a3d7741 QSqlIndex: replace QList<bool> with QVector<bool>
QList<bool> uses from 400% (32-bit platforms) to 800% (64-bit)
more per-element memory than QVector<bool>.

This change is binary compatible, since QList and QVector have
the same size, and the QList field was not referenced from
inline functions. This includes all relevant special member
functions, since they are all out-of-line (and move assignment
and move constructor are disabled by used-defined copy
assignment and copy constructors, resp.). The header is unchanged
from Qt 5.0, so there were also no past inline users of the
member.

Change-Id: I3a94ddc73a4f388031dfd4fce3fedccc507a39c7
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-06-28 15:56:02 +00:00
Olivier Delbeke
28ceb2ea5e Added SSL support for MySQL database connections
Addition of new options SSL_KEY, SSL_CERT, SSL_CA, SSL_CAPATH and SSL_CIPHER
to allow SSL-encrypted connections to MySQL databases.
When needed, these options must be specified in the function call
QSqlDatabase::setConnectOptions() before the call to QSqlDatabase::open().

SSL_KEY = the path name to the key file
SSL_CERT = the path name to the certificate file
SSL_CA = the path name to the certificate authority file
SSL_CAPATH = the path name to a directory that contains trusted SSL CA
certificates in PEM format.
SSL_CIPHER = a list of permissible ciphers to use for SSL encryption.

These options replace CLIENT_SSL (which should not be used any more).

Example:
    db.setConnectOptions("SSL_KEY=client-key.pem;" \
                         "SSL_CERT=client-cert.pem;" \
                         "SSL_CA=server-ca.pem");

[ChangeLog][QtSql] SSL support for MySQL database connections has been added.
Option CLIENT_SSL replaced by SSL_KEY, SSL_CERT, SSL_CA, SSL_CAPATH and
SSL_CIPHER, so that the keys, certificates and cipher can be specified.

Task-number: QtBUG-3500
Change-Id: I8197234b169a818658678d6fcc953c90e83db23e
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-06-14 15:49:24 +00:00
Roman Bogolyubov
7672e1a8eb Fixing error with reading Time fields by qibase sql driver.
Change-Id: I8b874d2fbf54d0a2dcd6eea13f5b6d7405f6e663
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-06-08 12:07:10 +00:00
Evgeniy Fominov
34014406ba quote QUuid values
Task-number: QTBUG-44480
Change-Id: I125ab913c867758d958a2774ad125533d6a07a83
Reviewed-by: Evgeniy Fominov <fm@stilsoft.ru>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-06-07 09:42:14 +00:00
Nico Vertriest
a4848142b4 Doc: added doc for non-documented functions
Task-number: QTBUG-36985
Change-Id: I85f58c2877d83b98bf3427cbb0f567575803524f
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-05-18 08:01:37 +00:00
Andy Shaw
4dd896785b MySQL: Add support for the timeout options via the connectionOptions
Task-number: QTBUG-321
Change-Id: I0bbc1ae713fb0278a9973f8e87f28f1b3f1c49ce
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-04-27 11:39:29 +00:00
Andy Shaw
392d861790 MySQL: Keep the precision of the field when formatting the value
Change-Id: I4ab08be5112167a617d6d1d109754f2404a9605f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-03-20 13:51:29 +00:00
Thiago Macieira
d6268ea91c QtSql: Fix const correctness in old style casts
Found with GCC's -Wcast-qual.

Change-Id: Ia0aac2f09e9245339951ffff13c94688f5b6ed76
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-03-11 01:50:25 +00:00
Frederik Gladhorn
34b14a8472 Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	examples/xml/htmlinfo/simpleexample.html
	examples/xml/rsslisting/rsslisting.cpp
	qmake/generators/win32/msbuild_objectmodel.cpp
	src/3rdparty/harfbuzz-ng/src/hb-private.hh
	src/corelib/global/qlogging.cpp
	src/corelib/io/qstorageinfo_unix.cpp
	src/corelib/thread/qwaitcondition_unix.cpp
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
	src/testlib/doc/src/qt-webpages.qdoc
	tests/auto/other/qaccessibility/tst_qaccessibility.cpp

Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
2015-02-24 21:02:08 +01:00
Friedemann Kleint
916af48cff PostgreSQL: Fix special floating point handling for 'float' types.
Introduce a template function to determine the special values
via macro and use that for QVariant::Double and QMetaType::Float.

Task-number: QTBUG-44381
Change-Id: I379dd82b22d467b0aebaa42f4f0f5c52472a5c47
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-02-18 11:01:15 +00:00
Samuel Gaist
de98302f70 Update SQL plugin path within Qt's sources
The current SQL plugins path are still Qt 4 style. This patch adds
qtbase to ensure users will be directed to the right place.

Change-Id: I11bf933864f0a8955079bf7175eb1e33bb5bc07f
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-02-16 11:57:45 +00:00
Jani Heikkinen
2b75c156b6 Updated BSD licensed file headers
Change-Id: I6441ff931dbd33b698d762e6f6784898f3f60fe7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-15 07:41:17 +00:00
Konstantin Ritt
9b67d89c24 Pass params of shareable type by const-ref rather than by value
...where passing them by value was not intentional.

Change-Id: Ifd5036d57b41fddeeacfbd3f5890881605b80647
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-13 16:29:16 +00:00
Jani Heikkinen
83a5694dc2 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Outdated header.LGPL removed (use header.LGPL21 instead)

Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)

Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination

Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
2015-02-11 06:49:51 +00:00
Maks Naumov
c2f26d6d0b Use prefix instead of postfix for iterators
The postfix increment(decrement) creates a temp copy of *this before the
modification and then returns that copy. It's needed only when using the
old iterator and then incrementing it.

Change-Id: I7f6702de78f5f987cec3556047e76049b4ee063a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-08 12:25:12 +00:00
Frederik Gladhorn
b6191b16d4 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/global/global.pri
	src/corelib/global/qcompilerdetection.h
	src/corelib/global/qglobal.h
	src/corelib/tools/qdatetime.cpp
	src/plugins/platforms/xcb/qxcbscreen.h
	src/plugins/platforms/xcb/qxcbwindow.h
	src/widgets/dialogs/qcolordialog.cpp
	src/widgets/dialogs/qcolordialog_p.h
	tools/configure/configureapp.cpp

Change-Id: Ie9d6e9df13e570da0a90a67745a0d05f46c532af
2015-01-21 11:10:14 +01:00
Eric Lemanissier
c28718b88b Correction on bound values in case of repeated QSqlQuery::execBatch
Until now, QSqlQuery::execBatch did not call resetBindCount, which lead
the next call to QSqlQuery::addBindValue to start at non zero index.
This is problematic in case of a prepared query which is called several
times.

Task-number: QTBUG-43874
Change-Id: I1a0f46e39b74d9538009967fd98a269e05aac6f2
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-01-16 13:14:26 +01:00
Maximilian Hrabowski
a44749855e QODBC: fix converted string values empty SQLServer 2012
SQL Server 2012 Native Client (version 11.0.2100.60) or later introduced
a change in the behavior of the SQLGetData method when converted string values
are involved. In older version a (sometimes wrong) size was returned. Now always
SQL_NO_TOTAL is returned which signals to read as much data as available.
SQL_NO_TOTAL was handled like SQL_NULL_DATA in the code before which indicates a
NULL value so the returned string was empty.

See link for more info: http://msdn.microsoft.com/en-us/library/jj219209.aspx

Change-Id: Ia0d2296caf593890b301ee1848d1bf3eb8d7b6fe
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-12-30 23:55:51 +01:00
Julien Blanc
190f64aab3 Added timezone support for datetime fields in PSQL
This patch adds correct timezone support in PSQL plugin. Prior to this
patch, no timezone support was provided, so only the following case
worked :
 * using local time in both client application and postgresql server
 * datetime were using second precision

This patch tries to take care that postgresql has two different
datatypes for date time, respectively :
 * timestamp with time zone
 * timestamp without time zone

Both are internally stored as UTC values, but are not parsed the same.
 * timestamp with time zone assumes that there is a time zone
   information and will parse date time accordingly, and then, convert
   into UTC before storing them
 * timestamp without time zone assumes that there is no time zone
   information and will silently ignore any, unless the datetime is
   explicitly specified as having a time zone, in case it will convert
   it into UTC before storing it

Both are retrieved as local time values, with the following difference
 * timestamp with time zone includes the timezone information
   (2014-02-12 10:20:12+0100 for example)
 * timestamp without time zone does not include it

The patch does the following :
 * parse the date retrieved by postgresql server using QDateTime
   functions, which work correctly
 * always convert the date to UTC before giving it to postgresql
 * force time zone so that timezone information is taken into account
   by postgresql
 * also adds the milliseconds when storing QDateTime values

The following configurations are tested to work :
 * client and server using same timezone, timestamp with or without tz
 * client and server using different timezone, timestamp with tz

The following configuration will *not* work :
 * client and server using different timezones, timestamp without tz

Because data will be converted to local time by the postgresql server,
so when returned it will be different from what had been serialized.
Prior to this patch, it gave the illusion to work because since TZ
information was lost, time was stored as local time from postgresql.
Lots of inconsistencies occurred, though, in case client tz changes...

I don't expect this to be an issue since having different TZ in server
and client and *not* handling this is a broken setup anyway.

Almost based on changes proposed by julien.blanc@nmc-company.fr

[ChangeLog][QtSql] Added timezone support for datetime fields in PSQL

Task-number: QTBUG-36211
Change-Id: I5650a5ef60cb3f14f0ab619825612831c7e90c12
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-12-30 23:49:14 +01:00
Simon Hausmann
4295203dd6 Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2014-12-30 09:35:39 +01:00
Milian Wolff
2f2382ee1d Return true for QSqlQuery::isNull on non-existent fields.
This fixes the tst_QSqlQuery::isNull test case when run against a
MySQL database driver.

Change-Id: I8248ba956472bae97a64247594055e6f02840557
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-12-29 17:03:17 +01:00
Frederik Gladhorn
aaff94c2df Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/tools/qbytearray.cpp
	src/gui/kernel/qplatformsystemtrayicon.cpp
	src/gui/kernel/qplatformsystemtrayicon.h
	src/plugins/platforms/xcb/xcb-plugin.pro

Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
2014-12-29 16:37:38 +01:00
Nico Vertriest
a8714548d1 Doc: corrected broken links qtbase
Task-number: QTBUG-43115
Change-Id: Ib441326083294a6d59d75510142b1481f7b0bc35
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-12-23 10:55:45 +01:00
Simon Hausmann
015002fec9 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	doc/global/template/style/online.css
	mkspecs/android-g++/qmake.conf

Change-Id: Ib39ea7bd42f5ae12e82a3bc59a66787a16bdfc61
2014-12-10 07:58:06 +01:00
Olivier Goffart
5180f32c5a Add Q_DECL_OVERRIDE in the src subdirectory
Done automatically with clang-modernize on linux

(But does not add Q_DECL_OVERRIDE to the function that are marked
 as inline because it a compilation error with MSVC2010)

Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-03 09:57:11 +01:00
Frederik Gladhorn
ce6990c3e7 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: Id20053d261b4fbbcc0ac8ba49dd3ef2253fa4b95
2014-11-27 18:28:12 +01:00
Frederik Gladhorn
3de7382044 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Conflicts:
	dist/changes-5.4.0

7231e1fbe2 went into 5.4 instead of the
5.4.0 branch, thus the conflict.

Change-Id: I70b8597ab52506490dcaf700427183950d42cbd1
2014-11-27 18:12:10 +01:00
Alejandro Exojo
6ea6ee7a12 Adjust DBMSType to DbmsType to follow conventions
The enum was made public in f84b00c6d2, but this
makes it follow the convention to camel case acronyms too before it's too late
to change it.

Change-Id: Ibb81e9221cb73fe0502d0a26f2d73512dd142f08
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-26 10:47:32 +01:00
Shawn Rutledge
544f82ea3a sqlite: don't use deprecated QSqlError constructor
so that it can build with configure -no-feature-DEPRECATED

Change-Id: Id2decc05974bad249c79936d99ab63d3cfc375ad
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-26 08:42:05 +01:00
Frederik Gladhorn
af3bd5037a Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2014-10-28 10:32:06 +01:00
Frederik Gladhorn
2eb26c1709 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/gui/text/qfontdatabase.cpp

Change-Id: I6ac1f55faa22b8e7b591386fb67f0333d0ea443d
2014-10-27 13:00:36 +01:00
Friedemann Kleint
da72e5538e Retrieve auto-value for ODBC fields.
Introduce a static function returning the value called from
qMakeFieldInfo(SQLHANDLE). The field is currently only populated
when executing a query. Populating it from QODBCDriver::record()
would require executing a dummy query, which is problematic since
QSqlField does not have any provisions for delayed evaluation.
Document the limitation.

Task-number: QTBUG-39388
Change-Id: Ib2d2f2653b8b757389f627142c61c13a117fef72
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2014-10-27 10:56:13 +01:00
Friedemann Kleint
23cced4530 Split up function qMakeFieldInfo() in ODBC plugin.
Refactor code to extract an overload of qMakeFieldInfo()
that only takes an SQLHANDLE hStmt parameter. This allows
for easy debugging and inspecting driver-dependent additional
columns in QODBCDriver::record().

Task-number: QTBUG-39388
Change-Id: Id338838f837746beff1b2711bf2cd66ca8c7afe6
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2014-10-27 10:56:09 +01:00
Friedemann Kleint
89ae5c03a2 Fix MSVC warnings about integer conversions in ODBC driver.
qsql_odbc.cpp(360) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
qsql_odbc.cpp(380) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
qsql_odbc.cpp(2052) : warning C4267: 'argument' : conversion from 'size_t' to 'SQLSMALLINT', possible loss of data
qsql_odbc.cpp(2070) : warning C4267: 'argument' : conversion from 'size_t' to 'SQLSMALLINT', possible loss of data
qsql_odbc.cpp(2096) : warning C4267: 'argument' : conversion from 'size_t' to 'SQLSMALLINT', possible loss of data

Task-number: QTBUG-39388
Change-Id: Ie97d9e968d5c7b013b0d364c64175aa9b329ae97
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2014-10-24 07:50:23 +02:00
Friedemann Kleint
dc58c6be47 Remove non-UNICODE code branches from ODBC plugin.
Task-number: QTBUG-39388
Change-Id: If22876454547098dd00e477c0593da7c4be0e803
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2014-10-24 07:48:31 +02:00
Friedemann Kleint
d6d3841e71 Improve QDebug formatting of QtSql classes.
Fix quoting/spaces, introduce QDebugStateSaver, add missing fields
of QSqlField.

Task-number: QTBUG-39388
Change-Id: Id397f9e79f4d4d2bb5c903cd96bf2c27f8e1b7c3
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-10-23 21:15:40 +02:00
Alessandro Portale
106487387d Removing a few unneeded "? true : false"
Change-Id: Ib13f0ddd65fe78f5559f343f2fc30756b1d3ef76
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-10-09 09:43:26 +02:00
Matt Broadstone
f84b00c6d2 Expose QSqlDriverPrivate dbmsType in public QSqlDriver api
dbmsType was previously kept as a private variable in QSqlDriverPrivate,
however it's particularly useful for QODBC users.

[ChangeLog][QtSql][QSqlDriver] Add support for determining DBMS type from SQL driver.

Change-Id: If1c221520da9ac4ccef85a02db078679d76eac92
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-09-24 14:44:49 +02:00
Matti Paaso
974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00
Frederik Gladhorn
c96426f19f Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-09-24 12:04:52 +02:00
Nico Vertriest
2699d40b57 Doc: correction return statement QSqlDatabase QSqlTableModel::database()
Task-number: QTBUG-37358
Change-Id: I68a0110a01ac21871e8a369c7ab94d2dadf1d80b
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-09-24 08:49:19 +02:00
Frederik Gladhorn
c5a3e5edd9 Merge remote-tracking branch 'origin/5.3' into 5.4
The isAlwaysAskOption was removed in 3862171315
so manually removed code in
src/plugins/bearer/connman/qconnmanengine.cpp

Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qcollator_macx.cpp
	src/corelib/tools/qstring.cpp
	src/gui/kernel/qwindow.cpp
	src/gui/kernel/qwindow_p.h
	src/gui/text/qtextengine.cpp
	src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h
	src/plugins/platforms/android/qandroidinputcontext.cpp
	src/plugins/platforms/xcb/qglxintegration.cpp
	src/plugins/platforms/xcb/qglxintegration.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/testlib/qtestcase.cpp
	src/testlib/qtestlog.cpp
	src/widgets/dialogs/qfiledialog.cpp
	src/widgets/kernel/qwindowcontainer.cpp
	tests/auto/corelib/tools/qcollator/tst_qcollator.cpp
	tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
	tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
	tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp

Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
2014-09-23 11:23:36 +02:00
David Faure
507fff201b qsql ibase: fix memory corruption due to LONG being 4 bytes in firebird.
As fb_types.h says, Firebird requires (S)LONG to be 32 bit, and it defines
SLONG to int. This leads to sqllen being 4, so qsql_ibase.cpp allocates
4 bytes... and was writing 8 bytes into it.

Fixed by checking sqllen, the same way QIBaseResult::gotoNext does.

Change-Id: Ie8680d32f98c354dfc8430b8efbfe95450556956
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-09-10 08:28:11 +02:00
Marcel Krems
e6857b7ebc Updated QSql{Query,Result}::bindValue doc to reflect the current state.
Since 5.0 it is possible to use one call to bindValue to bind
values to multiple placeholders with the same name.

Task-number: QTBUG-23360
Change-Id: Ic838150d25dd07bca7bc9e5d91ab3362a73833d6
Reviewed-by: Matt Newell <newellm@blur.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-09-08 16:18:19 +02:00
Frederik Gladhorn
ea90032685 Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	src/network/ssl/qsslsocket_openssl_symbols.cpp

Change-Id: Ic62419fa1fee5f4de6c372459d72e6e16f9a810b
2014-07-29 12:56:06 +02:00
Robin Burchell
25978c7f9e Show timing of all executed SQL queries
This also coincidentally fixes logging of prepared queries, which previously
weren't logged.

Change-Id: I41b3559080662284699ac3dfa4fa4236342c61d2
Done-by: John Brooks <john.brooks@jollamobile.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-24 03:31:14 +02:00
Samuel Gaist
4cedc55327 Windows: Add Qt Creator PATH update tip for missing SQL client dlls
This patch aims to provide an additional tip for users having trouble
with e.g. the MySQL plugin. After a successful build most users are
struggling with loading failure due the fact that the client libraries
folder is not contained in the PATH environment variable. This tip
helps them overcome that in a controlled manner with Qt Creator.

Change-Id: I2dc5c9c6d8d8976686d74c369b6e1683c479f35c
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-07-22 11:32:08 +02:00
Jerome Pasion
e4661df947 Doc: Removed "url" variable from qdocconf files.
url is set in qtbase/doc/global which is inherited by the
Qt 5 module qdocconf files.

Change-Id: Ieffa174f598f4a3b8ce8be9bfae7ca9b6981f12b
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-07-04 12:12:29 +02:00
Thiago Macieira
443f06a2ec Remove the use of QT_STATIC_CONST in QtSql
There doesn't seem to be any reason why the macro is actually
necessary. My guess is that someone wrote the code on Windows without
"const", then it failed to compile everywhere else. Instead of fixing
the code by adding the "const", the developer must have added this
macro.

Microsoft Visual Studio mangles the constness of the variable, so we
can't remove it now from existing compilers. But we can for the new
version.

This is also required to compile QtSql with the MSVC option
/Zc:strictStrings, which is enabled in Qt 5.4.

Change-Id: Ibf2c2cb7287a4332d69aa81080a37aab4327677d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-06-20 21:21:43 +02:00
Jerome Pasion
56a087a1ef Doc: Added link to SQL example page from main Qt SQL landing page.
Change-Id: I1fe42b6ec72933ea8ba605836e8a56332fd3c691
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-06-06 16:52:24 +02:00
Andy Shaw
d153e4628e Initialize the count variable used in SQLNumResultCols to 0
If the call to SQLNumResultCols fails for whatever reason then it will
not be correctly caught since the count might be higher than 0 since it is
uninitalized. This ensures that if it fails then it does not try to act as
if it succeeded.

Task-number: QTBUG-39137
Change-Id: Ifae8c1f7fac8416643f2317747f87295642a7935
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-05-27 19:23:58 +02:00
Karim Pinter
8bdf319c28 Fix for bindvalue(int) memory allocation problem
QSqlResult::bindValue(int index, ...) is increasing the memory usage
when called multiple times for same index

Task-number: QTBUG-33169
Change-Id: I4f26125f6bb994bb430dc054df5761b6ddf03075
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-05-21 17:30:13 +02:00
Frederik Gladhorn
e6286ca289 Merge remote-tracking branch 'origin/release' into stable
Manually fixed up: isES -> isOpenGLES
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp

Change-Id: I57d2ef26c3d4a7b40ace09f4e8560b7686650ea5
2014-05-03 00:56:41 +02:00
Frederik Gladhorn
ccc6efb6e9 Merge remote-tracking branch 'origin/release' into stable
This merge adds the opengl rename.

Change-Id: I84ea0b6abee9780ebb2cf3f64ab9e3fdf2acab3e
2014-05-01 13:08:42 +02:00
parihaaraka
f1eefd6cf9 Fix PSQL column's metadata
Fixed libpq's PQfmod() interpretation inside QPSQLResult::record()

Task-number: QTBUG-12477
Change-Id: I0e4c94ca1b06fd6a8e5b5702235cdd6d9736f8bf
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-04-29 14:42:26 +02:00
Mark Brand
373d858812 [QtSql][QSqlTableModel] fix failure to refresh in selectRow()
Caused by missing braces, leaving the break outside the scope of the if clause.

Task-number: QTBUG-38509
Change-Id: I6b0a7f34512a3a9b0fbd790116f81f54f4a91cf0
Reviewed-by: Tobias Koenig <tobias.koenig.qnx@kdab.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2014-04-27 20:39:11 +02:00
Israel Lins Albuquerque
3e6e70bddd [QSqlQuery] misbehavior of seek in special query positions
When QSqlQuery::at() == QSql::BeforeFirstRow and seek(1, true) (seek to
next record) is called the expected result is go to first row.
When QSqlQuery::at() == QSql::AfterLastRow and seek(-1, true) (seek to
previous record) is called the expected result is go to last row.

But in all cases the first and last are skipped.

Change-Id: I584138b3d397ce1c790bf89688ee92289a99611c
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-04-26 20:22:42 +02:00
Olivier Goffart
89ecac4607 QSqlError: Mark deprecated functiond with QT_DEPRECATED
And move the default argument from the deprecated constructor to
the new one

Also make sure that the error number is consistent across the
two constructor

Change-Id: I3721266b39ab493f0add35b2d1f892b2f6094992
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-25 06:37:06 +02:00
Friedemann Kleint
d5ff16bc8e Fix access of tmpStorage in QODBCResult::exec().
Instead of using a list and appending / popping of elements, use
a vector of constant size and access via index to avoid
bookkeeping errors.

Task-number: QTBUG-37831

Change-Id: Icb5a182626c63e693b04daaf7a2f70997d9aeae1
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-04-03 08:20:48 +02:00
Israel Lins Albuquerque
075c876f9a [QtSql]QIBASE]add support for prepared queries in numRowsAffected
Prepared queries need to be handled as procedures.

Change-Id: I4b4d7743fe45c416ca83ceb942aa48d79731f2f8
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-03-29 08:46:00 +01:00
Friedemann Kleint
3ed2ec1487 Fix some documentation errors.
Correct links and fix typos, remove obsolete documentation,
fix some snippets, mark some classes as internal.

Change-Id: I9a3266605f060783413d32740057a57a820c8929
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-24 16:42:02 +01:00
Tobias Koenig
1f6e461533 Fix positional binding values order in QSqlQuery
Adapt the stringification code, that is used to produce the
keys for QSqlQuery::boundValues() return value, to keep the
right order of the binding values.

Task-number: QTBUG-12186
Change-Id: Ic11a455bfd9ffd1418b1b021ce5cf78cae9b4504
[ChangeLog][QtSql] Fixed the order of values with positional binding in a QSqlQuery
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-03-20 10:36:34 +01:00
Friedemann Kleint
0d50efeae9 Fix QByteArray memory corruption in QIBaseDriver::open().
Rewrite code to use QByteArray::reserve(), QByteArray::append()
instead of memcpy().

Task-number: QTBUG-37508
Change-Id: I16ead153f33fa5a34bc01ee27ae4cd1b8993b65e
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-03-19 04:17:01 +01:00
Sergio Ahumada
7e872de76e Fix some typos
Change-Id: I7dbe938bff5ac3ab50a0197f94bdb2f6c22fbd16
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-03-03 18:24:29 +01:00
Frederik Gladhorn
a1fe728fa5 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/android/androidjnimain.cpp
	src/plugins/platforms/android/qandroidplatformintegration.cpp
	src/plugins/platforms/android/qandroidplatformintegration.h
	src/plugins/platforms/android/qandroidplatformopenglcontext.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/sql/doc/src/sql-driver.qdoc
	src/widgets/widgets/qtoolbararealayout.cpp

Change-Id: Ifd7e58760c3cb6bd8a7d1dd32ef83b7ec190d41e
2014-02-07 13:07:25 +01:00
Frederik Gladhorn
c30fc6949a Merge remote-tracking branch 'origin/release' into stable
Change-Id: I4680723bef393a15d5aa63b9dd7d5fbb599bd9fa
2014-01-27 18:58:04 +01:00
Kai Koehne
c071b165a3 Doc: Remove section on how build the MySQL driver for MinGW users
The section is clearly outdated. It references MinGW from mingw.org, which
we don't support anymore. With a more modern MinGW you can just use the
recipe to link against the prebuilt binaries the same way we do describe
for MSVC.

Task-number: QTBUG-17268
Change-Id: I15b96fd328605b60d1494a703b9005e2c16aea39
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-01-25 21:34:01 +01:00
Frederik Gladhorn
9033977d39 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qstring.cpp
	src/gui/image/image.pri
	src/gui/image/qimage.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
	tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp

Change-Id: I3b9ba029c8f2263b011f204fdf68c3231c6d4ce5
2014-01-20 18:18:59 +01:00
Kai Koehne
278152fffd Replace win32-g++ with mingw scope
Commit 773dd01 introduced a general mingw platform scope, which
is cleaner and more flexible than matching the spec name.

Change-Id: Ie3a9cb791a83f7c8a51bc4e23069190c452ab521
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-17 12:08:24 +01:00
Jędrzej Nowacki
3558c0cd74 Minor optimization use QString midRef instead of mid.
It doesn't create a temporary string.

Change-Id: If5c540422f69e573107d1f5a886ac7174ae99853
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-15 15:58:00 +01:00
Oswald Buddenhagen
882bf3475c expand tabs and related whitespace fixes in *.{cpp,h,qdoc}
the diff -w for this commit is empty.

Started-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I77bb84e71c63ce75e0709e5b94bee18e3ce6ab9e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-13 22:46:50 +01:00
Marcel Krems
6c4c2b752c Move struct declaration out of the union to avoid a compiler warning.
Clang 3.3+ warns about this being an extension:
qsqlerror.h:101: warning: anonymous types declared in an anonymous union are an extension [-Wnested-anon-types]

Change-Id: I0350b977ff85558338b3b9db53d3fce7facb7635
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-31 22:27:07 +01:00
Marcel Krems
b276f4e5e8 Remove additional spaces from indentation.
Change-Id: I1f76ed4e2eff64dc133a1fd30a8dc5fd5eb4710e
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-31 22:26:27 +01:00
Frederik Gladhorn
f0fbff4c90 Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I2defae1904154283446b069d151c3ef57302ec7b
2013-12-24 00:56:59 +01:00
Marcel Krems
14170bbf09 QSqlError: Set error code for psql-driver.
Task-number: QTBUG-142
Change-Id: I4a68da595b7c8869188225958eaa88f789d4c3bf
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-20 23:33:07 +01:00
Marcel Krems
106316198d Enable QSqlError to handle alphanumeric error codes.
Some database systems (like PostgreSQL) use alphanumeric error codes.
Introduce a new method nativeErrorCode() which replaces number().
If the error code cannot be converted to int, number() will return 0.

Task-number: QTBUG-142
Change-Id: Ic7fba841737674b75c0c01c2263f51d2041da497
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-20 16:27:41 +01:00
Marcel Krems
a14f26234b Move QSqlError private members into a pimpl class.
This allows us to add new members without breaking BC.

Change-Id: I59236cd5eeacdcfc490849a18b3bdf70d7a501bf
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-20 10:46:12 +01:00
Israel Lins Albuquerque
5193c14536 fix parsing of bound SQL statements for PostgreSQL
PostgreSQL allows bound variables inside square braces.

Task-number: QTBUG-34541

Change-Id: I4f069b3f1078d4cdf172fbac9e0d7d23d20d167a
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-16 15:35:30 +01:00
Frederik Gladhorn
f6dbdd9c16 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/sql/drivers/sqlite/qsql_sqlite.cpp

Change-Id: Ia7cffd2c99ae3d5eea6b5740683c06e921336dcd
2013-12-05 18:52:38 +01:00
Nico Vertriest
d78c39ed12 Doc: invalid reference to Qt for Linux/X11
Task-number: QTBUG-34749

Change-Id: I8274e41bc4c29650b22bb6ca5da264687aa70e4a
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2013-12-03 11:16:24 +01:00
Tobias Koenig
a774aa69db Clear isOpenError flag on successful open call
Clear the isOpenError flag in IBase driver if the QIBaseDriver::open()
call was successful, otherwise a previous, unsuccessful open() call would
block any further QSqlQuery::exec() calls on this database connection.

Task-number: QTBUG-13435
Change-Id: Idc64e28cd63805a13f208702ec87dc1bf6b98798
[ChangeLog][QtSql][QIBASE] Fixed the internal state of IBase driver after a failed open call
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-02 20:26:16 +01:00
Mark Brand
7bf519ec62 add mising tag to method documentation
Change-Id: Iafd7a268bf3b3be9a06ab1badc23e3db52df9586
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-01 23:14:34 +01:00
Tasuku Suzuki
c3c424b384 QSqlQuery::isNull string overload
Introduce isNull overload to take field name as a parameter.

This is corresponding to the commit
7e6e141234

Change-Id: I122f79707d26eaa09c2f38dc31aeee1dac7de33b
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-01 23:14:15 +01:00
Tobias Koenig
6a6f1e3c7e Support custom port number in IBASE SQL driver
Let the IBASE SQL driver use the custom port number
that is set via QSqlDatabase::setPort().

Task-number: QTBUG-33345
Change-Id: Ib55b32c8a318d82038d66e8645b416e36dad3edf
[ChangeLog][QtSql][QIBASE] Support custom port number
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-01 14:47:10 +01:00
Tobias Koenig
1c47627aa0 Fix compilation of OCI driver
Add missing feature enum in switch statement to
avoid warning that would lead to compilation error
when compiled with -Wall.

Task-number: QTBUG-34794
Change-Id: Ia2f70f27ecbb7a7dfc9d36d261103ff49b6c5e4b
[ChangeLog][QtSql][QOCI] Fix compilation
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-01 14:47:03 +01:00
Tobias Koenig
4f28464ab7 Fix evaluation of SQLite driver options
Ensure that the options, which are passed to the SQLite driver, are
evaluated in the correct order and do not overwrite each other.
According to http://www.sqlite.org/c3ref/open.html the
SQLITE_OPEN_READONLY and (SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE) are
mutual exclusive, but SQLITE_OPEN_URI can be combined with both of them.

Task-number: QTBUG-35186
[ChangeLog][QtSql][QSQLITE] Fixed evaluation of driver options
Change-Id: I8e74fe1ce43b9118b15f7b13fc71670bdcd73f68
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-12-01 14:46:56 +01:00
Frederik Gladhorn
ded6a7081b Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2013-12-01 00:53:53 +01:00
Nicolas Cornu
9de879c8a4 Allow temporary databases in sqlite driver
http://www3.sqlite.org/inmemorydb.html#temp_db
[ChangeLog][QtSql][QSQLITE] Enable creating temporary databases

Change-Id: I9972fba5c91eca55cfc5a84f94cff03d19992324
Reviewed-by: Tobias Koenig <tobias.koenig.qnx@kdab.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-11-30 20:26:21 +01:00
Frederik Gladhorn
777cdb00e7 Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Ibb342cc5fc55ff9a3f4b3ecbd53936b57bc13e63
2013-11-29 15:59:34 +01:00
Tobias Koenig
9e64fc9e1c Fix sub-second handling in SQLite driver
Use explicit format string, that contains milliseconds, when
converting an QDateTime/QTime to a SQLite field content.

Task-number: QTBUG-24200
[ChangeLog][QtSql][QSQLITE] Fix sub-second handling
Change-Id: Ib89152b7c3dd780b57a8826beff8b6b118e9d3d6
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-11-28 00:21:56 +01:00
Tobias Koenig
7216387370 Fix sub-second handling in MySQL driver
As stated in http://dev.mysql.com/doc/refman/5.7/en/c-api-prepared-statement-data-structures.html
the content of MYSQL_TIME.second_part field is supposed to be
in microseconds not milliseconds.

Task-number: QTBUG-31124
[ChangeLog][QtSql][QMYSQL] Fix sub-second handling
Change-Id: I5718868029bdedab9508213e800d2dcf3da9be9a
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-11-28 00:21:56 +01:00
Frederik Gladhorn
4a8273a6fc Merge remote-tracking branch 'origin/stable' into dev
For the conflicts in msvc_nmake.cpp the ifdefs are extended since we
need to support windows phone in the target branch while it is not there
in the current stable branch (as of Qt 5.2).

Conflicts:
	configure
	qmake/generators/win32/msvc_nmake.cpp
	src/3rdparty/angle/src/libEGL/Surface.cpp
	src/angle/src/common/common.pri
	src/corelib/global/qglobal.h
	src/corelib/io/qstandardpaths.cpp
	src/plugins/platforms/qnx/qqnxintegration.cpp
	src/plugins/platforms/qnx/qqnxscreeneventhandler.h
	src/plugins/platforms/xcb/qglxintegration.h
	src/widgets/kernel/win.pri
	tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
	tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
	tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
	tools/configure/configureapp.cpp

Change-Id: I00b579eefebaf61d26ab9b00046d2b5bd5958812
2013-11-26 22:35:48 +01:00
Jerome Pasion
5c389cecd0 Doc: Updated url variable in qdocconf files.
In 5.2, the HTML output is in a flatter structure and when they are
hosted in qt-project.org/doc, the documentation will be found at
http://qt-project.org/doc/qt-$QT_VER

The url variable is used by projects outside of Qt 5 which need
to link to Qt 5 documentation, such as Qt Creator.

Task-number: QTBUG-34584
Change-Id: Ifa55fcd9e402b0e184a41e316340e46aeb7101de
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
2013-11-06 11:31:39 +01:00
Sze Howe Koh
16198d963d Doc: Fix broken links
Task-number: QTBUG-33360

Change-Id: Ic944cb2f575c35ebad64852ef5fc44a50ac03571
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2013-11-05 00:29:01 +01:00
Tobias Koenig
1f6dfa7749 Add QSQLITE_OPEN_URI database connection flag
This flag enables the URI mode for database names in the SQLite
backend. Without this flag, it's not possible to use URIs like
    'file:somedb?mode=memory&cache=shared'
to create shared, in-memory databases.

Change-Id: I2938184dad1f27c7af454385ca305bd4f6ed1a5e
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-11-04 09:52:36 +01:00
Sze Howe Koh
0d7d5ff5d0 Doc: Fix miscellaneous typos
Change-Id: Iaf0dd8974c3ad78beffa995c596a76fb3e4cceab
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
2013-10-30 00:34:34 +01:00
Cristian Tarsoaga
1d03918454 Fix - psql driver must format qdatetime using iso
QDateTime must be formatted as ISO8601 specifies, date/month must pe padded with 0 until width is 2
Task-number:QTBUG-33389

Change-Id: If07bcaa976ea3583369da3fd21ce442ee30e8c1f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-10-26 01:43:41 +02:00
Tasuku Suzuki
109bf980b3 Fix a bug in QSqlQuery::isNull documentation
the method returns true if there is not such field.

Change-Id: I25db8de4561d3e0604f3e64edc1810140ba4aad2
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-10-22 17:05:47 +02:00
Jerome Pasion
4533cc9944 Doc: Adding mark-up to boolean default values.
Default values should have mark-up to denote that they are code.
This commit changes:
-"property is true" to "property is \c true".
-"Returns true" to "Returns \c true".
-"property is false" to "property is \c false".
-"returns true" to "returns \c true".
-"returns false" to "returns \c false".

src/3rdparty and non-documentation instances were ignored.

Task-number: QTBUG-33360
Change-Id: Ie87eaa57af947caa1230602b61c5c46292a4cf4e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2013-10-08 00:46:27 +02:00
Thiago Macieira
08f685e865 Add two enums that weren't handled in the ibase SQL driver
qsql_ibase.cpp:1155:23: error: enumeration value ‘LowPrecisionDouble’ not handled in switch [-Werror=switch]
qsql_ibase.cpp:1419:12: error: enumeration value ‘CancelQuery’ not handled in switch [-Werror=switch]

Change-Id: I3c6102051cde80c81948f5a64f9addcf7a371136
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-10-03 15:43:02 +02:00
Sergio Ahumada
a5d34b34fb Merge branch 'stable' into dev
Change-Id: I37d85631ab1165ab91457d8880c4da907a9df73b
2013-09-21 17:33:15 +02:00
Giuseppe D'Angelo
3ec52de5e9 Fix QSqlDriver::handle casting examples
QVariant::typeName() returns a const char *, so one can't use ==
to compare it against another string.

Change-Id: Id7a4c06a9e4874459609b3749f87d39ed73e8405
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2013-09-17 01:01:46 +02:00
Frederik Gladhorn
190fa97c83 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	examples/widgets/doc/src/addressbook-fr.qdoc

Change-Id: Id1196e8e0c6445f1616c3f29234c974d809f8e48
2013-08-27 22:51:09 +02:00
Thiago Macieira
1411a6f1ac Remove use of QFlag in the SQL drivers
It's not clear why they were added, but they aren't needed anymore.

Change-Id: I1d919deefdbd6a71fa255eeac1a8543c33ba390d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-08-24 17:41:38 +02:00
Mitch Curtis
9d0b190f4b Construct a valid QTime when creating timestamps for iBase SQL driver.
0e62fc73c9 requires this.

Task-number: QTBUG-29261

Change-Id: Idd8b630c72d0fd1c255695a8c2c22f9fe32767ee
Reviewed-by: John Layt <jlayt@kde.org>
2013-08-21 16:39:55 +02:00
Jerome Pasion
0a796cfddf Doc: Setting module pages' \qtvariable.
Argument to \qtvariable is the QT variable needed for linking to the
module.

Task-number: QTBUG-32172
Change-Id: I181c0cfaf9529f3aea741cdaee0f20d6cd0e2d2f
Reviewed-by: Martin Smith <martin.smith@digia.com>
2013-08-02 13:35:45 +02:00
Sergio Ahumada
3ef6cf060e Merge branch 'stable' into dev
Conflicts:
	qmake/generators/mac/pbuilder_pbx.cpp
	src/corelib/json/qjsonwriter.cpp
	src/corelib/kernel/qeventdispatcher_blackberry.cpp
	src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm

Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
2013-07-11 16:42:01 +02:00
Mark Brand
96a22ed926 fix off-by-one index check
Change-Id: I6d6461eec24895e9aa0e77deccd39210958b7e2c
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-07-01 21:22:33 +02:00
Thiago Macieira
5dfeb9d687 Fix comma warning found by ICC
qsql_psql_p.h(122): warning #271: trailing comma is nonstandard

Change-Id: I35e12b2ae0201b8a9905d3505697a9b36a1a79e2
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-07-01 11:07:14 +02:00
Jerome Pasion
200cad26f2 Doc: Adding navigation configs in the module qdocconf files.
-The navigation bar requires the titles of the landing page and
 relevant pages.

Change-Id: I5d5986b2bf74205cd49957b63fd6ac4e32cbb36b
Reviewed-by: Martin Smith <martin.smith@digia.com>
2013-06-25 14:02:57 +02:00
Matt Fischer
d37dc75116 Improve support for <MODULE>_PATH options
Several modules, including DBus, MySQL, and OpenSSL have
configure options of the form <MODULE>_PATH, which is used
on Windows (where pkg-config is not present) to specify the
locations of third-party libraries.  These switches had been
implemented by adding extra variables which were referenced
in .pro files, to add the appropriate compiler and linker
switches.  This is undesirable because it means there are
two independent paths for adding the switches to the build,
which can get out of sync with each other, and indeed this
had happened for some of the DBus tools.

To remedy the situation, all three of the switches were
reworked so that they added values directly to the principal
variables that are used in the project files.  This reduces
maintenance, by ensuring that the pkg-config and non-pkg-config
paths appear the same to the rest of the build system.

Change-Id: Iae342f1d14b79fbcfef9fe38aadc803ad3141799
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-05-10 19:39:53 +02:00
Jerome Pasion
d0725dce7b Doc: Removed pages from "qt-sql" group.
-"qt-sql" removed in qtdoc
-no longer needed because "Data Storage" and Qt SQL pages already serve
as the main introduction to SQL support in Qt

Change-Id: I7384ae04ab4c09ecc9d76668e4e7f836095066c1
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
2013-05-07 14:28:16 +02:00
Eskil Abrahamsen Blomfeldt
522c7ba1ac Enable bundling Qt in Android package in build system
For bundling Qt, we need two things:

1. We need to build a regular .jar file out of the Java files,
so that they can be built into the app package. Dexing the
classes first (i.e. compiling the JVM bytecode to Dalvik
bytecode) is required for loading the .jar file at run-time,
but cannot be used for building it into the app, so we need
two different paths.

2. We need to specify which extra files have to be bundled for
each module (this is primarily for plugins and imports). This
is because there is no static dependency on these files, so
it cannot be detected during deployment.

Task-number: QTBUG-30751
Change-Id: I733603ee5d1c64bd7c5b9357eb5d993b9d0298f7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-05-01 11:24:15 +02:00
Sze Howe Koh
bf9ae9018e Doc: Give C++ class lists consistent titles
The majority format is "<Qt Module> C++ Classes" (see
http://qt-project.org/doc/qt-5.0/qtdoc/modules-cpp.html)

Also, fix a broken link (Qt Network C++ Classes)

"<Qt Module> C++ API" is perhaps the more correct format, but that's
part of a much bigger cleanup: QTBUG-30556

Change-Id: I753365e2bec8d85d9a5f686b4aa35c9eeeaf0871
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2013-04-29 19:01:48 +02:00
Mark Brand
af35ee291a qsql_odbc: fix SQLGetStmtAtt usage
Failure to initialize the variable can cause spurious non-zero
values.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms715438(v=vs.85).aspx

"..value can either be a SQLULEN value or a null-terminated character
string. If the value is a SQLULEN value, some drivers may only write the
lower 32-bit or 16-bit of a buffer and leave the higher-order
bit unchanged. Therefore, applications should use a buffer of SQLULEN
and initialize the value to 0 before calling this function. Also, the
BufferLength and StringLengthPtr arguments are not used."

Follow-up to 1509316a37

Change-Id: I2e92eb845a2590bea0849c52bde8902adff1b419
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-04-24 01:30:20 +02:00
Andy Shaw
97c6fd22d2 Use Q_DECLARE_PRIVATE for Oracle and DB2 plugins
This completes the change started with
0bdc86d9ef by providing the implementation
for the Oracle and DB2 sqldrivers

Change-Id: Ia14415c6d7dea51f1369a81236f79aff892b3af7
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-04-09 10:21:26 +02:00
Mark Brand
f6011ec528 QSQLITE2Driver: use Q_DECLARE_PUBLIC/Q_DECLARE_PRIVATE
Follow-up to 0bdc86d9ef

Change-Id: I0a480b5780eb22b1c22e8a47b3a13ab1cd97b934
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-04-08 14:31:41 +02:00
Mark Brand
c8c8093561 QTDSDriver: fix index out of range
Follow-up to 5544208e2.

Change-Id: Iba3ff291622533e8050ddc0494e4488233727ebe
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-04-04 13:13:43 +02:00
Mark Brand
0bdc86d9ef QSqlDriver: use Q_DECLARE_PUBLIC/Q_DECLARE_PRIVATE
406c8ef6e6 introduced deriving the private SQL driver classes from
QSqlDriverPrivate. However, the drivers continued to keep their own
pointer to the private class, even though QObject provides the same
pointer. Worse yet, the private class is allocated too late and not
even passed to QSqlDriver. The result is that QSqlDriver allocates
a separate instance of QSqlDriverPrivate. This is likely to cause
all kinds of chaos.

The private class needs to be allocated in time pass it to QSqlDriver
which passes it on to QObject.

This commit covers the the base class and drivers:
    ibase
    mysql
    odbc
    psql
    sqlite
    tds

Fixes for the remaining drivers will follow.

Change-Id: Id8e7ec4205b0ca6cd00bd022c9cd24f137089245
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-04-04 13:13:37 +02:00
Mark Brand
708d39fa31 QSqlDriverPrivate clean-up
Change-Id: Ia6cbb37330bc0beed7498e43cd18bb2a1afb8e3d
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-04-04 13:13:30 +02:00
Andy Shaw
406c8ef6e6 Move the dbmstype to QSqlDriverPrivate so it can be used for all drivers
By moving it to QSqlDriverPrivate we make it easier to check what
database is actually connected which is particularly useful for the
autotests.

Change-Id: I54d1c2c998919c1d54efb1b6ac9303070ece54aa
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-04-02 19:02:26 +02:00
Mark Brand
8dfe1385b5 QSqlTableModel: expose methods for getting primary values
These methods are very useful in subclasses.

Change-Id: Ifdfee9d90cbdad97f349e46b587582f1d9e7cd7a
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-04-02 14:31:59 +02:00
Mark Brand
4131bfb2c2 make QSqlResultPrivate::fieldSerial() virtual
The Qt psql driver has its own implementation of fieldSerial() it uses
when it invokes positionalToNamedBinding() to generate a query using
its native naming style. Now that QPSQLResultPrivate is derived from
QSqlResultPrivate this can be implemented more conventionally using
a virtual function instead of pointers to static functions.

Note that this change preserves the current behavior of
executedQuery() which will continue to return the query with
positional syntax that is presented to virtual prepare() by
QSqlResult::savePrepare(). Since the driver does not have the
NamedPlaceholders feature, QSqlResult::savePrepare() will not use
positionaltoNamedBinding() to set executedQuery. Although
QPSQLResult::prepare() calls positionaltoNamedBinding(),
it does not put the result into executedQuery.

Change-Id: I7740f386cbfec9eadd9e4d6a7df3e590294655a5
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-04-02 14:31:47 +02:00
Mark Brand
db6190d6fe QPSQLResultPrivate inherit QSqlResultPrivate
Follow the usual pattern that a subclass's private class inherits
its base classes's private class. This will allow the private class
to use virtual functions.

Change-Id: Iafdf1cb5db672d973ad1f60bdd7e37b9072fbb1b
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-04-02 14:31:44 +02:00
Mark Brand
7565f6fe0a QPSQLResultPrivate: do not duplicate reference to private driver
The "private driver" is already known, so don't keep an extra reference
to it.

Change-Id: I34ec4108694bfbc3da3107f79598ae50a699911c
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-04-02 14:31:40 +02:00
Israel Lins
f9d856b3f5 ODBC: lost info about column metadata on SQL_NO_DATA
In reset() if SqlExecDirect returns SQL_NO_DATA the column metadata
is ignored.

Change-Id: I0501fa47c42754bba42b3531da59e66c696eac53
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-03-20 23:30:43 +01:00
Sergio Ahumada
e5a11fbb32 Merge "Merge branch 'dev' into stable" into refs/staging/stable 2013-03-20 23:30:31 +01:00
Israel Lins
0646d1131b ODBC: fixed consistence of return of QODBCResult::exec()
The QODBCResult::exec() returns false when query is an delete
with no data do delete caused by SQLExecute function returning
SQL_NO_DATA, but the false return means error on execution.

Task-number:  QTBUG-10569
Change-Id: I6c7ebadcf62ab404b60c7bcccdab6a10bf16a923
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-03-20 23:30:23 +01:00
Oswald Buddenhagen
76c0be34cd Merge branch 'dev' into stable
This starts Qt 5.1 release cycle

Conflicts:
	src/gui/text/qfontdatabase.cpp
	src/gui/text/qharfbuzz_copy_p.h
	src/widgets/kernel/qapplication.cpp
	src/widgets/kernel/qcoreapplication.cpp

Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
2013-03-20 13:49:28 +01:00
Thiago Macieira
d1b4857d17 Make sure that we #include qconfig.h before testing for features.
This is mandatory in public headers (qiodevice.h, qopengl*, etc.), but
it's a good idea even in private headers, in case someone includes
that header first somewhere. In particular, all platformsupport API is
private.

Change-Id: If287baa5d9ed14e93c1666efa0e6332c4c1cd9a4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-03-19 07:02:57 +01:00
Axel Waggershauser
b11317a643 Whitespace cleanup: remove trailing whitespace
Remove all trailing whitespace from the following list of files:
*.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README
excluding 3rdparty, test-data and auto generated code.

Note A): the only non 3rdparty c++-files that still
have trailing whitespace after this change are:
* src/corelib/codecs/cp949codetbl_p.h
* src/corelib/codecs/qjpunicode.cpp
* src/corelib/codecs/qbig5codec.cpp
* src/corelib/xml/qxmlstream_p.h
* src/tools/qdoc/qmlparser/qqmljsgrammar.cpp
* src/tools/uic/ui4.cpp
* tests/auto/other/qtokenautomaton/tokenizers/*
* tests/benchmarks/corelib/tools/qstring/data.cpp
* util/lexgen/tokenizer.cpp

Note B): in about 30 files some overlapping 'leading tab' and
'TAB character in non-leading whitespace' issues have been fixed
to make the sanity bot happy. Plus some general ws-fixes here
and there as asked for during review.

Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-03-16 20:22:50 +01:00
Mark Brand
e3c5351d06 postgresql driver: escape backslashes only when server requires it
Task-number: QTBUG-30076

Change-Id: I408cda941884f01484d0edfa82c91fc19cb8718c
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Sergey Blagodarin
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Andras Mantia <andras@kdab.com>
2013-03-13 17:28:07 +01:00
Israel Lins
36b6d4afc9 ODBC: fix loss of milliseconds when binding QDateTime
Caused by operator precedence error.

Follow-up to commit b8b79a0f37

Task-number: QTBUG-2192
Change-Id: I17decd18c469b48a0bc938ae05c16cced8042219
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-03-13 17:27:57 +01:00
Marko Kangas
18be0749eb Fix for Sql query aliases with dots
Task-number: QTBUG-14904

Change-Id: I98a02d4bbf28522cd5c2f65ea606b6b26977e8e6
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-03-13 17:27:36 +01:00
Mark Brand
53de293433 QSqlResult: private d -> protected d_ptr
This QObject-style convention will allow the usual private class
macros to be used.

Change-Id: I992ee2a2d2e7984d57feb4cbe785a267f2fd83ce
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-03-06 00:11:11 +01:00
Mark Brand
2adeefc85f add QSqlResult constructor suitable for inheritance
The new constructor accepts reference to the private
class provided by a subclass.

Change-Id: I568e31727bb90de12ee8bb7bf0ed442737056470
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-03-06 00:11:08 +01:00
Mark Brand
fd6821aa19 QSqlResultPrivate: private q -> protected q_ptr
This QObject-style convention will allow the usual private class
macros to be used.

Change-Id: Ib1cee0b3aca949b75511868ad4914e5b8530929b
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-03-06 00:11:06 +01:00
Mark Brand
8434b7ad4a prepare QSqlResultPrivate() to allow subclassing
Allow the private class to be instantiated before the public class.
Public subclasses will need to first instantiate the private subclass
and pass the reference to QSqlResult.

Add virtual constructor so QSqlResult can delete private class
polymorphically.

Change-Id: Ide7115dbb4150d6604677b542dbec16e6956a142
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-03-06 00:11:03 +01:00
Tor Arne Vestbø
d28073d9eb Distinguish between 'mac' and 'macx' qmake scopes
The former applies both on Mac OS X and iOS, but 'macx' is specific to
Mac OS X.

ios.conf and macx.conf now share most of their settings in the common
mac.conf. We set the default QMAKE_MAC_SDK before loading mac.conf, so
that any overrides in the device config will apply afterwards. This
means configure's mkspec parsing will be able to read the QMAKE_MAC_SDK.

Change-Id: I0c7e26a6a0103e19b23ef152aa9e4ab461cee632
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-03-05 20:59:45 +01:00
Israel Lins
f4d7b4d10f PSQL: lastInsertId without OID on table
Make lastInsertID work for tables without OIDs.
The use of OID in tables is now deprecated in PostgeSQL and
lastval() is now provided.

http://www.postgresql.org/docs/8.1/interactive/runtime-config-compatible.html#GUC-DEFAULT-WITH-OIDS

Change-Id: I01dfdd7a2aab8826487657f691fea3c9268c16b2
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-28 10:04:46 +01:00
Israel Lins
70bb34ccd5 ODBC: implementation of lastInsertId()
Implemented lastInsertId() for some ODBC compatible databases.

Change-Id: I0b75a8e68369af39e258e4761b384767ab8a371e
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-27 22:01:17 +01:00
Israel Lins
bc5170f274 ODBC: improve detection of DBMS
Change-Id: Ia93c3adb54fd28e290ff6fc85cb98138514885f1
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-26 22:01:27 +01:00
Mark Brand
4da840f230 make static function a class member
Change-Id: I8c18c746185f6b7530ed985f4d482a1c9073fb10
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-02-26 19:48:22 +01:00
Mark Brand
63b180d390 rename private driver to privDriver
This avoids confusion now with the actual driver and avoids a
name collision in later refactoring.

Change-Id: I83055213f3a7b7998640662d49ba33749fdadd18
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-02-26 19:48:18 +01:00
Mark Brand
ad211acae4 qpsql: simplify expression
Change-Id: I1cff816ca5e8f683015186a2b5815e564ad454e6
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-02-26 19:48:12 +01:00
Thiago Macieira
932c50c015 Adapt the newly-renamed SQL driver headers to proper private headers
Add the "We mean it" text and remove the now-unnecessary syncqt macros
that used to prevent those headers from being added to the master
includes.

Change-Id: I03ac2a452bc6ac43ebba502bc0ecbf5ee1adf314
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-26 11:20:11 +01:00
Thiago Macieira
1ee1147462 Rename the SQL driver header files to _p.h (make private)
The drivers were never public API. They were exposed by mistake in
public headers. What's more, they have #include'd a private header
(qsqlcachedresult_p.h) since at least Qt 4.5.1. That means no one used
those headers in Qt 4 (private headers weren't installed then) and
it's unlikely anyone did in 5.0.

Change-Id: Ie0a47bcf0260ee6bdd3d8494b78fd1eec28a2d6b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-26 11:20:06 +01:00
Marcel Krems
7ea6ac832e Deprecate QSqlError setters.
The constructor is sufficient, since it has a parameter for each member variable.
Even the drivers, which were mentioned in the class description don't use them.

Change-Id: Ie8ba0467c7dc1928c539b4b19db8cc2ea0f44ea0
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-24 17:10:18 +01:00
Frederik Gladhorn
f4900d340a Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/widgets/styles/qmacstyle_mac.mm

Change-Id: If8326db9e7da3cbf45dbf7475fdff9915c7723b1
2013-02-18 16:14:52 +01:00
Israel Lins
776c488b6f QSqlResult: fix parsing of bound SQL statements
Parsing for bound SQL parameters now handles identifier quoting using
double quotes (") and square brackets ([]).

The following has only 1 bound value but previously 2 were detected:
SELECT 1 AS "A?b[?']]]de?ghi", ?

Task-number: QTBUG-27159
Change-Id: Icfd02187e1126ff3b5ed11df8d4e599f574e61bf
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-15 15:47:58 +01:00
Karim Pinter
c8e34ed678 Fix DB2 driver X64 Linux Build
On X64 Linux DB2 driver build give an error on BIGINT conversion to
QVariant, casting it to qint64 solved the problem.

Task-number: QTBUG-20172
Change-Id: I7ef31cbe643c90b40b86cf3d7c4d3b711eabf2f5
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-15 15:46:57 +01:00
Mark Brand
2fc5edffa4 qpsql: reuse QSqlResultPrivate::positionalToNamedBinding
reuse QSqlResultPrivate::positionalToNamedBinding for psql

Change-Id: I48713c3f94eb880cafff5fddbeadaa0746a405a9
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2013-02-15 12:17:17 +01:00