mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Add a test for the (failure) case of client-level code calling the oo1.Stmt constructor directly.
FossilOrigin-Name: 6a37874db04f3b4842994ad17fc74cb6222f8ea0fa1315a23aff1ffa69bcd12a
This commit is contained in:
@ -337,7 +337,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
*/
|
*/
|
||||||
const Stmt = function(){
|
const Stmt = function(){
|
||||||
if(BindTypes!==arguments[2]){
|
if(BindTypes!==arguments[2]){
|
||||||
toss3("Do not call the Stmt constructor directly. Use DB.prepare().");
|
toss3(capi.SQLITE_MISUSE, "Do not call the Stmt constructor directly. Use DB.prepare().");
|
||||||
}
|
}
|
||||||
this.db = arguments[0];
|
this.db = arguments[0];
|
||||||
__ptrMap.set(this, arguments[1]);
|
__ptrMap.set(this, arguments[1]);
|
||||||
@ -887,10 +887,11 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
}
|
}
|
||||||
return arg.returnVal();
|
return arg.returnVal();
|
||||||
}/*exec()*/,
|
}/*exec()*/,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Creates a new scalar UDF (User-Defined Function) which is
|
Creates a new UDF (User-Defined Function) which is accessible
|
||||||
accessible via SQL code. This function may be called in any
|
via SQL code. This function may be called in any of the
|
||||||
of the following forms:
|
following forms:
|
||||||
|
|
||||||
- (name, function)
|
- (name, function)
|
||||||
- (name, function, optionsObject)
|
- (name, function, optionsObject)
|
||||||
@ -906,10 +907,12 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
functions. Creating an aggregate or window function requires
|
functions. Creating an aggregate or window function requires
|
||||||
the options-object form (see below for details).
|
the options-object form (see below for details).
|
||||||
|
|
||||||
UDFs cannot currently be removed from a DB handle after they're
|
UDFs can be removed as documented for
|
||||||
added. More correctly, they can be removed as documented for
|
sqlite3_create_function_v2() and
|
||||||
sqlite3_create_function_v2(), but doing so will "leak" the
|
sqlite3_create_window_function(), but doing so will "leak" the
|
||||||
JS-created WASM binding of those functions.
|
JS-created WASM binding of those functions (meaning that their
|
||||||
|
entries in the WASM indirect function table still
|
||||||
|
exist). Eliminating that potential leak is a pending TODO.
|
||||||
|
|
||||||
On success, returns this object. Throws on error.
|
On success, returns this object. Throws on error.
|
||||||
|
|
||||||
|
@ -1219,7 +1219,7 @@ self.sqlite3InitModule = sqlite3InitModule;
|
|||||||
})
|
})
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
.t('DB.Stmt', function(S){
|
.t('DB.Stmt', function(sqlite3){
|
||||||
let st = this.db.prepare(
|
let st = this.db.prepare(
|
||||||
new TextEncoder('utf-8').encode("select 3 as a")
|
new TextEncoder('utf-8').encode("select 3 as a")
|
||||||
);
|
);
|
||||||
@ -1274,6 +1274,12 @@ self.sqlite3InitModule = sqlite3InitModule;
|
|||||||
}
|
}
|
||||||
T.assert(!st.pointer)
|
T.assert(!st.pointer)
|
||||||
.assert(0===this.db.openStatementCount());
|
.assert(0===this.db.openStatementCount());
|
||||||
|
|
||||||
|
T.mustThrowMatching(()=>new sqlite3.oo1.Stmt("hi"), function(err){
|
||||||
|
return (err instanceof sqlite3.SQLite3Error)
|
||||||
|
&& capi.SQLITE_MISUSE === err.resultCode
|
||||||
|
&& 0 < err.message.indexOf("Do not call the Stmt constructor directly.")
|
||||||
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
|||||||
C oo1.DB.exec()\srowMode="$columnName":\sa\sminor\soptimization\sand\sa\spreemtive\sfix\sfor\sa\shypothetical\scorner-case\sbug.
|
C Add\sa\stest\sfor\sthe\s(failure)\scase\sof\sclient-level\scode\scalling\sthe\soo1.Stmt\sconstructor\sdirectly.
|
||||||
D 2022-12-24T11:16:49.554
|
D 2022-12-24T13:46:27.601
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@ -504,7 +504,7 @@ F ext/wasm/api/post-js-header.js 47b6b281f39ad59fa6e8b658308cd98ea292c286a68407b
|
|||||||
F ext/wasm/api/pre-js.c-pp.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
|
F ext/wasm/api/pre-js.c-pp.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
|
||||||
F ext/wasm/api/sqlite3-api-cleanup.js 680d5ccfff54459db136a49b2199d9f879c8405d9c99af1dda0cc5e7c29056f4
|
F ext/wasm/api/sqlite3-api-cleanup.js 680d5ccfff54459db136a49b2199d9f879c8405d9c99af1dda0cc5e7c29056f4
|
||||||
F ext/wasm/api/sqlite3-api-glue.js f0651048a2601bf79f7f39c2c855f6417e65548417f5019ac9ac2ffb2463f2b9
|
F ext/wasm/api/sqlite3-api-glue.js f0651048a2601bf79f7f39c2c855f6417e65548417f5019ac9ac2ffb2463f2b9
|
||||||
F ext/wasm/api/sqlite3-api-oo1.js 7ae49f6d9dcbc268d6fc9bce6bd070c72884d544bd0c6f12fa682d51027bf4d3
|
F ext/wasm/api/sqlite3-api-oo1.js 485f43129b25b939209effcec635e801bad75bf0a534c7ca327a7cd934744163
|
||||||
F ext/wasm/api/sqlite3-api-prologue.js 683956ea6ab5e0132db48bb693a6bb9dd92f36c8c0902af36572e9b29006ac6d
|
F ext/wasm/api/sqlite3-api-prologue.js 683956ea6ab5e0132db48bb693a6bb9dd92f36c8c0902af36572e9b29006ac6d
|
||||||
F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
|
F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
|
||||||
F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3
|
F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3
|
||||||
@ -555,7 +555,7 @@ F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555
|
|||||||
F ext/wasm/test-opfs-vfs.js f09266873e1a34d9bdb6d3981ec8c9e382f31f215c9fd2f9016d2394b8ae9b7b
|
F ext/wasm/test-opfs-vfs.js f09266873e1a34d9bdb6d3981ec8c9e382f31f215c9fd2f9016d2394b8ae9b7b
|
||||||
F ext/wasm/tester1-worker.html d43f3c131d88f10d00aff3e328fed13c858d674ea2ff1ff90225506137f85aa9
|
F ext/wasm/tester1-worker.html d43f3c131d88f10d00aff3e328fed13c858d674ea2ff1ff90225506137f85aa9
|
||||||
F ext/wasm/tester1.c-pp.html d34bef3d48e5cbc1c7c06882ad240fec49bf88f5f65696cc2c72c416933aa406
|
F ext/wasm/tester1.c-pp.html d34bef3d48e5cbc1c7c06882ad240fec49bf88f5f65696cc2c72c416933aa406
|
||||||
F ext/wasm/tester1.c-pp.js 99d6dc920d0c379c78053edb89a870666cfb9d4d4548b31c94427f9135a1c0a2
|
F ext/wasm/tester1.c-pp.js d395eb6aaf4de79bf2c027f7c4b5e4ae007ee1822d6e064e946d0305672a9761
|
||||||
F ext/wasm/tests/opfs/concurrency/index.html 86d8ac435074d1e7007b91105f4897f368c165e8cecb6a9aa3d81f5cf5dcbe70
|
F ext/wasm/tests/opfs/concurrency/index.html 86d8ac435074d1e7007b91105f4897f368c165e8cecb6a9aa3d81f5cf5dcbe70
|
||||||
F ext/wasm/tests/opfs/concurrency/test.js a98016113eaf71e81ddbf71655aa29b0fed9a8b79a3cdd3620d1658eb1cc9a5d
|
F ext/wasm/tests/opfs/concurrency/test.js a98016113eaf71e81ddbf71655aa29b0fed9a8b79a3cdd3620d1658eb1cc9a5d
|
||||||
F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
|
F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
|
||||||
@ -2067,8 +2067,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 33a58c8ece3b37a8edc3434af36643e2d489a53a672d778c5b77e66666045c30
|
P 0b2df22bd92914708ad0851d0401ad2cf3edb1968b88b2c07fe40792a731c5ba
|
||||||
R d15205afc8348e399a5e2c3665229d17
|
R 56f356985466274ad72950f0668d6b94
|
||||||
U stephan
|
U stephan
|
||||||
Z 3c00734fbb2a03c4e427540c406cdc55
|
Z bfd3bc98ed13225718cba2333de93b83
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
0b2df22bd92914708ad0851d0401ad2cf3edb1968b88b2c07fe40792a731c5ba
|
6a37874db04f3b4842994ad17fc74cb6222f8ea0fa1315a23aff1ffa69bcd12a
|
Reference in New Issue
Block a user