trino-client
    Preparing search index...

    trino-client

    trino-js-client

    A Trino client for Node.js.

    Join us on Trino Slack in #core-dev to discuss and help this project.

    @latest it-tests license

    • Connections over HTTP or HTTPS
    • Supports HTTP Basic Authentication
    • Per-query user information for access control
    • Node 12 or newer.
    • Trino 0.16x or newer.

    npm install trino-client or yarn add trino-client

    For additional info on all available methods and types have a look at the API documentation.

    const trino: Trino = Trino.create({
    server: 'http://localhost:8080',
    catalog: 'tpcds',
    schema: 'sf100000',
    auth: new BasicAuth('test'),
    });
    const iter: Iterator<QueryResult> = await trino.query(
    'select * from customer limit 100'
    );
    for await (const queryResult of iter) {
    console.log(queryResult.data);
    }
    const data: QueryData[] = await iter
    .map(r => r.data ?? [])
    .fold<QueryData[]>([], (row, acc) => [...acc, ...row]);

    More usage examples can be found in the integration tests.

    Use the following commands to build the project locally with your modifications, and in preparation to contribute a pull request.

    Requirements:

    • yarn

    Install dependencies:

    yarn install --frozen-lockfile
    

    Lint the source code:

    yarn test:lint
    

    Build:

    yarn build
    

    A successful build run does not produce any message on the terminal.

    Integration tests run against a Trino server running on your workstation.

    Requirements:

    Create a cluster:

    kind create cluster
    

    Deploy Trino:

    kubectl apply -f tests/it/trino.yml
    

    Wait for pods to be ready:

    kubectl wait --for=condition=ready pods -n trino-system --all --timeout=120s
    

    Ensure Trino is running and available on port 8080. Run the following command in a separate terminal:

    kubectl -n trino-system port-forward svc/trino 8080:8080
    

    Run tests:

    yarn test:it --testTimeout=60000
    

    Output should look similar to the following:

     PASS  tests/it/client.spec.ts
      trino
        ✓ exhaust query results (1567 ms)
        ✓ close running query (200 ms)
        ✓ cancel running query (17 ms)
        ✓ get query info (1 ms)
        ✓ client extra header propagation
        ✓ query request header propagation (88 ms)
        ✓ QueryResult has error info
        ✓ QueryInfo has failure info (1 ms)
        ✓ prepare statement (98 ms)
        ✓ multiple prepare statement (432 ms)
    
    Test Suites: 1 passed, 1 total
    Tests:       10 passed, 10 total
    Snapshots:   0 total
    Time:        3.457 s
    Ran all test suites matching /tests\/it/i.
    

    Remove the cluster:

    kind delete cluster
    

    Follow the Trino contribution guidelines and contact us on Slack and GitHub.

    Copyright Trino JS Client contributors 2022-present

    Releases are automated with GitHub Actions and only require a pull request that updates the version in package.json. For example, see PR 723