Go to file
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
.github/workflows Repair github action workflow 2021-11-10 18:57:33 +01:00
bin Provide a qtpaths wrapper script when cross-building Qt 2021-11-08 13:41:03 +01:00
cmake cmake: avoid unused parameters in cmake tests 2022-02-22 02:02:48 +08:00
coin Clean up QNX platform configs and improve testrunner scripts 2022-02-14 12:56:06 +01:00
config.tests CMake: remove unused config.tests (atomicfptr, avx512 and stl) 2022-02-15 09:20:34 -03:00
dist Add Qt 6.0.0 changes file 2020-11-16 10:02:08 +02:00
doc qglobal: add a way to selectively export in Qt 6 XOR Qt 7 2022-02-09 10:49:37 -08:00
examples qtextstream.h: streamline includes 2022-02-10 04:34:13 +01:00
lib
libexec Install 3rdparty headers for static builds 2022-02-19 01:52:32 +01:00
mkspecs qmake: Enforce linker response files for WebAssembly on Windows 2022-02-21 12:37:19 +01:00
qmake qmake: Fix overlong command lines for static Qt builds on Windows 2022-02-21 12:37:19 +01:00
src Treat invalid Q(Date)?Time as null when used as an SQL value 2022-02-21 20:37:28 +01:00
tests tst_qlogging (tst_qmessagehandler): use one line for output and expected 2022-02-20 23:32:26 -08:00
util qsimd_p.h: let the generator script generate the ARCH target strings 2022-02-19 13:40:21 -08:00
.cmake.conf Bump version to 6.4.0 2022-01-31 17:20:06 +02:00
.gitattributes Give batch files CRLF line endings 2020-11-04 15:02:29 +00:00
.gitignore Assume qhelpgenerator in libexec instead of bin 2021-11-08 19:27:32 +01:00
.lgtm.yml Skip LGTM analysis for the bootstrap library and tools 2020-07-16 01:04:34 +02:00
.tag
CMakeLists.txt Use REALPATH based check for symbolic links on Windows 2022-01-07 14:31:38 +01:00
conanfile.py Use common install functionality 2022-02-04 19:19:19 +02:00
config_help.txt configure: Introduce -submodules option 2022-02-03 21:21:29 +01:00
configure Remove unsupported, host-related options from configure shell script 2021-08-05 02:44:27 +02:00
configure.bat configure.bat: Fix call without arguments 2022-02-16 12:05:48 +01:00
configure.cmake qsimd: Remove QT_COMPILER_SUPPORTS_SIMD_ALWAYS 2022-02-18 15:46:41 -08:00
dependencies.yaml Re-add dependencies.yaml now that qt5.git wip/qt6 builds fine 2019-09-18 13:19:31 +02:00
LICENSE.FDL Remove trailing whitespace in LICENSE.FDL 2021-11-26 18:28:49 +01:00
LICENSE.GPL2 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3-EXCEPT Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.QT-LICENSE-AGREEMENT Update LICENSE.QT-LICENSE-AGREEMENT 2022-02-16 17:19:34 +02:00
qt_cmdline.cmake CMake: Add support building Qt with the 'mold' linker 2022-01-20 19:01:27 +01:00
sync.profile Install 3rdparty headers for static builds 2022-02-19 01:52:32 +01:00