Search code examples
sqlsqliteaggregateaggregate-functionsstandard-deviation

How to load extensions into SQLite?


I need a standard deviation function in SQLite. I have found one here:

http://www.sqlite.org/contrib?orderby=date

but its part of an extension file to SQLite. I've never installed one of these before and I don't know how to. I found this existing function, load_extension, at http://www.sqlite.org/lang_corefunc.html, but I don't understand what the parameters X and Y are.

Basically, I need someone to give me a step by step guide on how to install the aggregate extension file. Can anyone do this?


Solution

  • SQLite extensions are libraries with dynamic linkage. You can find some examples here (This is a repository, click on “login/fill captcha” to enable hyperlinks). See for example md5.c.

    • load_extension must be enabled in SQLite (pragma IIRC)
    • it requires as first argument the path of the library
    • The second argument is the name of the entry point function (in md5.c it is sqlite3_extension_init). Its prototype must be int(sqlite3*, char **, const sqlite3_api_routines *).
    • In SQL you can try SELECT load_extension('md5.so', 'sqlite3_extension_init'); or simply SELECT load_extension('md5.so');

    You can try to compile md5.c, and from the sqlite shell use .load md5.so