X Tutup
Skip to content

PresightIO/flight-sql-client-node

 
 

Repository files navigation

@lakehouse-rs/flight-sql-client

https://github.com/napi-rs/package-template/actions npm version

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.

Usage

Install library

yarn add @lakehouse-rs/flight-sql-client
# or
npm install @lakehouse-rs/flight-sql-client
# or
pnpm add @lakehouse-rs/flight-sql-client

Create 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);

Configuration Options

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).

Development

Requirements:

  • Rust
  • node.js >= 12
  • Yarn

Install dependencies via

yarn install

Build native module

yarn build

Run tests

yarn test

Release

Releases 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

About

A Flight SQL client for Node.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Rust 74.3%
  • TypeScript 23.4%
  • JavaScript 2.0%
  • Shell 0.3%
X Tutup