Giter Site home page Giter Site logo

duckdb-saneql's Introduction

DuckDB SaneQL Plugin

Allows you to type saneql directly into a duckdb shell.

Building

Build steps

Now to build the extension, run:

make

alternatively, pass extra cmake flags like this:

CMAKE_FLAGS="-DCMAKE_CXX_COMPILER=g++" make

The main binaries that will be built are:

./build/release/duckdb
./build/release/test/unittest
./build/release/extension/saneql/saneql.duckdb_extension
  • duckdb is the binary for the duckdb shell with the extension code automatically loaded.
  • unittest is the test runner of duckdb. Again, the extension is already linked into the binary.
  • saneql.duckdb_extension is the loadable binary as it would be distributed.

Running the extension

To run the extension code, simply start the shell with ./build/release/duckdb.

Now we can use saneql directly in DuckDB:

D create table foo(a int);              -- regular sql
D insert into foo values (1), (2), (3); -- regular sql
D foo.filter(a >= 2)                    -- saneql
┌───────┐
│   a   │
│ int32 │
├───────┤
│     2 │
│     3 │
└───────┘

For a full list of saneql operations, see the saneql repo, or checkout the saneql TPC-H queries.

Running the tests

Different tests can be created for DuckDB extensions. The primary way of testing DuckDB extensions should be the SQL tests in ./test/sql. These SQL tests can be run using:

make test

Loading in an existing duckdb binary

To install load the extension into a duckdb instance that doesn't have it, you will need to do two things. Firstly, DuckDB should be launched with the allow_unsigned_extensions option set to true. How to set this will depend on the client you're using. Some examples:

CLI:

duckdb -unsigned

Python:

con = duckdb.connect(':memory:', config={'allow_unsigned_extensions' : 'true'})

NodeJS:

db = new duckdb.Database(':memory:', {"allow_unsigned_extensions": "true"});

After running these steps, you can install and load your extension using the regular LOAD command in DuckDB:

LOAD '/path/to/saneql.duckdb_extension'

Always load on the command line

To always load this plugin into a duckdb instance other than the one built by this repo, create a shell alias:

alias duckdb='duckdb -unsigned -cmd "LOAD '\''/path/to/saneql.duckdb_extension\''"'

Links

You should also check out PRQL as an SQL alternative. Thanks to the duckdb prql repo, which served as an example of how to put another language into duckdb.

duckdb-saneql's People

Contributors

maxi-k avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.