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:

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.