aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/tester1.c-pp.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/wasm/tester1.c-pp.js')
-rw-r--r--ext/wasm/tester1.c-pp.js67
1 files changed, 53 insertions, 14 deletions
diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js
index c32c4e5e8..7013f3cea 100644
--- a/ext/wasm/tester1.c-pp.js
+++ b/ext/wasm/tester1.c-pp.js
@@ -1553,9 +1553,9 @@ self.sqlite3InitModule = sqlite3InitModule;
pDb, "CREATE TABLE ignored(a,b)"
);
if(0===rc){
- const t = vth.vtab2js();
+ const t = vth.xWrapVtab();
wasm.setPtrValue(ppVtab, t.pointer);
- T.assert(t === vth.vtab2js(wasm.getPtrValue(ppVtab)));
+ T.assert(t === vth.xWrapVtab(wasm.getPtrValue(ppVtab)));
}
return rc;
}catch(e){
@@ -1567,7 +1567,7 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xDisconnect: function(pVtab){
try {
- const t = vth.vtab2js(pVtab, true);
+ const t = vth.xWrapVtab(pVtab, true);
t.dispose();
return 0;
}catch(e){
@@ -1576,7 +1576,7 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xOpen: function(pVtab, ppCursor){
try{
- const t = vth.vtab2js(pVtab), c = vth.vcur2js();
+ const t = vth.xWrapVtab(pVtab), c = vth.xWrapCursor();
T.assert(t instanceof capi.sqlite3_vtab);
T.assert(c instanceof capi.sqlite3_vtab_cursor);
wasm.setPtrValue(ppCursor, c.pointer);
@@ -1588,9 +1588,9 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xClose: function(pCursor){
try{
- const c = vth.vcur2js(pCursor,true);
+ const c = vth.xWrapCursor(pCursor,true);
T.assert(c instanceof capi.sqlite3_vtab_cursor)
- .assert(!vth.vcur2js(pCursor));
+ .assert(!vth.xWrapCursor(pCursor));
c.dispose();
return 0;
}catch(e){
@@ -1599,7 +1599,7 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xNext: function(pCursor){
try{
- const c = vth.vcur2js(pCursor);
+ const c = vth.xWrapCursor(pCursor);
++c._rowId;
return 0;
}catch(e){
@@ -1609,7 +1609,7 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xColumn: function(pCursor, pCtx, iCol){
try{
- const c = vth.vcur2js(pCursor);
+ const c = vth.xWrapCursor(pCursor);
switch(iCol){
case tmplCols.A:
capi.sqlite3_result_int(pCtx, 1000 + c._rowId);
@@ -1626,7 +1626,7 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xRowid: function(pCursor, ppRowid64){
try{
- const c = vth.vcur2js(pCursor);
+ const c = vth.xWrapCursor(pCursor);
vth.setRowId(ppRowid64, c._rowId);
return 0;
}catch(e){
@@ -1634,14 +1634,17 @@ self.sqlite3InitModule = sqlite3InitModule;
}
},
xEof: function(pCursor){
- const c = vth.vcur2js(pCursor);
+ const c = vth.xWrapCursor(pCursor);
return c._rowId>=10;
},
xFilter: function(pCursor, idxNum, idxCStr,
argc, argv/* [sqlite3_value* ...] */){
try{
- const c = vth.vcur2js(pCursor);
+ const c = vth.xWrapCursor(pCursor);
c._rowId = 0;
+ const list = vth.sqlite3ValuesToJs(argc, argv);
+ T.assert(argc === list.length);
+ //log(argc,"xFilter value(s):",list);
return 0;
}catch(e){
return vth.xMethodError('xFilter',e);
@@ -1649,10 +1652,44 @@ self.sqlite3InitModule = sqlite3InitModule;
},
xBestIndex: function(pVtab, pIdxInfo){
try{
- const t = vth.vtab2js(pVtab);
- const pii = new capi.sqlite3_index_info(pIdxInfo);
+ //const t = vth.xWrapVtab(pVtab);
+ const sii = capi.sqlite3_index_info;
+ const pii = new sii(pIdxInfo);
pii.$estimatedRows = 10;
pii.$estimatedCost = 10.0;
+ //log("xBestIndex $nConstraint =",pii.$nConstraint);
+ if(pii.$nConstraint>0){
+ // Validate nthConstraint() and nthConstraintUsage()
+ const max = pii.$nConstraint;
+ for(let i=0; i < max; ++i ){
+ let v = pii.nthConstraint(i,true);
+ T.assert(wasm.isPtr(v));
+ v = pii.nthConstraint(i);
+ T.assert(v instanceof sii.sqlite3_index_constraint)
+ .assert(v.pointer >= pii.$aConstraint);
+ v.dispose();
+ v = pii.nthConstraintUsage(i,true);
+ T.assert(wasm.isPtr(v));
+ v = pii.nthConstraintUsage(i);
+ T.assert(v instanceof sii.sqlite3_index_constraint_usage)
+ .assert(v.pointer >= pii.$aConstraintUsage);
+ v.$argvIndex = i;//just to get some values into xFilter
+ v.dispose();
+ }
+ }
+ //log("xBestIndex $nOrderBy =",pii.$nOrderBy);
+ if(pii.$nOrderBy>0){
+ // Validate nthOrderBy()
+ const max = pii.$nOrderBy;
+ for(let i=0; i < max; ++i ){
+ let v = pii.nthOrderBy(i,true);
+ T.assert(wasm.isPtr(v));
+ v = pii.nthOrderBy(i);
+ T.assert(v instanceof sii.sqlite3_index_orderby)
+ .assert(v.pointer >= pii.$aOrderBy);
+ v.dispose();
+ }
+ }
pii.dispose();
return 0;
}catch(e){
@@ -1692,7 +1729,9 @@ self.sqlite3InitModule = sqlite3InitModule;
this.db.checkRc(rc);
const list = this.db.selectArrays(
- "SELECT a,b FROM testvtab order by a"
+ "SELECT a,b FROM testvtab where a<9999 and b>1 order by a, b"
+ /* Query is shaped so that it will ensure that some constraints
+ end up in xBestIndex(). */
);
T.assert(10===list.length)
.assert(1000===list[0][0])