Skip to content

Releases: GlareDB/glaredb

v0.8.1

17 Jan 21:10
v0.8.1
690b74f
Compare
Choose a tag to compare

v0.8.1 is a point release of fixes and chores. Refer to the commits below for more detail.

Installing or Updating

CLI

To install or update just run the following command in the directory you want the binary:

curl https://glaredb.com/install.sh | sh

Python

pip install glaredb

Node.js

npm install @glaredb/glaredb

What's Changed

Full Changelog: v0.8.0...v0.8.1

v0.8.0

11 Jan 00:19
v0.8.0
2426bdb
Compare
Choose a tag to compare

Highlights

Cassandra Support

Cassandra is now supported as an external data source.

-- external table
CREATE EXTERNAL TABLE <table_name> FROM cassandra OPTIONS (
    host = '<host>',
    keyspace = '<keyspace>',
    table = '<table>'
);

-- external database
CREATE EXTERNAL DATABASE <db_name> FROM cassandra OPTIONS (
    host = '<host>',
);

-- table function
SELECT * FROM read_cassandra('<host>', '<keyspace>', '<table>')

Clickhouse Support

GlareDB now supports ClickHouse as an external data source. Learn more in our ClickHouse docs.

Table Functions

Initial FlightSQL Protocol Support

glaredb server now includes support for the experimental FlightSQL protocol.

Enable it with:

glaredb server --enable-flight-api

then use your favorite FlightSQL client to connect to the server.

Installing or Updating

CLI

To install or update just run the following command in the directory you want the binary:

curl https://glaredb.com/install.sh | sh

Python

pip install glaredb

Node.js

npm install @glaredb/glaredb

What's Changed

Read more

v0.7.1

05 Dec 18:19
v0.7.1
ab79026
Compare
Choose a tag to compare

Highlights

Lance Support

GlareDB now offers support for Lance.

Lance is a Modern columnar data format optimized for ML and LLM workflows.

SELECT * FROM lance_scan('path/to/file.lance');

Documentation Improvements

We have made it easier to find the information you need, where you need it most.
Our functions catalog now contain 2 additional columns description and example.
These contain a short description of the function and an example of how to use it.

SELECT
  function_name,
  example,
  description
FROM glare_catalog.functions

Installing or Updating

CLI

To install or update just run the following command in the directory you want
the binary:

curl https://glaredb.com/install.sh | sh

Python

pip install glaredb

What's Changed

New Features

Bug Fixes

New Contributors

Full Changelog: v0.7.0...v0.7.1

v0.7.0

14 Nov 19:49
v0.7.0
034d873
Compare
Choose a tag to compare

BREAKING!

To use Hybrid Execution, all clients (Python, GlareDB CLI) must update to 0.7.0+, as TLS was made required for connections

Highlights

  • Microsoft SQL Server

    GlareDB now supports SQL Server as an external data source. You can configure external tables and databases from SQL
    Server.

    CREATE EXTERNAL DATABASE <database-name>
    FROM sql_server
    OPTIONS (
      connection_string = '<connection_string>'
    );
    
    CREATE EXTERNAL TABLE <table-name>
    FROM sql_server
    OPTIONS (
      connection_string = '<connection_string>',
      schema = '<schema>',
      table = '<table>'
    );
  • Azure Blob Storage

    GlareDB can now use CSV, ndjson, or Parquet files in Azure Blob Storage as external tables:

    CREATE EXTERNAL TABLE my_azure_source
    FROM azure
    OPTIONS (
      account_name = '<azure-account>',
      access_key = '<access-key>'
      location = 'azure://<storage-container>/<object-path>'
    );
  • Node bindings

    GlareDB is now available in Node.js and distributed via npm:

    npm i @glaredb/glaredb
    // CommonJS
    const glaredb = require("@glaredb/glaredb");
    
    let con = await glaredb.connect();
    let res = await con.sql("SELECT 'hello JS'");
    await res.show();
    
    // ESM
    import glaredb from "@glaredb/glaredb";
    
    let con = await glaredb.connect();
    let res = await con.sql("SELECT 'hello JS'");
    await res.show();
  • Set READ_WRITE and READ_ONLY modes for external databases and tables. By setting a database or table to READ_ONLY, inserts are
    not permitted.

    ALTER DATABASE <database> SET ACCESS_MODE TO READ_WRITE;
    ALTER TABLE <table> SET ACCESS_MODE TO READ_ONLY;
  • Python improvements:

    • prql method was added that can be called without setting the current dialect: con.prql('<my prql query>').show()

Installing or Updating

CLI

To install or update just run the following command in the directory you want
the binary:

curl https://glaredb.com/install.sh | sh

Python

pip install glaredb

Node

npm i @glaredb/glaredb

What's Changed

Full Changelog: v0.0.0...v0.7.0

v0.6.1

02 Nov 15:55
8eeca25
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.0...v0.6.1

