1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-23 21:49:02 +03:00

New test cases for Bloom filter use on text keys as long as the

collating sequence is binary.

FossilOrigin-Name: 98ced971bfd48aedf862fa0f8674744723e36eeda2ad600e91062fc8b7d9da9e
This commit is contained in:
drh
2026-07-23 20:23:04 +00:00
parent b4ca411eb6
commit bed078a865
3 changed files with 57 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
C Improved\sBloom-filter\sinvariant\schecking.
D 2026-07-23T18:55:12.383
C New\stest\scases\sfor\sBloom\sfilter\suse\son\stext\skeys\sas\slong\sas\sthe\ncollating\ssequence\sis\sbinary.
D 2026-07-23T20:23:04.256
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -939,7 +939,7 @@ F test/bind2.test 918bc35135f4141809ead7585909cde57d44db90a7a62aef540127148f91aa
F test/bindxfer.test efecd12c580c14df5f4ad3b3e83c667744a4f7e0
F test/bitvec.test 75894a880520164d73b1305c1c3f96882615e142
F test/blob.test e7ac6c7d3a985cc4678c64f325292529a69ae252
F test/bloom1.test dd9847746e1a52db2f19bc5c8cb751990b2eb04692aee6e8c9972b84cd4069bf
F test/bloom1.test 1bb23039a13e9b93dae94d3819ffc5ed9017c634319f2bfc4bdb7f000875cfce
F test/boundary1.tcl 6421b2d920d8b09539503a8673339d32f7609eb1
F test/boundary1.test 66d7f4706ccdb42d58eafdb081de07b0eb42d77b
F test/boundary2.tcl e34ef4e930cf1083150d4d2c603e146bd3b76bcb
@@ -2217,8 +2217,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P 3013d6ab4afd4f63fa63a773778adcf07821cfcb33e3ae42752aea13fd2b6224
R 0e1584e2f9d4a83856c66208401cbfea
P f38f4167110df11ba54816932126f695dc6e114d4001d0261669807a55ad7966
R 438ee1d912e98a29a406472f7bcf9770
U drh
Z 3049f8ec6b5a896c591d2da0158d3d82
Z 755ec0c18f267274a2f24d11dbb024d2
# Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
f38f4167110df11ba54816932126f695dc6e114d4001d0261669807a55ad7966
98ced971bfd48aedf862fa0f8674744723e36eeda2ad600e91062fc8b7d9da9e

View File

@@ -238,4 +238,54 @@ do_execsql_test 6.1 {
);
} 0
# Bug 2026-07-21T04:39:35Z (Really an enhancement request, not a bug)
#
# Bloom filters are used for text comparisons as long as the collating
# sequence is BINARY. For any other collating sequence, the Bloom filter
# is omitted.
#
reset_db
do_execsql_test 7.1 {
CREATE TABLE big(a INTEGER PRIMARY KEY, b TEXT);
CREATE TABLE small(k TEXT PRIMARY KEY, v TEXT) WITHOUT ROWID;
WITH RECURSIVE c(n) AS(VALUES(0) UNION ALL SELECT n+1 FROM c WHERE n<9999)
INSERT INTO big(b) SELECT format('k%07d',n) FROM c;
WITH RECURSIVE c(n) AS(VALUES(0) UNION ALL SELECT n+1 FROM c WHERE n<99)
INSERT INTO small(k,v) SELECT format('k%07d',n), n*1000 FROM c;
ANALYZE;
}
do_execsql_test 7.2 {
SELECT count(*) FROM big CROSS JOIN small
WHERE small.k=big.b AND small.v<>'nope';
} 100
do_eqp_test 7.3 {
SELECT count(*) FROM big CROSS JOIN small
WHERE small.k=big.b AND small.v<>'nope';
} {
QUERY PLAN
|--SCAN big
|--BLOOM FILTER ON small (k=?)
`--SEARCH small USING PRIMARY KEY (k=?)
}
do_execsql_test 7.4 {
CREATE TABLE big2(a INTEGER PRIMARY KEY, b TEXT);
INSERT INTO big2 SELECT * FROM big;
CREATE TABLE small2(k TEXT COLLATE nocase, v TEXT);
CREATE INDEX sx1 on small2(k);
INSERT INTO small2 SELECT * FROM small;
ANALYZE;
}
do_execsql_test 7.5 {
SELECT count(*) FROM big2, small2
WHERE small2.k=big2.b AND small2.v<>'nope';
} 100
do_eqp_test 7.6 {
SELECT count(*) FROM big2, small2
WHERE small2.k=big2.b AND small2.v<>'nope';
} {
QUERY PLAN
|--SCAN big2
`--SEARCH small2 USING INDEX sx1 (k=?)
}
finish_test