stephan [Mon, 26 May 2025 15:20:57 +0000 (15:20 +0000)]
When detecting TCLLIBDIR, skip over //zipfs paths, as the (file isdirectory) command will actually return true for those, but they're useless for installation purposes. This resolves the tea build's inability to install on stock openbsd.
stephan [Sat, 17 May 2025 11:06:02 +0000 (11:06 +0000)]
Latest teaish pieces, most significantly for tcl portability fixes. Move autoconf/teaish/autosetup/... to autosetup/teaish/. to simplify maintenance and deployment via the autoconf bundle.
drh [Fri, 16 May 2025 17:30:20 +0000 (17:30 +0000)]
Fix the optimization of check-in [663f5dd32d9db832] that strives to avoid
duplicate compuations in the GROUP BY clause so that it works even if the
GROUP BY term is a subquery on the RHS of a LEFT JOIN. Problem found
by dbsqlfuzz. Test cases in TH3.
drh [Thu, 15 May 2025 11:20:54 +0000 (11:20 +0000)]
Rework the showHelp() function in the CLI implementation so that its
purpose and operation are well described by the header commit. Omit
the use of enums that cause issues for MSVC 2025.
drh [Wed, 14 May 2025 16:40:05 +0000 (16:40 +0000)]
Back out the "low-quality index" query planner hack of check-in
[bcac937526d9a6ef]. Subsequent query planner enhancements for dealing
with star-queries make that change unnecessary and the change was recently
found to cause a performance regression in an unrelated query.
Also fix a typo in a debugging message.
drh [Sat, 10 May 2025 17:09:53 +0000 (17:09 +0000)]
Provide the SQLITE_BUG_COMPATIBLE_20250510 compile-time option that restores
the JSON5 bug fixed in the previous check-in, in case some applications need
it for legacy compatibility.
drh [Sat, 10 May 2025 15:53:17 +0000 (15:53 +0000)]
Add enforcement of the obscure JSON5 syntax rule that the \0 escape
sequence must not be followed by a digit.
[forum:/forumpost/c061e87faf7d1c55|Forum post c061e87faf].
drh [Thu, 8 May 2025 16:18:18 +0000 (16:18 +0000)]
Fix PRAGMA trusted_schema=OFF and similar so that it restricts the kinds
of functions in CHECK constraints that the documentation says it does. It
was letting through some function that it ought not have. This is a
defect in [5720924cb07766cd]. See
[forum:/forumpost/3fa9d44c0b381342|forum thread 2025-05-08T08:50Z].
Additional test cases will be added separately.
drh [Tue, 6 May 2025 17:53:27 +0000 (17:53 +0000)]
Fix a bug in the NOT NULL/IS NULL optimization of check-in [cb94350185f555c3]
that can cause invalid data to be used for a column if that column has a
CHECK constraint that includes the NOT NULL or IS NULL operator.
Problem discovered by the
[https://issues.chromium.org/issues/415397143|Chromium fuzzer]. Never
seen in the wild, as far as anybody knows.
drh [Sat, 3 May 2025 15:17:21 +0000 (15:17 +0000)]
Enhance sqlite3_rsync so that if the first attempt to invoke a copy
of itself on the remote system using ssh fails, try again after
augmenting the PATH. This enables sqlite3_rsync to work without the
--exe option when the remote system is a Mac.
drh [Sat, 3 May 2025 10:35:32 +0000 (10:35 +0000)]
Promote the --protocol option to sqlite3_rsync from being an undocumented
debug option to being a supported and user-visible option. This is
sometimes needed to work around bugs in prior versions running on the
remote.
drh [Sat, 3 May 2025 08:17:46 +0000 (08:17 +0000)]
Enhance sqlite3_rsync (in a backwards-compatible way) so that it has the
ability to send hashes for blocks of pages in addition to individual pages.
By judicious use of this capability, network bandwidth requirement to sync two
similar databases is reduced.
drh [Fri, 2 May 2025 17:39:21 +0000 (17:39 +0000)]
This is the start of an experiment in getting sqlite3_rsync to use less
bandwidth when the two databases are very similar, by sending hashes
over blocks of pages initially, rather than over individual pages, then
requesting more detail when hashes do not match.
drh [Fri, 2 May 2025 11:18:09 +0000 (11:18 +0000)]
Do not allow sqlite3_rsync to convert the replica from WAL-mode into
DELETE-mode, as that can disrupt existing clients on the replica side.
DELETE-mode to WAL-mode conversions are allowed, however. See
[forum:/forumpost/6b575b66156673ee|forum thread 6b575b66156].
drh [Thu, 1 May 2025 18:07:27 +0000 (18:07 +0000)]
Enhance sqlite3_rsync so that, by default, it will sync non-WAL-mode
database files. Add a new command-line option --wal-only that restricts
the sync to WAL-mode databases only (the former default). Improve
command-line option parsing so that only a single "-" is required before
each option.
Fix a harmless problem in the CLI in which SQL errors that occur during
the ".schema" command are properly ignored, yes still appear in the ".log"
output. [forum:/forumpost/42fe6520b803be51|Forum post 42fe6520b8]
Fix an issue in Bloom filters on RHS subsqueries to IN operators.
See [forum:/forumpost/792a09cb3df9e69f|forum post 792a09cb3d] for
a description of the problem. Also improve comments related
to [baa83b460c677c21] which was origin of the problem.
Add the "--fuzzdb FILENAME" to testrunner.tcl as an alternative to setting
the FUZZDB environment variable (as that can be awkward to do on Windows).
Further improvements to the testrunner.tcl documentation.
If the FUZZDB environment variable is set when running testrunner.tcl and
that env-var points to a fuzzcheck database, then suppliment the fuzzcheck
tests with that extra database.
Remove long-obsolete performance testing scripts from the tools/ folder.
The test/speedtest.tcl script is what should be used these days. This
is just cruft clean-up.
stephan [Mon, 28 Apr 2025 09:25:19 +0000 (09:25 +0000)]
tea: pull in upstream teaish. Consolidate the build definition from the upstream build and this one to ease maintenace. Improve compatibility with historical TEA usage of --with-tcl=... (it insists on a /lib suffix for that path).
stephan [Sun, 27 Apr 2025 04:21:27 +0000 (04:21 +0000)]
autoconf/tea: the default value of --threadsafe=X is now based on a pkgconfig query using the target tclsh, which is much more reliable than grepping Tcl's linker flags. Doc touchups.
Fix an off-by-one error in an assert(), discovered by oss-fuzz. This is a
harmless error in as much as assert()s are disabled in production builds, and
because the off-by-one only occurs on nonsensical CREATE INDEX statements.
When logging errors using sqlite3_log() and the error text includes the
text of an SQL statement, but the SQL statement text at the end so that if
the error message buffer overflows it is the SQL statement text that gets
truncated, not the statement of the problem.
stephan [Wed, 16 Apr 2025 21:53:01 +0000 (21:53 +0000)]
Latest upstream teaish. Most notably it adds the ability for the extension to specify a minimum Tcl version, and this build now enforces a minimum Tcl of 8.6.
Attempt to provide EBCDIC translations to the tables in the JSON
implementation. The SQLite developers do not have access to any
computers using EBCDIC and so have no way to test this patch, and
cannot vouch for its accuracy.
stephan [Wed, 16 Apr 2025 14:21:48 +0000 (14:21 +0000)]
A portability fix for proj.tcl: some Tcl builds do not like (array set x $someArray). Also better --mandir handling on Haiku (where the former problem was found).7
Correctly handle the case of a multi-column UNIQUE constraint that contains
the ROWID as one of it columns, and then the columns of that UNIQUE are
used in a row-value IN operator as a WHERE clause constraint. Reported by
[forum:/forumpost/b9647a113b465950|forum post b9647a113b]. Problem
introduced by [723f1be3d4a905a6], part of ticket [da78413751863].