Skip to content

JupiterMetaLabs/duckdb-logstore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77,690 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DuckDB logo

Github Actions Badge discord Latest Release

DuckDB

DuckDB is a high-performance analytical database system. It is designed to be fast, reliable, portable, and easy to use. DuckDB provides a rich SQL dialect with support far beyond basic SQL. DuckDB supports arbitrary and nested correlated subqueries, window functions, collations, complex types (arrays, structs, maps), and several extensions designed to make SQL easier to use.

DuckDB is available as a standalone CLI application and has clients for Python, R, Java, Wasm, etc., with deep integrations with packages such as pandas and dplyr.

For more information on using DuckDB, please refer to the DuckDB documentation.

Installation

If you want to install DuckDB, please see our installation page for instructions.

Data Import

For CSV files and Parquet files, data import is as simple as referencing the file in the FROM clause:

SELECT * FROM 'myfile.csv';
SELECT * FROM 'myfile.parquet';

Refer to our Data Import section for more information.

SQL Reference

The documentation contains a SQL introduction and reference.

Development

For development, DuckDB requires CMake, Python 3 and a C++17 compliant compiler. In the root directory, run make to compile the sources. For development, use make debug to build a non-optimized debug version. You should run make unit and make allunit to verify that your version works properly after making changes. To test performance, you can run BUILD_BENCHMARK=1 BUILD_TPCH=1 make and then perform several standard benchmarks from the root directory by executing ./build/release/benchmark/benchmark_runner. The details of benchmarks are in our Benchmark Guide.

Please also refer to our Build Guide and Contribution Guide.

Support

See the Support Options page and the dedicated endoflife.date page.

Append-Only Mode

This fork patches DuckDB to enforce append-only semantics at the binder level. Once a row is inserted, it cannot be mutated or removed — enforced inside the engine itself, not at the application layer.

What is blocked

Operation Error
UPDATE Append-only mode: UPDATE is not permitted. This store is immutable after insert.
DELETE Append-only mode: DELETE is not permitted. This store is immutable after insert.
MERGE INTO Append-only mode: MERGE INTO is not permitted. This store is immutable after insert.
ALTER TABLE ... DROP COLUMN Append-only mode: REMOVE_COLUMN is not permitted.
ALTER TABLE ... ALTER COLUMN TYPE Append-only mode: MODIFY_COLUMN is not permitted.

What is still allowed

INSERT, SELECT, CREATE TABLE, DROP TABLE, ALTER TABLE ... ADD COLUMN, ALTER TABLE ... RENAME COLUMN/TABLE — all work normally.

How it works

All five guards live in a single function: Binder::Bind() in src/planner/binder.cpp. The binder is the first stage that has full type and statement information, so the error is raised before any execution plan is produced — no storage or optimizer code is touched.

Using with Go

The Go package (github.com/marcboeker/go-duckdb) compiles DuckDB from its amalgamation source via CGO. To use this append-only build:

# 1. Generate the amalgamation from this patched source
make amalgamation

# 2. Vendor the Go package and replace its amalgamation
go mod vendor
cp build/amalgamation/duckdb.cpp vendor/github.com/marcboeker/go-duckdb/duckdb.cpp
cp build/amalgamation/duckdb.hpp vendor/github.com/marcboeker/go-duckdb/duckdb.hpp

# 3. Build — the append-only engine is now statically linked into your binary
go build ./...

No runtime download. The restrictions are baked into the compiled binary.

About

DuckDB fork - append-only embedded columnar SQL engine for blockchain event logs.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors