Commit Graph

18985 Commits

Author SHA1 Message Date
drh e432f2a316 For the purpose of the query planner heuristic added by [38db9b5c83], a query
should only count as a star query if the fact tables are connected to the
dimension table by an INNER JOIN.  If a LEFT JOIN is used, then the fact
tables are constrained to be in inner loops anyhow and so the heuristic does
not make any sense.  But it does interfere with AUTOMATIC index creation, which
causes the performance regression reported by
[forum:/forumpost/d87570a145599033|forum post d87570a1455].

FossilOrigin-Name: 0852c57ee2768224af79910e6f26e70a4962651dae0f8b45cbfc847e6707d7bb
2025-01-17 23:49:40 +00:00
drh c5dd908c89 When two indexes have the same cost, use the narrower one (the one with the
smaller average on-disk row width).

FossilOrigin-Name: 398559678f2b9a65b245ed73b4d512c4fccc69d42b5a6a1c1b7755a80b69d073
2025-01-16 01:47:03 +00:00
drh 65d0312c96 Check-in [da9124fee28c155c] broken the new SQLITE_IOCAP_SUBPAGE_READ mechanism
for inhibiting direct-overflow-read.  This check-in fixes the problem.

FossilOrigin-Name: 113078d555eaf740666680562ebbb04f7d823b72e8b2d553627e54ab3d7bf653
2025-01-15 21:13:38 +00:00
drh d1047faad6 When choosing between two indexes with the same cost, pick the one with the
smaller predicted number of bytes per row.

FossilOrigin-Name: d4bd0d4214551f88f248698fefc821575b722ce5c194d0b3796f572e4704f641
2025-01-15 20:23:22 +00:00
drh 874b5e9fbb Variable names and conditional logic simplified in where.c. These
changes are cosmetic only and do not affect the resuling machine code.

FossilOrigin-Name: dbc2d6a244fdafd208239894dbdd8f139db6ca20dd8f1ed00d87028e0cb60570
2025-01-15 19:30:10 +00:00
drh f1747f93e0 Remove a stray tab character from a comment.
FossilOrigin-Name: 315079b150b47e013e2cde4985bc39d24e0f6f6c6e60f9383fb8ea4ea897c67a
2025-01-13 13:32:56 +00:00
drh 43afab28a0 GCC 13 has become more quite pedantic about the signature of functions matching the
type of pointers through which the functions are called.  Make adjustments to
extension functions and test procedures to work around this.  No changes to the
core.

FossilOrigin-Name: ed83b79100b4345235aec990303c4526874f0c2f8701160c4639a80633ebaf70
2025-01-13 11:28:34 +00:00
drh 14bc98d8e2 Fix harmless "implicit fall through" warnings that suddenly appeared when
I upgraded to gcc-13.

FossilOrigin-Name: 3e2875dac27de1525d9c78f38ac5f1fc12fec7e1b43dbdf47798b128fae49084
2025-01-11 16:28:41 +00:00
drh 4b5e8c926a Better job at suppressing harmless scan-build warnings. This time testing
and working.

FossilOrigin-Name: c847973947de67579fab78a65ecfc90bf59fd5db0b7fa7a9c1abb1fc92213d01
2025-01-11 14:43:47 +00:00
drh 27661f24cd Fix harmless scan-build warnings.
FossilOrigin-Name: b93af6feb7c0c3af30a47810a7c0e77ce41c386fac164c64bb5871a6c153db7e
2025-01-11 13:59:42 +00:00
drh fd11e5c082 Improvements to [14b38ae6ab86a314] so that the Tcl interface is better able
to work with boolean values in both Tcl86 and Tcl90.

