A client library for interacting with Arrow Flight SQL enabled databases from Node.js.
This library provides a thin wrapper around the flight-sql client implementation in the arrow-flight crate. Node bindings are created with the help of napi-rs.
Install library
yarn add @lakehouse-rs/flight-sql-client
# or
npm install @lakehouse-rs/flight-sql-client
# or
pnpm add @lakehouse-rs/flight-sql-clientCreate a new client instance
import { ClientOptions, createFlightSqlClient } from '@lakehouse-rs/flight-sql-client';
import { tableFromIPC } from 'apache-arrow';
const options: ClientOptions = {
username: 'flight_username',
password: 'testing123',
tls: false,
host: '127.0.0.1',
port: 50051,
headers: [],
// Optional timeout and keep-alive settings (all in seconds)
connectTimeout: 30, // Connection timeout (default: 300)
timeout: 60, // Request timeout (default: 300)
keepAliveInterval: 120, // Keep-alive ping interval (default: 300)
keepAliveTimeout: 30, // Keep-alive response timeout (default: 300)
};
const client = await createFlightSqlClient(options);Execute a query against the service
const buffer = await client.query('SELECT * FROM my_tyble');
const table = tableFromIPC(buffer);Or inspect some server metadata
const buffer = await client.getTables({ includeSchema: true });
const table = tableFromIPC(buffer);The ClientOptions interface supports the following timeout and connection settings:
| Option | Type | Default | Description |
|---|---|---|---|
connectTimeout |
number? |
300 | Maximum time in seconds to wait for initial connection |
timeout |
number? |
300 | Maximum time in seconds to wait for individual requests |
keepAliveInterval |
number? |
300 | Interval in seconds between keep-alive pings |
keepAliveTimeout |
number? |
300 | Maximum time in seconds to wait for keep-alive responses |
All timeout values are optional and specified in seconds. If not provided, they default to 300 seconds (5 minutes).
Requirements:
- Rust
- node.js >= 12
- Yarn
Install dependencies via
yarn installBuild native module
yarn buildRun tests
yarn testReleases are automated via github actions.
To create a release, first increment the version. (note the use of npm)
npm version <patch | minor | major | ...>this will bump all version fields, and create a new commit with the version number.
Then trigger the release.
git push --follow-tags