Commit Graph

779 Commits

Author SHA1 Message Date
Mårten Nordheim
fd72c0d26c QSqlTableModel: suppress deprecation warning
It's just a proxy-setter so we cannot really avoid the call

Pick-to: 6.3 6.2
Change-Id: I4230075a906c100ddb9722160859e7a2c8e26ebc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2022-03-05 00:30:58 +01:00
Edward Welbourne
dcd87049bb Treat invalid Q(Date)?Time as null when used as an SQL value
In Qt 5, QVariant::isNull() was true when the contained object had an
isNull() that was true; this is no longer true in Qt 6, so we now have
QSqlResultPrivate::isVariantNull() to test is-or-contains
null. However, for date-times, QSqlDriver::formatValue() treats
invalid QDateTime as NULL, since it needs its toString(Qt::ISODate),
which will be empty if invalid. As QDateTime's isValid() is more
stringent than its !isNull(), this can lead to one that's neither
valid nor null, such as QDateTime(QDate(), QTime(0, 0)), producing an
invalid entry in a database.

Do the same for QTime, as its isValid() is more stringent than
!isNull(), and its toString() likewise returns empty on invalid
(although it's not clear it's possible to construct one that's neither
valid nor null). For QDate valid and null are simply complementary.

[ChangeLog][QSql] Handling of QDateTime and QTime values passed to SQL
now consistently treats invalid as null. Some values of these types
are neither valid nor null, which could lead to invalid data being
given to the SQL database. Invalid values are now treated as null to
prevent this.

Task-number: QTBUG-98471
Pick-to: 6.3
Change-Id: I145411280d6bcc53dc0dc5f4a1cb938d995fd6bc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2022-02-21 20:37:28 +01:00
Edward Welbourne
78eac57f3d Check for null driver() before trying to exec()
QSqlQuery::exec() took for granted that it can dereference driver(),
which should be true for all sane usage; however, it should not crash
if used misguidedly. Added regression test, based on bug report's
reproducer, which crashes without the fix.

Fixes: QTBUG-100037
Pick-to: 6.3 6.2 5.15 5.12
Change-Id: I94600bc60f89e82a1121b418144006a683921a38
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2022-01-25 16:18:35 +01:00
Volker Hilsheimer
999d856bc8 Adapt SQL drivers to Qt 6 change of QVariant::isNull
In Qt 5, QVariant::isNull returned true if either the variant didn't
contain a value, or if the value was of a nullable type where the type's
isNull member function returned true.

In Qt 6, QVariant::isNull only returns true for variants that don't
contain a value; if the value contained is e.g. a null-QString or
QDateTime, then QVariant::isNull  returns false.

This change requires a follow up in the SQL drivers, which must
still treat null-values the same as null-variants, lest they write data
into the data base.

Add a static helper to QSqlResultPrivate that implements isNull-checking
of variants that contain a nullable type relevant for Sql, and add a
test case to the QSqlQuery test that exercises that code.

Pick-to: 6.2 6.3
Fixes: QTBUG-99408
Fixes: QTBUG-98471
Change-Id: I08b74a33aa3235c37d974f182da1f2bdcfd8217e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-01-12 17:41:07 +01:00
Kai Köhne
b34be3868b Doc: Use find_package(Qt6 REQUIRED COMPONENTS ...) idiom
Using REQUIRED as a prefix instead of suffix works better with
OPTIONAL_COMPONENTS, and is also the order in the CMake manual.

Task-number: QTBUG-98867
Pick-to: 6.2
Change-Id: I1ab68408b95d8edf06272a3b9fceccd8d8e597fc
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2021-12-09 22:20:04 +01:00
Venugopal Shivashankar
347e74cafa Doc: Enable qdoc warning count limit
This should restrict changes that
introduce new warnings.

