# Trino

Published articles for Trino.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How We Refresh Razorpay's Data Warehouse 10x Faster with Graphs and Indexes

DevFeed: [How We Refresh Razorpay's Data Warehouse 10x Faster with Graphs and Indexes](<https://devfeed.tech/articles/how-we-refresh-razorpay-s-data-warehouse-10x-faster-with-graphs-and-indexes-24040.md>)

Original publisher: [Read original article](<https://engineering.razorpay.com/how-we-refresh-razorpays-data-warehouse-10x-faster-with-graphs-and-indexes-538abc244703?source=rss----6407ad2e59af---4>)

Author: Amit Prabhu

Published: 2026-07-14T14:06:16Z

Content type: article

Language: en

Sources: [Razorpay Engineering - Medium](<https://devfeed.tech/sources/razorpay-engineering-medium.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [airflow](<https://devfeed.tech/topics/airflow.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Apache Iceberg](<https://devfeed.tech/topics/apache-iceberg.md>), [microservices architecture](<https://devfeed.tech/topics/microservices-architecture.md>), [parquet](<https://devfeed.tech/topics/parquet.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [analytics](<https://devfeed.tech/tags/analytics.md>), [apache-iceberg](<https://devfeed.tech/tags/apache-iceberg.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [batch](<https://devfeed.tech/tags/batch.md>), [data](<https://devfeed.tech/tags/data.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [razorpay](<https://devfeed.tech/tags/razorpay.md>), [spark](<https://devfeed.tech/tags/spark.md>), [trino](<https://devfeed.tech/tags/trino.md>), [warehouse](<https://devfeed.tech/tags/warehouse.md>)

### AI overview

Razorpay describes its data warehouse refresh pipeline, which builds wide denormalized Facts by joining data from multiple microservices. The article covers the original Airflow- and Spark-based full-refresh process, the underlying lake formats and query layer, and the scaling challenges that led the team to reconsider refresh strategy, data layout, and high-cardinality dimensions.

### Source excerpt

Contributors: Utkarsh Koppikar Rohan Background Razorpay provides the payment infrastructure for millions of merchants globally. Behind every payment, settlement, and refund is a microservices architecture where each service owns its own database. While this keeps services independent and scalable, it creates a challenge for stakeholders who need to see across those boundaries. The Data Platform team manages the infrastructure that bridges this gap. Transactional data flows into the lake via CDC pipelines, ingested onto S3 in Delta Lake, Apache Iceberg, or plain Parquet formats. On top of the lake, we build domain-specific warehouse tables -- wide, pre-joined tables that co-locate all the data a consumer needs, queryable via Trino. These power two use cases: Analytics (internal dashboards on Tableau and Superset) and Reporting (merchants and regulated entities who download structured data exports; Razorpay generates nearly a million such reports per month). The warehouse tables that power both use cases are called Facts. A Fact is a flat denormalised table on S3, produced by joining 10 to 30 microservice tables and materialising the result once. A settlement Fact, for example, merges payments, refunds, adjustments, and card details into a single wide row so that a dashboard or report reads from a single table instead of joining across services in real time. It is closer to a domain-specific materialised view than a classical data warehouse fact table. We maintain over 50 such Facts, and approximately 40% of all merchant reports are served directly from them. As data volumes and the number of entities per fact grew, the batch generation pipeline began to show its limits, prompting us to rethink the refresh strategy, the data layout, and how to handle high-cardinality dimensions. The rest of this post covers that journey. The Full Refresh Pipeline: Our Baseline and the Pain The original full-refresh pipeline was straightforward. Schedule: Airflow schedules Spark jobs o

## Diagnosing a Deadlock in Trino's Hudi Connector That Stalled Blinkit's Inventory Pipeline

DevFeed: [Diagnosing a Deadlock in Trino's Hudi Connector That Stalled Blinkit's Inventory Pipeline](<https://devfeed.tech/articles/how-a-deadlock-froze-blinkit-s-supply-chain-20085.md>)

Original publisher: [Read original article](<https://lambda.blinkit.com/how-a-deadlock-froze-blinkits-supply-chain-4b7c4d6d4a3f?source=rss----42df4a1e8725---4>)

Author: Ratul Dawar

Published: 2026-05-29T09:26:27Z

Content type: article

Language: en

Sources: [Grofers](<https://devfeed.tech/sources/grofers.md>)

Topics: [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>)

Tags: [apache-hudi](<https://devfeed.tech/tags/apache-hudi.md>), [big-data](<https://devfeed.tech/tags/big-data.md>), [blinkit](<https://devfeed.tech/tags/blinkit.md>), [bug](<https://devfeed.tech/tags/bug.md>), [deadlock](<https://devfeed.tech/tags/deadlock.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [s3](<https://devfeed.tech/tags/s3.md>), [thread](<https://devfeed.tech/tags/thread.md>), [trino](<https://devfeed.tech/tags/trino.md>), [trinos](<https://devfeed.tech/tags/trinos.md>), [yield](<https://devfeed.tech/tags/yield.md>)

### AI overview

Blinkit describes how a deadlock in Trino's Hudi connector stalled inventory replenishment queries without errors or resource saturation. The issue involved one thread pool handling both file-split production and signalling; the reported fix used cooperative scheduling and was contributed upstream.

### Source excerpt

A silent deadlock in our query engine was stalling inventory replenishment jobs with no error, no crash -- just infinite waiting. This is the story of how we found it, traced it to an open-source bug, and fixed it upstream. TL;DRTrino's Hudi connector used a single thread pool for both producing file splits and signalling when there was room for more. Under load, every thread ended up waiting for a signal that had no thread left to run it. The fix was to switch the producer side to a cooperative scheduling pattern: yield the thread when the buffer is full, and resume when space opens. Our inventory replenishment pipeline was frozen. CPU was idle. Memory was fine. There were no errors anywhere. Queries just... stopped moving. The first signal was a long queue on one of our analytics clusters. Queries were piling up. Inventory replenishment jobs -- the jobs that decide how much stock every warehouse and store needs to hold -- were delayed. Blinkit's supply chain was being impacted. Dashboards were turning amber, but nothing was crashing. That was the unsettling part. Investigation: Resources Doing Nothing The affected cluster runs analytical workloads on Trino, reading data stored in Apache Hudi tables on S3. The natural first instinct in a queue build-up is to look at resource saturation -- a CPU spike, memory pressure, network bottleneck. There was none of that. The cluster was sitting largely idle, with CPU barely above baseline and heap usage well within limits. Every new query touching a Hudi table joined the queue and stayed there indefinitely. Queries that were already mid-execution completed fine. Only freshly submitted ones were affected. And crucially, there were no errors. No timeouts, no exceptions in the logs -- just silence and a growing backlog. A thread dump -- a snapshot of what every thread in the process is doing right now -- was our next move. It showed dozens of producer threads all stuck in the same parked state, waiting on the exact same internal signal.

## Operating Trino at Scale With Trino Gateway

DevFeed: [Operating Trino at Scale With Trino Gateway](<https://devfeed.tech/articles/operating-trino-at-scale-with-trino-gateway-19736.md>)

Original publisher: [Read original article](<https://medium.com/expedia-group-tech/operating-trino-at-scale-with-trino-gateway-41824af788de?source=rss----38998a53046f---4>)

Author: Prakhar Sapre

Published: 2026-03-24T12:01:00Z

Content type: article

Language: en

Sources: [Expedia](<https://devfeed.tech/sources/expedia.md>)

Topics: [gateway](<https://devfeed.tech/topics/gateway.md>), [Load Balancing](<https://devfeed.tech/topics/load-balancing.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [data analytics](<https://devfeed.tech/topics/data-analytics.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [analytics](<https://devfeed.tech/tags/analytics.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [clusters](<https://devfeed.tech/tags/clusters.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [data-science](<https://devfeed.tech/tags/data-science.md>), [downtime](<https://devfeed.tech/tags/downtime.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [load-balancer](<https://devfeed.tech/tags/load-balancer.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [sql](<https://devfeed.tech/tags/sql.md>), [trino](<https://devfeed.tech/tags/trino.md>), [trino-gateway](<https://devfeed.tech/tags/trino-gateway.md>), [trinos](<https://devfeed.tech/tags/trinos.md>)

### AI overview

This article explains how Trino Gateway routes queries across multiple Trino clusters and centralizes routing, authentication, load balancing, monitoring, and cluster management. It describes the project's origins as Presto Gateway at Lyft and its role in supporting larger analytics platforms with more complex workloads and higher concurrency.

### Source excerpt

Expedia Group Technology -- DataWorkload-aware routing for TrinoPhoto by Joseph Barrientos on Unsplash Trino -- a fork of PrestoSQL -- is a powerful tool in modern data analytics, enabling organizations to query large datasets quickly and efficiently. As a distributed SQL query engine, Trino provides fast, scalable insights without requiring data relocation. While Trino is robust on its own, its capabilities are further enhanced when paired with a Gateway, which introduces features such as query routing, strong security, and streamlined cluster management. A brief overview The Gateway project originated at Lyft as Presto Gateway, serving as a proxy and load balancer for PrestoDB. It was later forked and integrated into the Trino ecosystem, with contributions from various organizations and the open-source community. The Gateway serves as a central point for managing and routing queries, providing a unified interface for users and administrators. As organizations scale their analytics platforms, they often encounter challenges such as increased query complexity, higher concurrency, and the need for specialized cluster configurations. Directing users to specific cluster endpoints becomes impractical as the user base grows. A Gateway addresses these challenges by routing queries to the most appropriate clusters based on workload, improving efficiency and responsiveness. The Gateway acts as a vital intermediary between users and the Trino query engine. By abstracting the complexities of distributed query execution, it manages critical functions such as routing, authentication, and load balancing across diverse backend clusters. This ensures that queries are efficiently directed to the optimal processing cluster. With an intuitive user interface, the Gateway transforms what was once a convoluted process into a manageable and transparent experience empowering administrators with real-time insights and precise control over their backend cluster infrastructure. Whether it's mon

## When SQL Meets Lambda Expressions

DevFeed: [When SQL Meets Lambda Expressions](<https://devfeed.tech/articles/when-sql-meets-lambda-expressions-28971.md>)

Original publisher: [Read original article](<https://blog.jooq.org/when-sql-meets-lambda-expressions/>)

Author: lukaseder

Published: 2025-03-27T13:04:44Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [DuckDB](<https://devfeed.tech/topics/duckdb.md>), [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [databricks](<https://devfeed.tech/topics/databricks.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [apply](<https://devfeed.tech/tags/apply.md>), [array](<https://devfeed.tech/tags/array.md>), [array-types](<https://devfeed.tech/tags/array-types.md>), [arrays](<https://devfeed.tech/tags/arrays.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [concatenation](<https://devfeed.tech/tags/concatenation.md>), [databricks](<https://devfeed.tech/tags/databricks.md>), [duckdb](<https://devfeed.tech/tags/duckdb.md>), [filter](<https://devfeed.tech/tags/filter.md>), [function](<https://devfeed.tech/tags/function.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [scala](<https://devfeed.tech/tags/scala.md>), [snowflake](<https://devfeed.tech/tags/snowflake.md>), [sql](<https://devfeed.tech/tags/sql.md>), [trino](<https://devfeed.tech/tags/trino.md>)

### AI overview

This article explains how SQL ARRAY types and lambda expressions are supported across several modern SQL dialects. It shows how jOOQ maps Java, Kotlin, and Scala lambda expressions to SQL expressions, including filtering arrays, and describes emulation with subqueries for dialects without lambda syntax.

### Source excerpt

ARRAY types are a part of the ISO/IEC 9075 SQL standard. The standard specifies how to: But it is very unopinionated when it comes to function support. The ISO/IEC 9075-2:2023(E) 6.47 <array value expression> specifies concatenation of arrays, whereas the 6.48 <array value function> section lists a not extremely useful TRIM_ARRAY function, exclusively (using which ... Continue reading When SQL Meets Lambda Expressions ->

## jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more

DevFeed: [jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more](<https://devfeed.tech/articles/jooq-3-19-0-released-with-duckdb-trino-oracle-23c-support-join-path-improvements-an-official-gradle-plugin-commercial-maven-repositories-policies-udt-paths-trigger-meta-d-28951.md>)

Original publisher: [Read original article](<https://blog.jooq.org/jooq-3-19-0-released-with-duckdb-trino-oracle-23c-support-join-path-improvements-an-official-gradle-plugin-commercial-maven-repositories-policies-udt-paths-trigger-meta-data-hierarchies-and/>)

Author: lukaseder

Published: 2023-12-15T16:30:41Z

Content type: release

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [DuckDB](<https://devfeed.tech/topics/duckdb.md>), [CockroachDB](<https://devfeed.tech/topics/cockroachdb.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [rdbms](<https://devfeed.tech/topics/rdbms.md>), [Multi-tenancy](<https://devfeed.tech/topics/multi-tenancy.md>)

Tags: [cockroachdb](<https://devfeed.tech/tags/cockroachdb.md>), [cockroachdb-23](<https://devfeed.tech/tags/cockroachdb-23.md>), [duckdb](<https://devfeed.tech/tags/duckdb.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [implicit-joins](<https://devfeed.tech/tags/implicit-joins.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [join-paths](<https://devfeed.tech/tags/join-paths.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-19](<https://devfeed.tech/tags/jooq-3-19.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [maven](<https://devfeed.tech/tags/maven.md>), [maven-repository](<https://devfeed.tech/tags/maven-repository.md>), [multi-tenancy](<https://devfeed.tech/tags/multi-tenancy.md>), [oracle-23c](<https://devfeed.tech/tags/oracle-23c.md>), [policies](<https://devfeed.tech/tags/policies.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [releases](<https://devfeed.tech/tags/releases.md>), [row-level-security](<https://devfeed.tech/tags/row-level-security.md>), [security](<https://devfeed.tech/tags/security.md>), [trigger-meta-data](<https://devfeed.tech/tags/trigger-meta-data.md>), [triggers](<https://devfeed.tech/tags/triggers.md>), [trino](<https://devfeed.tech/tags/trino.md>), [trinodb](<https://devfeed.tech/tags/trinodb.md>), [udt-paths](<https://devfeed.tech/tags/udt-paths.md>), [udts](<https://devfeed.tech/tags/udts.md>)

### AI overview

The jOOQ 3.19.0 release adds experimental DuckDB support, Trino support, and support for CockroachDB 23 and Oracle 23c. It also improves join paths, introduces an official Gradle plugin and a commercial Maven repository, and adds policies for row-level security.

### Source excerpt

New Dialects It's been a few releases since we've added support for new dialects, but finally some very interesting RDBMS of increasing popularity have joined the jOOQ family including: These dialects are available in all jOOQ editions. New dialect versions In addition to these entirely new dialects, big new CockroachDB and Oracle versions have shipped: ... Continue reading jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more ->