Releases: GlareDB/glaredb
v0.8.1
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
- feat: Support Boolean datatypes after klickhouse switch by @vrongmeal in #2407
- fix: Pushdown SQL Server
WHERE
clause by @vrongmeal in #2316 - chore: Schedule python/node bindings builds by @scsmithr in #2404
- add commit-sha to cli by @universalmind303 in #2411
- chore(deps): Bump deps by @scsmithr in #2426
- Fix : Adding keywords for PRQL for higlighting by @hemanth94 in #2413
- update readme by @universalmind303 in #2397
- chore: move slt runner into main binary by @tychoish in #2401
- fix: Infer and scan BSON files from file path by @vrongmeal in #2410
- chore: Remove
--exclude testing
from justfile by @scsmithr in #2428 - fix: Error instead of panic when converting pg timestamps to arrow by @vrongmeal in #2430
- implement
pg_catalog.pg_type
table by @universalmind303 in #2392 - chore: Remove openssh from slt crate cargo.toml by @scsmithr in #2432
- chore: Post release build results to slack by @scsmithr in #2433
- ci: move minio into its own job by @universalmind303 in #2435
- release: v0.8.1 by @greyscaled in #2439
Full Changelog: v0.8.0...v0.8.1
v0.8.0
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
- fix: Hybrid planning when the root plan has local preference by @vrongmeal in #2183
- chore(ci): nodejs bindings yarn version mismatch by @greyscaled in #2212
- chore: consolidating path validation logic by @seve-martinez in #2200
- chore: Fix error message for invalid copy-to by @vrongmeal in #2216
- chore: remove py-glaredb cruft by @tychoish in #2215
- chore: refactor udfs into sqlbuiltins by @universalmind303 in #2214
- feat: add --logs flag to local command by @Lilit0x in #2187
- chore(deps): Bump deps by @scsmithr in #2233
- chore: small cleanup to
ComputeServer
by @universalmind303 in #2232 - chore: Add go package option to protobuf definitions by @scsmithr in #2241
- chore: Remove logical plan serialization by @scsmithr in #2244
- chore(deps): bump actions/setup-python from 4 to 5 by @dependabot in #2229
- fix: Properly exit SimpleExecuteQueryStream on stream end by @scsmithr in #2243
- Better formatting for FixedSizeList (#2058) by @hemanth94 in #2223
- feat: flightsql initial support by @universalmind303 in #2219
- fix: some broken tests by @universalmind303 in #2249
- feat: allow for tests over flightsql by @universalmind303 in #2240
- fix: truncate long floats in cli formatting for display by @hemanth94 in #2253
- fix: cases sensitivity for statement options keywords by @seve-martinez in #2231
- chore: Detect client disconnect in pg proxy by @scsmithr in #2256
- chore(deps): Bump deps by @scsmithr in #2271
- feat: high level integration testing framework by @tychoish in #2258
- chore(pg proxy): update cloud cert by @greyscaled in #2272
- chore: Bump rust to 1.74.1 by @scsmithr in #2275
- fix: Skip external SLTs for external contributors by @vrongmeal in #2247
- feat(bson): add COPY TO support for writing bson files by @tychoish in #2166
- chore: isolate execution of snowflake integration tests by @tychoish in #2278
- fix: Don't parse version-hint as a number for iceberg tables by @vrongmeal in #2281
- chore(deps): upgrade actions by @tychoish in #2282
- chore(deps): bump zerocopy from 0.7.18 to 0.7.31 by @dependabot in #2257
- chore(deps): bump rustls-pemfile from 1.0.4 to 2.0.0 by @dependabot in #2190
- chore(deps): bump webpki-roots from 0.25.3 to 0.26.0 by @dependabot in #2191
- fix: filter unknown oids for Postgres types by @hemanth94 in #2283
- feat: encrypted flight api via cloud proxy by @universalmind303 in #2279
- chore: Default to compact logs by @scsmithr in #2287
- chore(deps): Bump deps by @scsmithr in #2297
- feat(bson): add table function for bson files by @tychoish in #2202
- fix: Hacky fix for running the experimental scheduler when spawning task by @vrongmeal in #2284
- chore: Remote
fn runtime_preference()
fromTableFunc
trait. by @vrongmeal in #2288 - feat: Add
read_sqlserver
table returning function by @vrongmeal in #2310 - chore: Add .clang-format by @scsmithr in #2312
- fix: bson type handling cleanup by @tychoish in #2313
- feat: cli highlighting improvements. by @universalmind303 in #2307
- feat: Support virtual listing for SQL server. by @vrongmeal in #2311
- feat: Clickhouse data source by @scsmithr in #2300
- fix: scalar udf function argument handling by @tychoish in #2304
- feat: add non-cryptographic hash function by @tychoish in #2298
- feat: partition results helper by @tychoish in #2299
- test: Add datatypes test for SQL Server by @vrongmeal in #2317
- feat: Add support for Azure data dir by @vrongmeal in #2319
- test: Add SLTs for sqlserver <> virtual listing by @vrongmeal in #2320
- chore(deps): Bump deps by @scsmithr in #2331
- chore: Bump rust to 1.75 by @scsmithr in #2335
- chore: Make bucket name required in storage config by @vrongmeal in #2336
- Revert "chore: Make bucket name required in storage config" by @vrongmeal in #2337
- fix: bson builder should handle schema flexibly by @tychoish in #2334
- fix: bson type inference fixes by @tychoish in #2339
- chore: mongo -> mongodb in symbol naming by @tychoish in #2343
- fix: complex bson types by @tychoish in #2341
- feat:
read_cassandra
table function by @universalmind303 in #2344 - chore(deps): Bump deps by @scsmithr in #2359
- chore: Allow specifying aliases for table functions by @scsmithr in #2364
- feat: Allow specifying alt delimiter when reading csv by @scsmithr in #2365
- chore: Misc builtin function refactoring by @scsmithr in #2367
- feat: Clickhouse followup items by @vrongmeal in #2340
- feat: external table for cassandra by @universalmind303 in #2361
- chore: Add alias map for functions by @scsmithr in #2370
- ci: speed up ci by introducing precompiled slt binary by @universalmind303 in #2363
- fix: add signature for read_excel by @universalmind303 in #2376
- feat: cassandra external database by @universalmind303 in #2374
- fix: excel options by @universalmind303 in #2377
- feat: Allow reading csv files without a header by @scsmithr in #2380
- release: v0.8.0 by @tychoish in #2381
- Revert "release: v0.8.0" by @greyscaled in #2383
- chore: Add slt for asserting builtin tables by @scsmithr in #2387
- chore: Switch to klickhouse by @scsmithr in #2388
- release: v0.8.0 by @greyscaled in #2391
- chore: add check for dynamic linking on linux by @tychoish in #2386
- Revert "release: v0.8.0" by @greyscaled in #2398
- ci: downgrade upload-artifact v4->v3 by @greyscaled in https://github.com/Glar...
v0.7.1
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
lance_scan
function by @universalmind303 in #2108- bump prql version by @universalmind303 in #2111
- Allow trailing commas in select list by @scsmithr in #2117
- Remove 'parquet' feature from deltalake dep by @scsmithr in #2121
- add lance as external table by @universalmind303 in #2120
- Bump deps by @scsmithr in #2131
- Send metrics for hybrid exec queries (rpc) by @vrongmeal in #2103
- make tokio a workspace dependency by @tychoish in #2139
- Enable corepack before setting up node by @scsmithr in #2146
- Send
user_id
in RPC execute request to collect metrics by @vrongmeal in #2140 - Bump deps by @scsmithr in #2159
- Add 'access_mode' column for databases and tables by @scsmithr in #2162
- Remove background jobs by @vrongmeal in #2148
- Split session catalog out into its own crate by @scsmithr in #2167
- Scheduling by @scsmithr in #1924
- Expose catalog through table func context by @scsmithr in #2172
- rename CREATE CREDENTIALS to CREATE CREDENTIAL by @Lilit0x in #2180
- Send query text when executing query over RPC by @vrongmeal in #2179
- alias read_parquet, read_njson, read_csv to their scan counterpart by @Lilit0x in #2185
- builtin descriptions & examples by @universalmind303 in #2178
- Simple query interface by @scsmithr in #2201
- clean up lint target by @tychoish in #2204
- bump google-github-actions/auth from 1 to 2 by @dependabot in #2189
- Bump deps by @scsmithr in #2206
- kdl_match function by @tychoish in #2145
- Move table func trait by @scsmithr in #2208
- improve+cleanup func param processing by @tychoish in #2203
- Data source cache by @scsmithr in #2164
Bug Fixes
- add better error message for invalid "version" cmd, and invalid sql files by @universalmind303 in #2110
- stdin piping by @universalmind303 in #2137
- case sensitivity in create table by @universalmind303 in #2141
- improvements to schema inference by @tychoish in #2143
- Properly compute stats for globbed paths by @tychoish in #2171
- Mark 'default' database as READ_WRITE by @vrongmeal in #2173
- create or replace for credentials by @universalmind303 in #2134
- handle integer overflows by @tychoish in #2205
New Contributors
Full Changelog: v0.7.0...v0.7.1
v0.7.0
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
andREAD_ONLY
modes for external databases and tables. By setting a database or table toREAD_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
- feat(prql): add direct pqrl bindings to helpers by @tychoish in #2021
- fix: allow tilde paths by @universalmind303 in #2036
- ci: deployment pipeline for node bindings by @universalmind303 in #2030
- chore(deps): Bump deps by @scsmithr in #2051
- chore: Don't set mysql_common version by @scsmithr in #2050
- feat: Add "read-only" mode by @vrongmeal in #2026
- test: Add s3 tests for parquet and glob tests for diff schema by @vrongmeal in #2060
- feat:
ALTER [DATABASE/TABLE] .. SET ACCESS_MODE TO ..
by @vrongmeal in #2057 - chore(deps): bump openssh from 0.9.9 to 0.10.1 by @dependabot in #2041
- feat(rpc)!: enable TLS by @greyscaled in #2065
- chore(deps): Bump deps by @scsmithr in #2080
- chore(bindings-node): add catch_unwind by @universalmind303 in #2081
- feat(sqlexec rpc): client auth error messages by @greyscaled in #2068
- chore(deps): Bump actions deps by @scsmithr in #2083
- fix(bindings-node): panic on empty result set by @universalmind303 in #2088
- fix: regression in open cmd by @universalmind303 in #2089
- feat: SQL Server data source by @scsmithr in #2018
- feat: Azure blob storage by @scsmithr in #1937
- chore(bindings-node): update examples by @universalmind303 in #2099
- release: v0.7.0 by @greyscaled in #2100
Full Changelog: v0.0.0...v0.7.0
v0.6.1
What's Changed
- feat: Support python contexts, add default in-memory connection by @scsmithr in #1909
- chore(deps): bump rustix from 0.37.23 to 0.37.26 by @dependabot in #1954
- chore: Track
bytes_written
for insert and copy operations. by @vrongmeal in #1960 - feat: add js bindings by @universalmind303 in #1962
- chore(deps): bump all util packages by @tychoish in #1998
- feat: add excel reader by @universalmind303 in #1997
- chore(deps): bump primary dependency group by @tychoish in #2000
- chore: Add back init.py file by @scsmithr in #2007
- fix: Remove terminal width detection from pretty table by @scsmithr in #2009
- chore: Enable more rpc tests by @scsmithr in #2014
- !experiment(rpc_proxy): client_auth_optional by @greyscaled in #2016
- feat(tls): make tls mode configurable by @tychoish in #2017
- fix(minor): cleanup interactive startup message by @tychoish in #2020
- fix(tls): rename tls verification cli argument by @tychoish in #2019
- fix: mongodb pushdown filters by @tychoish in #2003
- fix: prql slt runner by @universalmind303 in #2024
- feat: DESCRIBE table by @universalmind303 in #2022
- feat(tls): cloud auth fields for api_version, client_type by @greyscaled in #2031
- release: v0.6.1 by @greyscaled in #2032
Full Changelog: v0.6.0...v0.6.1
v0.6.0
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 theservice_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 theaws_region
oraws_default_region
option (orregion
anddefault_rgion
)You can omit the storage options and GlareDB will fall back to reading credentials from the environment using the
AWS_ACCESS_KEY_ID
andAWS_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 toglaredb
. -
Data sources ☸️ :
- GlareDB is improving support for supporting direct
INSERT
s into PostgreSQL and MySQL data sources, as part of a larger
epic, with support in appropriate other data sources as coming soon.
- GlareDB is improving support for supporting direct
-
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 tablesCREATE OR REPLACE
now properly replaces native, temp, and external tablesIF 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
- fix: Coalesce partitions in
RemoteScanExec
by @vrongmeal in #1853 - chore: Fix flaky SSH tunnel tests by @vrongmeal in #1857
- chore: Remove release profile settings from py-glaredb by @scsmithr in #1859
- chore: Add temp table slt to rpc tests by @scsmithr in #1864
- feat: Track more data source metrics during execution by @scsmithr in #1860
- chore: Remove temp catalog, session vars (mostly) from remote session by @scsmithr in #1866
- chore: better list dtype formatting by @universalmind303 in #1840
- feat: Enable GCS, S3, R2 and MinIO as object stores for local runs by @gruuya in #1843
- chore: Move batch stream proto def to a new common file by @scsmithr in #1868
- fix: create or replace for native & temp tables by @universalmind303 in #1854
- chore: add question template & contact link to discord server by @universalmind303 in #1848
- chore: Remove accidentally pushed local db by @vrongmeal in #1875
- feat: Extend SLTs to excercise remote data storage functionality by @gruuya in #1874
- chore: Reduce number of release builds by @scsmithr in #1881
- feat: Support
INSERT INTO
for external sources. by @vrongmeal in #1877 - fix: builtin table functions should not need a schema to resolve by @adhish20 in #1887
- fix: create or replace for external tables by @universalmind303 in #1879
- fix:
drop <table>
for temp tables by @universalmind303 in #1886 - feat: Remote session context per database instead of per connection by @gruuya in #1894
- chore(python): cleanup basic refactoring by @scsmithr in #1892
- feat: implement query
\timing
command for local repl by @gruuya in #1903 - feat: experimental prql support by @universalmind303 in #1895
- ci: refactor flaky ci by @universalmind303 in #1906
- feat: Support polars lazy frames (the lazy way) by @scsmithr in #1908
- feat: support insert into for mysql by @adhish20 in #1900
- feat: extend builtin function catalog by @universalmind303 in #1910
- fix: Resolve
IF NOT EXISTS
for native tables by @vrongmeal in #1911 - feat: Enable passing SQL script as an argument by @vrongmeal in #1913
- !feat(cloudauth): rm ce param by @greyscaled in #1915
- chore: Adapt PRQL intgration tests to SLTs by @scsmithr in #1919
- feat(python): make sql methdod eager for ddl/dml operations by @tychoish in #1926
- fix: Immediately update events in telemetry by @vrongmeal in #1928
- chore: Add github action to run benchmarks by @vrongmeal in #1846
- feat: Implementation of sub-directory support for external native storage by @gruuya in #1927
- fix: Return memory store if engine not configured to work with session bucket by @gruuya in #1933
- chore: Update
bytes_processed
param tobytes_read
. by @vrongmeal in #1932 - chore: Proper rust toolchain setup for all steps, bump rust version by @scsmithr in #1939
- chore(cloudauth): update user_id doc comment by @greyscaled in #1938
- fix: prql over psql by @universalmind303 in #1941
- feat: add aggregate functions to builtin catalog by @universalmind303 in #1943
- feat: Enable binary encoding when requested by the client by @vrongmeal in #1935
- chore: Send
bytes_read
metrics to telemetry. by @vrongmeal in #1944 - fix: add better error messages for parsing datasource urls by @universalmind303 in #1945
- add rust-toolchain.toml by @universalmind303 in #1947
- fix: add better error messages for http globbing by @universalmind303 in #1950
- ci: update ci for slts by @universalmind303 in #1951
- release: v0.6.0 by @greyscaled in #1952
- fix: remove
file_with_a_*
by @universalmind303 in #1956
Full Changelog: v0.5.1...v0.6.0
v0.5.1
Highlights
-
CREATE EXTERNAL TABLE
now supportsdelta
andiceberg
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
- You can now run
-
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
- fix: Allow returning query response through pgsrv with empty column by @scsmithr in #1751
- fix: serialize AnalyzeExec by @adhish20 in #1756
- feat: tls for rpc-srv by @adhish20 in #1746
- fix: syntax highilight for semi-colon for light and dark backgrounds by @tychoish in #1764
- chore: set default for
--disable-tls
by @greyscaled in #1765 - ci: pin rust version in CI by @tychoish in #1763
- feat: serializable udfs by @universalmind303 in #1755
- chore(rpcproxy): set default for --disable-tls by @greyscaled in #1777
- ci: fanout CI steps for parallel build by @tychoish in #1766
- chore: Update datafusion and delta-rs by @scsmithr in #1773
- feat: Runtime group exec pull up in EXPLAIN statements by @gruuya in #1781
- add "ndjson" to file extensions by @universalmind303 in #1786
- feat: list_columns for native tables by @adhish20 in #1783
- fix: Fix underflow when formatting large number of columns by @scsmithr in #1792
- chore: Do less column processing when pretty printing by @scsmithr in #1788
- feat: enable file statistics by @universalmind303 in #1789
- fix: Trim whitespaces when checking SLT output by @vrongmeal in #1794
- ci: improve labeling of slt tests by @tychoish in #1796
- fix: single column with long header by @universalmind303 in #1801
- chore: Enable more SLT tests with rpc by @scsmithr in #1811
- feat: Generic external Delta and Iceberg tables by @gruuya in #1797
- feat: Implement Delta/Iceberg external table validation during initial setup by @gruuya in #1819
- perf: additional tpch benchmarks by @universalmind303 in #1821
- feat: opt-in tls for rpc by @greyscaled in #1767
- chore(dx): misc cleanup justfile and add .ignore file for ripgrep by @tychoish in #1824
- chore: print tls enabled/disabled in \open by @greyscaled in #1835
- fix: search path on rpc by @universalmind303 in #1839
- chore(py-glaredb): keyword args for connect by @greyscaled in #1837
- chore: update delta version by @universalmind303 in #1844
- release: 0.5.1 by @greyscaled in #1847
New Contributors
Full Changelog: v0.5.0...v0.5.1
v0.5.0
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 canSELECT
andJOIN
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:
- Signing up on https://console.glaredb.com/
- Click Connect
- Follow the instructions to connect locally with the GlareDB CLI or in Python
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 callcsv_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 toCTRL-d
- The CLI output format has been greatly improved
- You can now re-run multi-line commands - simply press ⬆️ to cycle through
-
BigQuery:
- We now support Array, Record, Struct and Big Numeric types for BigQuery data
sources.
- We now support Array, Record, Struct and Big Numeric types for BigQuery data
-
misc:
- Fixed an issue which prevented
glaredb
from being installed in Microsoft Fabric
- Fixed an issue which prevented
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
- feat: Allow "exit" and "\q" to exit cli by @scsmithr in #1523
- feat: close remote sessions on exit by @adhish20 in #1524
- feat: Authenticated rpc client by @scsmithr in #1518
- fix: Properly translate client request to proxy request by @scsmithr in #1529
- chore: Allow client init session when
--ignore-auth
. by @vrongmeal in #1531 - proto serialize logical plans by @universalmind303 in #1528
- feat: Slightly prettier execution result output by @scsmithr in #1535
- fix: number of deleted rows returned when there is no where clause by @adhish20 in #1538
- feat: Deserialize nodes for broadcasting by @scsmithr in #1541
- fix: bug with printing tables that has multiple record batches by @adhish20 in #1543
- fix: Return better error when querying pg table that doesn't exist by @scsmithr in #1544
- feat: Support remote execution for queries with tables by @vrongmeal in #1534
- remote exec for DDL's by @universalmind303 in #1539
- rpc for create external table by @universalmind303 in #1546
- feat(cli): multiline history support by @universalmind303 in #1548
- fix client command validation for cli by @universalmind303 in #1551
- feat(rpcsrv): rpc alter stmts by @universalmind303 in #1552
- feat: Support remote table scans and inserts by @vrongmeal in #1553
- fix: Use actual session context in remote session by @vrongmeal in #1555
- feat: rpc for create stmts by @universalmind303 in #1556
- fix: Use named arguments for file compression by @vrongmeal in #1560
- feat: support record, struct, big numeric type for bigquery by @adhish20 in #1562
- feat: temp table & view for remote exec by @universalmind303 in #1557
- feat: rpc for drop ddls by @universalmind303 in #1564
- rpc variable execs by @universalmind303 in #1568
- small refactor to ExtensionNode by @universalmind303 in #1570
- feat: support repeated types for BigQuery by @adhish20 in #1569
- rpc for
CopyTo
by @universalmind303 in #1571 - feat: Allow reconstructing postgres table provider and execs by @scsmithr in #1572
- feat: Physical execs for client batch exchange by @scsmithr in #1559
- feat: Support RPC server testing by @vrongmeal in #1575
- chore: move sesionvars into df context by @universalmind303 in #1578
- feat: handle REPEATED types inside a Record type for BigQuery by @adhish20 in #1582
- chore: Add prost messages for postgres physical plan and table provider by @vrongmeal in #1586
- chore: Update huggingface parquet in SLT by @scsmithr in #1588
- chore: Add some docs to metastore client module by @scsmithr in #1584
- feat: Client side table planning and execs by @scsmithr in #1576
- chore: Split session contexts by @scsmithr in #1589
- fix: Append auth metadata to streaming request by @scsmithr in #1594
- feat: Remote scan exec on cached table providers by @scsmithr in #1595
- feat: Display deployment name when connecting with local by @scsmithr in #1598
- feat: Allow connecting to cloud deployment with python bindings by @scsmithr in #1603
- chore: Remove init catalog endpoint for metastore by @scsmithr in #1604
- fix: Fix projection/partition related bugs with remote planner by @scsmithr in #1611
- refactor: catalog mutator by @universalmind303 in #1608
- chore: Alter database rename physical plan by @adhish20 in #1614
- chore: alter table rename physical plan by @adhish20 in #1615
- chore: chore: Resolve clippy errors by @vrongmeal in #1640
- feat: DDL execs by @universalmind303 in #1613
- chore: Minor renames by @scsmithr in #1650
- fix(pgsrv): Send row description only for 'Query' results by @scsmithr in #1651
- chore: Update deltalake by @scsmithr in #1652
- chore: Enable pretty logging by @scsmithr in #1653
- chore: Add additional tests for asserting command tag output by @scsmithr in #1656
- feat: Update catalog with rpc by @scsmithr in #1660
- fix(rpc): Use correct schema when serialize create table execs by @scsmithr in #1664
- fix: Dispatch local external table locally with RPC by @vrongmeal in #1667
- chore: Update delta-rs to fork and datafusion to 30 by @scsmithr in #1668
- fix: Make in-memory store persistent by @adhish20 in #1669
- fix: Serialize
ValuesExec
for RPC. by @vrongmeal in #1673 - fix: remote_scan panic on empty native table by @adhish20 in #1672
- fix: Dispatch views locally by @scsmithr in #1675
- chore: Enable more SLT tests for RPC by @scsmithr in #1680
- feat: Remote to local copy to by @vrongmeal in #1670
- fix: Return only "NULL" when value is null in RPC SLT by @vrongmeal in #1683
- chore: Update hugging face parquet file by @scsmithr in #1684
- feat: remote execution of table funcs via dispatcher by @universalmind303 in #1681
- chore: Bump stack size for SLT tests by @scsmithr in #1686
- fix: broadcasting empty stream by @adhish20 in...
v0.4.0
Highlights
-
Native tables:
- We now have
UPDATE
andDELETE
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);
- We now have
-
table functions:
csv_scan
andndjson_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
- chore: Add simple typescript example by @f0ssel in #1458
- chore: gracefully handle bucket field in dev by @f0ssel in #1453
- chore: connected to local server in example by @f0ssel in #1461
- test: Add SLTs for object store external tables by @vrongmeal in #1462
- feat: Support drops for temp tables by @vrongmeal in #1464
- chore(issues): lessen friction by @greyscaled in #1468
- feat: Support aliasing/casting in
CREATE TABLE .. AS ..
by @vrongmeal in #1472 - feat: support deletes by @adhish20 in #1465
- add datafusion & arrow to readme acknowledgements by @universalmind303 in #1476
- fix(cli): highlight insert into ... values by @greyscaled in #1480
- fix: Use decimal (numerics) instead of floats in generate series by @vrongmeal in #1481
- build(deps): Bump deps by @scsmithr in #1486
- feat: support compressed csv & jsons by @universalmind303 in #1490
- build(deps): Bump datafusion and deltalake by @scsmithr in #1495
- chore: Update rust version in docker file by @scsmithr in #1497
- chore: Add protogen crate by @scsmithr in #1498
- test: Fix relative path scan tests by @vrongmeal in #1500
- chore: Remove unnecessary lock from bigquery stream thread. by @vrongmeal in #1504
- test: Add subquery test for
generate_series
. by @scsmithr in #1489 - feat: rpcsrv by @scsmithr in #1499
- feat: RPC proxy by @scsmithr in #1508
- fix:
SELECT now()
returns current time. by @vrongmeal in #1509 - feat: support basic update command by @adhish20 in #1479
- feat: Make 'glaredb' behave as 'glaredb local' by @scsmithr in #1510
- fix: Use python print for
show
method by @scsmithr in #1511 - chore: update readme for running glaredb by @greyscaled in #1514
- fix: Fix pg handler not running by @scsmithr in #1516
- release: v0.4.0 by @greyscaled in #1517
Full Changelog: v0.3.0...v0.4.0
v0.3.0
Highlights
-
Iceberg support:
We've added initial support for reading Iceberg tables withiceberg_scan
,iceberg_snapshots
andiceberg_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
andiceberg_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
- As highlighted earlier:
-
SQL commands:
-
SELECT
now acceptsEXCEPT
orEXCLUDE
clause to exclude specific columns from outputSELECT * EXCLUDE (id) FROM users;
-
-
glaredb local
:- Improved formatting of output
> select * from generate_series(1, 5); ┌─────────────────┐ │ generate_series │ │ ── │ │ Int64 │ ╞═════════════════╡ │ 1 │ │ 2 │ │ 3 │ │ 4 │ │ 5 │ └─────────────────┘
- Improved formatting of output
-
Python bindings:
- Added a
close()
method to close glaredb connections gracefully - Improved formatting of output of
show()
- Added a
-
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
- Fixed an issue where
What's Changed
- chore: Add pypi badge to readme by @scsmithr in #1334
- feat: Read-only session vars by @scsmithr in #1335
- chore: Add test for inserting lists into table by @scsmithr in #1336
- multiple urls in
_scan
functions by @universalmind303 in #1317 - feat: Add
delta_scan
function by @scsmithr in #1345 - chore: cleanup obj store functions and add tests by @vrongmeal in #1347
- remove TableFunc::parameters by @universalmind303 in #1348
- feat: allow creating tables from a source query by @adhish20 in #1340
- feat: support creating temp tables from source query by @adhish20 in #1355
- chore: add better python ide support by @universalmind303 in #1354
- feat: Support background jobs by @vrongmeal in #1353
- chore: Remove target branch from dependabot by @scsmithr in #1359
- chore: Remove dependabot grouping by @scsmithr in #1362
- build(deps): Bump deps by @scsmithr in #1385
- chore: Remove myself from dependabot reviews by @scsmithr in #1386
- build(deps): Bump even more deps by @scsmithr in #1391
- build(deps): bump sqllogictest from 0.14.0 to 0.15.0 by @dependabot in #1381
- fix(datasources): disable reading from local filesystem on remote ins… by @universalmind303 in #1376
- feat: Add background job to track storage usage by @vrongmeal in #1398
- feat: Handle duplicate schema names by @0xf333 in #1363
- test: Add SLTs for schemas by @vrongmeal in #1384
- chore: update prepare-tesdata script & contributing.md by @universalmind303 in #1399
- feat: Support glob patterns for local file scans by @vrongmeal in #1402
- feat: add close method to python by @adhish20 in #1403
- fix: Ensure we can handle catalogs without new
deployment
field by @scsmithr in #1405 - feat: Add pretty table formatting by @scsmithr in #1346
- feat: delete tables in background jobs by @adhish20 in #1409
- build(deps): Bump deps by @scsmithr in #1419
- fix: error with truncate logic by @universalmind303 in #1421
- ci: update scripts to only run integration tests when owner = glaredb by @universalmind303 in #1418
- feat: select exclude/except by @scsmithr in #1426
- feat: Use pretty tables with
show
in python by @scsmithr in #1428 - chore: add symlink to parent license in py-glaredb by @universalmind303 in #1423
- fix: Don't panic if no timezone is found by @scsmithr in #1431
- feat: Support
glob
patterns in for S3/GCS by @vrongmeal in #1410 - chore: Add some time related slts by @scsmithr in #1435
- chore: Swap bracket character in prompt by @scsmithr in #1439
- fix: display correct number of columns based on terminal width by @universalmind303 in #1443
- feat: Iceberg read support by @scsmithr in #1382
- fix: Run delete table jobs after tables are removed from catalog by @scsmithr in #1437
- feat: Support globbed location for external tables as well by @vrongmeal in #1436
- chore: Golang example by @greyscaled in #1452
- chore: Add SLTs for Iceberg + S3/GCS by @scsmithr in #1455
- release: v0.3.0 by @greyscaled in #1456
Full Changelog: v0.2.1...v0.3.0