FossilOrigin-Name: 4e85343d6107a46682b549667410c296d7f4d17e3ac04ded7357afcbbfbe3e6d
2025-01-07 16:36:47 +00:00
drh ece1729958 Fix a memory error in test logic introduced by [8704034254938662].
FossilOrigin-Name: 8a56e98d257e280d308b9fdc26e17e202f00a70fb9a780e30924e87a189fc7f4
2025-01-07 15:39:57 +00:00
drh 4717d573e4 Make the TCL extension aware of the booleanString type within TCL.
FossilOrigin-Name: 14b38ae6ab86a314a63ca9513850b43fcc670864f94d03a2706eff469980da88
2025-01-07 12:14:32 +00:00
drh e53393250a Fix a typo in the previous check-in.
FossilOrigin-Name: 7d41885e85b0e2ef28bac34d663af07c35b21ee3e8b14481d2371f623bce681d
2025-01-07 11:54:43 +00:00
drh 4a6896379f Minor fixes to tclsqlite.c to promote portability.
FossilOrigin-Name: dd934f032fa6fc790a951006512e3ed76a5f2930858932918eafdbe3ceec4620
2025-01-07 00:17:54 +00:00
drh a5dbae3781 Fix a minor problem with the sqlite3_get_table_printf() test interface.
No core changes.

FossilOrigin-Name: a0df29c7a3eb4f558aba00598d827643830591def3101a4d5464543527b8d13c
2025-01-06 18:32:53 +00:00
drh 1388a71690 Allow the 2nd argument to ".param set" to use previously bound parameters,
as suggested by [forum:/forumpost/823e1bd746|forum post 823e1bd746].

FossilOrigin-Name: 13a35ad792dc0afe1f7b60230aef392ae01e702972b963d732e332f21848f38b
2025-01-04 19:50:44 +00:00
drh ded37f337b Add comment to the columnIsGoodIndexCandidate() routine to record the results
of a failed experiment.  No changes to code.

FossilOrigin-Name: 9ee57a30a49d9813bf2669a5d8346f7e018e3fbf1792739951311a8d3a249d45
2025-01-03 11:51:50 +00:00
drh 04364cb3cc Improve the treeview output for CteUse objects.
FossilOrigin-Name: 2b16d6947ca4a102ddab4d5ba3e340a75e1e5c28e45e874ee5ff52f9b5fb964f
2025-01-02 21:23:25 +00:00
drh db258d8ff7 Improvements to the display of subqueries in the FROM clause for treeview
output.  (Debug and analysis code only - does not affect production builds.)

FossilOrigin-Name: 4a2d65cdcdd3d21bb7d9ea0efb434484f1b8642c2bb6457db58bc2a5f4fc16e5
2025-01-02 18:43:29 +00:00
dan 3835cf6ea1 Add a test case for ROLLBACK TO of database truncate operations made through the sqlite_dbpage vtab.
FossilOrigin-Name: eb335beb1eb9ebbea4cb793d24f65787d0d9d8539bc6b5971e4e4298fdfce0c2
2025-01-02 15:27:15 +00:00
drh a683b055fb Improvements to the way that truncation is implemented in sqlite_dbpage().
FossilOrigin-Name: ac4bb2e4ecf0bdb0d8ac12b1ccb42d51af02f519a038cfc79faab5c216971056
2025-01-02 15:03:13 +00:00
drh 71d6456f59 New assert() statements to show that the sqlite3_value.db field is initialized
for MemArrays.

FossilOrigin-Name: 7cd8ccf57d1ae0f597ec5004201395f61ef4750728f3c1b9c4dd52d28916a4f7
2024-12-30 13:54:52 +00:00
drh 6b19c72f26 Add an extra assert() to releaseMemArray() just to prove that the
sqlite3_value.db field is never NULL.

FossilOrigin-Name: b969ef1def5121c7ff54e3586528274f006ca994b308cf88ccaa9d4f56bf30df
2024-12-30 12:29:18 +00:00
drh e0190a6984 Fixes to the substr() SQL function so that it can handle ridiculously large
numbers in its 2nd and 3rd arguments without signed integer overflows.

FossilOrigin-Name: c1de8f916ea617109a903c436c57d082756fbb2b933ba9ce6998b9b912b12dea
2024-12-28 12:32:01 +00:00
drh ccfb50d55e Correction to check-in [a9759fc78d6cb0df] - printf() parameters values must
be integers.

