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

Merge the latest branch-3.54 fixes into trunk

FossilOrigin-Name: b3606f7019b2a2dc77d9e476055156631d07c33dfef2d8bc0fdd75b13fad54fd
This commit is contained in:
drh
2026-10-20 00:17:35 +00:00
15 changed files with 181 additions and 45 deletions

View File

@@ -241,7 +241,8 @@ inject ANSI cursor movement sequences to hide nefarious values.
The QRF_ESC_Auto value for eEsc means that the query result formatter
gets to pick whichever control-character encoding it thinks is best for
the situation. This will usually be QRF_ESC_Ascii.
the situation. This will usually be QRF_ESC_Ascii, but there can be
exceptions.
The TAB (U+0009), LF (U+000a) and CR-LF (U+000d,U+000a) character
sequence are always output literally and are not mapped to alternative

View File

@@ -2992,7 +2992,11 @@ qrf_reinit:
}
}
if( p->spec.eEsc==QRF_Auto ){
p->spec.eEsc = QRF_ESC_Ascii;
if( p->spec.eText==QRF_TEXT_Csv ){
p->spec.eEsc = QRF_ESC_Off;
}else{
p->spec.eEsc = QRF_ESC_Ascii;
}
}
if( p->spec.eText==QRF_Auto ){
p->spec.eText = QRF_TEXT_Plain;

View File

@@ -217,7 +217,7 @@ do_faultsim_test 2.4 -faults oom* -prep {
set {} {}
} -test {
catch { R delete }
faultsim_test_result {0 {}} {1 SQLITE_NOMEM}
faultsim_test_result_strict {0 {}} {1 SQLITE_NOMEM}
}
do_faultsim_test 2.5 -faults oom* -prep {
catch {db2 close}

View File

@@ -54,8 +54,55 @@ do_test 2.0 {
} {1 SQLITE_ERROR}
do_test 2.1 {
set I2 [R rebase $I]
list [catch { set I2 [R rebase $I] } msg] $msg
} {1 SQLITE_CORRUPT}
do_test 2.2 {
R delete
} {}
#-------------------------------------------------------------------------
#
reset_db
proc get_changeset {sql} {
execsql BEGIN
set cs [changeset_from_sql $sql]
execsql ROLLBACK
return $cs
}
proc xConflict {args} {
set res [lindex $::lConflict 0]
set ::lConflict [lrange $::lConflict 1 end]
return $res
}
proc rebased {blobs cs} {
sqlite3rebaser_create R
foreach b $blobs { R configure $b }
set out [R rebase $cs]
R delete
changeset_to_list $out
}
do_execsql_test 3.0 {
CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
INSERT INTO t1 VALUES(1, 'x');
}
set c_peer1 [get_changeset {DELETE FROM t1 WHERE a=1}]
set c_peer2 [get_changeset {UPDATE t1 SET b='peer2' WHERE a=1}]
set c_local [changeset_from_sql {UPDATE t1 SET b='local' WHERE a=1}]
set ::lConflict REPLACE
set b1 [sqlite3changeset_apply_v2 db $c_peer1 xConflict]
set ::lConflict OMIT
set b2 [sqlite3changeset_apply_v2 db $c_peer2 xConflict]
do_test 3.1 { rebased [list $b1] $c_local } {}
do_test 3.2 { rebased [list $b2 $b1] $c_local } {}
do_test 3.3 { rebased [list $b1 $b2] $c_local } {}
finish_test

View File

@@ -6214,7 +6214,7 @@ static int sessionChangeMerge(
}
}else if( bRebase ){
if( pExist->op==SQLITE_DELETE && pExist->bIndirect ){
*ppNew = pExist;
pNew = pExist;
}else{
sqlite3_int64 nByte = nRec + pExist->nRecord + sizeof(SessionChange);
pNew = (SessionChange*)sqlite3_malloc64(nByte);
@@ -7223,6 +7223,7 @@ static int sessionRebase(
}
}
sqlite3_free(sOut.aBuf);
if( rc==SQLITE_OK ) rc = pIter->rc;
return rc;
}

View File

@@ -13,6 +13,8 @@
typedef unsigned char u8;
#endif
#include "sqliteInt.h"
extern const char *sqlite3ErrName(int);
typedef struct TestSession TestSession;
@@ -102,7 +104,9 @@ int sql_exec_changeset(
static int sqlite3_test_changeset(int, void *, char **);
static void assert_changeset_is_ok(int n, void *p){
char *z = 0;
sqlite3BeginBenignMalloc();
(void)sqlite3_test_changeset(n, p, &z);
sqlite3EndBenignMalloc();
assert( z==0 );
}
#else

View File

@@ -1096,7 +1096,6 @@ emcc.flags.fiddle = \
-sENVIRONMENT=web,worker \
-sMODULARIZE \
-sDYNAMIC_EXECUTION=0 \
-sWASM_BIGINT=$(emcc.WASM_BIGINT) \
-sEXPORT_NAME=$(sqlite3.js.init-func) \
-Wno-limited-postlink-optimizations \
$(emcc.exportedRuntimeMethods),FS \
@@ -1312,7 +1311,6 @@ emcc.speedtest1.common += -sALLOW_TABLE_GROWTH
emcc.speedtest1.common += -sDYNAMIC_EXECUTION=0
emcc.speedtest1.common += --minify 0
emcc.speedtest1.common += -sEXPORT_NAME=$(sqlite3.js.init-func)
emcc.speedtest1.common += -sWASM_BIGINT=$(emcc.WASM_BIGINT)
speedtest1.exit-runtime0 = -sEXIT_RUNTIME=0
speedtest1.exit-runtime1 = -sEXIT_RUNTIME=1
# Re -sEXIT_RUNTIME=1 vs 0: if it's 1 and speedtest1 crashes, we get

View File

@@ -1605,8 +1605,8 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
return __bindText(pStmt, iCol, text, nText, xDestroy);
}else if(text instanceof ArrayBuffer){
text = new Uint8Array(text);
}else if(Array.isArray(pMem)){
text = pMem.join('');
}else if(Array.isArray(text)){
text = text.join('');
}
let p, n;
try{
@@ -1614,7 +1614,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
p = wasm.allocFromTypedArray(text);
n = text.byteLength;
}else if('string'===typeof text){
[p, n] = wasm.allocCString(text);
[p, n] = wasm.allocCString(text, true);
}else{
return util.sqlite3__wasm_db_error(
capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE,
@@ -1648,7 +1648,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
p = wasm.allocFromTypedArray(pMem);
n = nMem>=0 ? nMem : pMem.byteLength;
}else if('string'===typeof pMem){
[p, n] = wasm.allocCString(pMem);
[p, n] = wasm.allocCString(pMem, true);
}else{
return util.sqlite3__wasm_db_error(
capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE,

View File

@@ -242,7 +242,7 @@ const BuildDefs oBuildDefs = {
.zDotWasm = 0,
.zCmppD = 0,
.zEmcc = 0,
.zEmccExtra = "$(emcc.MEMORY64) -sWASM_BIGINT=1",
.zEmccExtra = "$(emcc.MEMORY64)",
.zEnv = 0,
.zDeps = 0,
.zIfCond = 0,
@@ -270,7 +270,7 @@ const BuildDefs oBuildDefs = {
.zDotWasm = 0,
.zCmppD = "-Dtarget:es6-module",
.zEmcc = 0,
.zEmccExtra = "$(emcc.MEMORY64) -sWASM_BIGINT=1",
.zEmccExtra = "$(emcc.MEMORY64)",
.zEnv = 0,
.zDeps = 0,
.zIfCond = 0,
@@ -313,7 +313,7 @@ const BuildDefs oBuildDefs = {
.zEmcc =
"$(emcc.speedtest1)"
" $(emcc.speedtest1.common)"
" $(emcc.MEMORY64) -sWASM_BIGINT=1"
" $(emcc.MEMORY64)"
" $(pre-post.speedtest164.flags)"
" $(cflags.common)"
" -DSQLITE_SPEEDTEST1_WASM"
@@ -496,11 +496,15 @@ static void mk_prologue(void){
** Performance gains or losses are _not_ taken into account
** here, only wasm file size.
*/
#if 1
/* -Oz builds fail to build if we remove this block, for
as-yet-unknown reasons. */
"--enable-bulk-memory-opt " /* required */
"--all-features " /* required */
"--disable-compact-imports " /*
https://github.com/emscripten-core/emscripten/issues/28016
*/
#endif
"--post-emscripten " /* Saves roughly 12kb */
"--strip-debug " /* We already wasm-strip, but in
** case this environment has no
@@ -880,9 +884,8 @@ static void mk_lib_mode(const char *zBuildName, const BuildDef * pB){
/* althttpd will automatically try to execute wasm files
if they have the +x bit set. Why that bit is set
at all is a mystery. */);
pf("\t@$(call b.call.wasm-strip,%s)\n", zBuildName);
pf("\t@$(call b.do.wasm-opt,%s)\n", zBuildName);
pf("\t@$(call b.call.wasm-strip,%s)\n", zBuildName);
pf("\t@$(call b.strip-js-emcc-bindings,$(logtag.%s))\n", zBuildName);
pf("\t@if [ x1 = 'x$(base64.wasm)' ]; then \\\n"

View File

@@ -1604,9 +1604,8 @@ T.g('sqlite3.oo1')
////////////////////////////////////////////////////////////////////
.t('DB.Stmt', function(sqlite3){
let st = this.db.prepare(
new TextEncoder('utf-8').encode("select 3 as a")
);
this.textEncoder = new TextEncoder('utf-8');
let st = this.db.prepare( this.textEncoder.encode("select 3 as a") );
let rc;
try {
T.assert(wasm.isPtr(st.pointer))
@@ -1701,6 +1700,71 @@ T.g('sqlite3.oo1')
});
})
////////////////////////////////////////////////////////////////////////
.t('sqlite3_bind_text/blob() with JS values', function(){
/* Derived from [bugs:bbb715c3f2a0e989]. */
const q = this.db.prepare("select ?1, typeof(?1), octet_length(?1)");
const enc = this.textEncoder, denc = new TextDecoder('utf-8');
const BindText = capi.sqlite3_bind_text, BindBlob = capi.sqlite3_bind_blob;
/* Bind value v of length n to q using binding function f(), step
it, fetch it, reset it, and return the fetched row. */
const bindAndGet = (f, v, n)=>{
const rc = f(q, 1, v, n, capi.SQLITE_WASM_DEALLOC);
q.step();
const rv = q.get([]);
T.assert( 3===rv.length );
rv.unshift(rc);
q.reset(true);
return rv;
};
/* Pass (v,n) through sqlite3_bind_text() and affirm that
expect === column 0 of the result. */
const checkText = (v, n, expect)=>{
const [rc, val, type, len] = bindAndGet(BindText, v, n);
T.assert(0===rc)
.assert(expect===val)
.assert('text'===type)
.assert(enc.encode(expect).byteLength===len);
};
/* Pass (v,n) through sqlite3_bind_blob() and affirm that
the resulting value has a length of expectLen. Returns
the resulting Uint8Array.*/
const checkBlob = (v, n, expectLen)=>{
const [rc, val, type, len] = bindAndGet(BindBlob, v, n);
T.assert(0===rc, "bind_blob rc", rc)
.assert('blob'===type)
.assert(expectLen===len)
.assert(val instanceof Uint8Array && expectLen===val.byteLength);
return val;
};
const checkBlobText = (v, n, expectLen, expectText)=>{
const rv = checkBlob(v, n, expectLen);
T.assert(denc.decode(rv)===expectText, "checkBlobText()", expectText);
}
try{
checkText("SQLite", -1, "SQLite");
checkText(["Früh","stück"], -1, "Frühstück");
checkText("", -1, "");
checkText(enc.encode("SQLite"), -1, "SQLite");
const xenc = enc.encode("a string");
checkText(new Int8Array(xenc), -1, "a string");
checkText(xenc.buffer, -1, "a string");
checkBlobText("SQLite", -1, 6, "SQLite");
checkBlobText("SQLite", 2, 6, "SQLite");
checkBlob("", -1, 0);
checkBlobText(["SQL", "i", "te"], -1, 6, "SQLite");
T.assert("SQL"===denc.decode(checkBlob(enc.encode("SQLite"), 3, 3)));
T.assert(capi.SQLITE_MISUSE===bindAndGet(
BindBlob, {}, -1
)[0]);
T.assert(capi.SQLITE_MISUSE===bindAndGet(
BindText, {}, -1
)[0]);
}finally{
q.finalize();
}
})/*sqlite3_bind_text/blob()*/
////////////////////////////////////////////////////////////////////////
.t('sqlite3_js_...()', function(){
const db = this.db;

View File

@@ -1,5 +1,5 @@
C Fix\san\sadverse\sinteraction\sbetween\striggers\schanging\sa\stable\sthat\suses\nON\sDELETE\sSET\sNULL\sconstraints\sand\sthe\soptimization\sat\s[8c5dd6cc259e0cda],\nalmost\s12\syears\sago.\n[bugs:/info/2026-10-19T06:36:47Z|Bug\s2026-10-19T06:36:47Z].
D 2026-10-20T00:14:02.927
C Merge\sthe\slatest\sbranch-3.54\sfixes\sinto\strunk
D 2026-10-20T00:17:35.624
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -425,9 +425,9 @@ F ext/misc/wholenumber.c e41953e078894e66a0ff05dd6c76a61f904828c9a4620c7255fac26
F ext/misc/windirent.h 02211ce51f3034c675f2dbf4d228194d51b3ee05734678bad5106fff6292e60c
F ext/misc/zipfile.c 54bd61f1d80a170dde6c15e6eee790ff89a0acbe3bf57e9d63eba6e3414a6a0c
F ext/misc/zorder.c bddff2e1b9661a90c95c2a9a9c7ecd8908afab5763256294dd12d609d4664eee
F ext/qrf/README.md c5c47a8b82ee870557ec9c6734bf93c296ae4821d33cf60253b36f2fcee09601
F ext/qrf/README.md 394a70c5cda1d0f57c82434751b0174a594b1c8800c8584fad6091e867cd5a90
F ext/qrf/dev-notes.md e68a6d91ce4c7eb296ef2daadc2bb79c95c317ad15b9fafe40850c67b29c2430
F ext/qrf/qrf.c 13d6c899814afe61fb0213be3bdcd23732251e185c820d80fee12badb89a4f43
F ext/qrf/qrf.c 61b756cad31024165f3980f98f1b3a131e02eb8a6dfc53e85b6c488a7b6f5fc9
F ext/qrf/qrf.h b04e50048695aa4a5a41577fb4a56c1feed0bef816354995713116780a4bdacb
F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8
F ext/rbu/rbu1.test 25870dd7db7eb5597e2b4d6e29e7a7e095abf332660f67d89959552ce8f8f255
@@ -570,7 +570,7 @@ F ext/session/sessionconflict2.test dcaa9979a71d47ff524d01757d137a66cd1dee8faaf9
F ext/session/sessioncorrupt.test e4e4c346415b09f3354a1ade13d25cf08bb073beb750ebaea9fc6d6313f857d9 x
F ext/session/sessiondiff.test e89f7aedcdd89e5ebac3a455224eb553a171e9586fc3e1e6a7b3388d2648ba8d
F ext/session/sessionfault.test c2b43d01213b389a3f518e90775fca2120812ba51e50444c4066962263e45c11
F ext/session/sessionfault2.test b0d6a7c1d7398a7e800d84657404909c7d385965ea8576dc79ed344c46fbf41c
F ext/session/sessionfault2.test 0c050779bc8daa21d1b9233dfd36b84716d51fad750b7b460cee12e21eb3f59c
F ext/session/sessionfault3.test eb981a9f1165132d405952f593998e65ddd140805624906b799678588b385890
F ext/session/sessioninvert.test 7ccb7609a2c11e4e13e606df439bf3d484ba8e455d0bd3aa8d4828a940e1a242 x
F ext/session/sessionmem.test f2a735db84a3e9e19f571033b725b0b2daf847f3f28b1da55a0c1a4e74f1de09
@@ -578,14 +578,14 @@ F ext/session/sessionnoact.test 2cf060c12a7a23e663f0ec796561e58638c5c10a846653d3
F ext/session/sessionnoop.test a9366a36a95ef85f8a3687856ebef46983df399541174cb1ede2ee53b8011bc7
F ext/session/sessionnoop2.test 2d8146321785bdc7cee8966d984560184cfca83fd46da2ff81ea883d6e977b36
F ext/session/sessionrebase.test 702378bdcb5062f1106e74457beca8797d09c113a81768734a58b197b5b334e2
F ext/session/sessionrebase2.test b3c9ca8f40290d9bca97beec6f985d8e56fee80328ea639ee0a0104275a9b4a9
F ext/session/sessionrebase2.test 6946c5df7ab15f8cf792b36418da2777dca9781e0dac8296c674c3096ffed3b2
F ext/session/sessionrowid.test 85187c2f1b38861a5844868126f69f9ec62223a03449a98a80600a44396f7363
F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795
F ext/session/sessionstat1.test 5e718d5888c0c49bbb33a7a4f816366db85f59f6a4f97544a806421b85dc2dec
F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
F ext/session/sqlite3session.c 46c81df7e294663e2aa5bf720d7d3236600a7d1281c6befef45eb60a56de25ed
F ext/session/sqlite3session.c 26f68307d1d876493d94efceb4ae62a19802cdee7fb4d0d3b0bdb96986cfcc99
F ext/session/sqlite3session.h ca7c4422c1514a95056cc8d333217df6b1829d39058126b1de85d10cd62d7a9c
F ext/session/test_session.c f465f13c661919f8ba4485a9d0690c4df5bff1cc79e962cfdafa9ff376d5119f
F ext/session/test_session.c b30b1ecbb042d08f42406eb4fcfb2efef9609507e1b6b04b0a1ea4cb0a3cffe3
F ext/vec1/Makefile 791bd52e40d5b65026c63c8778dbdfc6d66083457ee50cf873d6483d98f43437
F ext/vec1/Makefile.msc 66fbdf78ebb987bdbe646e3b1c895fc8785e14c50666f6694b840a0cdd3b7f9e
F ext/vec1/test/vec1_common.tcl 72226d9ee7cea8ad331905b28496392e4771f7b7c9d2890575795eddefc19db3
@@ -648,7 +648,7 @@ F ext/vec1/tool/vec1bench.tcl a117caee3cb99712f0477fe2fa85c94c260866951d3a9d667b
F ext/vec1/tool/vec1bench_addcols.tcl 8c509253d07b179928f2ee32e3591a2c70d13c914217e1328c01afa148717051
F ext/vec1/tool/vec1bench_vibe2db.py 84ddb0236bc3d02a0393abce41986a1b7dad7f0d83884576f8318c2883e3aed3
F ext/vec1/vec1.c 7c930e6b5577622326dcf32569318f06d5f73fcc81912e43fb258f3ce396b00e
F ext/wasm/GNUmakefile 390cf98771f3c99e9e6a4a34c506d911f49016d7ed0d4913f78a41a63cda69f1
F ext/wasm/GNUmakefile b656d39f7792b6ff8d9129d38452804bccba29e1fe22976655cebb3e1e9f184b
F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a
F ext/wasm/README.md 6d820c98468ebcee1dbf547467a03f65d256a2be48a9dcbeb5637d3da569c6fe
F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff
@@ -665,7 +665,7 @@ F ext/wasm/api/opfs-common-shared.c-pp.js 51d86e01ec20438552d09d233dfad97e681364
F ext/wasm/api/post-js-footer.js a50c1a2c4d008aede7b2aa1f18891a7ee71437c2f415b8aeb3db237ddce2935b
F ext/wasm/api/post-js-header.js f35d2dcf1ab7f22a93d565f8e0b622a2934fc4e743edf3b708e4dd8140eeff55
F ext/wasm/api/pre-js.c-pp.js 145da76085bd31bbe9c9b2d52bc56106116745576699d03b8bd6eaaf78e1e537
F ext/wasm/api/sqlite3-api-glue.c-pp.js 0e41b7b571219eaf91a66d8cdbcbcab2b16db537046c0a35af8e0e48a72f99ca
F ext/wasm/api/sqlite3-api-glue.c-pp.js 15ac205ced4b55134de9f447fff285906072f4410bd5d1b1db8408d39b700c6b
F ext/wasm/api/sqlite3-api-oo1.c-pp.js d41c122250a213002adf294487156ed46f146760a4d904e13996dcc425d7c15e
F ext/wasm/api/sqlite3-api-prologue.js 0084e15d66fbcd75cacbaa58e3b473d5e57082c30f3122be7fdadff5589cf6b6
F ext/wasm/api/sqlite3-api-worker1.c-pp.js eee70a9962c02d86d2332f2432e257ccdf5eb7a742f90d34bdc137346fbc97ae
@@ -704,7 +704,7 @@ F ext/wasm/jaccwabyt/jaccwabyt.js 99039632cd8fa6f82acdb01e213850d2efe220388441fa
F ext/wasm/jaccwabyt/jaccwabyt.md 6aa90fa1a973d0ad10d077088bea163b241d8470c75eafdef87620a1de1dea41
F ext/wasm/libcmpp.c a5bec47a754206aac2ffb45ba4adaec6af3b4fcc24c705c61a6f47893b72aef5
F ext/wasm/mkdist.sh f8883b077a2ca47cf92e6f0ce305fbf72ca648c3501810125056c4b09c2d5554 x
F ext/wasm/mkwasmbuilds.c 0ec4b858fe04921d88de98216a65fd6d885eb98170e9c2d27a81cb2295eef811
F ext/wasm/mkwasmbuilds.c a012ba85adc4dea9cc6a6ed6ffb1d127ceda6bcc8e18cd0a118bf4d6e9049caa
F ext/wasm/module-symbols.html e54f42112e0aac2a31f850ab33e7f2630a2ea4f63496f484a12469a2501e07e2
F ext/wasm/scratchpad-wasmfs.html a3d7388f3c4b263676b58b526846e9d02dfcb4014ff29d3a5040935286af5b96
F ext/wasm/scratchpad-wasmfs.mjs 66034b9256b218de59248aad796760a1584c1dd842231505895eff00dbd57c63
@@ -719,7 +719,7 @@ F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f
F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555e685bce3da8c3f
F ext/wasm/tester1-worker.c-pp.html e81f5a74c045499262b47beaef39cd36963f67021c6575f920ee3f11d0501420
F ext/wasm/tester1.c-pp.html 69403505b2c0b6cd76c8a210e3a09e80a8eb84a47c3eae591ab0e81c3934af61
F ext/wasm/tester1.c-pp.js 84c86fbdd6b2867fae245e0c1fa87ab885f1feed018b48eeb1ba3a3ae18f755b
F ext/wasm/tester1.c-pp.js 06776391c86c17c57cebb6aabe7aac40c525461e309dc93179495da5c2856916
F ext/wasm/tests/opfs/concurrency/index.html 706eab6308343c04ac2360aba6001af4ffaf46d8f33a0ccd02c64d93e3216a43
F ext/wasm/tests/opfs/concurrency/test.js 6919778fceaac1b7cc78caf41d796f545d2c4433b31188aa9689f05b5ad28828
F ext/wasm/tests/opfs/concurrency/worker.js 704d82c5e287e47f612349e027765943a58ad967dcf178fb5a1c3a8eaafb09af
@@ -740,7 +740,7 @@ F mptest/multiwrite01.test dab5c5f8f9534971efce679152c5146da265222d
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 1b9c24374a85dfc7eb8fa7c4266ee0db4f9609cceecfc5481cd8307e5af04366
F sqlite3.pc.in e6dee284fba59ef500092fdc1843df3be8433323a3733c91da96690a50a5b398
F src/alter.c 1032f83df87e620e18662f085071bd33b8a4d5d1341575547ebb122c6b81a010
F src/alter.c 4df4a8dbaea089dbfd1c3530171edaaa0e9b5c59d7f735262f80347f5effdc87
F src/analyze.c 73162482c656187823217f4c00758c9ee13a420c8745bc542129e0279b792287
F src/attach.c 40a83de1c720dfb3552458ebf6c9dac7ed6b2fcde4e073658fd9a38d90cb329e
F src/auth.c b5ece4e1edccad082c0332fa0087df225473bae0feea9269f824312201377185
@@ -1500,7 +1500,7 @@ F test/mallocJ.test b5d1839da331d96223e5f458856f8ffe1366f62e
F test/mallocK.test 25897506da0098cea09b302ff432b0fb6d8002773c1e0fc9732aa8b444bfd455
F test/mallocL.test fb311ff80afddf3b1a75e52289081f4754d901dc
F test/mallocM.test 78bbe9d3da84a5c679123cdb40d7b2010b18fc46e13897e4f253c6ba6fbff134
F test/malloc_common.tcl 806c50379cf4fa65008cd4d5af18273e5dac8ab62d1d4316c76aa2ecd2e54018
F test/malloc_common.tcl e3731f2f42f660fc58648d9a715d928da5d0ead133d50dfeb2a43c128289dc2f
F test/malloctraceviewer.tcl 3e3ddf11e30d2b20f53aa16aa6615082fb24a100bea61cca7214c927b742eba6
F test/manydb.test 28385ae2087967aa05c38624cec7d96ec74feb3e
F test/mem5.test c6460fba403c5703141348cd90de1c294188c68f
@@ -1535,7 +1535,7 @@ F test/mmapcorrupt.test 470fb44fe92e99c1d23701d156f8c17865f5b027063c9119dcfdb842
F test/mmapfault.test d4c9eff9cd8c2dc14bc43e71e042f175b0a26fe3
F test/mmapleak.test 7542cafa4771abba531d072ea905f474a2875a153337a04f327f0a9319cdb72c
F test/mmapwarm.test 2272005969cd17a910077bd5082f70bc1fefad9a875afec7fc9af483898ecaf3
F test/modeA.sql 555cc4724b59fb9e437efbdbcf6b64cadf7f46d42d1dbb51b7dbf85bf2696403
F test/modeA.sql 8fc797edf0d04be08168302dcc509a075a6896a71c65b07a197cc46040a5843f
F test/multiplex.test d74c034e52805f6de8cc5432cef8c9eb774bb64ec29b83a22effc8ca4dac1f08
F test/multiplex2.test 580ca5817c7edbe4cc68fa150609c9473393003a
F test/multiplex3.test fac575e0b1b852025575a6a8357701d80933e98b5d2fe6d35ddaa68f92f6a1f7
@@ -2294,8 +2294,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P fd341a1952ded314e3b3d129c14552318246c0f187c63bea82a0f7bf8aec6759
R 7120feee1743f3e7210d0aff5ab60d0a
P 15424da529e827f3eca7d70b1c54b57f2e9e05ed866a872ea45fa538e8b72825 d45943cbaf35f21f72b78aafa88f72830343bfeb3a0198a3af0da063dcf6a707
R aecb776e642164957603f92bcf1cc00c
U drh
Z 648661a2562c4b8c375a0ac686e09793
Z 42c9e74b37b241a3bd771a8cfc9167b1
# Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
15424da529e827f3eca7d70b1c54b57f2e9e05ed866a872ea45fa538e8b72825
b3606f7019b2a2dc77d9e476055156631d07c33dfef2d8bc0fdd75b13fad54fd

View File

@@ -2387,12 +2387,12 @@ void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, const Token *pName){
if( i==pTab->iPKey ){
sqlite3VdbeAddOp2(v, OP_Null, 0, regOut);
}else{
char aff = pTab->aCol[i].affinity;
if( aff==SQLITE_AFF_REAL ){
pTab->aCol[i].affinity = SQLITE_AFF_NUMERIC;
}
sqlite3ExprCodeGetColumnOfTable(v, pTab, iCur, i, regOut);
pTab->aCol[i].affinity = aff;
assert( pParse->nErr
|| sqlite3VdbeGetOp(v,sqlite3VdbeCurrentAddr(v)-1)->opcode
!= OP_RealAffinity
|| pTab->aCol[i].affinity==SQLITE_AFF_REAL );
sqlite3VdbeDeletePriorOpcode(v, OP_RealAffinity);
}
nField++;
}

View File

@@ -193,7 +193,8 @@ proc oom_injectstart {nRepeat iFail} {
sqlite3_memdebug_fail [expr $iFail-1] -repeat $nRepeat
}
proc oom_injectstop {} {
sqlite3_memdebug_fail -1
set nFail [sqlite3_memdebug_fail -1 -benigncnt nBenign]
return [expr $nFail - $nBenign]
}
# The following procs are used as [do_one_faultsim_test] callbacks when
@@ -296,6 +297,16 @@ proc faultsim_test_result_int {args} {
error "nfail=$testnfail rc=$testrc result=$testresult list=$r"
}
}
proc faultsim_test_result_int_strict {args} {
upvar testrc testrc testresult testresult testnfail testnfail
set t [list $testrc $testresult]
set r $args
set idx [lsearch -exact $r $t]
if {($testnfail==0 && $idx!=0) || ($testnfail>0 && $idx<=0)} {
error "nfail=$testnfail rc=$testrc result=$testresult list=$r"
}
}
#--------------------------------------------------------------------------
# Usage do_one_faultsim_test NAME ?OPTIONS...?
@@ -348,6 +359,9 @@ proc do_one_faultsim_test {testname args} {
proc faultsim_test_result {args} "
uplevel faultsim_test_result_int \$args [list $O(-injecterrlist)]
"
proc faultsim_test_result_strict {args} "
uplevel faultsim_test_result_int_strict \$args [list $O(-injecterrlist)]
"
eval $O(-injectinstall)
eval $O(-install)

View File

@@ -281,7 +281,7 @@ SELECT * FROM t1;
.testcase 601
SELECT 'abc',char(0x05,0x18,0x33),'xyz';
.check --glob abc,"*3",xyz
.check --glob abc,"??3",xyz
.testcase 610
.mode csv -reset