dart_duckdb 1.2.0 copy "dart_duckdb: ^1.2.0" to clipboard
dart_duckdb: ^1.2.0 copied to clipboard

Provides lightweight yet convenient bindings to DuckDB by using dart:ffi

DuckDB.Dart #

DuckDB.Dart is the native Dart API for DuckDB, enabling developers to harness the power of DuckDB in Dart-based applications across Apple, iOS, Android, Linux, and Windows platforms.

DuckDB Overview #

DuckDB is a high-performance analytical database system known for its speed, reliability, and ease of use. It supports a comprehensive SQL dialect, offering features such as:

  • Arbitrary and nested correlated subqueries
  • Window functions
  • Collations
  • Complex types (arrays, structs)

For more information on DuckDB's goals and capabilities, visit the Why DuckDB page.

DuckDB.Dart #

DuckDB.Dart is the native Dart API for DuckDB, enabling developers to harness the power of DuckDB in Dart-based applications across Apple, iOS, Android, Linux, and Windows platforms.

DuckDB Overview #

DuckDB is a high-performance analytical database system known for its speed, reliability, and ease of use. It supports a comprehensive SQL dialect, offering features such as:

  • Arbitrary and nested correlated subqueries
  • Window functions
  • Collations
  • Complex types (arrays, structs)

For more information on DuckDB's goals and capabilities, visit the Why DuckDB page.

Building DuckDB.dart #

  • Setup Dart SDK, Getting Started
  • Install FVM, Getting Started
  • Run Flutter Doctor to ensure everything is setup correctly. fvm flutter doctor
  • make build

Android Builds #

  • Android Studio is required to build the Android binaries, Install Studio.
  • JDK 17 is required to build the Android binaries.

Here are the step-by-step instructions to install JDK 17 using SDKMAN:

  1. First, install SDKMAN if you haven't already:
curl -s "https://get.sdkman.io" | bash
  1. Open a new terminal or source SDKMAN in your current terminal:
source "$HOME/.sdkman/bin/sdkman-init.sh"
  1. Verify SDKMAN is installed:
sdk version
  1. List available Java versions:
sdk list java
  1. Install JDK 17 (you can choose between different distributions like Oracle, Amazon Corretto, Eclipse Temurin, etc.):

Note: The exact version numbers might change over time. Use sdk list java to see the latest available versions.

For Temurin (OpenJ9):

sdk install java 17.0.12-tem
  1. Verify the installation:
java -version
  1. Set JDK 17 as default (optional):
sdk default java 17.0.12-tem

Note: If you see "Could not resolve all files for configuration ':dart_duckdb:androidJdkImage'"

try configuring flutter

flutter config --jdk-dir=PATH_TO_JDK_17

Usage Examples #

Here are some common use cases for DuckDB.Dart:

Querying a Database #

import 'package:dart_duckdb/dart_duckdb.dart';

void main() async {
  final db = await duckdb.open(":memory:");
  final connection = await duckdb.connect(db);

  await connection.execute('''
    CREATE TABLE users (id INTEGER, name VARCHAR, age INTEGER);
    INSERT INTO users VALUES (1, 'Alice', 30), (2, 'Bob', 25);
  ''');

  final result = await connection.query("SELECT * FROM users WHERE age > 28");
  final rows = result.fetchAll();

  for (final row in rows) {
    print(row);
  }

  connection.dispose();
  db.dispose();
}

Contributing #

We welcome contributions to DuckDB.Dart! If you have suggestions for improvements or bug fixes, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or bug fix.
  3. Make your changes and commit them with descriptive messages.
  4. Push your changes to your fork.
  5. Create a pull request with a detailed description of your changes.

Support and Contact #

If you encounter any issues or have questions, please check our issue tracker


Building DuckDB.Dart from Source #

Install Dependencies #

Install fvm, Getting Started

Install any platform dependencies for DuckDB. Here are the DuckDB Building Instructions. Also, the github workflows are the best examples to learn from.

Build DuckDB #

Run make from this project to build/patch duckdb.

MacOS Universal

To build for MacOS:

make macos

iOS (Requires iOS SDK)

To build for an iOS device:

make ios_device

To build for an iOS simulator:

make ios_simulator

Android (Requires Android NDK)

To build for Android:

make android

Windows (Requires MINGW64)

cd windows && ./getduck.ps1

Linux

To build for Linux:

make linux

Build DuckDB.Dart #

make build
11
likes
140
points
139
downloads

Publisher

verified publishertigereye.com

Weekly Downloads

Provides lightweight yet convenient bindings to DuckDB by using dart:ffi

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

async, collection, ffi, intl, js_interop, logging, meta, path, uuid

More

Packages that depend on dart_duckdb