v0.6.0

25 Oct 18:09
v0.6.0
b9e4a2f
Compare
Choose a tag to compare

Highlights

  • GlareDB Pro 🎉 Read our announcement here 🎉

    Simple, powerful, flexible compute plan. Transparent pricing:

    • Unlimited data reads + writes: $7 per TB
    • Unlimited data storage: $23 per TB
    • and more
  • Preliminary PRQL Support 📡🎉!

GlareDB now provides native support for PRQL, which is an analytics-focused query language built around the concept of pipelines.

set dialect = 'prql';
-- session is now in PRQL mode:
from events
filter type = login
filter outcome = success
select user_id
  • GlareDB Local 💻

    • GlareDB fully supports cloud storage using GCS, S3, R2 and MinIO providers in Python and local CLI

    You can now use cloud object store providers in GlareDB Local instances: specify URLs for object stores or object store paths directly to
    access data in the cloud. For GCS, you can use the following CLI operation, with the service_account_path specifying credentials:

    glaredb -l "gs://<bucket>/<path>" -o service_account_path=cred-file.json

    From the Python:

    import glaredb
    
    conn = glaredb.connect(location="gs://<bucket>/<path>",
            storage_options={"service_account_path"="cred-file.json"})

    For AWS's S3 and compatible APIs (including Minio, CloudFlare R2 and Blackblaze B2):

    glaredb -l "s3://<bucket>/<path>" -o access_key_id=<key> -o secret_key_id=<secret>

    and, in Python:

    import glaredb
    
    conn = glaredb.connect(location="gs://<bucket>/<path>",
            storage_options={
             "aws_access_key_id"="<key>",
             "aws_secret_key"="<secret>",
            })

    For both the CLI and Python, the aws_ prefix is optional. You can also specify the aws_region or aws_default_region option (or region and default_rgion)

    You can omit the storage options and GlareDB will fall back to reading credentials from the environment using the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (and friends) GOOGLE_APPLICATION_CREDENTIALS variables.

    • The \timing command available in GlareDB CLI:
    > \timing
    Timing is on
    > select count(*) from lineitem;
    Time: 0.067s

    This operation, mirroring a similar option in the PostgreSQL psql shell, reports the timing for all operations.

    • Run a SQL from a file as a script:
    glaredb <path>/file.sql

    Will read from the file at <path>/file.sql and run any SQL statements from that file in the local session. You can still run SQL queries directly from the shell by passing them as a string to glaredb.

  • Data sources ☸️ :

    • GlareDB is improving support for supporting direct INSERTs into PostgreSQL and MySQL data sources, as part of a larger
      epic
      , with support in appropriate other data sources as coming soon.
  • GlareDB Python 🐍 :

    • For the glaredb.Connection.sql() method, some operations are now eager, in that they execute immediately when the method call. All other operations execute lazily, when the result is used.

    • Polars' LazyFrames are now supported

  • SQL additions and improvements 🗄️:

    • DROP operation is supported for temporary tables
    • CREATE OR REPLACE now properly replaces native, temp, and external tables
    • IF NOT EXISTS now works properly for temp tables

Installing or Updating

To install or update just run the following command in the directory you want
the binary:

curl https://glaredb.com/install.sh | sh

What's Changed

Full Changelog: v0.5.1...v0.6.0

v0.5.1

28 Sep 15:26
v0.5.1
3672089
Compare
Choose a tag to compare

Highlights

  • CREATE EXTERNAL TABLE now supports delta and iceberg data source
    types. The following example creates an external table from a delta
    table in GCS:

    CREATE EXTERNAL TABLE my_delta_table
    FROM delta
    OPTIONS (
        location 'gs://<bucket_name>/<path_to_delta_table>',
        service_account_key '<gcp_service_account>'
    );
  • hybrid execution:

    • You can now run EXPLAIN ANALYZE [VERBOSE] <query> when running in
      hybrid execution for metrics and details on how the hybrid query is
      executed
  • misc fixes:

    • ndjson_scan table function for ndjson files can now be inferred. For
      example: SELECT * FROM 'file.ndjson'.
    • fixed search_path not setting correctly in hybrid execution mode
    • CSVs with unnamed column headers can now be scanned
    • list_columns now works for native tables. Use "default" as the
      database name: list_columns("default", <schema>, <table>)

Installing or Updating

To install or update just run the following command in the directory you want
the binary:

curl https://glaredb.com/install.sh | sh

What's Changed

New Contributors

Full Changelog: v0.5.0...v0.5.1

v0.5.0

11 Sep 17:29
v0.5.0
ee74c8c
Compare
Choose a tag to compare