FossilOrigin-Name: 2db531d1911369ea932d3559abcc02389e5f9ad72b46b0801dfb6063855aee1b
2024-12-19 19:52:13 +00:00
drh be2a40d489 The BTree mutex must be held when calling sqlite3BtreeLastPage(). This
check-in fixes a bug introduced by [cf8b99e17872c054].

FossilOrigin-Name: e6c30ee52c5cdc193804cec63374d558b45e4d67fc6bde58771ca78485ca0acf
2024-12-19 19:02:09 +00:00
drh 2dcd4fad6b Fix additional integer overflow problems in the substr() function.
FossilOrigin-Name: 472abb492f1d1553ae6bdf53cc64bebfe75423526335beab7eaff26cc495cd7d
2024-12-19 12:08:39 +00:00
drh b097ef29d1 Fix possible integer oveflow in the second and third argument to substr().
FossilOrigin-Name: b04b4006f38f83d36eaf43c4bace7d53866b02b45e0ddcf1704266fed3bfc11c
2024-12-18 20:29:29 +00:00
drh 47bc07d425 Avoid 32-bit roundoff error on the second argument to round().
[forum:/forumpost/170aeab92a|Forum post 170aeab92a].

FossilOrigin-Name: a9759fc78d6cb0df7c81f20c2c5c358729e571ebee50ee2b1441a15239d0b4b6
2024-12-18 18:29:19 +00:00
drh 2fb488d10a Do not attempt to truncate a database in sqlite_dbpage if the database is
not larger than the requested truncation size.

FossilOrigin-Name: cf8b99e17872c054e7ac0832d12633ce497c843dfc67148daf3b17762fd2b424
2024-12-17 14:32:37 +00:00
drh 32dd04b41e Code formatting changes to make trunk more like wal2.
FossilOrigin-Name: 8f725472b0fe62359a4cd3237b43d7b834e042d8ce425abde06e3ed6c62dbafa
2024-12-16 18:04:39 +00:00
drh bd1a5932d9 Changes for better alignment with the wal2 branch.
FossilOrigin-Name: 4fab85b3d0d1cad2d185f2456de7ddf281badf8561cc051e10e16655441dcc84
2024-12-16 13:25:49 +00:00
drh 276172e4a3 Remove unnecessary end-of-line whitespace.
FossilOrigin-Name: ae580443d210811c12209866112fc8b0b83281e24945504b748a17d93ad84062
2024-12-16 12:08:47 +00:00
drh 9ee02515c4 Fix a harmless compiler warning that comes up when using SQLITE_DEBUG in
separate compilation mode.

FossilOrigin-Name: 52e0f8cab9852538da0778d5f57dd85b0774e764157692111a007aecd963f10a
2024-12-13 01:29:22 +00:00
drh 35d302ccb1 Increase the maximum number of arguments on an SQL function to 1000 with the
capability to increase it further up to 32767 using a compile-time option.

FossilOrigin-Name: e8d7d68ba0bb0bc2f948db5d9966990a5d23597fc3658b7cd0bc99d53c7353a9
2024-12-12 15:11:27 +00:00
drh 6e53f67c63 Fix harmless typo in a comment describing the columnMallocFailure() function.
FossilOrigin-Name: 0f3b484fd71fd77947a1de7c24f35f8eed2911d0565d03edb7970b8f3092a5da
2024-12-10 12:32:34 +00:00
drh e57527c14f Make the TCL interface more rebust against very large strings coming
out of TCL9.

FossilOrigin-Name: e2bae4143afd07de1ae55a6d2606a3b541a5b94568aa41f6a96e5d1245471653
2024-12-09 20:46:36 +00:00
drh e85e33d39c Enhance the ".import" command of the CLI so that it is able to insert into a
view that has an instead-of trigger.
[forum:/info/3e03c73150f8b9f8|Forum post 3e03c73150f8b9f8].

