Skip to content

TrinoHub v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 10:38
· 1 commit to main since this release
afc1fda

Added

  • Data products. A curated, documented bundle of tables and views with an
    owner, tags, and per-asset descriptions, managed from a new Data products
    nav view. AI clients find them by keyword through the search_data_products
    and get_data_product MCP tools, which is how an agent locates the right data
    instead of guessing from raw catalog metadata. Publishing a product describes
    data — it never widens who can read it, and products the caller has no
    cluster or catalog grant for are not listed.
  • Parameterized query templates. An operator publishes named SQL with typed
    {{placeholders}}; MCP clients call it through list_query_templates /
    run_query_template supplying values only, never SQL. Values are validated by
    declared type (string, number, boolean, date, identifier) and
    rendered as escaped literals, and the finished statement still passes the
    read-only check. A template whose SQL isn't read-only once filled in is
    rejected when it is saved, not when an agent calls it.
  • get_query_result MCP tool. run_query stops polling after ~12s and
    returns status: "running" with a query_id; that id can now be redeemed to
    keep waiting, instead of stranding the caller.
  • OAuth discovery for MCP. The server publishes RFC 9728 metadata at
    /.well-known/oauth-protected-resource (and the /mcp-suffixed form), and an
    unauthenticated /mcp call now answers with a WWW-Authenticate challenge
    pointing at it. Clients that discover authentication rather than accept a
    pasted token can connect; the configured SSO issuer is advertised as the
    authorization server.
  • MANAGE_DATA_PRODUCTS privilege, gating both curation surfaces above.
    The seeded admin role is now kept in sync with the full privilege list, so a
    database created before a privilege existed picks it up on startup.
  • MCP has its own documentation topic. The MCP screen is visible to every
    user, but its documentation lived inside the admin-only Automation & API
    topic, so an analyst could open the screen and read nothing about it. MCP
    is now a top-level, non-admin docs group, rewritten against the server: all
    eight tools, what each one may run, and how /mcp is authenticated and
    firewalled. Data products is documented alongside it.
  • Installing on a host you manage yourself is documented. The README now
    compares the three install paths — CloudFormation stack, your own host, local
    development — and walks through the apt/venv/systemd route, the instance
    profile the control plane needs, and how running off EC2 degrades.
  • This changelog, backfilled to the first tagged release. Its section for a tag
    is published as that GitHub Release's body, so release notes are written once
    rather than auto-generated from PR titles.
  • The running version is shown in the sidebar, linked to its release.
  • A test asserts the CloudFormation GitRef default matches the package
    version, so the two cannot drift apart unnoticed.

Changed

  • MCP clients can run SHOW, DESCRIBE, and EXPLAIN, not only SELECT,
    which is what makes schema discovery and query-plan inspection possible.
    EXPLAIN ANALYZE stays refused because it executes the statement it explains,
    and EXPLAIN re-validates whatever follows it so a write cannot ride in
    behind the keyword. Ask Trino is unchanged and remains SELECT-only.
  • MCP query results are capped at 100 KB, separately from the browser's
    1,000-row / 10 MB display cap. A tool result is read into a model's context
    rather than rendered in a table, so the old cap could swamp a client long
    before the data became useful. Trimmed results still report truncated: true.

Fixed

  • The unattended maintenance agent in automation/ never ran: its systemd units
    were never installed, its service unit pointed at the wrong checkout path, it
    had no git identity on the build box, and a half-built virtualenv was never
    rebuilt. All four are fixed, and a release-preparation job runs alongside it.

Upgrading

No migration or configuration change is required. The three new tables
(query_templates, data_products, data_product_assets) are created on
startup, and the seeded admin role picks up MANAGE_DATA_PRODUCTS
automatically. Back up .trinohub/ before upgrading, and upgrade an existing
instance through SSM — see the AWS upgrade guide.
New CloudFormation installations pin to the immutable v0.4.0 release.

Four things to check afterwards:

  • Custom roles do not get the new privilege. Only the system admin role is
    synced. Grant MANAGE_DATA_PRODUCTS under Users → Roles to any custom
    role whose members should publish data products or query templates. Reading a
    product needs no new privilege — the existing cluster and catalog grants still
    decide what a caller sees.
  • MCP tool results are now capped at 100 KB. A client that relied on the old
    1,000-row / 10 MB limit will see truncated: true sooner. Narrow the query, or
    page through it with run_query and get_query_result.
  • The MCP tool surface is wider than SELECT. If your review of MCP access
    assumed SELECT-only, note that SHOW, DESCRIBE, and EXPLAIN now reach
    metadata for any catalog the caller is already granted. Writes and
    EXPLAIN ANALYZE are still refused, and Ask Trino stays SELECT-only.
  • Behind a reverse proxy, set the SSO redirect base if you want OAuth
    discovery to work. The new discovery documents and the WWW-Authenticate
    challenge take their URLs from that setting when it is configured
    (PUT /api/sso/oidc, redirect_base) and from the incoming request
    otherwise, which behind a proxy is the internal address a client cannot reach.