mirror of
https://github.com/googleapis/genai-toolbox.git
synced 2026-01-09 15:38:08 -05:00
Add support for Trino distributed SQL query engine with complete implementation including sources, tools, documentation, and tests. ## Summary - Add Trino source implementation with multiple authentication methods - Create trino-execute-sql tool for arbitrary SQL execution - Create trino-sql tool for parameterized queries - Add comprehensive documentation ~~and prebuilt configurations~~ - Include unit tests for all components ## Features ### Authentication Support - Basic authentication (username/password) - JWT token authentication - Kerberos authentication - SSL/TLS connections ### Tools - **trino-execute-sql**: Execute arbitrary SQL queries - **trino-sql**: Execute parameterized SQL with prepared statements - Prebuilt tools for common operations (list catalogs, schemas, tables, etc.) ### Cross-Catalog Queries - Support for federated queries across multiple data sources - Query Hive, PostgreSQL, MySQL, and other connectors in single queries - Leverage Trino's distributed query engine capabilities ## Test Plan - [x] Unit tests pass for source DSN generation - [x] Unit tests pass for tool parameter validation - [x] Project builds successfully with new dependencies - [x] Documentation includes comprehensive examples Ref #880 --------- Co-authored-by: Yuan Teoh <yuanteoh@google.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
2.8 KiB
2.8 KiB
title, type, weight, description
| title | type | weight | description |
|---|---|---|---|
| Trino | docs | 1 | Trino is a distributed SQL query engine for big data analytics. |
About
Trino is a distributed SQL query engine designed for fast analytic queries against data of any size. It allows you to query data where it lives, including Hive, Cassandra, relational databases or even proprietary data stores.
Available Tools
-
trino-sql
Execute parameterized SQL queries against Trino. -
trino-execute-sql
Execute arbitrary SQL queries against Trino.
Requirements
Trino Cluster
You need access to a running Trino cluster with appropriate user permissions for the catalogs and schemas you want to query.
Example
sources:
my-trino-source:
kind: trino
host: trino.example.com
port: "8080"
user: ${TRINO_USER} # Optional for anonymous access
password: ${TRINO_PASSWORD} # Optional
catalog: hive
schema: default
{{< notice tip >}} Use environment variable replacement with the format ${ENV_NAME} instead of hardcoding your secrets into the configuration file. {{< /notice >}}
Reference
| field | type | required | description |
|---|---|---|---|
| kind | string | true | Must be "trino". |
| host | string | true | Trino coordinator hostname (e.g. "trino.example.com") |
| port | string | true | Trino coordinator port (e.g. "8080", "8443") |
| user | string | false | Username for authentication (e.g. "analyst"). Optional for anonymous access. |
| password | string | false | Password for basic authentication |
| catalog | string | true | Default catalog to use for queries (e.g. "hive") |
| schema | string | true | Default schema to use for queries (e.g. "default") |
| queryTimeout | string | false | Query timeout duration (e.g. "30m", "1h") |
| accessToken | string | false | JWT access token for authentication |
| kerberosEnabled | boolean | false | Enable Kerberos authentication (default: false) |
| sslEnabled | boolean | false | Enable SSL/TLS (default: false) |