Highlights

  • Hybrid Execution 🎉 Read our announcement with examples here 🎉
    Utilize the power of cloud alongside your local machine to query data wherever
    it resides. You can SELECT and JOIN local data with all of the data in
    your cloud deployment. Query execution is optimized so that processing takes
    place both locally and remotely to minimize transport related overhead. You
    can use Hybrid Execution in both the GlareDB CLI and
    GlareDB Python library.

    Get started by:

    Example:

    # Update GlareDB to 0.5.0
    curl https://glaredb.com/install.sh | sh
    # Run the binary
    ./glaredb
    # Connect to Cloud
    \open glaredb://user:[email protected]:6443/deployment_name
  • Table functions:

    • Table functions can now be inferred from files. Previously, to scan a CSV
      file you'd have to call csv_scan(...). Now, you can simply just query
      the file directly:

      SELECT * FROM './customer_report.csv';

      This works for remote files as well (try this out!)

      SELECT * FROM
        'https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/raw/main/prompts.csv'
      LIMIT 10;

      Note that you will still need to use csv_scan where credentials need to
      be passed.

    • list_columns: You can now list columns for any external database connected to glaredb:

      list_columns("my_pg", "public", "users");
  • GlareDB CLI:

    • You can now re-run multi-line commands - simply press ⬆️ to cycle through
      previously run commands.
    • The CLI now has improved command-completion hints using session history
    • You can now exit the CLI with exit or \q, in addition to CTRL-d
    • The CLI output format has been greatly improved
  • BigQuery:

    • We now support Array, Record, Struct and Big Numeric types for BigQuery data
      sources.
  • misc:

    • Fixed an issue which prevented glaredb from being installed in Microsoft Fabric

Installing or Updating

To install or update just run the following command in the directory you want
the binary:

curl https://glaredb.com/install.sh | sh

What's Changed

Read more

v0.4.0

08 Aug 19:36
v0.4.0
e551f13
Compare
Choose a tag to compare

Highlights

  • Native tables:

    • We now have UPDATE and DELETE support for native tables 🎉 !
    CREATE TABLE public.users ( name text );
    INSERT INTO public.users VALUES ('Eldon');
    UPDATE public.users SET name = 'Eldon Tyrell' WHERE name = 'Eldon';
    DELETE FROM public.users;
    • CREATE AS now supports aliasing and casting. For more information see #1472.
    CREATE TABLE t2 (a int, b text) AS VALUES (1, 2);
  • table functions:

    • csv_scan and ndjson_scan now scan compressed files
    • Fixed decimal support in generate_series
  • glaredb local: You can now start glaredb locally without specifying any subcommands. Simply run:

    ./glaredb

Installing or Updating

To install or update just run the following command in the directory you want the binary:

curl https://glaredb.com/install.sh | sh

What's Changed

Full Changelog: v0.3.0...v0.4.0

v0.3.0

02 Aug 15:27
v0.3.0
a4890fd
Compare
Choose a tag to compare

Highlights

  • Iceberg support:
    We've added initial support for reading Iceberg tables with iceberg_scan, iceberg_snapshots and iceberg_data_files
    SQL functions. We are commited to improving support, see #1448 for more details on what's to come in future releases.
    For more information on current support and examples of our SQL functions, see #1382.

  • Native tables:

    • We now have support for creating a table from a query:

      create table t1 as select * from generate_series(1, 5, 2);
      select * from t1;
      ----
       1
       3
       5
  • SQL functions:

    • As highlighted earlier: iceberg_scan, iceberg_snapshots and iceberg_data_files were added
    • You can now glob (** and *) to scan multiple files and directories. This is extremely powerful for combining multiple
      files into a query. For example, see our SLT tests that glob and call upon multiple files in gcs:
      SELECT a, b FROM csv_scan([
          'gs://${GCS_BUCKET_NAME}/copy_to*',
          'gs://${GCS_BUCKET_NAME}/**/with_*.csv'
      ], gcp_creds);
    • delta_scan function was added to query delta tables from local paths, s3, and gcs
    • All *_scan functions received support for passing multiple URLs
  • SQL commands:

    • SELECT now accepts EXCEPT or EXCLUDE clause to exclude specific columns from output

      SELECT * EXCLUDE (id) FROM users;
  • glaredb local:

    • Improved formatting of output
      > select * from generate_series(1, 5);
      ┌─────────────────┐
      │ generate_series │
      │ ──              │
      │ Int64           │
      ╞═════════════════╡
      │ 1               │
      │ 2               │
      │ 3               │
      │ 4               │
      │ 5               │
      └─────────────────┘
  • Python bindings:

    • Added a close() method to close glaredb connections gracefully
    • Improved formatting of output of show()
  • Background job support:
    We've internally added a framework for background jobs that helps us to implement cleanup and computation. If you're interested in contributing to GlareDB and need context or a better understanding of how it works, check out: #1353 , #1398 and #1409

  • Fixes:

    • Fixed an issue where create schema if not exists would fail if the schema existed

What's Changed

Full Changelog: v0.2.1...v0.3.0