Skip to content

Commit 31c5aa5

Browse files
committed
sqlite: enable common flags
1 parent 1b5b019 commit 31c5aa5

File tree

3 files changed

+122
-11
lines changed

3 files changed

+122
-11
lines changed

deps/sqlite/sqlite.gyp

+6-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,14 @@
1515
'defines': [
1616
'SQLITE_DEFAULT_MEMSTATUS=0',
1717
'SQLITE_ENABLE_COLUMN_METADATA',
18+
'SQLITE_ENABLE_DBSTAT_VTAB',
19+
'SQLITE_ENABLE_FTS3',
20+
'SQLITE_ENABLE_FTS3_PARENTHESIS',
21+
'SQLITE_ENABLE_FTS5',
1822
'SQLITE_ENABLE_MATH_FUNCTIONS',
23+
'SQLITE_ENABLE_PREUPDATE_HOOK',
24+
'SQLITE_ENABLE_RTREE',
1925
'SQLITE_ENABLE_SESSION',
20-
'SQLITE_ENABLE_PREUPDATE_HOOK'
2126
],
2227
'include_dirs': ['.'],
2328
'sources': [

deps/sqlite/unofficial.gni

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ template("sqlite_gn_build") {
99
include_dirs = [ "." ]
1010
defines = [
1111
"SQLITE_ENABLE_COLUMN_METADATA",
12+
"SQLITE_ENABLE_DBSTAT_VTAB",
13+
"SQLITE_ENABLE_FTS3",
14+
"SQLITE_ENABLE_FTS3_PARENTHESIS",
15+
"SQLITE_ENABLE_FTS5",
1216
"SQLITE_ENABLE_MATH_FUNCTIONS",
13-
"SQLITE_ENABLE_SESSION",
1417
"SQLITE_ENABLE_PREUPDATE_HOOK",
18+
"SQLITE_ENABLE_RTREE",
19+
"SQLITE_ENABLE_SESSION",
1520
]
1621
}
1722

test/parallel/test-sqlite.js

+110-9
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,6 @@ test('PRAGMAs are supported', (t) => {
105105
);
106106
});
107107

108-
test('math functions are enabled', (t) => {
109-
const db = new DatabaseSync(':memory:');
110-
t.assert.deepStrictEqual(
111-
db.prepare('SELECT PI() AS pi').get(),
112-
{ __proto__: null, pi: 3.141592653589793 },
113-
);
114-
});
115-
116108
test('Buffer is supported as the database path', (t) => {
117109
const db = new DatabaseSync(Buffer.from(nextDb()));
118110
t.after(() => { db.close(); });
@@ -142,7 +134,6 @@ test('URL is supported as the database path', (t) => {
142134
);
143135
});
144136

145-
146137
suite('URI query params', () => {
147138
const baseDbPath = nextDb();
148139
const baseDb = new DatabaseSync(baseDbPath);
@@ -210,3 +201,113 @@ suite('URI query params', () => {
210201
});
211202
});
212203
});
204+
205+
suite('sqlite flags', () => {
206+
test('math functions are enabled', (t) => {
207+
const db = new DatabaseSync(':memory:');
208+
t.assert.deepStrictEqual(
209+
db.prepare('SELECT PI() AS pi').get(),
210+
{ __proto__: null, pi: 3.141592653589793 },
211+
);
212+
});
213+
214+
test('dbstat is enabled', (t) => {
215+
const db = new DatabaseSync(nextDb());
216+
t.after(() => { db.close(); });
217+
db.exec(`
218+
CREATE TABLE t1 (key INTEGER PRIMARY KEY);
219+
`);
220+
221+
t.assert.deepStrictEqual(
222+
db.prepare('SELECT * FROM dbstat WHERE name = \'t1\'').get(),
223+
{
224+
__proto__: null,
225+
mx_payload: 0,
226+
name: 't1',
227+
ncell: 0,
228+
pageno: 2,
229+
pagetype: 'leaf',
230+
path: '/',
231+
payload: 0,
232+
pgoffset: 4096,
233+
pgsize: 4096,
234+
unused: 4088
235+
},
236+
);
237+
});
238+
239+
test('fst3 is enabled', (t) => {
240+
const db = new DatabaseSync(':memory:');
241+
db.exec(`
242+
CREATE VIRTUAL TABLE t1 USING fts3(content TEXT);
243+
INSERT INTO t1 (content) VALUES ('hello world');
244+
`);
245+
246+
t.assert.deepStrictEqual(
247+
db.prepare('SELECT * FROM t1 WHERE t1 MATCH \'hello\'').all(),
248+
[
249+
{ __proto__: null, content: 'hello world' },
250+
],
251+
);
252+
});
253+
254+
test('fst3 parenthesis', (t) => {
255+
const db = new DatabaseSync(':memory:');
256+
db.exec(`
257+
CREATE VIRTUAL TABLE t1 USING fts3(content TEXT);
258+
INSERT INTO t1 (content) VALUES ('hello world');
259+
`);
260+
261+
t.assert.deepStrictEqual(
262+
db.prepare('SELECT * FROM t1 WHERE content MATCH \'(groupedterm1 OR groupedterm2) OR hello world\'').all(),
263+
[
264+
{ __proto__: null, content: 'hello world' },
265+
],
266+
);
267+
});
268+
269+
test('fst4 is enabled', (t) => {
270+
const db = new DatabaseSync(':memory:');
271+
db.exec(`
272+
CREATE VIRTUAL TABLE t1 USING fts4(content TEXT);
273+
INSERT INTO t1 (content) VALUES ('hello world');
274+
`);
275+
276+
t.assert.deepStrictEqual(
277+
db.prepare('SELECT * FROM t1 WHERE t1 MATCH \'hello\'').all(),
278+
[
279+
{ __proto__: null, content: 'hello world' },
280+
],
281+
);
282+
});
283+
284+
test('fst5 is enabled', (t) => {
285+
const db = new DatabaseSync(':memory:');
286+
db.exec(`
287+
CREATE VIRTUAL TABLE t1 USING fts5(content);
288+
INSERT INTO t1 (content) VALUES ('hello world');
289+
`);
290+
291+
t.assert.deepStrictEqual(
292+
db.prepare('SELECT * FROM t1 WHERE t1 MATCH \'hello\'').all(),
293+
[
294+
{ __proto__: null, content: 'hello world' },
295+
],
296+
);
297+
});
298+
299+
test('rtree is enabled', (t) => {
300+
const db = new DatabaseSync(':memory:');
301+
db.exec(`
302+
CREATE VIRTUAL TABLE t1 USING rtree(id, minX, maxX, minY, maxY);
303+
INSERT INTO t1 (id, minX, maxX, minY, maxY) VALUES (1, 0, 1, 0, 1);
304+
`);
305+
306+
t.assert.deepStrictEqual(
307+
db.prepare('SELECT * FROM t1 WHERE minX < 0.5').all(),
308+
[
309+
{ __proto__: null, id: 1, minX: 0, maxX: 1, minY: 0, maxY: 1 },
310+
],
311+
);
312+
});
313+
});

0 commit comments

Comments
 (0)