Skip to content

Commit 814b062

Browse files
committed
Snapshot of upstream SQLite 3.38.3
1 parent 5ddd6e7 commit 814b062

19 files changed

Lines changed: 272 additions & 65 deletions

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.38.2
1+
3.38.3

configure

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#! /bin/sh
22
# Guess values for system-dependent variables and create Makefiles.
3-
# Generated by GNU Autoconf 2.69 for sqlite 3.38.2.
3+
# Generated by GNU Autoconf 2.69 for sqlite 3.38.3.
44
#
55
#
66
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -726,8 +726,8 @@ MAKEFLAGS=
726726
# Identity of this package.
727727
PACKAGE_NAME='sqlite'
728728
PACKAGE_TARNAME='sqlite'
729-
PACKAGE_VERSION='3.38.2'
730-
PACKAGE_STRING='sqlite 3.38.2'
729+
PACKAGE_VERSION='3.38.3'
730+
PACKAGE_STRING='sqlite 3.38.3'
731731
PACKAGE_BUGREPORT=''
732732
PACKAGE_URL=''
733733

@@ -1468,7 +1468,7 @@ if test "$ac_init_help" = "long"; then
14681468
# Omit some internal or obsolete options to make the list less imposing.
14691469
# This message is too long to be a string in the A/UX 3.1 sh.
14701470
cat <<_ACEOF
1471-
\`configure' configures sqlite 3.38.2 to adapt to many kinds of systems.
1471+
\`configure' configures sqlite 3.38.3 to adapt to many kinds of systems.
14721472
14731473
Usage: $0 [OPTION]... [VAR=VALUE]...
14741474
@@ -1533,7 +1533,7 @@ fi
15331533

15341534
if test -n "$ac_init_help"; then
15351535
case $ac_init_help in
1536-
short | recursive ) echo "Configuration of sqlite 3.38.2:";;
1536+
short | recursive ) echo "Configuration of sqlite 3.38.3:";;
15371537
esac
15381538
cat <<\_ACEOF
15391539
@@ -1661,7 +1661,7 @@ fi
16611661
test -n "$ac_init_help" && exit $ac_status
16621662
if $ac_init_version; then
16631663
cat <<\_ACEOF
1664-
sqlite configure 3.38.2
1664+
sqlite configure 3.38.3
16651665
generated by GNU Autoconf 2.69
16661666
16671667
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2080,7 +2080,7 @@ cat >config.log <<_ACEOF
20802080
This file contains any messages produced by compilers while
20812081
running configure, to aid debugging if configure makes a mistake.
20822082
2083-
It was created by sqlite $as_me 3.38.2, which was
2083+
It was created by sqlite $as_me 3.38.3, which was
20842084
generated by GNU Autoconf 2.69. Invocation command line was
20852085
20862086
$ $0 $@
@@ -12390,7 +12390,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
1239012390
# report actual input values of CONFIG_FILES etc. instead of their
1239112391
# values after options handling.
1239212392
ac_log="
12393-
This file was extended by sqlite $as_me 3.38.2, which was
12393+
This file was extended by sqlite $as_me 3.38.3, which was
1239412394
generated by GNU Autoconf 2.69. Invocation command line was
1239512395
1239612396
CONFIG_FILES = $CONFIG_FILES
@@ -12456,7 +12456,7 @@ _ACEOF
1245612456
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1245712457
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1245812458
ac_cs_version="\\
12459-
sqlite config.status 3.38.2
12459+
sqlite config.status 3.38.3
1246012460
configured by $0, generated by GNU Autoconf 2.69,
1246112461
with options \\"\$ac_cs_config\\"
1246212462

manifest

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
C Version\s3.38.2
2-
D 2022-03-26T13:51:10.240
1+
C Version\s3.38.3
2+
D 2022-04-27T12:03:15.047
33
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
44
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
55
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
66
F Makefile.in b210ad2733317f1a4353085dfb9d385ceec30b0e6a61d20a5accabecac6b1949
77
F Makefile.linux-gcc f609543700659711fbd230eced1f01353117621dccae7b9fb70daa64236c5241
88
F Makefile.msc b28a8a7a977e7312f6859f560348e1eb110c21bd6cf9fab0d16537c0a514eef3
99
F README.md 2dd87a5c1d108b224921f3dd47dea567973f706e1f6959386282a626f459a70c
10-
F VERSION 2c46bf3c621980e333221949b5ea8ce0bf5e6f0c328e6b228501ea3190abe467
10+
F VERSION b09048f5104cef7fbc4405635ec966be2481d532c0dbd46afd5c17f957de2dc0
1111
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
1212
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
1313
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
@@ -34,7 +34,7 @@ F autoconf/tea/win/rules.vc c511f222b80064096b705dbeb97060ee1d6b6d63
3434
F config.guess 883205ddf25b46f10c181818bf42c09da9888884af96f79e1719264345053bd6
3535
F config.h.in 6376abec766e9a0785178b1823b5a587e9f1ccbc
3636
F config.sub c2d0260f17f3e4bc0b6808fccf1b291cb5e9126c14fc5890efc77b9fd0175559
37-
F configure 40cf509efcf3fe6062a5f6a25742a9622cfb6e2df127ba7b5e2400de41994dd8 x
37+
F configure 1290cbee049f2db602990f1ed2a4eed248c36d1e41d23eed37ccdfd7b8bed13e x
3838
F configure.ac 3ef6eeff4387585bfcab76b0c3f6e15a0618587bb90245dd5d44e4378141bb35
3939
F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad
4040
F doc/F2FS.txt c1d4a0ae9711cfe0e1d8b019d154f1c29e0d3abfe820787ba1e9ed7691160fcd
@@ -492,7 +492,7 @@ F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf
492492
F src/backup.c a2891172438e385fdbe97c11c9745676bec54f518d4447090af97189fd8e52d7
493493
F src/bitvec.c 7c849aac407230278445cb069bebc5f89bf2ddd87c5ed9459b070a9175707b3d
494494
F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
495-
F src/btree.c 1ebe34ee736e05ead62bcf762a71c5779526356b0616dec67f20478d008e2eb4
495+
F src/btree.c 4ac832687f84d4c6c753f90274f7581f6c80a9ea69c2f045a5d07cb043cdf381
496496
F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
497497
F src/btreeInt.h 8be97d3939d626f734ec1b577efa4e6e186da00daf5b3227af199ca1c24cdd71
498498
F src/build.c a0cc68fe8172c0a31b54576f9c6c0fe6f7c82b1b5e1387afdd6a5a13132bc131
@@ -503,7 +503,7 @@ F src/date.c 15082566229d4b1e5f24fdb490bf9bcc68824b911d70e3573ef075a1b9e2d26f
503503
F src/dbpage.c 30ff075a9a9156bd2cccb5c1ea579f2afbaa64989648e8c9d72cb4a3417f5136
504504
F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
505505
F src/delete.c b5f1716b4d723db48254ee0f896e362cd029e865e05414139ea7f539f3884e1d
506-
F src/expr.c b90a029105a93a93a0ed5e5f8c5eaed8f19043a3b62e4c4d235a4611d9ada178
506+
F src/expr.c 7b9d66f012ba22bda14261c9a4d0600f4b800fad4cf5868f6a32355f037880cc
507507
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
508508
F src/fkey.c 06e4ac33031b02dde7130c12e79cddf4dc5cfa72b23d8e63a3c26878fc9c1d3c
509509
F src/func.c a3407a6fbb0d4088d8d502e46f0ace63e0aeae7467ae23a9ca9815bbf9239761
@@ -513,11 +513,11 @@ F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51
513513
F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
514514
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
515515
F src/insert.c 6c0641efc3636732a02f45defe358899d695c065fc26fbba1b2cab415b5b2e57
516-
F src/json.c 225b00422112ecd7094a555f3ace16b25d7d5894062b823269ed03899907c2a2
516+
F src/json.c 7ad9c97f36c43176bf4bd1397647dfdca540850554569c302b5380bd1e35ccf5
517517
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
518518
F src/loadext.c aa919a6a7884f8b34d7b791841b24d14b1b0ab43f45b3940f4851043b2855c0c
519519
F src/main.c 0840cee6984034c7e73cc747a1562c7eaed4673694bf20b00980aaa0672c0405
520-
F src/malloc.c fec841aa0a0400a6f7d20706178a5d8e8219a6bf562b6fe712c17f6c26813266
520+
F src/malloc.c a9127efdcef92d6934c6339ea9813075b90edc0ce2e5c723556381a3828fb720
521521
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
522522
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
523523
F src/mem2.c c8bfc9446fd0798bddd495eb5d9dbafa7d4b7287d8c22d50a83ac9daa26d8a75
@@ -552,12 +552,12 @@ F src/printf.c 05d8dfd2018bc4fc3ddb8b37eb97ccef7abf985643fa1caebdcf2916ca90fa32
552552
F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c
553553
F src/resolve.c ea935b87d6fb36c78b70cdc7b28561dc8f33f2ef37048389549c7b5ef9b0ba5e
554554
F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
555-
F src/select.c 3baa9dd8cf240654773c7974e2bcce398ac9dd24419c36684156963defe43b35
556-
F src/shell.c.in 69d1e59da4881f096ab47fbd3e6d99794f3e4a43f41fd9e4d2e845c9b8d20fd5
555+
F src/select.c ba0cd3d264fa788c8d65f063d5ec3e1d65b0dac206c822a564a59ba550210cfc
556+
F src/shell.c.in ec4b952f7d9c02919e8e8394be16bcbff55c105fd080895602d10fc8fa5328b8
557557
F src/sqlite.h.in b93deee892f1bc4030e5c8712df9e21d786a1bf8e921ab8dc987eaf1e44c676f
558558
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
559559
F src/sqlite3ext.h a95cb9ed106e3d39e2118e4dcc15a14faec3fa50d0093425083d340d9dfd96e6
560-
F src/sqliteInt.h e7b93bb693cb14259f6c3faadc6d7c824ff509aac673622a76c161a96c5872d0
560+
F src/sqliteInt.h 272c5ca0a16a1963c0c956524c615a27af57be950b97a395d39cb9fd9b31fc4e
561561
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
562562
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
563563
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@ -630,7 +630,7 @@ F src/vdbeInt.h b45599a2b59f1ce042512ab6786b0b82a8cf3002f6b0fa60b4834e2cd3ac61d8
630630
F src/vdbeapi.c 8863ffb5a7bac42fe9a68aaa3526ee29fc18fb02a9b27188b756de41e33856e9
631631
F src/vdbeaux.c 0d7659fe8cb38ce86092b9bc5131c99a834a04eb78745e54acb77d79d7af2fb5
632632
F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd
633-
F src/vdbemem.c 69d3092d47b7a3a466a161961abd92bca7ab148abd8b497438eb17c6afdcbad8
633+
F src/vdbemem.c 2db321ed3722f78c7f1e6743ff24ae68717fcc44c157817ae7eaf0a83439af98
634634
F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35
635635
F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823
636636
F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
@@ -639,11 +639,11 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
639639
F src/wal.c b9df133a705093da8977da5eb202eaadb844839f1c7297c08d33471f5491843d
640640
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
641641
F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
642-
F src/where.c 48d9836b7bdf301783719156fd50d45685a601605334035c559ed2d655df9fb6
642+
F src/where.c be30bf0151f5cc77b2d75a664f2ab60632974165ad2bab6df9deca2fc3284264
643643
F src/whereInt.h 15d2975c3b4c193c78c26674400a840da8647fe1777ae3b026e2d15937b38a03
644644
F src/wherecode.c 84be340684393248b9f3ecbce9b87c8a6f818149b52302702ea0b8d2a9d51faf
645645
F src/whereexpr.c 2a71f5491798460c9590317329234d332d9eb1717cba4f3403122189a75c465e
646-
F src/window.c 731980c0887f7ec9859f5e0d3c69d5fbeb6e512a9e1d338935f53938eaba431e
646+
F src/window.c 8546f510dfff88e4627f004969940c648acf91c13aa155229849f926a8137b9c
647647
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
648648
F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627
649649
F test/affinity3.test eecb0dabee4b7765a8465439d5e99429279ffba23ca74a7eae270a452799f9e7
@@ -704,7 +704,7 @@ F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
704704
F test/auth3.test 76d20a7fa136d63bcfcf8bcb65c0b1455ed71078d81f22bcd0550d3eb18594ab
705705
F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
706706
F test/autoinc.test 997d6f185f138229dc4251583a1d04816423dddc2fc034871a01aeb1d728cb39
707-
F test/autoindex1.test fe27af92eaf884bd9c38f94be3e8afa04ec494e5eefb189902026181a6175f5e
707+
F test/autoindex1.test b2a87aca5c3717264ef431025c1eb855f6012c9694a3c85c678c762aa0dedf58
708708
F test/autoindex2.test 12ef578928102baaa0dc23ad397601a2f4ecb0df
709709
F test/autoindex3.test 2d13958a5617e987624a428d7aed91bf51f322b49b476e3573fadec697ce6da5
710710
F test/autoindex4.test 75cb1191a552b8201351f5a50d160fcb9387a0fbbfb820c77798bfee7da3f8cf
@@ -813,7 +813,7 @@ F test/corruptH.test 79801d97ec5c2f9f3c87739aa1ec2eb786f96454
813813
F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
814814
F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
815815
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
816-
F test/corruptL.test 7d3440831ca24ba64305583c4d4506d417d3f89f5775c0b7cc8102db078f8ff5
816+
F test/corruptL.test 21a951d1eb09120f3c1561af5bac30ed49be2d9dfcad039f71759c5d9e28a349
817817
F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
818818
F test/corruptN.test 60b5a62944b4f0029ba07edaa5fd8e670539d6b0a8d99db26c068d435675cbfe
819819
F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
@@ -1151,7 +1151,7 @@ F test/journal3.test 7c3cf23ffc77db06601c1fcfc9743de8441cb77db9d1aa931863d94f5ff
11511151
F test/jrnlmode.test 9b5bc01dac22223cb60ec2d5f97acf568d73820794386de5634dcadbea9e1946
11521152
F test/jrnlmode2.test 8759a1d4657c064637f8b079592651530db738419e1d649c6df7048cd724363d
11531153
F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
1154-
F test/json101.test d7c84854acafaf80f883e183ac4248ea2742615086c94a61a46ad7d7382ce123
1154+
F test/json101.test 9d46b8e254c4e23306da175dd226d5c4f164db6b294bcea98e5dcd891ba48c91
11551155
F test/json102.test 327e77275f338c028faefa2da5164daf6b142a165e3015ff2a6e4251ddc6a0ac
11561156
F test/json103.test 53df87f83a4e5fa0c0a56eb29ff6c94055c6eb919f33316d62161a8880112dbe
11571157
F test/json104.test a502dc01853aada95d721b3b275afbe2dc18fffdac1fea6e96fb20c13586bbb5
@@ -1389,7 +1389,7 @@ F test/sharedB.test 16cc7178e20965d75278f410943109b77b2e645e
13891389
F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939
13901390
F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
13911391
F test/shell1.test b224e0793c5f48aa3749e65d8c64b93a30731bd206f2e41e6c5f1bee1bdb16c6
1392-
F test/shell2.test 89e4b2db062d52baed75022227b462d085cff495809de1699652779d8e0257d6
1392+
F test/shell2.test 7a3a23a9f57b99453f1679b1fe8072cb30e382a622874c0c4d97695fadb0a787
13931393
F test/shell3.test a50628ab1d78d90889d9d3f32fb2c084ee15674771e96afe954aaa0accd1de3c
13941394
F test/shell4.test 8f6c0fce4abed19a8a7f7262517149812a04caa905d01bdc8f5e92573504b759
13951395
F test/shell5.test 0a9920d81fae28c45cd5dbd1deb809487a23c5f4b422a49f9d31c85f926d4a9c
@@ -1813,7 +1813,7 @@ F test/window8.tcl 5e02e41d9d9a80f597063aed1a381eb19d1d0ef677a4f0df352c5365cf23f
18131813
F test/window8.test 4ab16817414af0c904abe2ebdf88eb6c2b00058b84f9748c6174ff11fc45f1ed
18141814
F test/window9.test 349c71eab4288a1ffc19e2f65872ec2c37e6cf8a1dda2ad300364b7450ae4836
18151815
F test/windowA.test 6d63dc1260daa17141a55007600581778523a8b420629f1282d2acfc36af23be
1816-
F test/windowB.test b67bda5645f3226790e1a360c4225241840b84adb5aa2e69bfb0b27eef3b84d9
1816+
F test/windowB.test f2fb42b864b0cf431c956407583e9478a74c3642bdf8737fdcb6ff4a40298b07
18171817
F test/windowC.test 6fd75f5bb2f1343d34e470e36e68f0ff638d8a42f6aa7d99471261b31a0d42f2
18181818
F test/windowerr.tcl f5acd6fbc210d7b5546c0e879d157888455cd4a17a1d3f28f07c1c8a387019e0
18191819
F test/windowerr.test a8b752402109c15aa1c5efe1b93ccb0ce1ef84fa964ae1cd6684dd0b3cc1819b
@@ -1944,10 +1944,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
19441944
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
19451945
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
19461946
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
1947-
P 4977d8f453bcd56fb1dfab02cc5b283fb32d402bafdf2b6112e7dd322b7c32ad
1948-
R da11ed5f90621f5fb7c0aa8d0a45881c
1949-
T +sym-release *
1950-
T +sym-version-3.38.2 *
1947+
P b9c7d2c1bdc529b8c367e4a0894f4c966957cfa4b427175d5aa10af6a25f4f12
1948+
R 3239c458ee20a7ad3be4e144155c5ad4
1949+
T +sym-relese *
1950+
T +sym-version-3.38.3 *
19511951
U drh
1952-
Z 1c2a1cc2a9288218f72e9d4db2ebcd7a
1952+
Z 3eea06f2546971f0d6539e228b8fb587
19531953
# Remove this line to create a well-formed Fossil manifest.

manifest.uuid

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
d33c709cc0af66bc5b6dc6216eba9f1f0b40960b9ae83694c986fbf4c1d6f08f
1+
9547e2c38a1c6f751a77d4d796894dec4dc5d8f5d79b1cd39e1ffc50df7b3be4

src/btree.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,6 +1609,8 @@ static u8 *pageFindSlot(MemPage *pPg, int nByte, int *pRc){
16091609
** fragmented bytes within the page. */
16101610
memcpy(&aData[iAddr], &aData[pc], 2);
16111611
aData[hdr+7] += (u8)x;
1612+
testcase( pc+x>maxPC );
1613+
return &aData[pc];
16121614
}else if( x+pc > maxPC ){
16131615
/* This slot extends off the end of the usable part of the page */
16141616
*pRc = SQLITE_CORRUPT_PAGE(pPg);
@@ -5808,7 +5810,7 @@ int sqlite3BtreeIndexMoveto(
58085810
assert( lwr==upr+1 || (pPage->intKey && !pPage->leaf) );
58095811
assert( pPage->isInit );
58105812
if( pPage->leaf ){
5811-
assert( pCur->ix<pCur->pPage->nCell );
5813+
assert( pCur->ix<pCur->pPage->nCell || CORRUPT_DB );
58125814
pCur->ix = (u16)idx;
58135815
*pRes = c;
58145816
rc = SQLITE_OK;
@@ -8332,7 +8334,7 @@ static int balance_nonroot(
83328334
iOvflSpace += sz;
83338335
assert( sz<=pBt->maxLocal+23 );
83348336
assert( iOvflSpace <= (int)pBt->pageSize );
8335-
for(k=0; b.ixNx[k]<=i && ALWAYS(k<NB*2); k++){}
8337+
for(k=0; b.ixNx[k]<=j && ALWAYS(k<NB*2); k++){}
83368338
pSrcEnd = b.apEnd[k];
83378339
if( SQLITE_WITHIN(pSrcEnd, pCell, pCell+sz) ){
83388340
rc = SQLITE_CORRUPT_BKPT;

src/expr.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2284,6 +2284,38 @@ int sqlite3ExprIsTableConstant(Expr *p, int iCur){
22842284
return exprIsConst(p, 3, iCur);
22852285
}
22862286

2287+
/*
2288+
** Check pExpr to see if it is an invariant constraint on data source pSrc.
2289+
** This is an optimization. False negatives will perhaps cause slower
2290+
** queries, but false positives will yield incorrect answers. So when in
2291+
** double, return 0.
2292+
**
2293+
** To be an invariant constraint, the following must be true:
2294+
**
2295+
** (1) pExpr cannot refer to any table other than pSrc->iCursor.
2296+
**
2297+
** (2) pExpr cannot use subqueries or non-deterministic functions.
2298+
**
2299+
** (*) ** Not applicable to this branch **
2300+
**
2301+
** (4) If pSrc is the right operand of a LEFT JOIN, then...
2302+
** (4a) pExpr must come from an ON clause..
2303+
** (4b) and specifically the ON clause associated with the LEFT JOIN.
2304+
**
2305+
** (5) If pSrc is not the right operand of a LEFT JOIN or the left
2306+
** operand of a RIGHT JOIN, then pExpr must be from the WHERE
2307+
** clause, not an ON clause.
2308+
*/
2309+
int sqlite3ExprIsTableConstraint(Expr *pExpr, const SrcItem *pSrc){
2310+
if( pSrc->fg.jointype & JT_LEFT ){
2311+
if( !ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (4a) */
2312+
if( pExpr->w.iRightJoinTable!=pSrc->iCursor ) return 0; /* rule (4b) */
2313+
}else{
2314+
if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (5) */
2315+
}
2316+
return sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor); /* rules (1), (2) */
2317+
}
2318+
22872319

22882320
/*
22892321
** sqlite3WalkExpr() callback used by sqlite3ExprIsConstantOrGroupBy().

src/json.c

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,14 +1119,15 @@ static JsonNode *jsonLookupStep(
11191119
*pzErr = zPath;
11201120
return 0;
11211121
}
1122+
testcase( nKey==0 );
11221123
}else{
11231124
zKey = zPath;
11241125
for(i=0; zPath[i] && zPath[i]!='.' && zPath[i]!='['; i++){}
11251126
nKey = i;
1126-
}
1127-
if( nKey==0 ){
1128-
*pzErr = zPath;
1129-
return 0;
1127+
if( nKey==0 ){
1128+
*pzErr = zPath;
1129+
return 0;
1130+
}
11301131
}
11311132
j = 1;
11321133
for(;;){
@@ -2274,6 +2275,33 @@ static int jsonEachNext(sqlite3_vtab_cursor *cur){
22742275
return SQLITE_OK;
22752276
}
22762277

2278+
/* Append an object label to the JSON Path being constructed
2279+
** in pStr.
2280+
*/
2281+
static void jsonAppendObjectPathElement(
2282+
JsonString *pStr,
2283+
JsonNode *pNode
2284+
){
2285+
int jj, nn;
2286+
const char *z;
2287+
assert( pNode->eType==JSON_STRING );
2288+
assert( pNode->jnFlags & JNODE_LABEL );
2289+
assert( pNode->eU==1 );
2290+
z = pNode->u.zJContent;
2291+
nn = pNode->n;
2292+
assert( nn>=2 );
2293+
assert( z[0]=='"' );
2294+
assert( z[nn-1]=='"' );
2295+
if( nn>2 && sqlite3Isalpha(z[1]) ){
2296+
for(jj=2; jj<nn-1 && sqlite3Isalnum(z[jj]); jj++){}
2297+
if( jj==nn-1 ){
2298+
z++;
2299+
nn -= 2;
2300+
}
2301+
}
2302+
jsonPrintf(nn+2, pStr, ".%.*s", nn, z);
2303+
}
2304+
22772305
/* Append the name of the path for element i to pStr
22782306
*/
22792307
static void jsonEachComputePath(
@@ -2298,10 +2326,7 @@ static void jsonEachComputePath(
22982326
}else{
22992327
assert( pUp->eType==JSON_OBJECT );
23002328
if( (pNode->jnFlags & JNODE_LABEL)==0 ) pNode--;
2301-
assert( pNode->eType==JSON_STRING );
2302-
assert( pNode->jnFlags & JNODE_LABEL );
2303-
assert( pNode->eU==1 );
2304-
jsonPrintf(pNode->n+1, pStr, ".%.*s", pNode->n-2, pNode->u.zJContent+1);
2329+
jsonAppendObjectPathElement(pStr, pNode);
23052330
}
23062331
}
23072332

@@ -2372,8 +2397,7 @@ static int jsonEachColumn(
23722397
if( p->eType==JSON_ARRAY ){
23732398
jsonPrintf(30, &x, "[%d]", p->iRowid);
23742399
}else if( p->eType==JSON_OBJECT ){
2375-
assert( pThis->eU==1 );
2376-
jsonPrintf(pThis->n, &x, ".%.*s", pThis->n-2, pThis->u.zJContent+1);
2400+
jsonAppendObjectPathElement(&x, pThis);
23772401
}
23782402
}
23792403
jsonResult(&x);

src/malloc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,9 @@ char *sqlite3DbSpanDup(sqlite3 *db, const char *zStart, const char *zEnd){
750750
** Free any prior content in *pz and replace it with a copy of zNew.
751751
*/
752752
void sqlite3SetString(char **pz, sqlite3 *db, const char *zNew){
753+
char *z = sqlite3DbStrDup(db, zNew);
753754
sqlite3DbFree(db, *pz);
754-
*pz = sqlite3DbStrDup(db, zNew);
755+
*pz = z;
755756
}
756757

757758
/*

0 commit comments

Comments
 (0)