NAME
DBIO::DuckDB - DuckDB-specific schema management for DBIO
VERSION
version 0.900000
SYNOPSIS
package MyApp::Schema;
use base 'DBIO::Schema';
__PACKAGE__->load_components('DuckDB');
my $schema = MyApp::Schema->connect('dbi:DuckDB:dbname=app.duckdb');
# or, using the `-du` shortcut:
package MyApp::Schema;
use DBIO Schema => -du;
DESCRIPTION
DBIO::DuckDB is the DuckDB driver component for DBIO. When loaded into a schema class, connection() sets "storage_type" in DBIO::Schema to +DBIO::DuckDB::Storage, which enables DuckDB-specific storage behavior.
The driver is built on top of DBD::DuckDB (which itself is a pure-FFI DBI driver -- no XS compile, only libduckdb at runtime). DuckDB is an embedded, synchronous, columnar analytical database. This driver keeps the DBI plumbing for all the boring ORM work (transactions, bind, cursor, ResultSet) and exposes the interesting DuckDB-native features as direct methods on the storage object:
"duckdb_appender" in DBIO::DuckDB::Storage -- bulk insert via the DuckDB Appender API
"duckdb_arrow_fetch" in DBIO::DuckDB::Storage -- columnar fetch path (reserved for Arrow integration)
"duckdb_read_csv" in DBIO::DuckDB::Storage, "duckdb_read_parquet" in DBIO::DuckDB::Storage, "duckdb_read_json" in DBIO::DuckDB::Storage -- table-function helpers
Schema management (install/diff/upgrade) uses the native test-deploy-and-compare strategy via DBIO::DuckDB::Deploy.
METHODS
connection
Overrides "connection" in DBIO to force +DBIO::DuckDB::Storage as storage_type.
TESTING
Tests use in-memory DuckDB databases and do not require external credentials. The t/ directory contains user-level smoke scripts (not automated TAP tests) for manually verifying the driver end-to-end against a real libduckdb install.
AUTHOR
DBIO Authors
COPYRIGHT AND LICENSE
Copyright (C) 2026 DBIO Authors
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.