Jan Waś and João Folgado join Manfred Moser to talk more about the amazing work on the trino-go-client that led to the recent 1.0.0 release. We learn about the rich feature set, collaborators, how we got here, performance, and next steps.
Following are highlights and selections from the releases since episode 78. Check the full release notes for details.
number data type.FOR VERSION AS OF and FOR TIMESTAMP AS OF
clauses.NEAREST clause for approximate matches in joins.variant type to the JDBC driver and the CLI.AT LOCAL operator, and the MATCH and UNIQUE
predicates.ends_with and OVERLAY string functions.OVERLAPS predicate and the title_case function.ST_Transform.As always, numerous performance improvements, bug fixes, and other features were added as well.
Jan tells us how he started with Trino at Starburst, and how his pull requests for the Go client led to him becoming its maintainer. He also maintains the Helm charts and the Grafana plugin.
João is a senior software engineer at ABC Fitness in Portugal, where his team uses Trino and Go for CRM workflows. A pull request to fix query cancellation was his start, followed by many more contributions to the Go client.
We talk about the history of the
trino-go-client, which was forked
from the original Presto driver, and the recent push for feature parity with the
JDBC driver. A tracking
issue from Sylwester
Lachiewicz listed the gaps, and he addressed
most of them. João added support for the
number type and
transactions through the
standard database/sql interface.
Jan explains how the spooling protocol works and João tells us how they implemented it with a pipeline of goroutines for fetching, downloading and decoding segments in parallel, while keeping the results in order and memory usage bounded.
We also discuss mapping the Trino data types to Go types, binding Go slices and maps as query parameters, and the breaking changes in 1.0.0. The new generic scanners replace the hand-written slice and map types, and 0.338.0 is the recommended stepping stone for upgrades. Since then, 1.1.0 added the remaining data types, including intervals, and 1.2.0 uses the new JSON v2 package and requires Go 1.27.
We chat about how AI tooling helps maintainers and contributors with gap
analysis, reviews, and the tasks nobody wants to do. Jan then demos nested data
types with generics, the variant type, time zone fixes, transactions, and the
lower memory usage with JSON v2. He also covers OAuth 2.0 and Kerberos
credential cache support.