Change-Id: I7e4b5d9d5d84b7c336509c380bc7e6d86e360f4a
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2021-10-21 19:10:52 +02:00
Jonas Kvinge
3a68f49c48 Fix typos in SQL driver documentation
Pick-to: 5.15 6.2
Change-Id: I871f6eff908926485c371121113d4853064f808f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-14 20:22:21 +02:00
Joerg Bornemann
08a0ba5733 Doc: Prettify -G cmake arguments in SQL drivers documentation
Use '-G Ninja' instead of '-G"Ninja"'.

Pick-to: 6.2
Change-Id: I53a77ea3b2d1547bb516b3ab756f5ae0f24092b1
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-08 14:16:51 +02:00
Joerg Bornemann
bf9f0844c2 Doc: Fix cmake build/install commands in SQL driver documentation
Pick-to: 6.2
Fixes: QTBUG-97098
Change-Id: I1c5214d66341aa412c5fc9b2de6d0e26ba4612aa
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-08 14:16:51 +02:00
Kai Köhne
c104af4c44 Doc: Remove unsupported customFilters
customFilters defined in .qdocconf are not supported anymore by Qt
Assistant since Qt 5.13. Therefore remove them from all .qdocconf files,
also to avoid cargo-culting them to new help modules.

Task-number: QTBUG-95987
Change-Id: I664391460637d2e859348da0338e1a4a3ee9f570
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-09-03 15:14:59 +00:00
Nico Vertriest
fbf836657f Doc: Ensure deprecated APIs in Qt Sql are documented as such
Added \deprecated + [version_since] where needed

Fixes: QTBUG-94585
Pick-to: 6.2 6.1
Change-Id: Id6d1fee1bbb6f8194e90a494673edef34530482b
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-07-22 07:08:56 +02:00
Alexey Edelev
b10e4e846e Migrate to autogenerated cpp exports
Replace the hardcoded cpp exports with a generated one where it's
applicable.

Task-number: QTBUG-90492
Change-Id: Idc160b594987b2c765e75bd669aae851b4366282
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-06-25 19:33:12 +02:00
Joerg Bornemann
7155e4f620 Remove old configure-related files
Remove the configure.json and configure.pri files that
were used for the qmake-based configure.

Remove the .prev_*.cmake files that were a by-product of
configurejson2cmake.py.

Pick-to: 6.2
Task-number: QTBUG-89536
Change-Id: Ie827562f7fd2513d59f69234d77b8b93124ea78e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-06-18 11:46:21 +02:00
Paul Wicking
a1dfe27955 Doc: Use \deprecated instead of \obsolete
Task-number: QTBUG-93990
Change-Id: I4e512354a49dde6678ca89cabc56bc76ba666bb3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-05-26 13:06:56 +02:00
Friedemann Kleint
21b3b54193 QSqlTableModel::orderByClause(): Quote the table name
This ensures correct handling of names with special characters.

Pick-to: 5.15 6.1
Fixes: QTBUG-92584
Change-Id: I95c7c54d9c7ee00b221a55f3d07ef1ec3a3bd217
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-05-03 14:10:36 +00:00
Giuseppe D'Angelo
14f9f00fdb QSqlQuery: make it a move only type
QSqlQuery is a broken value class. Copying one object would mean
copying database state (the result set, the cursor position, etc.)
which isn't generally available for all database drivers.
For that reason, the current implementation does not honor value
semantics -- modifying a QSqlQuery object has visible side effects
on its existing copies (!).

The correct solution is to accept that QSqlQuery is a move only
type, not a value type. Add move semantics to it, and deprecate
its copies.

