sqlite3 icon indicating copy to clipboard operation
sqlite3 copied to clipboard

Error: no such table: fsdir

Open 7flash opened this issue 6 months ago • 3 comments

Jan05-2039.ts

import { Database } from "https://deno.land/x/sqlite3/mod.ts";

const db = new Database(":memory:");

const sqlQuery = Deno.args[0];

const stmt = db.prepare(sqlQuery);
const result = stmt.all();

for (const row of result) {
  console.log(row);
}

Execute sql

deno run --unstable -A ./Jan05-2039.ts "
select
  name as file,
  lines.rowid as line_number,
  line
from fsdir('.')
join lines_read(name) as lines
where name like '%.txt';
"

Gives an error

error: Uncaught (in promise) Error: no such table: fsdir
    throw new Error(Deno.UnsafePointerView.getCString(sqlite3_errmsg(db)!));
          ^

7flash avatar Jan 05 '24 15:01 7flash

I don't think this vtable is available by default in SQLite3. You will have to load up an extension. Ref: https://sqlite.org/src/doc/tip/ext/misc/fileio.c

DjDeveloperr avatar Jan 08 '24 20:01 DjDeveloperr

I don't think this vtable is available by default in SQLite3. You will have to load up an extension. Ref: https://sqlite.org/src/doc/tip/ext/misc/fileio.c

Usually I'm loading extensions like this

import * as sqlite_vss from "https://deno.land/x/sqlite_vss/mod.ts";

const db = new Database("headlines.db");

db.enableLoadExtension = true;

db.loadExtension('./lines0');

Given lines0.dylib downloaded from https://github.com/asg017/sqlite-lines/releases to the same folder


Where can I find fileio.dylib ?

7flash avatar Jan 09 '24 05:01 7flash

I believe you have to compile it yourself, unless there are prebuilt binaries available elsewhere. fileio ext is in the sqlite source itself, and it's a single C file that you can compile to a dylib: https://sqlite.org/src/file/ext/misc/fileio.c - can check the sqlite docs for more instructions on how to compile.

DjDeveloperr avatar Apr 14 '24 17:04 DjDeveloperr