Skip to content

How to load vfs extensions in Microsoft.Data.Sqlite? #27986

@voltagex

Description

@voltagex

I am trying to load https://github.com/voltagex-forks/sqlite_zstd_vfs (which is https://github.com/mlin/sqlite_zstd_vfs made to build on Windows). The extension appears to load, but the vfs is not found.

The vfs requires particular URI parameters to be configured, see https://github.com/mlin/sqlite_zstd_vfs#performance

I cannot find any examples of loading or using a VFS extension with Microsoft.Data.Sqlite.

            SqliteConnection conn = new SqliteConnection("Data Source=:memory:");
            conn.EnableExtensions(true);
            conn.LoadExtension(@".\lib\zstd_vfs.dll", "sqlite3_zstdvfs_init");
            conn.ConnectionString = "Data Source=file:test2.db?vfs=zstd&outer_unsafe=true";
            conn.Open();

throws

Microsoft.Data.Sqlite.SqliteException
  HResult=0x80004005
  Message=SQLite Error 1: 'no such vfs: zstd'.
  Source=Microsoft.Data.Sqlite
  StackTrace:
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteConnectionInternal..ctor(SqliteConnectionStringBuilder connectionOptions, SqliteConnectionPool pool)
   at Microsoft.Data.Sqlite.SqliteConnectionPool.GetConnection()
   at Microsoft.Data.Sqlite.SqliteConnectionFactory.GetConnection(SqliteConnection outerConnection)
   at Microsoft.Data.Sqlite.SqliteConnection.Open()
   at Test.Program.Main(String[] args) in C:\git\test\Program.cs:line 17

Include version information

Microsoft.Data.Sqlite version: 6.0.4
Target framework: NET 6
Operating system: Windows 10 21H2

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions