summaryrefslogtreecommitdiffstats
path: root/src/sql
Commit message (Collapse)AuthorAgeFilesLines
* Use SPDX license identifiersLucie Gérard11 days56-2198/+112
| | | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* QtSql: includemocsMarc Mutz2022-04-285-0/+10
| | | | | | | | | | | Including moc files directly into their classes' TU tends to improve codegen and enables extended compiler warnings, e.g. about unused private functions or fields. Pick-to: 6.3 6.2 5.15 Task-number: QTBUG-102886 Change-Id: Id758d672710ba998595824645e3e16e00537781d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Revise Qt SQL module landing pageAndreas Eliasson2022-04-251-14/+28
| | | | | | | | | | Include new CMake and qmake snippets and reorganize some of the sections structure. Task-number: QTBUG-100369 Pick-to: 6.3 Change-Id: I47cc9b24818c26740e49e6365bf881874942b79c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Sql: replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-04-194-25/+27
| | | | | | Task-number: QTBUG-98434 Change-Id: Ia621f9d937649dda41a7b0d13a61e6f1397f6dde Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Sql: use _L1 for for creating Latin-1 string literalsSona Kurazyan2022-04-198-41/+51
| | | | | | Task-number: QTBUG-98434 Change-Id: Ie12ca82fd912617eabe4f602c08914f12878cb32 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Sql: stop using QLatin1Char constructor for creating char literalsSona Kurazyan2022-04-198-40/+36
| | | | | | | | | | | Required for porting away from QLatin1Char/QLatin1String in scope of QTBUG-98434. As a drive-by, fix qsizetype -> int narrowing conversion warnings for the touched lines. Change-Id: I03477e645a94948cac3e3e2abca52aa4e3e2efff Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Sql: Do not depend on transitive includesFabian Kosmale2022-03-171-0/+1
| | | | | Change-Id: I9407c34c9fb6add655649dd7058bce7a25be5f5d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Rest of QtBase: compile-optimize inline swap functionsMarc Mutz2022-03-173-7/+5
| | | | | | | | | | | | | | | | Instead of using the overly-generic qSwap() monster, use - qt_ptr_swap() for swapping raw pointers - member-swap for swapping smart pointers and owning containers In QtCore, this has proven to give a nice reduction in compile time for Qt users, cf. b1b0c2970e480ef460a61f37fa430dc443390358. Pick-to: 6.3 6.2 Task-number: QTBUG-97601 Change-Id: I53e031a021031d53a74a712cd0f5e6bb8bf800bd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QSqlTableModel: suppress deprecation warningMårten Nordheim2022-03-051-1/+1
| | | | | | | | 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>
* Treat invalid Q(Date)?Time as null when used as an SQL valueEdward Welbourne2022-02-211-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Check for null driver() before trying to exec()Edward Welbourne2022-01-251-1/+5
| | | | | | | | | | | | 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>
* Adapt SQL drivers to Qt 6 change of QVariant::isNullVolker Hilsheimer2022-01-122-2/+34
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* Doc: Use find_package(Qt6 REQUIRED COMPONENTS ...) idiomKai Köhne2021-12-091-1/+1
| | | | | | | | | | 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>
* Doc: Enable qdoc warning count limitVenugopal Shivashankar2021-10-211-0/+3
| | | | | | | | This should restrict changes that introduce new warnings. Change-Id: I7e4b5d9d5d84b7c336509c380bc7e6d86e360f4a Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix typos in SQL driver documentationJonas Kvinge2021-10-141-2/+2
| | | | | | Pick-to: 5.15 6.2 Change-Id: I871f6eff908926485c371121113d4853064f808f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: Prettify -G cmake arguments in SQL drivers documentationJoerg Bornemann2021-10-081-17/+17
| | | | | | | | Use '-G Ninja' instead of '-G"Ninja"'. Pick-to: 6.2 Change-Id: I53a77ea3b2d1547bb516b3ab756f5ae0f24092b1 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Fix cmake build/install commands in SQL driver documentationJoerg Bornemann2021-10-081-33/+32
| | | | | | | Pick-to: 6.2 Fixes: QTBUG-97098 Change-Id: I1c5214d66341aa412c5fc9b2de6d0e26ba4612aa Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Remove unsupported customFiltersKai Köhne2021-09-031-4/+0
| | | | | | | | | | | 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>
* Doc: Ensure deprecated APIs in Qt Sql are documented as suchNico Vertriest2021-07-222-20/+19
| | | | | | | | | 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>
* Migrate to autogenerated cpp exportsAlexey Edelev2021-06-252-10/+2
| | | | | | | | | 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>
* Remove old configure-related filesJoerg Bornemann2021-06-181-22/+0
| | | | | | | | | | | | | 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>
* Doc: Use \deprecated instead of \obsoletePaul Wicking2021-05-263-6/+6
| | | | | | Task-number: QTBUG-93990 Change-Id: I4e512354a49dde6678ca89cabc56bc76ba666bb3 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QSqlTableModel::orderByClause(): Quote the table nameFriedemann Kleint2021-05-031-1/+2
| | | | | | | | | | | 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>
* QSqlQuery: make it a move only typeGiuseppe D'Angelo2021-03-214-20/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* QSqlError: protect against self-assignmentVolker Hilsheimer2021-03-171-2/+6
| | | | | | | | | | | 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>
* Doc: Change section titles that cause bad linksPaul Wicking2021-03-111-1/+1
| | | | | | | | | | | 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>
* Doc: Fix warnings about wrong snippet path or missing .pro fileNico Vertriest2021-02-191-0/+3
| | | | | | Task-number: QTBUG-91147 Change-Id: I6a55b2b713dd70cf1cbb0b93a8d4152e175e2c4d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix misguided conditional, simplify codeEdward Welbourne2021-02-181-6/+2
| | | | | | | | | 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>
* Doc: Fix documentation warnings qtbaseNico Vertriest2021-02-181-7/+8
| | | | | | Task-number: QTBUG-90662 Change-Id: If31847f8f2b8b57a8a8624d0406a030b5752f1c8 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* CMake: Port the snippet project setup to CMakeVenugopal Shivashankar2021-02-103-0/+26
| | | | | | | | 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>
* Adjust sql drivers documentation to cmakeAlexey Edelev2021-01-192-163/+195
| | | | | | | | Update sql drivers build procedure description. Fixes: QTBUG-89782 Change-Id: I152fad108e24d394c8d21adf95ce6dbd6e7d80bc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QSql/QSqlite: return extended error codes by defaultChristian Ehrlicher2021-01-111-0/+1
| | | | | | | | | | | | | 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>
* Remove the qmake project filesJoerg Bornemann2021-01-076-88/+0
| | | | | | | | | | | | | | | | 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>
* Doc: Use explicit linkage with target_link_librariesKai Koehne2020-11-301-1/+1
| | | | | | | | | | | | | | 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>
* Update landing pages and module pages in qtbaseJerome Pasion2020-11-171-4/+3
| | | | | | | | | | -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>
* Adjust code format, add space after 'if'Zhang Sheng2020-11-162-3/+3
| | | | | | Change-Id: Ice081c891ff7f4b766f49dd4bd5cf18c30237acf Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: hjk <hjk@qt.io>
* Doc: Update the SQL types documentation with regards to the double typesAndy Shaw2020-11-121-18/+18
| | | | | | | Pick-to: 5.15 Fixes: QTBUG-88198 Change-Id: I61b276ad5f2209a874c6b8bcf04ccffd23e3125d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Fix Qt SQL terminologyJerome Pasion2020-11-121-2/+2
| | | | | | | | -"SQL" all uppercase Task-number: QTBUG-88010 Change-Id: I3e2e45b4d9564982baee6993e939fcc7fa126f56 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Rename "Porting" pages to "Changes"Jerome Pasion2020-11-092-3/+3
| | | | | | | | | | | | | | 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>
* Doc: Prefer versioned CMake library targetsv6.0.0-beta3Kai Koehne2020-11-011-1/+1
| | | | | | | | 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>
* Doc: Fix documentation warnings for Qt SQLTopi Reinio2020-10-302-2/+6
| | | | | | Task-number: QTBUG-86295 Change-Id: Ia8c0daabcf79e56d51de801cb2be1b83bf03276b Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Fix links to the CMake manualTopi Reinio2020-10-301-1/+1
| | | | | | Task-number: QTBUG-86295 Change-Id: I7b2208284d65ec9182352490bd4c92458c5e5e37 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Deprecate QVariant::TypeLars Knoll2020-10-234-12/+12
| | | | | | | | | 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>
* Cleanup remaining QVariant::Type uses in Qt SqlLars Knoll2020-10-171-2/+4
| | | | | Change-Id: Ibcaa678cd9f9c957392a75b477fa6821f9a69127 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* CMake: Regenerate projects to use new qt_internal_ APIAlexandru Croitor2020-09-231-4/+4
| | | | | | | | | | | 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>
* Doc: Fix QSqlField documentation for deprecated constructorVolker Hilsheimer2020-09-222-31/+4
| | | | | | | | Also, merge constructor overloads, and remove superfluous explicit from a non-converting constructor. Change-Id: I60d0e646d1aaeb8ea66b7598076c3e3ba356c12e Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Correct link errors qtbaseNico Vertriest2020-09-211-1/+1
| | | | | | Task-number: QTBUG-86295 Change-Id: I27f6bbdadffb08a8794520a14dfe0e2334979575 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Add links to Qt 6 changes files from module indexPaul Wicking2020-09-181-0/+4
| | | | | | Task-number: QTBUG-84051 Change-Id: Iac25df135c9d73a990b41243e08cd38ea78296a4 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Doc: Add porting guide documentsPaul Wicking2020-09-161-0/+2
| | | | | | | | 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>
* Interbase: Handle EXECUTE BLOCK statements correctlyAndy Shaw2020-09-131-0/+7
| | | | | | | | | | | | 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>