SQL
We track 33 posts about SQL from 15 engineering blogs. Most active: jOOQ, Confluent, Gunnar Morling. Latest post: Oct 6, 2026.
Companies writing about SQL
Recent posts
Beyond synthetic testing: Capturing and replaying real database workloads at Airbnb (opens on the source site)
Airbnb ·
How we capture real production database traffic at Airbnb and replay it offline to load-test, plan capacity, and de-risk upgrades.By: Zuofei Wang, Erluo LiIntroductionAt Airbnb, MySQL-compatible databases are a critical backbone of our online database infrastructure: a fleet of hundreds of clusters supporting thousands of use cases at millions of queries per second (QPS). Operating databases at scale brings hard problems, including sizing clusters for future growth, keeping behavior consistent across version upgrades and migrations, and reproducing production incidents well enough to debug…
AI Functions in ClickHouse: Upgrade your SQL to the AI age (opens on the source site)
Explore ClickHouse AI Functions for classification, generation, translation, embeddings, semantic search, and cost controls—all directly from SQL.
Pipelined SQL in ClickHouse 26.8 (opens on the source site)
Learn how ClickHouse 26.8’s pipelined SQL syntax lets you build multi-stage queries as a readable sequence of transformations.
Access control for AI agents on Rails: gating SQL with Action Policy (opens on the source site)
Our Rails AI assistant had read-only SQL access and could still return peer review scores. Learn how we kept open-ended analytics in an in-app AI assistant while making database access honor application permissions.
Confluent Cloud for Apache Flink: Engine for Mission-Critical, Real-Time Operational Systems and dbt/SQL-Native Home for Data Science and AI (opens on the source site)
Flink now acts as a robust engine for developers through Table API, UDFs, and PTFs while offering a SQL-native, dbt-integrated platform for data science and AI teams.
Announcing Confluent Platform 8.3: Powerful Apache Flink® SQL operations, Easier KRaft Migrations, Expanded Monitoring and more. (opens on the source site)
Announcing Confluent Platform 8.3: Powerful Apache Flink® SQL operations, Easier KRaft Migrations, Expanded Monitoring and more
Using LLMs to Analyze Spark SQL Plans: A Practical Approach to Debugging Long-Running Jobs (opens on the source site)
Expedia ·
Expedia Group Technology — InnovationUsing large language models to reveal bottlenecks in Spark SQL execution plansPhoto by Luis del RíoIf you’ve ever stared at a 300-plus-node physical plan at 2 a.m. trying to spot a missing broadcast or one cursed skewed partition, this is for you.Spark makes it deceptively easy to write complex SQL that looks correct but quietly turns into a performance and cost problem at scale. A query that runs fine on day one can slow to a crawl as data grows, joins get wider, and aggregations become more nested. Suddenly, jobs take hours instead of minutes, clusters…
How to Migrate from SQL Server to PostgreSQL HA for Dockerized Apps (opens on the source site)
For many organizations, migrating from Microsoft SQL Server to PostgreSQL is no longer only about reducing licensing costs. The transition is often part of a broader modernization initiative focused on improving flexibility, scalability, and operational efficiency. PostgreSQL has evolved into one of the most mature open-source database platforms available today. It is widely adopted across […] The post How to Migrate from SQL Server to PostgreSQL HA for Dockerized Apps appeared first on Severalnines.
Simplifying ANTI JOIN with jOOQ Syntax (opens on the source site)
jOOQ ·
ANTI JOIN is a very useful operator from relational algebra. Regrettably, only few dialects support it in terms of SQL syntax, as we’ve written earlier. In jOOQ, you can write it as follows: If your RDBMS supports this natively (e.g. ClickHouse, Databricks), then it is rendered as such. Otherwise, jOOQ will translate this to: But … Continue reading Simplifying ANTI JOIN with jOOQ Syntax →
Why JOIN USING Can Lead to Errors in SQL (opens on the source site)
jOOQ ·
Some SQL operators are as esoteric as they’re powerful. One of the oldest operator that you’ve likely hardly ever used in real world applications is NATURAL JOIN which is the default in relational algebra. We’ve covered a funky use-case for NATURAL JOIN earlier on this blog. The main reason why it’s not very useful is … Continue reading Why JOIN USING Can Lead to Errors in SQL →
Write SQL Your Way: Dual Parameter Style Benefits in mssql-python (opens on the source site)
Microsoft Python Engineering ·
Reviewed by: Sumit Sarabhai If you’ve been writing SQL in Python, you already know the debate: positional parameters (?) or named parameters (%(name)s)? Some developers swear by the conciseness of positional. Others prefer the clarity of named. With mssql-python, you no longer need to choose – we support both. We’ve added dual parameter style support to mssql-python, enabling both qmark and pyformat parameter styles in Python […] The post Write SQL Your Way: Dual Parameter Style Benefits in mssql-python appeared first on Microsoft for Python Developers Blog.
Operating Trino at Scale With Trino Gateway (opens on the source site)
Expedia ·
Expedia Group Technology — DataWorkload‑aware routing for TrinoPhoto by Joseph Barrientos on UnsplashTrino — 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 overviewThe Gateway project…
Case Study | Vertec | IT Industry | SQL Parser to translate code to English (opens on the source site)
About Vertec Vertec a Swiss company founded in 1996, provides an integrated CRM and ERP solution for service providers. Their PSA (Professional Services Automation) software has over 1,200 customers across Europe enabling them to optimize business processes and boost daily productivity. Challenge Originally targeting German language companies in Switzerland and Germany, Vertec now operates in […] The post Case Study | Vertec | IT Industry | SQL Parser to translate code to English appeared first on Strumenta.
The Hidden Cost of Convenience: Rethinking Old ORM Patterns for Scale (opens on the source site)
Ever been here before? Stuck with a job that needs to be continually revisited because its performance gets worse with every passing day, and each attempt at improving said performance yields diminishing returns? This is the situation we found ourselves in with the portfolio balance calculation system—the code responsible for aggregating data from multiple sources... Read more
This AI Agent Should Have Been a SQL Query (opens on the source site)
Table of Contents Agents Need to Interact With LLMs Agents Should Be Event-Driven Agents Need Context Agents Require Memory When SQL Is Not Enough Parting Thoughts AI Agents have improved in leaps and bounds in recent times, moving beyond simple chatbots to sophisticated, autonomous systems. This post explores a novel approach to building agentic systems: using the power of streaming SQL queries. Discover how platforms like Apache Flink can transform the development of AI Agents, offering benefits in consistency, scalability, and developer experience.
A Deep Dive Into Ingesting Debezium Events From Kafka With Flink SQL (opens on the source site)
Table of Contents Flink SQL Connectors for Apache Kafka The Apache Kafka SQL Connector in Append-Only Mode The Apache Kafka SQL Connector As a Changelog Source The Upsert Kafka SQL Connector Summary Over the years, I’ve spoken quite a bit about the use cases for processing Debezium data change events with Apache Flink, such as metadata enrichment, building denormalized data views, and creating data contracts for your CDC streams. One detail I haven’t covered in depth so far is how to actually ingest Debezium change events from a Kafka topic into Flink, in particular via Flink SQL. Several…
When SQL Meets Lambda Expressions (opens on the source site)
jOOQ ·
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 specifies concatenation of arrays, whereas the 6.48 section lists a not extremely useful TRIM_ARRAY function, exclusively (using which … Continue reading When SQL Meets Lambda Expressions →
Think About SQL MERGE in Terms of a RIGHT JOIN (opens on the source site)
jOOQ ·
RIGHT JOIN is an esoteric feature in the SQL language, and hardly ever seen in the real world, because almost every RIGHT JOIN can just be expressed as an equivalent LEFT JOIN. The following two statements are equivalent: It’s not unreasonable to expect these two statements to produce the same execution plan on most RDBMS, … Continue reading Think About SQL MERGE in Terms of a RIGHT JOIN →
Save Variables in SQL (opens on the source site)
Here's how to save variables in sql for use later in the query. A with statement will provide the key feature. Make a selection (rows) and projection (columns), and you can bind that 2D result to a name. Only a single with statement is allowed in an sql script. You can create multiple variables by separating the values with commas. There's an example script below that creates a permission row, n user rows and then n mapping table rows to relate the two. There are two names bound: permission_id and user_ids. The insert statement returns an id column for the one inserted row. This means that…
Emulating SQL FILTER with Oracle JSON Aggregate Functions (opens on the source site)
jOOQ ·
A cool standard SQL:2003 feature is the aggregate FILTER clause, which is supported natively by at least these RDBMS: The following aggregate function computes the number of rows per group which satifsy the FILTER clause: This is useful for pivot style queries, where multiple aggregate values are computed in one go. For most basic types … Continue reading Emulating SQL FILTER with Oracle JSON Aggregate Functions →
Getting Top 1 Values Per Group in Oracle (opens on the source site)
jOOQ ·
I’ve blogged about generic ways of getting top 1 or top n per category queries before on this blog. An Oracle specific version in that post used the arcane KEEP syntax: This is a bit difficult to read when you see it for the first time. Think of it as a complicated way to say … Continue reading Getting Top 1 Values Per Group in Oracle →
An Efficient Way to Check for Existence of Multiple Values in SQL (opens on the source site)
jOOQ ·
In a previous blog post, we’ve advertised the use of SQL EXISTS rather than COUNT(*) to check for existence of a value in SQL. I.e. to check if in the Sakila database, actors called WAHLBERG have played in any films, instead of: Do this: (Depending on your dialect you may require a FROM DUAL clause, … Continue reading An Efficient Way to Check for Existence of Multiple Values in SQL →
Scaling Challenge Leaderboards for Millions of Athletes (opens on the source site)
Strava ·
Strava challenges offer a fun way for athletes to compete against themselves and others! Back in 2020, our legacy challenge leaderboard system was running into bottlenecks and scalability problems on a regular basis, and we often found ourselves putting out fires to keep the system stable. In late 2020 and early 2021, I worked on a project to replace the old leaderboard system with a new one that could handle a much larger number of athletes competing in challenges. This blog post is about that project. I drafted most of this post when the project wrapped up in 2021, but didn’t get it…
Workaround for MySQL’s “can’t specify target table for update in FROM clause” Error (opens on the source site)
jOOQ ·
In MySQL, you cannot do this: The UPDATE statement will raise an error as follows: SQL Error [1093] [HY000]: You can’t specify target table ‘t’ for update in FROM clause People have considered this to be a bug in MySQL for ages, as most other RDBMS can do this without any issues, including MySQL clones: … Continue reading Workaround for MySQL’s “can’t specify target table for update in FROM clause” Error →
Maven Coordinates of the most popular JDBC Drivers (opens on the source site)
jOOQ ·
Do you need to add a JDBC driver to your application, and don’t know its Maven coordinates? This blog post lists the most popular drivers from the jOOQ integration tests. Look up the latest versions directly on https://central.sonatype.com/ with parameters g:groupId a:artifactId, for example, the H2 database and driver: https://central.sonatype.com/search?q=g%3Acom.h2database+a%3Ah2 The list only includes drivers … Continue reading Maven Coordinates of the most popular JDBC Drivers →
JDBC Connection URLs of the Most Popular RDBMS (opens on the source site)
jOOQ ·
Need to connect to your RDBMS with JDBC and don’t have the JDBC connection URL or driver name at hand? No problem, just look up your RDBMS below:
How to Pass a Table Valued Parameter to a T-SQL Function with jOOQ (opens on the source site)
jOOQ ·
Microsoft T-SQL supports a language feature called table-valued parameter (TVP), which is a parameter of a table type that can be passed to a stored procedure or function. For example, you may write: This function takes a table-valued parameter (TVP), and produces a result set containing the cross product of the parameter table with itself. … Continue reading How to Pass a Table Valued Parameter to a T-SQL Function with jOOQ →
How to Turn a List of Flat Elements into a Hierarchy in Java, SQL, or jOOQ (opens on the source site)
jOOQ ·
Occasionally, you want to write a SQL query and fetch a hierarchy of data, whose flat representation may look like this: The result might be: |id |parent_id|label | |---|---------|-------------------| |1 | |C: | |2 |1 |eclipse | |3 |2 |configuration | |4 |2 |dropins | |5 |2 |features | |7 |2 |plugins | |8 |2 … Continue reading How to Turn a List of Flat Elements into a Hierarchy in Java, SQL, or jOOQ →
3.18.0 Release with Support for more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0 (opens on the source site)
jOOQ ·
DiagnosticsListener improvements A lot of additional diagnostics have been added, including the automated detection of pattern replacements, helping you lint your SQL queries irrespective of whether you’re using jOOQ to write your SQL, or if you’re using it as a JDBC / R2DBC proxy for an existing application. A lot of these diagnostics are available … Continue reading 3.18.0 Release with Support for more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0 →
How to Write a Derived Table in jOOQ (opens on the source site)
jOOQ ·
One of the more frequent questions about jOOQ is how to write a derived table (or a CTE). The jOOQ manual shows a simple example of a derived table: In SQL: In jOOQ: And that’s pretty much it. The question usually arises from the fact that there’s a surprising lack of type safety when working … Continue reading How to Write a Derived Table in jOOQ →
Related topics
This page is generated automatically from the engineering blogs we follow. Every post links to its source, where it was published. See all sources.