tabularis-duckdb-plugin

July 27, 2026 · View on GitHub

tabularis-duckdb-plugin

Build & Release Discord

A DuckDB plugin for Tabularis, the lightweight database management tool.

This plugin enables Tabularis to work with DuckDB databases — both file-based and in-memory — providing full schema inspection, CRUD operations, view management, and DDL generation through a JSON-RPC 2.0 over stdio interface.

Discord - Join our discord server and chat with the maintainers.

Table of Contents

Features

  • File-based & In-memory databases — Open .duckdb files or work with ephemeral in-memory databases.
  • Schema Inspection — Browse tables, columns, primary keys, foreign keys, and indexes.
  • View Management — Create, alter, drop, and inspect views with full metadata.
  • SQL Execution — Run any SQL query with automatic pagination for SELECT statements.
  • Inline Editing — Insert, update, and delete records directly from the Tabularis data grid.
  • DDL Generation — Generate CREATE TABLE, ALTER TABLE, CREATE INDEX, and FOREIGN KEY statements.
  • Schema Snapshot — Fetch full schema metadata (tables, columns, foreign keys) in a single call.
  • BLOB Support — Handle binary data with base64 encoding and file reference wire formats.
  • Complex Types — Full support for DuckDB-specific types: LIST, MAP, STRUCT, UNION, ENUM, and more.
  • Bundled DuckDB — Statically embeds DuckDB; no external dependencies required at runtime.
  • Cross-platform — Pre-built binaries for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64).

Supported DuckDB Data Types

CategoryTypes
NumericTINYINT, SMALLINT, INTEGER, BIGINT, HUGEINT, UTINYINT, USMALLINT, UINTEGER, UBIGINT, UHUGEINT, FLOAT, DOUBLE, DECIMAL
StringVARCHAR, TEXT, UUID, ENUM
Date/TimeDATE, TIME, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP_NS, TIMESTAMP_MS, TIMESTAMP_S, TIME WITH TIME ZONE, INTERVAL
BinaryBLOB
JSONJSON
CompositeLIST, MAP, STRUCT, UNION
OtherBOOLEAN, BIT

Installation

Automatic (via Tabularis)

If your version of Tabularis supports plugin management, the DuckDB plugin can be installed directly from the application.

Manual Installation

  1. Download the latest release for your platform from the Releases page.
  2. Extract the archive.
  3. Copy tabularis-duckdb-plugin (or tabularis-duckdb-plugin.exe on Windows) and .tabularium into the Tabularis plugins directory:
OSPlugins Directory
Linux~/.local/share/tabularis/plugins/duckdb/
macOS~/Library/Application Support/com.debba.tabularis/plugins/duckdb/
Windows%APPDATA%\com.debba.tabularis\plugins\duckdb\
  1. Restart Tabularis.

How It Works

The plugin is a standalone Rust binary that communicates with Tabularis through JSON-RPC 2.0 over stdio:

  1. Tabularis spawns the plugin as a child process.
  2. Requests are sent as newline-delimited JSON-RPC messages to the plugin's stdin.
  3. Responses are written to stdout in the same format.

This architecture keeps the plugin fully isolated — no shared memory, no network ports, no external dependencies.

Supported Operations

MethodDescription
test_connectionVerify database connectivity
get_databasesList databases
get_schemasList schemas
get_tablesList tables in a schema
get_columnsGet column metadata for a table
get_foreign_keysGet foreign key constraints
get_indexesGet indexes for a table
get_viewsList all views
get_view_definitionGet SQL definition of a view
get_view_columnsGet columns for a view
create_viewCreate a new view
alter_viewModify an existing view
drop_viewDrop a view
execute_queryExecute SQL with pagination support
insert_recordInsert a new row
update_recordUpdate a cell by primary key
delete_recordDelete a row by primary key
get_schema_snapshotFull schema dump in one call
get_all_columns_batchAll columns for all tables
get_all_foreign_keys_batchAll foreign keys for all tables
get_create_table_sqlGenerate CREATE TABLE DDL
get_add_column_sqlGenerate ADD COLUMN DDL
get_alter_column_sqlGenerate ALTER COLUMN DDL
get_create_index_sqlGenerate CREATE INDEX DDL
get_create_foreign_key_sqlGenerate FOREIGN KEY DDL
drop_indexDrop an index
drop_foreign_keyDrop a foreign key constraint

Building from Source

Prerequisites

  • Rust (edition 2021)

Build

cargo build --release

The binary will be located at target/release/tabularis-duckdb-plugin.

Install Locally

A convenience script is provided to build and copy the plugin to the Tabularis plugins directory:

./sync.sh

Development

Testing the Plugin

Two development binaries are included for testing:

Direct DuckDB test:

cargo run --bin test

Simulated Tabularis integration test (spawns the plugin and sends JSON-RPC requests via stdio):

cargo run --bin test_plugin

Tech Stack

  • Language: Rust (edition 2021)
  • Database: DuckDB v1.1.1 (bundled/statically linked)
  • Serialization: serde + serde_json
  • Protocol: JSON-RPC 2.0 over stdio

Changelog

License

Apache License 2.0