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

Adjustments to the substr() function so that it can accommodate

ridiculous values for the second argument.
[bugs:/info/2026-09-20T18:42:27Z|Bug 2026-09-20T18:42:27Z]

FossilOrigin-Name: aadf42e021fc55d457836c7cda68f3d22dcaae72a7bbc105c3c727b3eb5c4657
This commit is contained in:
drh
2026-09-20 20:17:58 +00:00
parent 30fbf300af
commit 93d6a90fe9
4 changed files with 20 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
C Fix\stest\scases\sadded\sby\s[f847298c8d424071]\sso\sthat\sthey\swork\son\nall\sconfigurations.
D 2026-09-19T11:07:26.487
C Adjustments\sto\sthe\ssubstr()\sfunction\sso\sthat\sit\scan\saccommodate\nridiculous\svalues\sfor\sthe\ssecond\sargument.\n[bugs:/info/2026-09-20T18:42:27Z|Bug\s2026-09-20T18:42:27Z]
D 2026-09-20T20:17:58.217
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -697,7 +697,7 @@ F src/delete.c 59eeca3fb88c29329afc41bb803ee568b120d9dd7470b5f38ab55cc38390b451
F src/expr.c e312efc69da66f6f0fe91f6cecc5024aa9d0797d232ba4d5032558ed4458f841
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 26788ae6c785d70f9829c4176e9764447014fc73e6ba31e9f1881720a64ae7f1
F src/func.c 1a5fdec75485222cdf0410fac07b9d31b0553d0c65fada6fd1d3faf4bb0112a4
F src/func.c 54d96eeafcb6ec4cff92028ea0f7bb09e27b375b248d969aeb80a61e560ef302
F src/global.c 7eea537ac0c113ac55cb2dd4d8fc2a6a91ae478be34231b4efaffc46817fee85
F src/hash.c 03c8c0f4be9e8bcb6de65aa26d34a61d48a9430747084a69f9469fbb00ea52ca
F src/hash.h 46b92795a95bfefb210f52f0c316e9d7cdbcdd7e7fcfb0d8be796d3a5767cddf
@@ -1708,7 +1708,7 @@ F test/subjournal.test 8d4e2572c0ee9a15549f0d8e40863161295107e52f07a3e8012a2e1fd
F test/subquery.test 0a8fc4fc4eb04b9ee40b17f2cc5416aacfbf756b583fa8880b801e395d5abb36
F test/subquery2.test ab96ff3fa9c4e3dce0d699f74e61c50250ed4335bc8f400e127707d552a8999e
F test/subselect.test 0966aa8e720224dbd6a5e769a3ec2a723e332303
F test/substr.test a673e3763e247e9b5e497a6cacbaf3da2bd8ec8921c0677145c109f2e633f36b
F test/substr.test 6a3d2c32b4d58ab063041ce67ecb16427ca5d3cd06d8d17c7b4775cbaa86fc88
F test/subtype1.test 6e385ea8c0cab8d51f8193a8b107669224486fba0601ee256ad66a57cb4b77bc
F test/superlock.test 85256830339a6871ce36a2ef591c3f67716a701b5497788fb2068b90159c2442
F test/swarmvtab.test 250231404fcac88f61a6c147bb0e3a118ed879278cd3ccb0ae2d3a729e1e8e26
@@ -2221,8 +2221,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P 78d3370d36fb8872de1ed853f3a479273b54d2cff9fdfe83db963f4da9c7f999
R 329bc6be52c243875096f6c8b08d34d6
P 977e0faac735409fd06d61851a30686b471bcfc3f1dcfba2debe2b4a3d42b5e8
R ce109dbed4fd53e1700ce0cf98c56819
U drh
Z 2366084fb6f7e06b118c23769cd114a7
Z e11c829be8a5ccd9d1b02ada6dbd0efe
# Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
977e0faac735409fd06d61851a30686b471bcfc3f1dcfba2debe2b4a3d42b5e8
aadf42e021fc55d457836c7cda68f3d22dcaae72a7bbc105c3c727b3eb5c4657

View File

@@ -378,7 +378,7 @@ static void substrFunc(
p2 = sqlite3_value_int64(argv[2]);
if( p2==0 && sqlite3_value_type(argv[2])==SQLITE_NULL ) return;
}else{
p2 = sqlite3_context_db_handle(context)->aLimit[SQLITE_LIMIT_LENGTH];
p2 = LARGEST_INT64;
}
if( p1==0 ){
#ifdef SQLITE_SUBSTR_COMPATIBILITY

View File

@@ -155,4 +155,15 @@ proc substr-2-test {id string idx result} {
substr-2-test 5.1 abcdefghijklmnop 5 efghijklmnop
substr-2-test 5.2 abcdef -5 bcdef
# Bug 2026-09-20T18:42:27Z
# Ridiculous values for the second argument of substr()
#
do_execsql_test substr-6.1 {
SELECT substr('abcdefghijklmnop',-1_000_000_000_000_000);
} {abcdefghijklmnop}
do_execsql_test substr-6.2 {
SELECT substr('abcdefghijklmnop',-1_000_000_000_000_000,
999_999_999_999_995);
} {abcdefghijk}
finish_test