(We can't just *remove* copies in Qt 6 due to SC/BC constraints).

[ChangeLog][QtSql][QSqlQuery] QSqlQuery copy operations have
been deprecated. QSqlQuery copy semantics cannot be implemented
correctly, as it's not generally possible to copy a result set
of a query when copying the corresponding QSqlQuery object. This
resulted in modifications on a QSqlQuery having visible (and
unintended) side effects on its copies. Instead, treat QSqlQuery
as a move-only type.

Fixes: QTBUG-91766
Change-Id: Iabd3aa605332a5c15c524303418bf17a21ed520b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-03-21 10:16:56 +01:00
Volker Hilsheimer
872f3fffbf QSqlError: protect against self-assignment
Address static analyzer warning 6eb3060fd64e459b6cd5586dc561e0ba.

Also make assignment from a moved-from object safe.

Task-number: QTBUG-91912
Change-Id: I732dc244ac0c731a02d85e88023dbd952b9eb112
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-03-17 17:22:08 +01:00
Paul Wicking
5fa8f5df7b Doc: Change section titles that cause bad links
Section titles are valid targets for QDoc's autolinker. When
they are identical to other valid link targets, such as for
example a class, these sections may cause invalid links.

Pick-to: 6.0 6.1
Fixes: QTBUG-91141
Change-Id: Ie9a6258d2bf83932335976d8c0b5fc59f2028ae5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2021-03-11 15:01:35 +01:00
Nico Vertriest
3fa50b7b41 Doc: Fix warnings about wrong snippet path or missing .pro file
Task-number: QTBUG-91147
Change-Id: I6a55b2b713dd70cf1cbb0b93a8d4152e175e2c4d
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2021-02-19 14:04:21 +01:00
Edward Welbourne
563dc357fb Fix misguided conditional, simplify code
Prompted by a PVS-studio article.
The count <= 0 check made a later !count check redundant.

Change-Id: I6c00ad6137b14db13c9c31c61833b4546f663072
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-02-18 11:22:29 +01:00
Nico Vertriest
27f2ef24cd Doc: Fix documentation warnings qtbase
Task-number: QTBUG-90662
Change-Id: If31847f8f2b8b57a8a8624d0406a030b5752f1c8
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-02-18 07:03:19 +00:00
Venugopal Shivashankar
746393545f CMake: Port the snippet project setup to CMake
Change-Id: I411e58e94752f3b2d0a3e8aac0ab7c4c2272db89
Fixes: QTBUG-89826
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-02-10 21:19:15 +01:00
Alexey Edelev
65cc6ec16b Adjust sql drivers documentation to cmake
Update sql drivers build procedure description.

Fixes: QTBUG-89782
Change-Id: I152fad108e24d394c8d21adf95ce6dbd6e7d80bc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-01-19 19:10:41 +01:00
Christian Ehrlicher
f8f629cc13 QSql/QSqlite: return extended error codes by default
SQlite allows to return fine-granulated error codes but this behavior is
not enabled by default (due to backwards compatibility concerns).
Enable them for the SQLite driver by default but provide an option to
disable them when needed.

[ChangeLog][QtSql][QSQLITE] The plugin now returns the extended error
codes by default.

Change-Id: I59cec9aea46eb03f1e7ca02903d769c003a1ae30
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-01-11 19:55:43 +01:00
Joerg Bornemann
ad2da2d27a Remove the qmake project files
Remove the qmake project files for most of Qt.

Leave the qmake project files for examples, because we still test those
in the CI to ensure qmake does not regress.

Also leave the qmake project files for utils and other minor parts that
lack CMake project files.

Task-number: QTBUG-88742
Change-Id: I6cdf059e6204816f617f9624f3ea9822703f73cc
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2021-01-07 15:32:28 +01:00
Kai Koehne
130b209014 Doc: Use explicit linkage with target_link_libraries
The Professional CMake book suggests always using explicit linkage with
target_link_libraries, so let's use that.

Whether to use PUBLIC or PRIVATE depends on the context. But let's
be conservative and advise on using PRIVATE by default.

Task-number: QTBUG-88935
Pick-to: 6.0
Change-Id: I12b80ee85be9f6916f1e4dea6b1c9cb29e03c20f
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-30 05:39:21 +01:00
Jerome Pasion
d4b3989818 Update landing pages and module pages in qtbase
-Qt SQL, Qt D-BUS, Qt GUI, Qt OpenGL, Qt Widgets,
 Qt Test, Qt Concurrent, Qt XML, Qt Network, Qt Core
-language edits for consistency, add links

Task-number: QTBUG-87155
Change-Id: Ic61350c9fa15090c802a42d8e9116219591eba73
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-17 20:16:12 +01:00
Zhang Sheng
e13173c112 Adjust code format, add space after 'if'
Change-Id: Ice081c891ff7f4b766f49dd4bd5cf18c30237acf
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2020-11-16 12:53:37 +00:00
Andy Shaw
d03415b7eb Doc: Update the SQL types documentation with regards to the double types
Pick-to: 5.15
Fixes: QTBUG-88198
Change-Id: I61b276ad5f2209a874c6b8bcf04ccffd23e3125d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-12 14:25:07 +00:00
Jerome Pasion
7549d18054 Fix Qt SQL terminology
-"SQL" all uppercase

Task-number: QTBUG-88010
Change-Id: I3e2e45b4d9564982baee6993e939fcc7fa126f56
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-12 09:52:29 +01:00
Jerome Pasion
3553f8119b Rename "Porting" pages to "Changes"
The content in the porting guides are closer to a changelog than
a porting guide. At this point, it is easier for maintainers and
contributors to write in a changelog than a guide. This change
should help with readability and is closer to the usage of
"Changes" in documentation.

Part of a rename in other submodules.

Task-number: QTBUG-87156
Change-Id: Ib59de7976fae19e7b39962e80161df6628e4070b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-09 16:01:33 +01:00
Kai Koehne
8040d3dce1 Doc: Prefer versioned CMake library targets
The non-versioned one's do miss some properties. It's therefore best
to not advocate using them.

Change-Id: I53645e65ed4de4e0100e59905c024cdfe40be0c5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-01 15:58:13 +01:00
Topi Reinio
0575ff787a Doc: Fix documentation warnings for Qt SQL
Task-number: QTBUG-86295
Change-Id: Ia8c0daabcf79e56d51de801cb2be1b83bf03276b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-30 06:19:37 +01:00
Topi Reinio
ae347b23d6 Doc: Fix links to the CMake manual
Task-number: QTBUG-86295
Change-Id: I7b2208284d65ec9182352490bd4c92458c5e5e37
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-30 06:18:49 +01:00
Lars Knoll
11bad61096 Deprecate QVariant::Type
It's been obsolete for a long time already. Make sure
the compiler now warns about it and remove all remaining
uses in qtbase.

Change-Id: I0ff80311184dba52d2ba5f4e2fabe0d47fdc59d7
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-10-23 09:58:57 +02:00
Lars Knoll
2732231182 Cleanup remaining QVariant::Type uses in Qt Sql
Change-Id: Ibcaa678cd9f9c957392a75b477fa6821f9a69127
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-10-17 12:01:54 +02:00
Alexandru Croitor
403213240c CMake: Regenerate projects to use new qt_internal_ API
Modify special case locations to use the new API as well.
Clean up some stale .prev files that are not needed anymore.
Clean up some project files that are not used anymore.

Task-number: QTBUG-86815
Change-Id: I9947da921f98686023c6bb053dfcc101851276b5
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-09-23 16:59:06 +02:00
Volker Hilsheimer
2692cb0e61 Doc: Fix QSqlField documentation for deprecated constructor
Also, merge constructor overloads, and remove superfluous explicit from
a non-converting constructor.

Change-Id: I60d0e646d1aaeb8ea66b7598076c3e3ba356c12e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-09-22 20:55:35 +02:00
Nico Vertriest
169f332eab Doc: Correct link errors qtbase
Task-number: QTBUG-86295
Change-Id: I27f6bbdadffb08a8794520a14dfe0e2334979575
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-09-21 08:17:41 +02:00
Paul Wicking
465ddfc870 Doc: Add links to Qt 6 changes files from module index
Task-number: QTBUG-84051
Change-Id: Iac25df135c9d73a990b41243e08cd38ea78296a4
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-09-18 09:59:38 +02:00
Paul Wicking
c5f611c084 Doc: Add porting guide documents
Also add existing such docs to the new document group

Task-number: QTBUG-84051
Change-Id: I76f033f0846e09943f249d2beeb1606869eef382
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-16 18:32:09 +02:00
Andy Shaw
65afcef217 Interbase: Handle EXECUTE BLOCK statements correctly
Since an EXECUTE BLOCK statement can have a mix of ? and :var syntax
then a special case for this needs to be added so that it does not try
to convert the :var parts into positional placeholders as they need to
kept as-is when preparing such a statement.

Pick-to: 5.15
Fixes: QTBUG-83152
Change-Id: Iff891207ad6dea1681a1b3a335acbbbb668b465d
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-09-13 16:39:06 +02:00
Lars Knoll
652bd1efca Make QStringList an alias to QList<QString>
Fix our API, so that QStringList and QList<QString> are the
same thing.

This required a bit of refactoring in QList and moving the
indexOf(), lastIndexOf() and contains() method into
QListSpecialMethods. In addition, we need to ensure that
the QStringList(const QString&) constructor is still available
for compatibility with Qt 5.

Once those two are done, all methods in QStringList can be moved
into QListSpecialMethods<QString>.

Change-Id: Ib8afbf5b6d9df4d0d47051252233506f62335fa3
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-09-12 23:37:15 +02:00
Christian Ehrlicher
1618727da4 QtSql: enhance documentation
Be a little bit more specific what needs to be done when compiling the
sql driver without compiling the whole Qt

Change-Id: I3e8010d4cc84a83108340e525e620abf6b6e89c1
Pick-to: 5.15
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-09-12 14:51:58 +02:00
Andy Shaw
37e7c3c116 Interbase: Add support for the boolean type
This is added to Interbase in v7 and Firebird in v3 which has been
available for sometime now. This means the minimum supported for
Interbase is now v7.

[ChangeLog][QtSQL][Interbase] The minimum required version for Interbase
is now v7.

Fixes: QTBUG-83401
Change-Id: I9927fd962f25c935be8ed5d2b7c76c00fb88cd8c
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-09-11 07:32:42 +02:00
Paul Wicking
00d9a0ea8e Doc: Compile snippets only when running tests
Turn snippets projects into subdirs with libraries to avoid
messy dependencies.

Fixes: QTBUG-86497
Pick-to: 5.15
Change-Id: Idb2c43f97d56c9b8d9992617ef716bde40fff5b7
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2020-09-10 18:26:43 +02:00
Lars Knoll
d49a7412f5 Derive some item delegates from QStyledItemDelegate
Address a ### Qt6 comment from change
283008e123, and start using
QStyledItemDelegate in more places, so those get proper
look and feel.

Change-Id: I39767ba99b7942faada1fba0ac241deb35563b63
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-09-10 03:15:49 +02:00
Marcel Krems
49efc168e1 QSqlError: Remove unused members, kept for binary compatibility
Also optimize the construction of QSqlErrorPrivate.

Change-Id: I791ebe0b66fab43e74093186a798ef9656f97dbd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-30 03:22:31 +02:00
Friedemann Kleint
92d4d490fe Fix a number of qdoc warnings
- Remove obsolete functions and enumeration values
- Remove QObject * parameter from QMetaProperty accessors
- Fix renamed enumerations in QSsl
- Fix list items to be \li
- Fix function signatures and variable names

Change-Id: I37c7e6bf2c8ff92bc7b82620bae0a27796f866ab
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-08-20 07:51:05 +02:00
Friedemann Kleint
1f1f000327 Fix deprecation warnings in QtSql code snippets
Use QMetaType for constructing a QSqlField, fixing:
ccode/sqldatabase/sqldatabase.cpp:91:41: warning: ‘QSqlField::QSqlField(const QString&, QVariant::Type)’ is deprecated: Use the constructor using a QMetaType instead [-Wdeprecated-declarations]

Change-Id: If420ad3d7f5d9dce05ad892cddf84a1b77a45b3f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-20 07:50:56 +02:00