dart_duckdb 1.2.0
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:
- First, install SDKMAN if you haven't already:
curl -s "https://get.sdkman.io" | bash
- Open a new terminal or source SDKMAN in your current terminal:
source "$HOME/.sdkman/bin/sdkman-init.sh"
- Verify SDKMAN is installed:
sdk version
- List available Java versions:
sdk list java
- 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
- Verify the installation:
java -version
- 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:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and commit them with descriptive messages.
- Push your changes to your fork.
- 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