FossilOrigin-Name: 7dcc3731a9057a91f1b173fbab2841d8a666a945d9bc61d4c20f8a2a279d5ff1
2024-12-09 20:37:18 +00:00
drh c29bc733be Add NEVER() around branches that seems to have been made obsolete by
[a350ea7c6b89725b].

FossilOrigin-Name: cb5bad5c748b7435c43f3ec051736c1cf91ced2be317b0519e5e22523c137290
2024-12-09 13:02:13 +00:00
drh 54f96dc50e Further improvements to the decimal-to-float conversion for values close
to LARGEST_UINT64.

FossilOrigin-Name: 453c949914770e8f7b9b9dd882db492bf8756c212c816f87bb2e3ed98bcd64e3
2024-12-09 11:47:28 +00:00
dan 94ad4abc65 Fix an obscure problem with multiple outer joins, ON clauses and query flattening. Forum [forum:5c8a069d23|thread 5c8a069d23].
FossilOrigin-Name: a350ea7c6b89725ba1a0058c77fc8e918f5cb78e868d100f5425cdee114d1320
2024-12-09 11:37:37 +00:00
dan 4f5ae3fc4e Fix an obscure problem with multiple outer joins, ON clauses and query flattening. Forum [forum:5c8a069d23|thread 5c8a069d23].
FossilOrigin-Name: 289daf6cee39625e8f068179cd58efcc1d28242f46064e58ec4175a019cf48ad
2024-12-09 11:12:12 +00:00
drh 9f53d0c817 Yet another iteration of the solution to the floating-point conversion
problem - this what avoids complaints about oversize double values
from -fsanitize.

FossilOrigin-Name: fc6904a508eb732b1cb5cc12321a0d637d97e1e066a022a2c93cb50595f3a86a
2024-12-07 19:57:30 +00:00
drh 8703642803 A cleaner and more robust solution to the floating-point conversion problem
originally fixed by [81342fa6dd03fffb].

FossilOrigin-Name: 351de57f80b73045448c71d3402d877ff5d72418b1f5fc34c8147a04f7c5cb78
2024-12-07 19:06:25 +00:00
drh 92d252e06d Fix more harmless compiler warnings.
FossilOrigin-Name: f5b8fd77635e5e6d2d88a1ce74e1bd6c4311260a2b695e5055b898b880bf5718
2024-12-07 17:08:13 +00:00
drh 4597870108 Fix harmless compiler warning caused by the previous check-in.
FossilOrigin-Name: 462700aeb7c183d739ead4d726ce5384b3297bcf7929abd010987fa3a5f64807
2024-12-07 16:53:42 +00:00
drh 1a4b2117f1 On x64 hardware, round-trip uint64_t→double→uint64_t conversions
fail for values greater than UINT64_MAX-2047.  This caused the SQLite
text-to-float converter routine to give incorrect results for values
between '1.8446744073709550592eNNN' and '1.8446744073709551609eNNN' for any
exponent NNN.  This problem was introduced by check-in [761d8fd18b0ee868]
and first appeared in version 3.47.0 and was reported by
[forum:/forumpost/569a7209179a7f5e|forum post 569a7209179a7f5e].  Fixed
by this check-in.

FossilOrigin-Name: 81342fa6dd03fffbe7d4d699ff049dcef4d30344578bb6f91cb58a4e5a4f6036
2024-12-07 14:48:55 +00:00
drh ef636cc3cd Add the SQLITE_PREPARE_DONT_LOG option for sqlite3_prepare_v3(), that prevents
errors in the compilation of the SQL from being sent to sqlite3_log().

FossilOrigin-Name: 870403425493866232cf9e8fa62288861b7d0a4091b15d75727f8bb31da46f94
2024-12-06 18:35:16 +00:00
drh 33c120f9b7 Improve the output from the ".testctrl opt" command in the CLI.
FossilOrigin-Name: de7064d118c33aab0fff39d072593b287c291870b843d093045300bde464420f
2024-12-02 19:55:39 +00:00