From 185ac5e01e8c62757c81cdc1d92cffcf6b55f500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96nder=20Kalac=C4=B1?= Date: Fri, 29 Sep 2023 16:50:52 +0300 Subject: [PATCH] Citus Technical Readme (#7207) This commit aims to add a comprehensive guide that covers all essential aspects of Citus, including planning, execution, locking mechanisms, shard moves, 2PC, and many other major components of Citus. Co-authored-by: Marco Slot --- CONTRIBUTING.md | 6 + README.md | 8 +- images/2pc-recovery.png | Bin 0 -> 97237 bytes .../citus-architecture.png | Bin .../citus-readme-banner.png | Bin .../citus-scale-out.png | Bin images/deadlock-detection.png | Bin 0 -> 104340 bytes images/executor-connections.png | Bin 0 -> 29460 bytes images/executor-slow-start.png | Bin 0 -> 70810 bytes images/insert-select-modes.png | Bin 0 -> 113533 bytes images/mx-dedicated-query-nodes.png | Bin 0 -> 12702 bytes images/single-repartition-join.png | Bin 0 -> 171476 bytes src/backend/distributed/README.md | 2460 +++++++++++++++++ 13 files changed, 2471 insertions(+), 3 deletions(-) create mode 100755 images/2pc-recovery.png rename citus-architecture.png => images/citus-architecture.png (100%) rename citus-readme-banner.png => images/citus-readme-banner.png (100%) rename citus-scale-out.png => images/citus-scale-out.png (100%) create mode 100755 images/deadlock-detection.png create mode 100755 images/executor-connections.png create mode 100755 images/executor-slow-start.png create mode 100755 images/insert-select-modes.png create mode 100755 images/mx-dedicated-query-nodes.png create mode 100755 images/single-repartition-join.png create mode 100644 src/backend/distributed/README.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac1f600ab..34bbf780c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -240,3 +240,9 @@ Any other SQL you can put directly in the main sql file, e.g. ### Running tests See [`src/test/regress/README.md`](https://github.com/citusdata/citus/blob/master/src/test/regress/README.md) + +### Documentation + +User-facing documentation is published on [docs.citusdata.com](https://docs.citusdata.com/). When adding a new feature, function, or setting, you can open a pull request or issue against the [Citus docs repo](https://github.com/citusdata/citus_docs/). + +Detailed descriptions of the implementation for Citus developers are provided in the [Citus Technical Documentation](src/backend/distributed/README.md). It is currently a single file for ease of searching. Please update the documentation if you make any changes that affect the design or add major new features. diff --git a/README.md b/README.md index fd4564189..2cf17098f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ -![Citus Banner](/citus-readme-banner.png) +![Citus Banner](images/citus-readme-banner.png) [![Latest Docs](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://docs.citusdata.com/) [![Stack Overflow](https://img.shields.io/badge/Stack%20Overflow-%20-545353?logo=Stack%20Overflow)](https://stackoverflow.com/questions/tagged/citus) @@ -31,7 +31,7 @@ You can use these Citus superpowers to make your Postgres database scale-out rea Our [SIGMOD '21](https://2021.sigmod.org/) paper [Citus: Distributed PostgreSQL for Data-Intensive Applications](https://doi.org/10.1145/3448016.3457551) gives a more detailed look into what Citus is, how it works, and why it works that way. -![Citus scales out from a single node](/citus-scale-out.png) +![Citus scales out from a single node](images/citus-scale-out.png) Since Citus is an extension to Postgres, you can use Citus with the latest Postgres versions. And Citus works seamlessly with the PostgreSQL tools and extensions you are already familiar with. @@ -423,12 +423,14 @@ A Citus database cluster grows from a single PostgreSQL node into a cluster by a Data in distributed tables is stored in “shards”, which are actually just regular PostgreSQL tables on the worker nodes. When querying a distributed table on the coordinator node, Citus will send regular SQL queries to the worker nodes. That way, all the usual PostgreSQL optimizations and extensions can automatically be used with Citus. -![Citus architecture](/citus-architecture.png) +![Citus architecture](images/citus-architecture.png) When you send a query in which all (co-located) distributed tables have the same filter on the distribution column, Citus will automatically detect that and send the whole query to the worker node that stores the data. That way, arbitrarily complex queries are supported with minimal routing overhead, which is especially useful for scaling transactional workloads. If queries do not have a specific filter, each shard is queried in parallel, which is especially useful in analytical workloads. The Citus distributed executor is adaptive and is designed to handle both query types at the same time on the same system under high concurrency, which enables large-scale mixed workloads. The schema and metadata of distributed tables and reference tables are automatically synchronized to all the nodes in the cluster. That way, you can connect to any node to run distributed queries. Schema changes and cluster administration still need to go through the coordinator. +Detailed descriptions of the implementation for Citus developers are provided in the [Citus Technical Documentation](src/backend/distributed/README.md). + ## When to use Citus Citus is uniquely capable of scaling both analytical and transactional workloads with up to petabytes of data. Use cases in which Citus is commonly used: diff --git a/images/2pc-recovery.png b/images/2pc-recovery.png new file mode 100755 index 0000000000000000000000000000000000000000..8fbe80124a2f98edcff81b466bf3a2bb1872ef6f GIT binary patch literal 97237 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 literal 0 HcmV?d00001 diff --git a/citus-architecture.png b/images/citus-architecture.png similarity index 100% rename from citus-architecture.png rename to images/citus-architecture.png diff --git a/citus-readme-banner.png b/images/citus-readme-banner.png similarity index 100% rename from citus-readme-banner.png rename to images/citus-readme-banner.png diff --git a/citus-scale-out.png b/images/citus-scale-out.png similarity index 100% rename from citus-scale-out.png rename to images/citus-scale-out.png diff --git a/images/deadlock-detection.png b/images/deadlock-detection.png new file mode 100755 index 0000000000000000000000000000000000000000..3a7eeb25ba6348f9191fd46c03d7fdc04de13c95 GIT binary patch literal 104340 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°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 Zfnlu+bEvJ^&SV8_HL}=}v)T2`zX5Q*VoCr2 literal 0 HcmV?d00001 diff --git a/images/executor-connections.png b/images/executor-connections.png new file mode 100755 index 0000000000000000000000000000000000000000..064b43353d561a078bb50b0b09ecc21e92270a4d GIT binary patch literal 29460 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Π+YjiugdX9h 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 Utk8c67E+j&hTfH2HCzAx1$maJ#sB~S literal 0 HcmV?d00001 diff --git a/images/executor-slow-start.png b/images/executor-slow-start.png new file mode 100755 index 0000000000000000000000000000000000000000..6ab32eb81b037e7bea64a3bc2fc4080c94e79b94 GIT binary patch literal 70810 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 a&y|Qs%ey*)To7mQr+?a5mvr)S^nU;u*dieS literal 0 HcmV?d00001 diff --git a/images/insert-select-modes.png b/images/insert-select-modes.png new file mode 100755 index 0000000000000000000000000000000000000000..6d5de65dce8ddad5f5a2a002351fa661b06f2a17 GIT binary patch literal 113533 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 z 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≧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 Ki>ha~@BTMIv5_GF literal 0 HcmV?d00001 diff --git a/src/backend/distributed/README.md b/src/backend/distributed/README.md new file mode 100644 index 000000000..9f2082f04 --- /dev/null +++ b/src/backend/distributed/README.md @@ -0,0 +1,2460 @@ + +# Citus Technical Documentation + +The purpose of this document is to provide comprehensive technical documentation for Citus, in particular the distributed database implementation. + +# Table of Contents +- [Citus Concepts](#citus-concepts) + - [Principles](#principles) +- [Use of hooks](#use-of-hooks) +- [Query planner](#query-planner) + - [High-level design/flow:](#high-level-designflow) + - [Distributed Query Planning with Examples in Citus (as of Citus 12.1)](#distributed-query-planning-with-examples-in-citus-as-of-citus-121) + - [Logical Planner & Optimizer](#logical-planner--optimizer) + - [Combine query planner](#combine-query-planner) + - [Restriction Equivalence](#restriction-equivalence) + - [Recurring Tuples](#recurring-tuples) +- [Executor](#executor) + - [Custom scan](#custom-scan) + - [Function evaluation](#function-evaluation) + - [Prepared statements](#prepared-statements) + - [Adaptive executor](#adaptive-executor) + - [Local execution](#local-execution) + - [Subplans](#subplans) + - [Re-partitioning](#re-partitioning) + - [COPY .. FROM command](#copy--from-command) + - [COPY .. TO command](#copy--to-command) + - [INSERT..SELECT](#insertselect) + - [Merge command](#merge-command) +- [DDL](#ddl) + - [Object & dependency propagation](#object--dependency-propagation) + - [Foreign keys](#foreign-keys) + - [DROP Table](#drop-table) +- [Connection management](#connection-management) + - [Connection management](#connection-management-1) + - [Placement connection tracking](#placement-connection-tracking) + - [citus.max_cached_connections_per_worker](#citusmax_cached_connections_per_worker) + - [citus.max_shared_pool_size](#citusmax_shared_pool_size) +- [Transactions (2PC)](#transactions-2pc) + - [Single-node transactions](#single-node-transactions) + - [Multi-node transactions](#multi-node-transactions) + - [No distributed snapshot isolation](#no-distributed-snapshot-isolation) + - [Distributed Deadlocks](#distributed-deadlocks) +- [Locking](#locking) + - [Lock Levels](#lock-levels) + - [Lock Monitoring](#lock-monitoring) + - [Lock Types](#lock-types) +- [Rebalancing](#rebalancing) + - [Rebalancing algorithm](#rebalancing-algorithm) + - [Shard moves](#shard-moves) + - [Shard splits](#shard-splits) + - [Background tasks](#background-tasks) + - [Resource cleanup](#resource-cleanup) +- [Logical decoding / CDC](#logical-decoding--cdc) + - [CDC ordering](#cdc-ordering) +- [Global PID](#global-pid) +- [Function call delegation](#function-call-delegation) +- [Query from any node](#query-from-any-node) + - [Why didn’t we have dedicated Query Nodes and Data Nodes?](#why-didnt-we-have-dedicated-query-nodes-and-data-nodes) + - [Shard visibility](#shard-visibility) + +# Citus Concepts + +**Citus table**: A table managed by Citus through PostgreSQL hooks. Whenever the table is involved in a command, the command is handled by Citus. + +**Shell table**: The “original” (inaccessible) PostgreSQL table which has been converted to a Citus table. Every node has shell tables and the corresponding Citus metadata. + +**Metadata**: The Citus catalog tables, shell tables, and dependent objects that are replicated to all nodes to enable distributed queries from those nodes. + +**Metadata syncing**: The process of replicating metadata from the coordinator to other nodes, which happens when adding a node or any change to the metadata. + +There are several types of Citus tables: + +**Distributed tables** are created using `SELECT create_distributed_table('table_name', 'distribution_column')`. They have a distribution column and for each row the value in the distribution column determines to which shard the row is assigned. There are 3 different partitioning schemes for distributed tables, though only the first is supported: + +- Hash-distributed tables have a range of hash values in shardminvalue/shardmaxvalue in pg_dist_shard +- Range-distributed tables (deprecated) have shards with a distinct range of values in pg_dist_shard +- Append-distributed tables (deprecated) have shards with a range of values in pg_dist_shard, though the ranges can overlap. + +Hash-distributed tables can be **co-located** with each other, such that the shards with the same hash value range are always on the same node. From the planner point-of-view, range-distributed tables can also be colocated, but shards are not managed by Citus. + +Shards can be replicated (deprecated), in which case they have multiple shard placements. Writes to the placements are performed using 2PC and use aggressive locking to avoid diverging. + +**Reference tables** are created using SELECT create_reference_table(..). They have a single shard, which is replicated to all nodes. It is possible to have a node without reference table replicas, but in that case the reference tables are replicated before the next rebalance. Reference tables are always co-located with each other and have a common co-location ID. + +Writes to a reference table are performed using 2PC and use aggressive locking to avoid diverging. + +**Single shard tables** are a special type of distributed table without a distribution column and with a single shard. When using schema-based sharding, tables created in a distributed schema automatically become single shard tables. Single shard tables can be co-located with each other, but not replicated. Single shard tables can be explicitly created using `SELECT create_distributed_table('table_name', NULL);`, though are meant to be auto-generated by schema-based sharding. + +**Citus local tables**: A single shard table that can only be placed on the coordinator and are primarily used as a drop-in replacement for regular PostgreSQL tables when creating foreign keys to/from reference tables. All Citus local tables are implicitly co-located with each other, but do not have a co-location ID. Citus local tables can be explicitly created using `SELECT citus_add_local_table_to_metadata('table_name');`, though are meant to be auto-generated by foreign keys. + +All Citus table types have the notion of a “shard”, though in many cases there is only a single shard. + +**Shard**: The table that contains the actual data in a Citus table. Shards reside in the same schema as the Citus table and are named after the Citus table with the shard ID as a suffix. Shards are hidden from catalog queries unless you SET citus.override_table_visibility TO off. Hash-distributed tables have multiple shards, each of which has distinct shardminvalue/shardmaxvalue. + +**Colocation group**: A set of distributed tables that have the same co-location ID, such that their shards are always co-located. + +**Shard group**: A set of shards with the same shardminvalue/shardmaxvalue that are part of the same co-location group. Citus guarantees that shards from the same shard group are always placed on the same node group. + +**Shard placement**: The assignment of a shard to a node group. There can be multiple placements of the same shard if the table is replicated (e.g. reference tables). + +**Shard group placement**: The assignment of a shard to a node group must be the same for all shards in a shard group, since those are always co-located. We’ll refer to the group of placements of a shard group as a shard group placement. + +**Node**: A single PostgreSQL/Citus server listed in pg_dist_node and added via SELECT citus_add_node(..). + +**Node group**: Each primary node can have 0 or more physical replicas in read replica clusters. Together the nodes form a node group identified by the groupid in pg_dist_node. Per convention, the coordinator(s) have group ID 0. Each node can know its own node groupid by reading it from pg_dist_local_group. + +**Coordinator**: The node with groupid 0, which can perform reads, writes, and administrative operations such as adding a node, rebalancing, and schema changes. + +**Worker nodes**: Nodes with groupid > 0, which can perform reads and writes, but not administrative operations. + +**Cluster**: The combination of worker nodes and coordinator is a cluster. When the cluster has a read replica, the nodes in the read replica are listed in pg_dist_node with a different nodecluster value, and the servers have a corresponding citus.cluster_name in their postgresql.conf. That way, nodes know which other nodes in pg_dist_node belong to their cluster, and they will ignore others. + +**Read replica cluster**: In a read replica cluster, every node is a physical replica of a node in a primary Citus cluster. The read replica has a distinct citus.cluster_name value and the nodes in the read replica cluster should be added to pg_dist_node on the primary coordinator with the corresponding cluster name. + +**Client connections**: Connections made by the client to any of the nodes in the cluster. Each client connection is backed by a postgres process/backend, which we sometimes refer to as a client session. + +**Internal connections**: Connections to other nodes made by a command running on a client session. Each internal connection is backed by a process, which we sometimes refer to as an internal session. In the code, you can use IsCitusInternalBackend() + +**Maintenance daemon**: A background worker that is started in each database that has the Citus extension. It performs distributed deadlock detection, 2PC recovery, synchronizing node metadata after citus_update_node, resource cleanup, and other tasks. + +In the query planner, we use the following terminology: + +**Distributed query**: A query sent by the client that involves a Citus table and is therefore handled by the distributed query planner. + +**Shard query**: An internal query on shards (at most 1 shard group). + +**Intermediate result**: A temporary file that contains the result of a subquery or CTE, created as a result of a broadcast or repartition operation. Intermediate results are automatically cleaned up on transaction end or restart. + +## Principles + +Use cases: + +- Multi-tenant apps are the primary use case for Citus, which we can scale through distributing and co-locating by tenant ID, or through schema-based sharding. Citus is reasonably complete for this use case, but there are still SQL and operational improvements that can be made. +- Real-time analytics is another popular use case due the combination of parallel distributed queries with indexes & in-database materialization (ETL). Improvement areas include automated time partitioning, better columnar storage (perf and update/delete), and incremental materialized views. +- Citus works well for CRUD use cases, but would be far easier to use if we introduced a load balancer, DDL from any node (no explicit coordinator), and by better use of connection pooling for better performance (e.g. outbound pgbouncers). +- Marketplace use cases could work well if we made it easier to distribute tables twice by different dimensions or made it easier to keep paired tables in sync. + +Schema management: + + - Our goal is for all DDL commands on Citus tables to work transparently, and for global DDL commands (e.g. CREATE TYPE) to be propagated to all nodes. Not all DDL is implemented yet and may either error or not propagate. + - Since we cannot define custom DDL commands for sharding operations, we use functions that are called from a SELECT query. + +Query layer: + +- No incompatibilities with PostgreSQL – any query on a Citus table is supported on an equivalent PostgreSQL table. +- We optimize for maximum pushdown (& performance) over complete compatibility, but our long-term goal is for all queries to be supported in all cases. +- For single-shard queries, it is useful to avoid detailed query analysis through the fast path planner (simple, single table) and router planner (co-located joins) layers. However, multi-shard queries can go through disparate code paths that were added out of expediency and should eventually be unified. + +Transactional semantics: + +- Transactions scoped to a single node follow the same semantics as PostgreSQL. +- Transactions across nodes are atomic, durable, and consistent, but do not have full snapshot isolation: A multi-shard query may see a concurrently committing transaction as committed on one node, but not yet committed on another node. +- Read-your-writes consistency should be preserved. +- Monotonic read consistency should be preserved for tables without replication, may not always be the case for replicated/reference tables. + +Replication model: + +- High availability is achieved through hot standby nodes managed by a control plane or PostgreSQL HA solution like Patroni or pg_auto_failover. +- Read replicas are Citus clusters in which each node is a physical replica of a node in another Citus cluster. +- Hot standby nodes are, at the time of writing, not in the metadata. Instead, the hostname/IP is replaced or rerouted at failover time. +- The deprecated “statement based” replication is (as of Citus 11.0+) only useful for providing read scalability, not for HA as all modifications are done via 2PC. Reference tables do use statement-based replication. + +# Use of hooks + +A PostgreSQL extension consists of two parts: a set of SQL objects (e.g. metadata tables, functions, types) and a shared library that is loaded into PostgreSQL and can alter the behavior of PostgreSQL by setting certain hooks. You can find a high-level description of these concepts in [this talk](https://learn.microsoft.com/en-us/events/azure-cosmos-db-liftoff/foundations-of-distributed-postgresql-with-citus). + +Citus uses the following hooks: + +**User-defined functions (UDFs)** are callable from SQL queries as part of a transaction, but have an implementation in C, and are primarily used to manipulate the Citus metadata and implement remote procedure calls between servers. + +**Planner and executor hooks** are global function pointers that allow an extension to provide an alternative query plan and execution method. After PostgreSQL parses a query, Citus checks if the query involves a Citus table. If so, Citus generates a plan tree that contains a CustomScan operator, which encapsulates distributed query plan. + +**CustomScan** is an operator in a PostgreSQL query plan that returns tuples via custom function pointers. The Citus CustomScan calls the distributed query executor, which sends queries to other servers and collects the results before returning them to the PostgreSQL executor. + +**Transaction callbacks** are called at critical points in the lifecycle of a transaction (e.g. pre-commit, post-commit, abort). Citus uses these to implement distributed transactions. + +**Utility hook** is called after parsing any command that does not go through the regular query planner. Citus uses this hook primarily to apply DDL and COPY commands that affect Citus tables. + +**Background workers** run user-supplied code in separate processes. Citus uses this API to run a maintenance daemon. This daemon performs distributed deadlock detection, 2PC prepared transaction recovery, and cleanup. + +Through these hooks, Citus can intercept any interaction between the client and the PostgreSQL engine that involves Citus tables. Citus can then replace or augment PostgreSQL's behavior. + +# Query planner + +Citus has a layered planner architecture that accommodates different workloads. There are several useful presentations/papers that are relevant to Citus’ distributed planner, below we try to categorize them: + +## High-level design/flow: + +- Distributing Queries the Citus Way: Marco’s PG Con presentation provides a good introduction: https://postgresconf.org/system/events/document/000/000/233/Distributing_Queries_the_Citus_Way.pdf + +- Another useful content on this topic is the Planner README.md: https://github.com/citusdata/citus/blob/main/src/backend/distributed/planner/README.md + +- Onder’s talk at CitusCon: https://www.youtube.com/watch?v=raw3Pwv0jb8 +- Citus paper: https://dl.acm.org/doi/pdf/10.1145/3448016.3457551 + +- Logical planner design - 1: https://speakerdeck.com/marcocitus/scaling-out-postgre-sql + +- Logical Planner design - 2: https://www.youtube.com/watch?v=xJghcPs0ibQ + +- Logical Planner based on the paper: Correctness of query execution strategies in distributed databases: https://dl.acm.org/doi/pdf/10.1145/319996.320009 + +## Distributed Query Planning with Examples in Citus (as of Citus 12.1) + +This part of the documentation aims to provide a comprehensive understanding of how Citus handles distributed query planning with examples. We will use a set of realistic tables to demonstrate various queries. Through these examples, we hope to offer a step-by-step guide on how Citus chooses to plan queries. + +Citus hooks into the PostgreSQL planner using the top-level planner_hook function pointer, which sees the query tree after parsing and analysis. If the query tree contains a Citus table, we go through several planner stages: fast path planner, router planner, recursive planning, logical planner & optimizer. Each stage can handle more complex queries than the previous, but also comes with more overhead. That way, we can handle a mixture of high throughput transactional workloads (without adding significant planning overhead), as well as more complex analytical queries (with more sophisticated distributed query execution). For specific types of queries (e.g. insert..select), we have separate planner code paths. + +For a more comprehensive high-level overview of the planner, go to https://postgresconf.org/system/events/document/000/000/233/Distributing_Queries_the_Citus_Way.pdf + +### Table definitions used in this section + +```sql +-- Distributed Table: Users Table +CREATE TABLE users_table ( + user_id bigserial PRIMARY KEY, + username VARCHAR(50) NOT NULL, + email VARCHAR(50), + date_of_birth DATE, + country_code VARCHAR(3) +); +SELECT create_distributed_table('users_table', 'user_id'); + +-- Distributed Table: Orders Table +CREATE TABLE orders_table ( + order_id bigserial, + user_id BIGINT REFERENCES users_table(user_id), + product_id BIGINT, + order_date TIMESTAMPTZ, + status VARCHAR(20) +); +SELECT create_distributed_table('orders_table', 'user_id'); + + +-- Distributed Table: Products Table +CREATE TABLE products_table ( + product_id bigserial PRIMARY KEY, + product_name VARCHAR(100), + category_id INT, + price NUMERIC(10, 2) +); +SELECT create_distributed_table('products_table', 'product_id'); + +-- Reference Table: Country Codes +CREATE TABLE country_codes ( + country_code VARCHAR(3) PRIMARY KEY, + country_name VARCHAR(50) +); + +-- Reference Table: Order Status +CREATE TABLE order_status ( + status VARCHAR(20) PRIMARY KEY, + description TEXT +); +SELECT create_reference_table('order_status'); + +-- Reference Table: Product Categories +CREATE TABLE product_categories ( + category_id INT PRIMARY KEY, + category_name VARCHAR(50) +); +SELECT create_reference_table('product_categories'); +``` + +## Fast Path Router Planner + +The Fast Path Router Planner is specialized in optimizing queries that are both simple in structure and certain to touch a single shard. Importantly, it targets queries on a single shard distributed, citus local or reference tables. This does not mean the planner is restricted to trivial queries; it can handle complex SQL constructs like `GROUP BY`, `HAVING`, `DISTINCT`, etc., as long as these operate on a single table and involve an equality condition on the distribution key (`distribution_key = X`). The main SQL limitation for fast path distributed query planning is the subquery/CTE support. Those are left to the next planner: Router planner. + +The aim of this planner is to avoid relying on PostgreSQL's standard_planner() for planning, which performs unnecessary computations like cost estimation, irrelevant for distributed planning. Skipping the standard_planner has significant performance gains for OLTP workloads. By focusing on "shard-reachable" queries, the Fast Path Router Planner is able to bypass the need for more computationally expensive planning processes, thereby accelerating query execution. + +### Main C Functions Involved: + +- `FastPathRouterPlan()`: The primary function for creating the fast-path query plan. +- `FastPathRouterQuery()`: Validates if a query is eligible for fast-path routing by checking its structure and the WHERE clause. + +With set client_min_messages to debug4; you should see the following in the DEBUG messages: "DEBUG: Distributed planning for a fast-path router query" + +```sql +-- Fetches the count of users born in the same year, but only +-- for a single country +SELECT EXTRACT(YEAR FROM date_of_birth) as birth_year, COUNT(*) +FROM users_table +WHERE country_code = 'USA' AND user_id = 15 +GROUP BY birth_year +HAVING COUNT(*) > 10; +``` + +```sql +-- all INSERT commands are by definition fast path +-- router queries in the sense that they do not +-- need any information from Postgres' standard_planner() +INSERT INTO orders_table (user_id, product_id, order_date, status) +VALUES (42, 555, now(), 'NEW'); +``` + +```sql +-- UPDATE/DELETEs can also be qualified as fast path router +-- queries +UPDATE products_table SET price = price * 1.1 WHERE product_id = 555; +``` + +Fast path queries have another important characteristic named "deferredPruning." + +For regular queries, Citus does the shard pruning during the planning phase, meaning that the shards that the query touches are calculated during the planning phase. However, in an ideal world, the shard pruning should happen during the execution and, for a certain class of queries, we support that. In the code, that is denoted by "Job->deferredPruning" field. + +Given that fast path queries are performance critical, they can be planned with prepared statements. When this is done, "Job->deferredPruning" becomes "true". And, the meaning of that is Citus can support PREPARED statements as expected. The first 6 executions of the plan do distributed planning, the rest is cached similar to Postgres' plan caching, and the shard pruning is done during the execution phase. And, if you attach a debugger, you'd see that on the first 6 executions, the debugger will stop at distributed_planner() function, but on the rest, it will not. The shard pruning for the cached command will happen in CitusBeginScan() function. + +To see that in action, checkout the DEBUG messages: + +```sql +set client_min_messages to debug4; +PREPARE p1 (bigint) AS SELECT * FROM users_table WHERE user_id = $1; + +-- 1st execute +execute p1(1); +DEBUG: Deferred pruning for a fast-path router query +DEBUG: Creating router plan +.... +(0 rows) + +-- 2nd execute +execute p1(1); +DEBUG: Deferred pruning for a fast-path router query +DEBUG: Creating router plan +.... +(0 rows) +... +execute p1(1); +execute p1(1); +execute p1(1); +... + +-- 6th execute +execute p1(1); +DEBUG: Deferred pruning for a fast-path router query +DEBUG: Creating router plan +.... +(0 rows) + +-- now, on the 7th execute, you would **NOT** see the fast-path +-- planning anymore, because the query comes from Postgres' +-- query cache +execute p1(1); +DEBUG: constraint value: '1'::bigint +DEBUG: shard count after pruning for users_table: 1 +DEBUG: opening 1 new connections to localhost:9702 +DEBUG: established connection to localhost:9702 for session 8 in 9499 microseconds +DEBUG: task execution (0) for placement (46) on anchor shard (102049) finished in 1281 microseconds on worker node localhost:9702 +DEBUG: Total number of commands sent over the session 8: 1 to node localhost:9702 +(0 rows) +``` + + +## Router Planner in Citus + +### Overview + +The Router Planner plays a key role in Citus' query optimization landscape. While sharing some common traits with the Fast Path Router Planner, it offers unique capabilities as well. Router (and fast path router) planners are the bedrock for the multi-tenant use cases. + +#### Similarities with Fast Path Router Planner + +- **Single Node Routing**: Both planners send queries to a single node. Unlike the Fast Path Planner, the Router Planner can work with multiple colocated tables, provided they have filters on their distribution columns. + +- **Query Routing Mechanics**: Router Planner takes the query, verifies if it can be routed, and if so, it replaces original table names with their corresponding shard names, directing the query to the appropriate nodes. + +#### Differences + +- **Subqueries and CTEs**: The Router Planner can manage subqueries and Common Table Expressions (CTEs), routing the entire query to a single node as long as all involved tables have filters on their distribution columns. + +- **Standard Planner Reliance**: Router Planner relies on PostgreSQL's `standard_planner()` to learn the necessary filter restrictions on the tables. + +#### Main C Functions Involved + +- `PlanRouterQuery()`: Responsible for creating the router plan. +- `TargetShardIntervalsForRestrictInfo()`: Retrieves the shard intervals based on restrictions provided by PostgreSQL's `standard_planner()`. + +### Example Router Planner Queries + +```sql +-- Fetch user data and their respective orders for a given user_id +SELECT u.username, o.order_id +FROM users_table u, orders_table o +WHERE u.user_id = o.user_id AND u.user_id = 42; + +-- With Subqueries: + +-- Fetch the username and their total order amount +-- for a specific user +SELECT u.username, + (SELECT MAX(o.product_id) FROM orders_table o + WHERE o.user_id = 42 AND + o.user_id = u.user_id) +FROM users_table u +WHERE u.user_id = 42; + +-- Router planner works with CTEs (and UPDATE/DELETE Query): +-- Update the status of the most recent order for a specific user +WITH RecentOrder AS ( + SELECT MAX(order_id) as last_order_id + FROM orders_table + WHERE user_id = 42 +) +UPDATE orders_table +SET status = 'COMPLETED' +FROM RecentOrder +WHERE orders_table.user_id = 42 AND + orders_table.order_id = RecentOrder.last_order_id; +``` + + +## Query Pushdown Planning in Citus + +### Overview + +While Router and Fast-Path Router Planners are proficient at dealing with single-shard commands—making them ideal for multi-tenant and OLTP applications—Citus also excels in analytical use-cases. In these scenarios, a single query is broken down into multiple parallel sub-queries, which are run on various shards across multiple machines, thereby speeding up query execution times significantly. + +#### What is Query Pushdown Planning? + +Query Pushdown Planning is an extension of the Router Planning paradigm. Unlike the latter, which deals with single-shard, single-node queries, Query Pushdown can route a query to multiple shards across multiple nodes. Instead of verifying that all tables have the same filters, as in Router Planning, Query Pushdown ascertains that all tables are joined on their distribution keys. + +#### Core Functions + +The core C function responsible for this check is `RestrictionEquivalenceForPartitionKeys()`, which ensures that tables in the query are joined based on their distribution keys. Initially intended for subqueries, Query Pushdown has been extended to include other cases as well. The decision to utilize Query Pushdown is determined by the `ShouldUseSubqueryPushDown()` function. + +#### Understanding Query Pushdown + +Understanding Query Pushdown Planning and how it extends the simpler Router Planning can help you fully utilize Citus for your analytical workloads. + +#### Key Characteristics of Query Pushdown + +- **High Parallelism**: The query is broken down into multiple sub-queries, leading to parallel execution on multiple shards and nodes. +- **Worker Subquery**: You will typically notice the alias `worker_subquery` in the SQL queries sent to the shards, indicating a pushdown operation. + +### Examples of query pushdown + +#### Basic Example + +```sql +-- Count of distinct product_ids where user_ids from two different tables match +SELECT count(DISTINCT product_id) +FROM ( + SELECT DISTINCT user_id as distinct_user_id + FROM users_table +) foo, orders_table +WHERE orders_table.user_id = distinct_user_id; +``` + +#### Subquery in Target List + +```sql +-- Sum of max price per product category, filtered by a subquery in the target list +SELECT + (SELECT MAX(price) FROM products_table p WHERE p.category = o.category), + COUNT(DISTINCT o.product_id) +FROM orders_table o, users_table u +WHERE o.user_id = u.user_id AND u.user_id IN +(SELECT user_id FROM special_users_table) +GROUP BY o.category; +``` + +#### Subquery in WHERE Clause + +```sql +-- Number of distinct users who have placed an order +SELECT COUNT(DISTINCT u.user_id) +FROM users_table u +WHERE u.user_id IN ( + SELECT o.user_id + FROM orders_table o +); +``` + +#### More Examples + +```sql +-- Count of distinct products per user, with maximum order date from orders +-- as a subquery in the target list + SELECT + (SELECT MAX(o.order_date) FROM orders_table o WHERE o.user_id = u.user_id), + COUNT(DISTINCT o.product_id) +FROM orders_table o, users_table u +WHERE o.user_id = u.user_id +GROUP BY u.user_id; +``` + +#### UPDATE and DELETE with Query Pushdown + +```sql +-- Update status in orders_table for users whose email ends with '@example.com' +UPDATE orders_table o +SET status = 'DISCOUNTED' +FROM users_table u +WHERE o.user_id = u.user_id AND u.email LIKE '%@example.com'; +``` + +```sql +-- Delete orders for users who were born before '2000-01-01' +DELETE FROM orders_table o +USING users_table u +WHERE o.user_id = u.user_id AND u.date_of_birth < '2000-01-01'; +``` + + +## Recursive Planning + +Central to understanding Citus' approach to distributed query planning are two closely interrelated concepts: "Query Pushdown Planning" and "Recursive Planning." These dual strategies lay the foundation for Citus' capacity to manage complex query structures across multiple shards and nodes effectively. + +While Query Pushdown Planning optimizes queries by breaking them into smaller components that can run in parallel across multiple shards, Recursive Planning takes a more nuanced approach. It works its way through the query tree from the deepest level upwards, scrutinizing each subquery to determine its suitability for pushdown. + +The essence of recursive planning lies in treating each recursively planned query in isolation. This means correlated subqueries can't take advantage of recursive planning. However, (sub)queries on local tables can be done via recursive planning. + +This process is primarily executed in the `RecursivelyPlanSubqueryWalker()` C function. In this function, the engine goes to the innermost subquery and assesses whether it can safely be pushed down as a stand-alone query. If it can, the query engine simply moves on. However, if the subquery isn't suitable for pushdown, Citus generates a separate "sub-plan" for that subquery, substituting it with a `read_intermediate_result()` function call. These sub-plans are later executed as independent queries, a task overseen by the `ExecuteSubPlans()` function. + +The engine continues this way, moving upward through each level of subqueries, evaluating and, if needed, creating sub-plans until it reaches the top-level query. + +### Intermediate Results as Reference Tables + +One of the key aspects of Recursive Planning is the use of "intermediate results." These are essentially the outcomes of subqueries that have been recursively planned and executed on worker nodes. Once these intermediate results are obtained, they are treated much like reference tables in the subsequent stages of query planning and execution. The key advantage here is that, like reference tables, these intermediate results can be joined with distributed tables on any column, not just the distribution key. + +### Full SQL Coverage via Recursive Planning + +The practice of recursively creating sub-plans and generating intermediate results offers a workaround for achieving full SQL coverage in Citus. If each subquery in a complex SQL query can be replaced with an intermediate result, then the entire query essentially becomes a query on a reference table. This feature is a crucial aspect for many users who require comprehensive SQL support in their distributed systems. + +### Trade-offs of using recursive planning + +While Recursive Planning brings a lot to the table, it's not without its drawbacks. First, the method inherently adds more network round-trips, as each recursively planned query is executed separately, and its results are pushed back to all worker nodes. Secondly, when functions like `read_intermediate_results` are used to fetch data from these intermediate results, it can confound the Postgres planner, particularly in the context of complex joins. As a result, query estimations may be inaccurate, leading to suboptimal execution plans. + +Understanding these facets of Recursive Planning can provide you with a comprehensive view of how Citus approaches distributed query planning, allowing you to better optimize your database operations. + +This may seem complex at first glance, but it's a bit like a step-by-step puzzle-solving process that the Citus query engine performs to optimize your database queries effectively. To help clarify these intricate mechanics, we'll present a series of examples. + +#### Recursive Plan Example 1: + +In the simplest example, we'll have a single subquery which is NOT pushdown-safe due to LIMIT 1, hence creating a subplan + +```sql +SET client_min_messages TO DEBUG1; +SELECT count(*) FROM (SELECT * FROM users_table LIMIT 1) as foo; +SET +Time: 0.765 ms +DEBUG: push down of limit count: 1 +DEBUG: generating subplan 7_1 for subquery SELECT user_id, username, email, date_of_birth, country_code FROM public.users_table LIMIT 1 +DEBUG: Plan 7 query after replacing subqueries and CTEs: SELECT count(*) AS count FROM (SELECT intermediate_result.user_id, intermediate_result.username, intermediate_result.email, intermediate_result.date_of_birth, intermediate_result.country_code FROM read_intermediate_result('7_1'::text, 'binary'::citus_copy_format) intermediate_result(user_id bigint, username character varying(50), email character varying(50), date_of_birth date, country_code character varying(3))) foo +``` + +#### Recursive Plan Example 2: + +Now, we have multiple subqueries in the same level which are NOT pushdown-safe due to LIMIT 1 and GROUP BY non distribution keys, hence creating a subplan + +```sql +SELECT count(*) FROM + (SELECT * FROM users_table LIMIT 1) as foo, + (SELECT count(*) FROM users_table GROUP BY country_code) as bar; +DEBUG: push down of limit count: 1 +DEBUG: generating subplan 9_1 for subquery SELECT user_id, username, email, date_of_birth, country_code FROM public.users_table LIMIT 1 +DEBUG: generating subplan 9_2 for subquery SELECT count(*) AS count FROM public.users_table GROUP BY country_code +DEBUG: Plan 9 query after replacing subqueries and CTEs: SELECT count(*) AS count FROM (SELECT intermediate_result.user_id, intermediate_result.username, intermediate_result.email, intermediate_result.date_of_birth, intermediate_result.country_code FROM read_intermediate_result('9_1'::text, 'binary'::citus_copy_format) intermediate_result(user_id bigint, username character varying(50), email character varying(50), date_of_birth date, country_code character varying(3))) foo, (SELECT intermediate_result.count FROM read_intermediate_result('9_2'::text, 'binary'::citus_copy_format) intermediate_result(count bigint)) bar +``` + +#### Recursive Plan Example 3: + +We have a subquery foo that is NOT safe-to-pushdown but once that subquery is replaced with an intermediate result, the rest of the query becomes safe-to-pushdown + +```sql +SELECT count(*) FROM + (SELECT 1 FROM (SELECT user_id FROM users_table LIMIT 1) as foo, + (SELECT * FROM orders_table) as o1, + (SELECT * FROM users_table) as u2 + WHERE + foo.user_id = o1.user_id AND + o1.user_id = u2.user_id) as top_level_subquery; +DEBUG: push down of limit count: 1 +DEBUG: generating subplan 1_1 for subquery SELECT user_id FROM public.users_table LIMIT 1 +DEBUG: Plan 1 query after replacing subqueries and CTEs: SELECT count(*) AS count FROM (SELECT 1 AS "?column?" FROM (SELECT intermediate_result.user_id FROM read_intermediate_result('1_1'::text, 'binary'::citus_copy_format) intermediate_result(user_id bigint)) foo, (SELECT orders_table.order_id, orders_table.user_id, orders_table.product_id, orders_table.order_date, orders_table.status FROM public.orders_table) o1, (SELECT users_table.user_id, users_table.username, users_table.email, users_table.date_of_birth, users_table.country_code FROM public.users_table) u2 WHERE ((foo.user_id OPERATOR(pg_catalog.=) o1.user_id) AND (o1.user_id OPERATOR(pg_catalog.=) u2.user_id))) top_level_subquery +``` + + +### More advanced recursive planning constructs +In the previous parts of the recursive planning examples, we only dealt with a subquery at a time. However, recursive planning is capable of considering multiple subqueries in the same query level or converting tables to subqueries in the same level. In this part of the document, let's discuss these advanced query planning capabilities. + + +### Set operations via recursive planning (and query pushdown) + +Set operations like UNION, UNION ALL, and EXCEPT are essentially two subqueries in the same query level. + +> **Note:** The rules for set operation planning on Citus can be confusing and should be taken carefully. + +Citus is capable of "pushing down" certain set operations: UNION and UNION ALL. To allow this, two rules must be met, which are defined in the `SafeToPushdownUnionSubquery()` C code. + +1. The set operation cannot be on the top level; it should be wrapped into a subquery. This is purely an implementation limitation that can and should be eased. +2. For all subqueries, each leaf query should have a "distribution key" on the target list, and the ordinal positions of these "distribution keys" should match across all set operations. This second limitation is required to preserve correctness. + +#### Set operation query examples: + +```sql +-- safe to pushdown +SELECT * FROM (SELECT * FROM users_table UNION SELECT * FROM users_table) as foo; +``` + +```sql +-- not safe to pushdown because the set operation is NOT wrapped into a subquery. +-- Each leaf query is recursively planned. +SELECT * FROM users_table UNION SELECT * FROM users_table; +``` + +```sql +-- not safe to pushdown because the distribution columns do NOT match (e.g., not existing) +SELECT * FROM (SELECT username FROM users_table UNION SELECT username FROM users_table) as foo; +``` + +```sql +-- not safe to pushdown because the distribution columns do NOT match. +SELECT * FROM (SELECT user_id + 1 FROM users_table UNION SELECT user_id - 1 FROM users_table) as foo; +``` + +```sql +-- EXCEPT is never safe to pushdown +SELECT * FROM (SELECT * FROM users_table EXCEPT SELECT * FROM users_table) as foo; +``` + + + +### Set operations and joins + + +Although not very common, some users might have joins along with set operations. Example queries might look like: + +- `(SELECT .. t1 JOIN t2) UNION (SELECT t2 JOIN t3)` +- `(SELECT .. t1 UNION SELECT t2) JOIN t3 ..` +- `((SELECT .. t1 JOIN t2) UNION (SELECT t2 JOIN t3)) JOIN t4` + +For all these cases, similar rules apply: + +- JOINs should be made on the distribution keys. +- SET operations should satisfy the `SafeToPushdownUnionSubquery()` conditions. + +When combined, all conditions should match. + +#### Safe to Pushdown Examples: + +```sql +-- All joins are on the distribution key and all the unions have the distribution key in the same ordinal position. +SELECT * FROM ( + (SELECT user_id FROM users_table u1 JOIN users_table u2 USING (user_id)) + UNION + (SELECT user_id FROM users_table u1 JOIN users_table u2 USING (user_id)) +) as foo; +``` + +```sql +-- All joins are on the distribution key and all the unions have the distribution key in the same ordinal position. +SELECT * FROM + (SELECT user_id FROM users_table u1 UNION + SELECT user_id FROM users_table u2) as foo + JOIN + users_table u2 + USING (user_id); +``` + +### HAVING subqueries via recursive planning + + +Postgres allows the HAVING clause to contain subqueries. If the subqueries in the HAVING clause don't reference the outer query (i.e., not correlated), then it's possible to recursively plan the subquery in the HAVING clause. This involves using the `RecursivelyPlanAllSubqueries()` function specifically for the HAVING clause. + +#### Example: + +```sql +-- Find user_ids who have placed more orders than the average number of orders per user. +SELECT + u.user_id, + COUNT(o.order_id) AS total_orders +FROM + users_table u +JOIN + orders_table o ON u.user_id = o.user_id +GROUP BY + u.user_id +HAVING + COUNT(o.order_id) > (SELECT AVG(order_count) FROM ( + SELECT + user_id, + COUNT(order_id) AS order_count + FROM + orders_table + GROUP BY + user_id) AS subquery); +``` + + +### Non-colocated subqueries via recursive planning + +Assume that there are two subqueries; each subquery is individually joined on their distribution keys. However, when the two subqueries are joined on arbitrary keys, the non-colocated subquery join logic kicks in, as described in `RecursivelyPlanNonColocatedSubqueries()`. + +#### Non-colocated subquery Example 1: + +```sql +-- Find users who do not have orders with status 'shipped' and 'pending' +-- Sub1 and Sub2 are individually safe to pushdown. +-- The join condition between them is: sub1.user_id != sub2.user_id, which does not preserve distribution key equality. +-- Citus qualifies sub1 as the anchor subquery and checks whether all other subqueries are joined on the distribution key. +-- In this case, sub2 is not joined on the distribution key, so Citus decides to recursively plan the whole sub2. +SELECT a.user_id, b.user_id +FROM ( + SELECT u.user_id + FROM users_table u + JOIN orders_table o ON u.user_id = o.user_id + WHERE o.status = 'shipped' + GROUP BY u.user_id +) AS sub1 +JOIN ( + SELECT u.user_id + FROM users_table u + JOIN orders_table o ON u.user_id = o.user_id + WHERE o.status = 'pending' + GROUP BY u.user_id +) AS sub2 ON sub1.user_id != sub2.user_id; +``` + +#### Non-colocated subquery Example 2: + +```sql +-- Similar logic also applies for subqueries in the WHERE clause. +-- Both the query in the FROM clause and the subquery in the WHERE clause are individually safe to pushdown. +-- However, as a whole, the query is not safe to pushdown. +-- Therefore, Citus decides to recursively plan the subquery in the WHERE clause. +SELECT o1.order_id, o1.order_date +FROM orders_table o1, users_table u1 +WHERE o1.user_id = u1.user_id +AND o1.order_date IN ( + SELECT o2.order_date + FROM orders_table o2, users_table u2 + WHERE o2.user_id = u2.user_id AND o2.status = 'shipped' +); +``` + + +### Local table - distributed table JOINs via recursive planning + +In Citus, joins between a local table and a distributed table require special handling. The local table data resides on the Citus coordinator node, while the distributed table data is across multiple worker nodes. The `RecursivelyPlanLocalTableJoins()` C function handles this. + +#### Performance Characteristics + +Local and distributed table joins have specific performance traits. They push down filters and projections, meaning only relevant data is pulled to the coordinator. See the `RequiredAttrNumbersForRelation()` and `ReplaceRTERelationWithRteSubquery()` functions for more details. + +#### How It Works + +1. Citus scans the query tree to find joins between local and distributed tables. +2. Upon finding such a join, Citus forms a sub-plan for the local table. +3. This sub-plan retrieves relevant data from the local table into an intermediate result and distributes it across worker nodes. +4. The original query is then rewritten, replacing the local table with these intermediate results. +5. Finally, this new query, now only involving distributed tables, is executed using Citus's standard query execution engine. + +#### Example 1 + +For example, consider a local table `local_users` and a distributed table `orders_table`. A query like this: + +```sql +SELECT * +FROM local_users l, orders_table o +WHERE l.user_id = o.user_id; +``` + +Would be internally transformed by Citus as follows: + +```sql +-- Create a temporary reference table and populate it with local table data +CREATE TEMP TABLE temp_local_users AS SELECT * FROM local_users; +SELECT create_reference_table('temp_local_users'); + +-- Replace the local table with the temporary distributed table in the original query +SELECT * +FROM temp_local_users t, orders_table o +WHERE t.user_id = o.user_id; +``` + + +#### Configuration Option + +By tweaking `citus.local_table_join_policy`, you can control how Citus behaves for queries involving local and distributed tables. The default behavior is to pull local table data to the coordinator, with exceptions for distributed tables filtered on primary key or unique index. + +#### Example 2 + +For instance, when the distributed table is guaranteed to return at most one row, Citus chooses to recursively plan the distributed table: + +```sql +SELECT * +FROM local_users l, orders_table o +WHERE l.user_id = o.user_id AND o.primary_key = 55; +``` + + + +### Ref table LEFT JOIN distributed table JOINs via recursive planning + +Very much like local-distributed table joins, Citus can't push down queries formatted as: +```sql +"... ref_table LEFT JOIN distributed_table ..." +``` +This is the case when the outer side is a recurring tuple (e.g., reference table, intermediate results, or set returning functions). + +In these situations, Citus recursively plans the "distributed" part of the join. Even though it may seem excessive to recursively plan a distributed table, remember that Citus pushes down the filters and projections. Functions involved here include `RequiredAttrNumbersForRelation()` and `ReplaceRTERelationWithRteSubquery()`. + +The core function handling this logic is `RecursivelyPlanRecurringTupleOuterJoinWalker()`. There are likely numerous optimizations possible (e.g., first pushing down an inner JOIN then an outer join), but these have not been implemented due to their complexity. + +#### Example Query + +Here's an example that counts the number of orders for each status, including only statuses that also appear in the reference table: + +```sql +SELECT os.status, COUNT(o.order_id) +FROM order_status os +LEFT JOIN orders_table o ON os.status = o.status +GROUP BY os.status; +``` + +#### Debug Messages +``` +DEBUG: recursively planning right side of the left join since the outer side is a recurring rel +DEBUG: recursively planning distributed relation "orders_table" "o" since it is part of a distributed join node that is outer joined with a recurring rel +DEBUG: Wrapping relation "orders_table" "o" to a subquery +DEBUG: generating subplan 45_1 for subquery SELECT order_id, status FROM public.orders_table o WHERE true +``` + +### Recursive Planning When FROM Clause has Reference Table (or Recurring Tuples) + +This section discusses a specific scenario in Citus's recursive query planning: handling queries where the main query's `FROM` clause is recurring, but there are subqueries in the `SELECT` or `WHERE` clauses involving distributed tables. + +#### Definitions + +- **Recurring**: Here, "recurring" implies that the `FROM` clause doesn't contain any distributed tables. Instead, it may have reference tables, local tables, or set-returning functions. + +- **Subqueries in SELECT and WHERE**: In case the main query's `FROM` clause is recurring, then no distributed tables should be present in the `SELECT` and `WHERE` subqueries. + +#### Citus's Approach + +Citus solves this by recursively planning these problematic subqueries, effectively replacing them with calls to `read_intermediate_result()`. + +#### Handling the WHERE Clause + +For the `WHERE` clause, the function `RecursivelyPlanAllSubqueries` is called, transforming all subqueries within it. + +```sql +-- Main query FROM clause is recurring, but +-- WHERE clause contains a pushdownable subquery from +-- orders_table (distributed table) +SELECT country_name +FROM country_codes +WHERE country_code IN + (SELECT country_code FROM users_table WHERE user_id IN (SELECT user_id FROM orders_table)); +``` + +#### Handling the SELECT Clause + +Similarly, `RecursivelyPlanAllSubqueries` is called for the `SELECT` clause to replace any existing subqueries. + +```sql +-- Main query FROM clause is recurring, but SELECT clause contains a subquery from orders_table (distributed table) +SELECT + (SELECT COUNT(*) FROM orders_table WHERE status = 'shipped') AS shipped_orders, country_name +FROM country_codes; +``` + +In both examples, since the main query's `FROM` clause is recurring and involves subqueries on distributed tables in `WHERE` or `SELECT`, Citus uses `RecursivelyPlanAllSubqueries` to manage these subqueries. + +### Logical Planner & Optimizer + +At the high level, all multi-task queries go through the logical planner. However, when it comes to query pushdown or the recursive planner, the logical planner does very little. Most of its complexity deals with multi-shard queries that don't fall into these categories. Below, we are going to discuss those details. + +#### Simple Example + +The simplest example of a query processed by the logical planner would be: + +```sql +SELECT * FROM users_table; +``` + +#### Academic Background + +The logical planner implements the concepts from the paper: "Correctness of query execution strategies in distributed databases." The paper is available [here](https://dl.acm.org/doi/pdf/10.1145/319996.320009). + +If you find the paper hard to read, Marco provides a good introduction to the same concepts in the following presentation: + +- [YouTube Video](https://www.youtube.com/watch?v=xJghcPs0ibQ) +- [Speaker Deck](https://speakerdeck.com/marcocitus/scaling-out-postgre-sql) + +#### Core Functions + +We assume you have either watched the video or read the paper. The core C functions involved are `MultiLogicalPlanCreate()`, `MultiNodeTree()`, and `MultiLogicalPlanOptimize()`. + +Citus has a rules-based optimizer. The core function `MultiLogicalPlanCreate()` maps the SQL query to a C structure (e.g., `MultiNode`). Then `MultiLogicalPlanOptimize()` applies available optimizations to the `MultiNode`. + +For instance, one simple optimization pushes the "filter" operation below the "MultiCollect." Such rules are defined in the function `Commutative()` in `multi_logical_optimizer.c`. + +The most interesting part of the optimizer is usually in the final stage, when handling the more complex operators (GROUP BY, DISTINCT window functions, ORDER BY, aggregates). These operators are conjoined in a `MultiExtendedOpNode`. In many cases, they can only partially be pushed down into the worker nodes, which results in one `MultiExtendedOpNode` above the `MultiCollection` (which will run on the coordinator and aggregates across worker nodes), and another `MultiExtendedOpNode` below the `MultiCollect` (which will be pushed down to worker nodes). The bulk of the logic for generating the two nodes lives in `MasterExtendedOpNode()` and `WorkerExtendedOpNode()`, respectively. + +##### Aggregate functions + +[Aggregate functions](https://www.postgresql.org/docs/current/sql-createaggregate.html) can appear in the SELECT (target list) or HAVING clause of a query, often in the context of a `GROUP BY`. The aggregate primarily specify a state function (`sfunc`), which is called for every row in the group, and an `stype` which defines the data format in which intermediate state is held as a type, which maybe be `internal`. Many aggregates also have a `finalfunc`, which converts the last `stype` value to the final result of the aggregate function. + +Citus support distributing aggregate functions in several ways described below, each with an example. + +**Aggregate functions in queries that group by distribution column can be fully pushed down, since no cross-shard aggregation is needed**. This is mostly handled by the rules in `CanPushDownExpression`. + +Example: + +```sql +select x, avg(y) from test group by x; +DEBUG: combine query: SELECT x, avg FROM pg_catalog.citus_extradata_container(10, NULL::cstring(0), NULL::cstring(0), '(i 1)'::cstring(0)) remote_scan(x integer, avg numeric) +NOTICE: issuing SELECT x, avg(y) AS avg FROM public.test_102041 test WHERE true GROUP BY x +NOTICE: issuing SELECT x, avg(y) AS avg FROM public.test_102042 test WHERE true GROUP BY x +... +``` + +**Built-in, or well-known aggregate functions (based on their name) are distributed using custom rules**. An almost-complete list of aggregates that are handled in this way can be found in the `AggregateNames` variable. Examples are `avg`, `sum`, `count`, `min`, `max`. To distribute an aggregate function like `avg`, the optimizer implements rules such as injecting a `sum` and `count` aggregate in the worker target list, and doing a `sum(sum)/sum(count)` on the master target list. The logic is agnostic to types, so it will for work any custom type that implements aggregate functions with the same name. + +Example: + +```sql +select y, avg(x) from test group by y; +DEBUG: combine query: SELECT y, (pg_catalog.sum(avg) OPERATOR(pg_catalog./) pg_catalog.sum(avg_1)) AS avg FROM pg_catalog.citus_extradata_container(10, NULL::cstring(0), NULL::cs +tring(0), '(i 1)'::cstring(0)) remote_scan(y integer, avg bigint, avg_1 bigint) GROUP BY y +NOTICE: issuing SELECT y, sum(x) AS avg, count(x) AS avg FROM public.test_102041 test WHERE true GROUP BY y +NOTICE: issuing SELECT y, sum(x) AS avg, count(x) AS avg FROM public.test_102042 test WHERE true GROUP BY y +``` + +**Aggregates that specify a `combinefunc` and have an non-internal `stype` are distributed using generic aggregate functions**. The `worker_partial_agg` aggregate function is pushed down to the worker runs the `sfunc` of the custom aggregate across the tuples of a shard without running the `finalfunc` (which should come after `combinefunc`). The `coord_combine_agg` aggregate function runs the `combinefunc` across the `stype` values returned by `worker_partial_agg` and runs the `finalfunc` to obtain the final result of the aggregate function. This approach currently does not support aggregates whose `stype` is `internal`. A reason we for not handling `internal` is that it is not clear that they can always be safely transferred to a different server, though that may be overly pedantic. + +Example: +```sql +select st_memunion(geo) from test; +DEBUG: combine query: SELECT coord_combine_agg('351463'::oid, st_memunion, NULL::postgis_public.geometry) AS st_memunion FROM pg_catalog.citus_extradata_container(10, NULL::cstring(0), NULL::cstring(0), '(i 1)'::cstring(0)) remote_scan(st_memunion cstring) +NOTICE: issuing SELECT worker_partial_agg('postgis_public.st_memunion(postgis_public.geometry)'::regprocedure, geo) AS st_memunion FROM public.test_102041 test WHERE true +NOTICE: issuing SELECT worker_partial_agg('postgis_public.st_memunion(postgis_public.geometry)'::regprocedure, geo) AS st_memunion FROM public.test_102042 test WHERE true +``` + +**Other aggregates will be fully above the `MultiCollect` node, meaning the source data is pulled to the coordinator.** If this is undesirable due to the performance/load risk, it can be disabled using `citus.coordinator_aggregation_strategy = 'disabled'`, in which case the aggregate function calls would result in an error. + +Example: +```sql +select st_union(geo) from test; +DEBUG: combine query: SELECT postgis_public.st_union(st_union) AS st_union FROM pg_catalog.citus_extradata_container(10, NULL::cstring(0), NULL::cstring(0), '(i 1)'::cstring(0)) remote_scan(st_union postgis_public.geometry) +NOTICE: issuing SELECT geo AS st_union FROM public.test_102041 test WHERE true +NOTICE: issuing SELECT geo AS st_union FROM public.test_102042 test WHERE true +``` + +### Multi Join Order + +**Context and Use Case**: +This query planning mechanism is primarily geared towards data warehouse type of query planning. It's worth noting that the Citus team has not actively pursued optimizations in this direction, resulting in some non-optimized code paths. + +**Join Order Optimization**: +In Citus' logical planner, the `JoinOrderList()` function serves to choose the most efficient join order possible. However, its primary focus has been on joins that require repartitioning, as well as some specific non-repartition joins. For example, joins on distribution keys that are not eligible for pushdown planning may pass through this code path, although no optimizations are made in those cases. + +**Algorithm Simplicity**: +The current algorithm, encapsulated in the `BestJoinOrder()` function, is relatively naive. While it aims to minimize the number of repartition joins, it does not provide a performance evaluation for each of them. This function provides room for performance optimizations, especially when dealing with complex joins that necessitate repartitioning. + +**Control via GUCs**: +Two GUCs control the behavior of repartitioning in Citus: `citus.enable_single_hash_repartition_joins` and `citus.repartition_join_bucket_count_per_node`. + +- **citus.enable_single_hash_repartition_joins**: + The default value is "off". When "off", both tables involved in the join are repartitioned. When "on", if one table is already joined on its distribution key, only the other table is repartitioned. + +- **citus.repartition_join_bucket_count_per_node**: + This setting defines the level of parallelism during repartitioning. The reason for the "off" default is tied to this GUC. Opting for a fixed bucket count, rather than dynamically adjusting based on shard count, provides more stability and safety. If you ever consider changing these defaults, be cautious of the potential performance implications. + + +### Combine Query + +- **Overview**: + The multi-task SELECT queries pull results to the coordinator, and the tuples returned always go through the "combine query". + +- **Structure and Source**: + The `combineQuery` can be traced back through the `DistributedPlan->combineQuery` struct. This query is essentially constructed in the `CreatePhysicalDistributedPlan` function. However, the actual source comes from `MasterExtendedOpNode()` within the logical optimizer. For deeper insights into this logic, you can refer to the paper and video links shared under the "Logical Planner & Optimizer" section. + +- **Example**: + The simplest example is the following where Citus sends `count(*)` to the shards, and needs to do a `sum()` on top of the results collected from the workers. + ```sql + SET client_min_messages TO DEBUG4; + DEBUG: generated sql query for task 1 + DETAIL: query string: "SELECT count(*) AS count FROM public.users_table_102008 users_table WHERE true" + .... + DEBUG: combine query: SELECT COALESCE((pg_catalog.sum(count))::bigint, '0'::bigint) AS count FROM pg_catalog.citus_extradata_container(10, NULL::cstring(0), NULL::cstring(0), '(i 1)'::cstring(0)) remote_scan(count bigint) + D + ``` + + +### CTE Processing + +- **In Postgres 13 and Later Versions**: +In Postgres 13 and later versions, CTEs (Common Table Expressions) are almost like subqueries. Usually, these CTEs are transformed into subqueries during `standard_planner()`. Citus follows the same approach via `RecursivelyInlineCtesInQueryTree()`. + +- **Additional Consideration in Citus**: +For Citus, there's an additional consideration. CTEs that aren't inlined get materialized. In the Citus context, materialization converts these CTEs into intermediate results. Some users leverage this for achieving full-SQL coverage. + +- **Extra CTE Check in Citus**: + Citus includes an extra check before inlining CTEs, conducted by the function `TryCreateDistributedPlannedStmt`. Here, the planner first tries to inline all CTEs and then checks whether Citus can still plan the query. If not, the CTEs remain as is, leading to their materialization. If all CTEs are materialized (e.g., read_intermediate_result), then the query becomes equivalent of a query on reference table, hence full SQL. + + **Examples for Better Understanding**: + I understand the logic might seem complex at first. Simple examples will be provided for better understanding. + +```sql +-- a CTE that is inlined as subquery, and does a query-pushdown +WITH cte_1 AS (SELECT DISTINCT user_id FROM orders_table) +SELECT * FROM cte_1; + +``` + +So, from Citus' query planning perspective + the above CTE is equivalent to the following subquery + + ```sql +SELECT * FROM + (SELECT DISTINCT user_id FROM orders_table) cte_1; +``` + +Once a CTE is inlined, then the rest of the query + planning logic kicks in +for example, below, the cte is inlined and then +because the subquery is NOT safe to pushdown +it is recursively planned +```sql +WITH cte_1 AS (SELECT DISTINCT product_id FROM orders_table) +SELECT * FROM cte_1; +.. +DEBUG: CTE cte_1 is going to be inlined via distributed planning +DEBUG: generating subplan 81_1 for subquery SELECT DISTINCT product_id FROM public.orders_table +DEBUG: Plan 81 query after replacing subqueries and CTEs: SELECT product_id FROM (SELECT intermediate_result.product_id FROM read_intermediate_result('81_1'::text, 'binary'::citus_copy_format) intermediate_result(product_id bigint)) cte_1; +``` + +- **Which CTEs Are Materialized**: + Citus follows the same rules as Postgres. See [Postgres documentation](https://www.postgresql.org/docs/current/queries-with.html#id-1.5.6.12.7). + +```sql +-- the same query as the first query +-- but due to MATERIALIZED keyword +-- Citus converts the CTE to intermediate result +WITH cte_1 AS MATERIALIZED (SELECT DISTINCT user_id FROM orders_table) +SELECT * FROM cte_1; + +-- the same query as the first query +-- but as the same cte used twice +-- Citus converts the CTE to intermediate result +WITH cte_1 AS (SELECT DISTINCT user_id FROM orders_table) +SELECT * FROM cte_1 as c1 JOIN + cte_1 as c2 USING (user_id); +``` + +- **Citus Specific Materialization**: + Citus first tries to inline the CTEs, but if it decides that after inlining the query cannot be supported due Citus' SQL limitations, it lets the CTE to be materialized. + +As of writing this document, Citus does NOT support + GROUPING SETs on distributed tables/subqueries. So, + when we inline the CTE, then Citus would try to plan + a query with GROUPING SETs on a distributed table, which + would fail. Then, citus would materialize the cte + and the final query would be GROUPING SET on an + intermediate result, hence can be supported + +```sql +WITH users_that_have_orders AS (SELECT users_table.* FROM users_table JOIN orders_table USING (user_id)) +SELECT + max(date_of_birth) +FROM users_that_have_orders +GROUP BY GROUPING SETS (user_id, email); +... +DEBUG: CTE users_that_have_orders is going to be inlined via distributed planning +... +DEBUG: Planning after CTEs inlined failed with +message: could not run distributed query with GROUPING SETS, CUBE, or ROLLUP +hint: Consider using an equality filter on the distributed table''s partition column. +... +DEBUG: generating subplan 98_1 for CTE users_that_have_orders: SELECT users_table.user_id, users_table.username, users_table.email, users_table.date_of_birth, users_table.country_code FROM (public.users_table JOIN public.orders_table USING (user_id)) +``` + + +### INSERT Query Planning + + **At a High-Level Overview**: +- There are approximately 4 different ways that an INSERT command can be planned in Citus. The first one is the INSERT ... SELECT command, which will be discussed separately. + + **INSERT with Sublink (Not Supported)**: +```sql +INSERT INTO users_table (user_id) VALUES ((SELECT count(8) FROM orders_table)); +ERROR: subqueries are not supported within INSERT queries +HINT: Try rewriting your queries with 'INSERT INTO ... SELECT' syntax. + +INSERT INTO users_table (user_id) VALUES (1) RETURNING (SELECT count(*) FROM users_table); +ERROR: subqueries are not supported within INSERT queries +HINT: Try rewriting your queries with 'INSERT INTO ... SELECT' syntax. +``` + + **Simple Inserts with a Single VALUES Clause**: +-- As noted in the "fast-path router planner", these INSERT commands are planned with fast-path planning. This does not require calling into `standard_planner()`, and the distribution key should be extracted from the query itself. +```sql +INSERT INTO users_table VALUES (1, 'onder', 'onderkalaci@gmail.com', now() - '5 years'::interval, 'TR'); +``` + + **Main Functions**: + The main functions involved in this path are `RegenerateTaskListForInsert()`, `FastPathRouterQuery()`, and `RouterInsertTaskList`. For single-row INSERT tasks, `Job->deferredPruning=true`, meaning we can always do the shard pruning during execution. + + **Multi-row INSERTs**: +For multi-row INSERTs, `RouterInsertTaskList()` becomes slightly more interesting. Citus groups rows by target shard. +```sql +INSERT INTO orders_table (order_id, user_id) VALUES + (1, 1), (2, 2), (3, 1), (4, 3), (5, 2); +``` + + **Debug Info**: + Debug information shows how the query is rebuilt for different user_ids. +```sql +-- for user_id: 1 +DEBUG: query after rebuilding: INSERT INTO public.orders_table_102041 AS citus_table_alias (order_id, user_id) VALUES ('1'::bigint,'1'::bigint), ('3'::bigint,'1'::bigint) + +-- for user_id: 3 +DEBUG: query after rebuilding: INSERT INTO public.orders_table_102055 AS citus_table_alias (order_id, user_id) VALUES ('4'::bigint,'3'::bigint) + +-- for user_id: 2 +DEBUG: query after rebuilding: INSERT INTO public.orders_table_102064 AS citus_table_alias (order_id, user_id) VALUES ('2'::bigint,'2'::bigint), ('5'::bigint,'2'::bigint) +``` + + + +### INSERT.. SELECT and MERGE Command Query Planning + + **Overview**: +-- This section discusses `INSERT .. SELECT` and `MERGE` commands, which share almost identical planning logic. + + **Planning Methods**: + Broadly, there are three methods to plan these commands: +1. Pushdown +2. Pull-to-coordinator +3. Repartition + + **Performance Considerations**: + When it comes to performance and resource utilization, pushdown is generally the most efficient. For handling large data sizes, the repartition method scales better than the pull-to-coordinator method. + + **Further Reading**: + For more detailed information on pushdown and repartition methods, refer to this [blog post](https://www.citusdata.com/blog/2023/07/27/how-citus-12-supports-postgres-merge/). The post focuses on the `MERGE` command but is also applicable to `INSERT .. SELECT`. + + **Examples**: + The following section will delve into examples, starting with simple ones and moving to more complex scenarios. + +### INSERT.. SELECT Advanced Scenarios + + **Overview**: + The `INSERT .. SELECT` pushdown logic builds upon the pushdown planning for `SELECT` commands. The key requirements include colocated tables and matching distribution columns. Relevant C functions are `CreateDistributedInsertSelectPlan`, `DistributedInsertSelectSupported()`, and `AllDistributionKeysInQueryAreEqual`. + + **Additional Conditions for INSERT .. SELECT pushdown**: +- The destination table's distribution keys should match the source query's distribution column. + + **Simplest INSERT .. SELECT Pushdown Example**: +```sql +INSERT INTO users_table SELECT * FROM users_table; +``` + + **INSERT .. SELECT with Subqueries/Joins**: + Provided subqueries can be pushed down, additional checks such as matching distribution columns are performed. +```sql +INSERT INTO users_table + SELECT users_table.* FROM users_table, + (SELECT user_id FROM users_table JOIN orders_table USING (user_id)) as foo + WHERE foo.user_id = users_table.user_id; +``` + + **Non-pushdownable Scenarios**: + + **Due to Distribution Key Mismatch**: + Citus opts for repartitioning since no "merge step" is needed for the `SELECT` query. The deciding function is `IsRedistributablePlan()`. + ```sql + INSERT INTO users_table (user_id) SELECT user_id + 1 FROM users_table; + ``` + + **Due to LIMIT**: + The `SELECT` query requires a "merge step" for the `LIMIT` clause. Citus uses the pull-to-coordinator strategy. + ```sql + INSERT INTO users_table SELECT * FROM users_table LIMIT 5; + ``` + + **Pull-to-Coordinator Details**: + Citus typically pulls `SELECT` results and initiates a `COPY` command to the destination table. See `NonPushableInsertSelectExecScan()`. + +**Special Cases**: + **ON CONFLICT or RETURNING**: + In these cases, a simple `COPY` is insufficient. Citus pushes results as "colocated intermediate files" on the workers, which are colocated with the target table's shards. Then, Citus performs an `INSERT .. SELECT` on these colocated intermediate results. See `ExecutePlanIntoColocatedIntermediateResults()` and `GenerateTaskListWithColocatedIntermediateResults()`. + + **Example: Pull-to-coordinator with COPY back to shards**: +```sql +INSERT INTO users_table SELECT * FROM users_table LIMIT 5; +``` + + **Example: Pull-to-coordinator with push as colocated intermediate results**: +```sql +INSERT INTO users_table SELECT * FROM users_table LIMIT 5 ON CONFLICT(user_id) DO NOTHING; +``` + + +### MERGE Command Query Planning + + **Overview**: + The `MERGE` command planning is similar to `INSERT .. SELECT`. The key difference is in the pull-to-coordinator strategy. `MERGE` always uses "colocated intermediate result" files, as the final executed command must be a `MERGE` command, not a `COPY`. The entry function in the code is `CreateMergePlan()`. + +**Further Reading**: + For more insights, check out this [blog post](https://www.citusdata.com/blog/2023/07/27/how-citus-12-supports-postgres-merge/). + + **Pushdown MERGE Example**: + The join is based on the distribution key. +```sql +MERGE INTO users_table u +USING orders_table o +ON (u.user_id = o.user_id) +WHEN MATCHED AND o.status = 'DONE' THEN DELETE; +``` + +**Pull-to-Coordinator MERGE Example**: + The source query requires a "merge step" on the coordinator. +```sql +MERGE INTO users_table u +USING (SELECT * FROM orders_table ORDER BY order_date LIMIT 50) o +ON (u.user_id = o.user_id) +WHEN MATCHED AND o.status = 'DONE' THEN DELETE; +``` + + **Repartition MERGE Example**: + The join is NOT on the distribution key, and the source query doesn't require a "merge step" on the coordinator. Note that this example is mostly hypothetical to illustrate the case. +```sql +MERGE INTO users_table u +USING (SELECT * FROM orders_table ORDER BY order_date) o +ON (u.user_id = o.product_id) +WHEN MATCHED AND o.status = 'DONE' THEN DELETE; +``` + +### UPDATE / DELETE Planning + + **Overview**: + The planning logic for UPDATE/DELETE queries is quite similar to what we've discussed for INSERT and MERGE commands. There are essentially four primary methods of planning: + + **1) Fast-Path Router Planning**: + Targets a single shard and filters on the distribution key in the WHERE clause. +```sql +UPDATE users_table SET email = 'new@email.com' WHERE user_id = 5; +``` + + + **2) Router Planning**: + Targets a single shard, but all the shards are on a single node and are colocated. +```sql +UPDATE users_table u + SET email = '' + FROM orders_table o + WHERE o.user_id = u.user_id AND + u.user_id = 5 AND + o.status = 'done'; +``` + + + **3) Pushdown Planning**: + The query can be pushed down to worker nodes, targeting multiple shards. Joins are also possible if they are on distribution keys. +```sql +UPDATE users_table SET email = 'new@email.com' +WHERE user_id IN (SELECT user_id FROM orders_table WHERE status = 'in progress'); +``` + + **Additional Example for Pushdown with Materialized CTE**: +```sql +WITH high_value_users AS ( + SELECT user_id FROM orders_table WHERE status = 'done' ORDER BY order_date LIMIT 50 +) +UPDATE users_table SET username = 'High Value' +WHERE user_id IN (SELECT user_id FROM high_value_users); +``` + + + **4) Recursive Planning**: +Used for more complex queries, like those with subqueries or joins that can't be pushed down. The queries are planned recursively. +```sql +DELETE FROM users_table WHERE user_id +IN (SELECT user_id FROM orders_table WHERE total > 100 ORDER BY total DESC LIMIT 5); +``` + +### Correlated/Lateral Subqueries in Planning + +**Overview**: +Correlated or LATERAL subqueries have special behavior in Citus. They can often be pushed down, especially when the join is on the distribution key. There are limitations for joins not on the distribution key. + + + **Key Code Details**: + For more information on the code, check the following functions: + `DeferErrorIfCannotPushdownSubquery()` -> + `ContainsReferencesToOuterQuery()` -> + `DeferErrorIfSubqueryRequiresMerge()`. + + + + **Example 1**: Using LATERAL, where the join is on the distribution key. +```sql +SELECT u.*, o_sum.total +FROM users_table u, +LATERAL (SELECT count(DISTINCT status) as total FROM orders_table o WHERE o.user_id = u.user_id) o_sum; +``` + + + **Example 2**: Complex LATERAL with GROUP BY on a non-distribution key. It's pushdownable because the join is on the distribution key. +```sql +SELECT u.*, o_info.product, o_info.total +FROM users_table u, +LATERAL ( + SELECT o.product_id as product, count(DISTINCT o.status) as total + FROM orders_table o WHERE o.user_id = u.user_id + GROUP BY o.product_id +) o_info; +``` + + + + **Debug and Error Messages**: +When it's not possible to push down correlated subqueries, recursive planning also can't be used. +```sql +SELECT u.* +FROM users_table u, +LATERAL ( + SELECT o.product_id as product + FROM orders_table o WHERE o.user_id != u.user_id +) o_info; + +DEBUG: skipping recursive planning for the subquery since it contains references to outer queries +ERROR: complex joins are only supported when all distributed tables are joined on their distribution columns with equal operator +``` + + + + + + + + + +### Planning Methodologies in Citus: Compatibility and Incompatibility + + + +#### Compatibilities + + + +1. **Interleaving Recursive and Pushdown Planning**: + + - Recursive planning and pushdown planning can often be interleaved within a query. This allows for greater flexibility and optimized performance. + + + +2. **Router Queries in Recursive Planning**: + + - Subqueries in recursive planning can often be router queries. This includes both fast-path router and regular router queries. + + + +3. **Command Types**: + + - Command types like `UPDATE`, `DELETE`, `MERGE`, and `INSERT .. SELECT` can work well with both pushdown and recursive planning. + + + +#### Incompatibilities + +1. **Repartition Joins**: + + - Repartition joins are generally incompatible with both recursive and pushdown planning. If a query uses recursive planning, it can't also use repartition joins. However, re-partition joins can be in a CTE that is recursively planned. + + + +#### Examples of Compatibility and Incompatibility + +##### Recursive and Pushdown Planning + +```sql +-- Example 1: Recursive and Pushdown Planning Interleaved +-- subquery is recursively planned multi-shard command +WITH recent_orders AS ( + SELECT * FROM orders_table ORDER BY order_date LIMIT 10 +) +SELECT * FROM users_table WHERE user_id IN (SELECT user_id FROM recent_orders); +``` + +##### Router Queries in Recursive Planning + +```sql +-- Example 2: Subquery as Fast-Path Router Query is recursively planned +-- the rest is pushdown +WITH user_info AS ( + SELECT * FROM users_table WHERE user_id = 5 ORDER BY date_of_birth LIMIT 1 +) +SELECT * FROM orders_table WHERE user_id IN (SELECT user_id FROM user_info); +``` + +##### UPDATE Pushdown and Recursive Planning + +```sql +-- Example 3: UPDATE command with Pushdown, Router and Recursive Planning +-- recursively planned router query and the rest is pushdown +WITH high_value_users AS ( + SELECT user_id FROM orders_table WHERE user_id = 15 AND status = 'done' ORDER BY order_date LIMIT 50 +) +UPDATE users_table SET username = 'High Value' WHERE user_id IN (SELECT user_id FROM high_value_users); +``` + + + +#### Incompatibility with Repartition Joins + +```sql +-- Example 4: Incompatible Query involving Recursive Planning and Repartition Joins +-- This query will fail because it tries to use recursive planning for recent_orders +-- and trying to repartition joins between o2 and recent_orders +WITH recent_orders AS ( + SELECT * FROM orders_table WHERE order_date > '2023-01-01' LIMIT 10 +) +SELECT u.* +FROM users_table u +JOIN recent_orders o ON u.user_id = o.product_id; +JOIN orders_table o2 ON o2.product_id = o.product_id; +ERROR: complex joins are only supported when all distributed tables are co-located and joined on their distribution columns +``` + +## Combine query planner + +The combine planner is the final stage of planning for multi-shard queries. The logical & physical planner path creates a combine query, which will run on the coordinator. The combine query contains a special function call (called the extra data container), which can be observed using debug messages emitted during planning: + +``` +SET client_min_messages TO debug4; +SELECT count(*) FROM test; +… +DEBUG: combine query: SELECT COALESCE((pg_catalog.sum(count))::bigint, '0'::bigint) AS count FROM pg_catalog.citus_extradata_container(10, NULL::cstring(0), NULL::cstring(0), '(i 1)'::cstring(0)) remote_scan(count bigint) +``` + +The reason we use a special function call is simply that it lets us put custom information in query trees. We use the same approach to pass sharding information into the deparser. + +In the combine query planner, we run the combine query through standard_planner and use the set_rel_pathlist_hook to inject a CustomPath plan for the function call. The CustomPath translates into the Citus Custom Scan that runs a Job. + +## Restriction Equivalence + +In the PostgreSQL source code, an `EquivalenceClass` is a data structure used in query optimization. It is a way to represent a set of expressions in a query that are all equal. The PostgreSQL query planner uses this information to choose the most efficient execution plan for a query. + +For example, let's say you have a query like this: + +```sql +SELECT * FROM table1, table2 WHERE table1.a = table2.b AND table1.a = 5; +``` + +Here, `table1.a`, `table2.b`, and `5` can all be considered to belong to the same equivalence class because they are equal. Knowing this, the query optimizer might choose to use an index on `table1.a` or `table2.b` to speed up the query, among other optimizations. + +One level beyond that, Postgres can also apply transitivity rules for joins: + +```sql +SELECT * FROM table1, table2,table3 WHERE table1.a = table2.a AND table1.a = table3.a; +``` + +Here, `table1.a`, `table2.a`, and `table3.a` can all be considered to belong to the same equivalence class because they are (transitively) equal. + + + +Citus finds this information important. But Citus and Postgres have different structures. In Postgres, each (sub)query inside a big query is planned by itself. Citus tries to plan the whole big query at one time for performance reasons (see Query Pushdown Planning). This makes how they use Equivalence Classes different. + +In Postgres, each subquery has its own Equivalence Classes. But Citus needs Equivalence Classes for the whole big query. For example: + +```sql +SELECT count(*) FROM (SELECT a FROM t1 JOIN t2 USING(a)) as foo, +(SELECT a FROM t3 JOIN t4 USING (a)) as bar USING (a); +``` + +For Postgres, it's enough to make Equivalence Classes for the subqueries `foo` and `bar`. Then make another one for the top-level query where `foo` and `bar` join. Postgres can plan joins this way. + +In Citus, we need to check if all tables in the big query (t1,t2,t3,t4) join on distribution columns. Citus makes Equivalence Classes for the whole big query. The logic is in the `AttributeEquivalenceClass` C struct. The function `GenerateAllAttributeEquivalences()` makes this structure in Citus. The idea is to simply merge all the Equivalence classes of different query levels into a one Equivalence Class (e.g., AttributeEquivalenceClass) + +Citus also introduces a new idea: RTEIdentity. Each table in the query gets a unique ID called RTEIdentity (see `AssignRTEIdentity()` C function). This ID helps make a new type of Equivalence Class that works for many levels of small queries. Without RTEIdentity, we can't tell tables apart in different levels of the query. We rely on a hack while assigning the RTEIdentities. We basically use a field in `RangeTblEntry` struct that we are sure it is not used for tables. In practice, this might break at some point. + + + +## Recurring Tuples + + + +The Recurring Tuples concept in Citus helps manage expressions that give the same set of results across multiple shards. This is mainly useful for JOIN operations. The idea is to understand and handle how some tables or functions behave the same way across different shards of a distributed table. This concept helps to provide accurate error messages if such recurring tuples are used in a way that might give wrong results. + +The `RecurringTuplesType` enum in the code helps categorize these recurring tuples into different types. The types include: + +- Reference Table +- Function +- Empty Join Tree +- Result Function +- Values + +The main point is that recurring tuples "recur" for each shard in a multi-shard query. + +For example, consider a JOIN between a distributed table and a reference table. The query on each shard would look something like this: + +```sql +SELECT ... FROM dist_table_shard_1 JOIN ref_table_shard_1; +SELECT ... FROM dist_table_shard_2 JOIN ref_table_shard_1; +... +SELECT ... FROM dist_table_shard_n JOIN ref_table_shard_1; +``` + +Here, `ref_table_shard_1` is a recurring tuple because it appears in each shard query of the distributed table (`dist_table_shard_X`). It "recurs" for each shard, making it a recurring tuple. + +In summary, the Recurring Tuples concept in Citus helps in managing and identifying expressions that behave the same way across different shards, mainly to ensure accurate query results and error handling. + +# Executor + +Citus primarily hooks into the PostgreSQL executor by producing a query plan with a CustomScan. The overall hierarchy of where Citus hooks into the executor looks like this: + +- PostgreSQL executor + - ExecutorRun_hook + - Subplans are executed before regular execution + - CustomScan functions are invoked as part of overall scan tree + - BeginCustomScan (which steps are included depends on the query) + - Function calls & distribution column parameters are evaluated + - Deferred shard pruning + - Lock shards to prevent concurrent move (write only) + - Find placements for shards + - ExecCustomScan + - Adaptive Executor executes a list of tasks and concatenates the results into a tuple store + - Re-partition jobs are executed + - Remote tasks are executed + - Local tasks are executed + +We describe each part in more detail below. + +## Custom scan + +The Custom scan is the main entry point for the executor into Citus. The whole query plan might be a single Custom Scan node (e.g. single shard queries), or it can be a leaf node in a query plan that aggregates results across shards. + +The BeginCustomScan function evaluates function calls, parameters, and performs deferred pruning, and local plan caching, which are described in the next few sections. The ExecCustomScan function runs the adaptive executor which executes a list of tasks across the worker nodes. + +We also use top-level executor hooks, but primarily to capture some execution time information. The one important thing we do in the top-level ExecutorRun hook is execute subplans. That is because we allow subqueries to appear in certain parts of the combine query, and in case of a subquery on a Citus table that subquery needs to be executed before the overall plan. + +We use a separate custom scans for insert..select and merge commands due to the specialized nature of these commands (multiple phases). + +![Diagram of CustomScan APIs](https://wiki.postgresql.org/images/0/05/CustomScan_Fig01.png) + +## Function evaluation + +It is often necessary to evaluate function calls on the coordinator, rather than pushing them down to the worker node. One example is evaluating the `nextval('my_sequence')` in an insert, or stable functions like `now()` that should return the same value for the duration of the query. This is especially true for writes to replicated (reference) tables, since we cannot afford to push down function calls that might return different values on different nodes. We perform function evaluation on the “job query” of the distributed plan in `ExecuteCoordinatorEvaluableExpressions`, before deparsing the query. + +Whether a function call should be evaluated once on the coordinator, or many times (e.g. for every row) depends on the context in which the function call appears. For instance, a function call in a WHERE or SELECT clause might be evaluated many times, while a function call in a VALUES clause will only be evaluated once. On the other hand, stable & immutable functions are expected to return the same result for the same input for the whole query execution, so they should be evaluated once, unless their input can change (e.g. parameter is a column). + +So far, the function evaluation logic does not distinguish between different contexts within queries. Instead, we follow a simple policy: + +- For inserts, evaluate all function calls, including calls to volatile functions, but disallow stable/volatile functions in RETURNING +- For update/delete, evaluate all function calls, but disallow volatile functions +- For select, do not evaluate function calls on coordinator (not entirely correct) + +When DML commands appear in a CTE, the restriction only applies to the CTE. In many cases, the CTE will in that case be planned and executed separately through recursive planning. + +A function call that takes a column (Var) as a parameter will not be evaluated on the coordinator, since it depends on data on the worker nodes and will need to be evaluated many times. However, if we did this on a replicated table then stable/volatile functions may return different results on different nodes, in the context of an update/delete it would cause replicas diverge. That is one of the reasons why we disallow stable/volatile functions in update/delete statements, but we could permit them for regular tables with a single replica. + +The reason we also disallow volatile functions in regular update/delete is purely implementation related: Our current function evaluation logic does not know how to distinguish between stable & volatile functions. If we were to run it on a query that contains WHERE x > random(), it would evaluate the random() once, even though it’s supposed to be pushed down and re-evaluated for every row. + +## Prepared statements + +Prepared statements is a feature that lets clients send a query once and then execute it multiple times. Plans may be cached across execution. Prepared statements can be created explicitly via PREPARE/EXECUTE commands, via protocol messages (what most clients do), via PL/pgSQL, and via SPI. + +Citus has limited prepared statement support in the sense that they functionally work, but there are only a few cases in which plans are meaningfully cached across executions. Despite the lack of meaningful optimization, prepared statements involve a lot of complexity and counterintuitive logic. Which parts are necessary and which parts are technical debt is left as an exercise to the reader. + +The plan of a prepared statement is only cached when the same prepared statement is executed 5 times by PostgreSQL (hard-coded value). The 5th time, the planner is called without supplying parameter values to obtain a “generic plan” and that plan is cached unless it is much costlier than using custom plan. Hence, the planner might be called twice on the 5th execution and if a generic plan is created then the planner may not be called again. + +There are a few important cases to distinguish in case of Citus: + +- Multi-shard queries vs. single shard (Fast path & router) +- Custom plan vs. Generic plan. +- Parameter in a filter on the distribution column vs. only on other columns +- Local vs. remote execution +- Combinations of parameters & function evaluation. + +Let’s start with the simplest case: Multi-shard queries. These queries have complex planning logic, and it would be even more complex if the planner did not know the values of parameters. Therefore, we dissuade PostgreSQL from using a generic plan by returning a mock PlannedStmt with an extremely high cost when asked for a generic plan (see `DissuadePlannerFromUsingPlan()`). That will cause PostgreSQL to keep using a custom plan with known parameter values. In addition, we replace any Params that appear in the query tree with their Const values in ResolveExternalParams before distributed planning, so the remaining planner logic does not need to concern itself with query parameters. + +For single shard queries, the story is a lot more complex. An important question is whether there is a parameter in the distribution column, and whether a query is single shard in the planner or not. A query like `SELECT * FROM table1 WHERE distcol = $1` will clearly go to a single shard, but for a query like `SELECT * FROM table1 WHERE distcol = $1 UNION ALL SELECT * FROM table2 WHERE distcol = $2` it may or may not be. + +We do not precisely distinguish all possible cases, but rather have a simple distinction: + +- Fast path queries are simple queries on a single table with a "distribution column" = "Param or Const" filter (or single row inserts). We know that they prune to at most 1 shard regardless of the parameter value. The case of “distcol = NULL” is false/null by definition (unlike “distcol IS NULL”) and therefore prunes to 0 shards. +- Router queries are arbitrarily complex queries that prune down to a single shard at planning time based on the RestrictInfo data structures obtained from postgres planner. + +We can only decide whether a query is a router query in the planner, because if it is not a router query, we need to fall back to the multi-shard query planning code path. Hence, we can only support generic router plans when all distribution column filters are constant, or there are only single shard/reference tables in the query. The router planner cannot prune based on unbound parameters and will therefore return a soft error. When the planner sees a soft error, we return a mock plan with a high cost, similar to multi-shard queries. + +Fast path queries prune to a single shard regardless of the parameter values. If the distribution column value is a parameter, we defer additional planning decisions, in particular “shard pruning” to the executor (deferredPruning flag in the Job). Currently, we resolve the parameters in `ExecuteCoordinatorEvaluableExpressions()` which replaces the Param nodes in the query tree, and then `TargetShardIntervalForFastPathQuery()` finds "distribution column" = "Const" filters in the WHERE clause. This could perhaps be optimized but keeps the logic consistent between parameters and non-parameterized queries. + +For both fast path queries and router queries, the job query tree for single shard queries still has all the parameters when we get to the executor. We resolve the parameters in the query tree before deparsing when: + +- pruning is deferred (has WHERE distcol = $1 …) +- the query is a DML that contains function calls that need to resolved + +The latter happens primarily because function evaluation also resolves parameters. Otherwise, it would not be able to resolve expressions like `stable_fn($1)`. If the parameters are not resolved in the executor, they are passed on to the worker node using the libpq functions that take parameters. + +Both fast path and router query plans can be stored in the PostgreSQL cache (plancache.c) if they are run at least five times. The way these plans are handled depends on whether or not the query includes a parameter on the distribution key. In the first case below, there is no parameter; in the second case, there is a parameter: + +- the query pruned to a single shard in the planner, the task is therefore static (always goes to the same shard group, with same query string) +- the query uses deferred pruning, the shard group is therefore decided in the executor (not cached, query string rebuilt) + +Both scenarios reduce compute cycles in terms of planning the distributed query, but the plan for the shard query is never cached, except in the local execution case, which is described in the next section. + +The current structure is “less than ideal”, but by now it is battle hardened and has extensive regression tests that cover all the cases. It should be improved, but with caution. Caching the wrong plan could easily lead to invalid results, and there are many subtle edge cases. + +### Local plan caching + +We currently only take advantage of plan caching for shard queries that access a single local shard group and use deferred pruning (described in the previous section). This avoids reparsing or replanning the query on the local shard. That works well in combination with smart clients that immediately connect to the right node, function call delegation, triggers, and Citus local tables. + +We can only know whether we are dealing with a local shard group after evaluating parameters and functions. Immediately after that, we plan the query on the local shard group and store the resulting (regular PG) plan in the distributed plan data structure (Job). The reason we store it in the distributed plan is that it is already cached by PostgreSQL, so anything we add to the plan will be cached along with it, with the correct lifecycle. We store a list of local plans, one for each shard plan. + +Local plan caching quite significantly improves performance for certain workloads, but it comes with a subtle caveat. For queries with deferred pruning, we only know whether the shard query is on a local shard query after evaluating parameters and function calls, which we do by replacing them in the query tree. However, to obtain a cacheable generic plan, we need to use the original query tree which still has the original function calls and parameters. That means re-execute those function calls when executing the shard query, which is unusual since we usually only execute them in the BeginCustomScan hook. Since we only do this for local execution, the function calls will still run in the same process and will therefore have the same effect, but it means we sometimes evaluate function calls twice. That is acceptable for stable functions, but not for volatile functions. We therefore skip caching when there are calls to volatile functions. + +## Adaptive executor + +Once function and parameter evaluation are completed and the final task list is ready, we call into the adaptive executor. The goal of the adaptive executor is to efficiently execute a list of tasks. A task is typically a shard query that is to be executed on 1 placement (read) or all placements (write). It can also be an arbitrary command unrelated to shards. Implementation-wise, its primary function is to concurrently execute multiple queries on multiple remote nodes using libpq in non-blocking mode with appropriate failure handling and adaptive connection pools. + +The adaptive executor tries to minimize network round trips for single shard statements (transactional workloads) by using a single, cached connection per node, and parallelize queries using multiple connections per node for multi-shard statements (analytical workloads, ETL, DDL). + +Historically, Citus executed single shard queries via a single connection per worker node (router executor), while it executed multi-shard queries via a connection per shard to parallelize across nodes and cores (real-time executor), but this approach had several limitations. + +**The executor must consider preceding writes and locks on shards in the transaction**. In the past, if the router executor performed 2 inserts on different shards over the same connection, then the real-time executor could no longer run. It is not valid to query those shards over two separate connections, since only one of them would see the inserts. The executor must ensure that after a write or lock on a shard group, all subsequent queries on the shard group use the same connection until transaction end. + +**The executor should consider fast vs. slow multi-shard commands**. We observed many cases in which multi-shard commands only took a few milliseconds (e.g. index lookups on a non-distribution column) and opening a connection per shard was excessive, since it could add tens or hundreds of milliseconds to a query that could otherwise finish in 10-20ms. _Whether parallelization is beneficial depends on the runtime of individual tasks._ Some tasks can also take much longer than others. + +**The executor should gracefully handle failures**. One of the more challenging parts of doing remote, concurrent query execution is handling a variety of failures, including timeouts, failed connections, and query errors. The handling can be different for reads and writes, since reads on replicated tables can fail over to a different placement. + +**The executor should consider replicated shards**. Writes to reference tables (or replicated shards) need to be sent to all nodes, while reads can fail over to other replicas. Update/delete can be performed in parallel due to the exclusive lock on the shard, while inserts need to run in a consistent order to avoid deadlocks in case of constraint violations. The executor also needs to consider that replicas may be on the local node and use local execution. + +To fulfill the first two requirements, the adaptive executor uses a (process-local) **pool of connections per node**, which typically starts at 1 connection, but can grow based on the runtime of the query. Queries on shard groups that were already modified are assigned to the connection that performed the modification(s), while remaining queries are assigned to the pool (to be parallelized at will). + +Adaptive executor pools + +**Both the pool and the session have a “pending queue” and a “ready queue”**. The pending queue is mainly used in case of replication (e.g. reference tables). In the case of reads, whether a (pending) task on placement 2 needs to run depends on whether the (ready) task on placement 1 succeeds. In case of inserts, we write to the placements in order, so the task on placement 2 runs only once placement 1 is done. + +**The main loop of the adaptive executor waits for IO on the overall list of connections using a WaitEventSet**. When a connection has IO events, it triggers the connection state machine logic (ConnectionStateMachine). When the connection is ready, it enters the transaction state machine logic (TransactionStateMachine) which is responsible for sending queries and processing their results. The executor is designed with state machines, and the code has an extensive comment describing the state machines, please refer there for the details + +When a connection is ready, we first send BEGIN if needed, and then take tasks from the session-level ready queue, and then tasks from the pool-level ready queue. We currently process one task at a time per connection. There are opportunities for optimization like pipelining/batching, though we need to be careful not to break parallelism. + +**Late binding of tasks to connections via the pool-level queue has nice emergent properties**. If there is a task list with one particularly slow task, then one connection will spend most of its time on that task, while other connections complete the shorter tasks. We can also easily increase the number of connections at runtime, which we do via a process called slow start (described below). Finally, we’re not dependent on a connection being successfully established. We can finish the query when some connections fail, and we finish the query if BEGIN never terminates on some connection, which might happen if we were connecting via outbound pgbouncers. + +**The pool expands via “slow start”, which grows the pool every ~10ms as long as tasks remain in the pool-level queue**. The name slow start is derived from the process in TCP which expands the window size (the amount of data TCP sends at once). As in the case of TCP, the name slow is a misnomer. While it starts very conservatively, namely with 1 connection, the _rate_ at which new connections open increases by 1 every 10ms, starting at 1. That means after 50ms, the executor is allowed to open 6 additional connections. In a very typical scenario of 16 shards per node, the executor would reach maximum parallelism after ~60ms. It will open at most as many additional connections as there are tasks in the ready queue. + +Adaptive executor slow start example + +The 10ms was chosen to be higher than a typical connection-establishment time, but low enough to quickly expand the pool when the runtime of the tasks is long enough to benefit from parallelism. The 10ms has mostly proven effective, but we have seen cases in which slow connection establishment due to Azure network latencies would justify a higher value. In addition, we found that workloads with many queries in the 20-60ms range would see a relatively high number of redundant connection attempts. To reduce that, we introduced “cost-based connection establishment”, which factors in the average task execution time compared to the average connection establishment time and thereby significantly reduced the number of redundant connections. + +**The citus.max_adaptive_executor_pool_size setting can be used to limit the per-process pool sizes**. The default behaviour of the adaptive executor is optimized for parallel query performance. In practice, we find that there is another factor than runtime that users care about: memory. The memory usage of a query that uses 16 connections can be 16 times higher than the memory usage of a query that uses 1 connection. For that reason, users often prefer to limit the pool size to a lower number (e.g. 4) using citus.max_adaptive_executor_pool_size. + +**The citus.max_shared_pool_size setting can be used to limit the pool sizes globally**. It’s important to reiterate that the adaptive executor operates in the context of a single process. Each coordinating process has its own pools of connections to other nodes. This would lead to issues if e.g. the client makes 200 connections which each make 4 connections per node (800 total) concurrently while max_connections is 500. Therefore, there is a global limit on the number of connections configured by max_shared_pool_size. The citus.max_shared_pool_size is implemented in the connection management layer rather than the executor. Refer to the connection management section for details. + +**The comment on top of [adaptive_executor.c](executor/adaptive_executor.c) has a detailed description of the underlying data structures.** While these data structures are complex and this might look like an area technical debt, the current data structures and algorithm have proven to be a relatively elegant and robust way to meet all the different requirements. It is worth noting that a significant part of the complexity comes from dealing with replication, and shard replication is mostly a deprecated feature, but keep in mind that reference tables are also replicated tables and most of the same logic applies. + +## Local execution + +When the adaptive executor completes all of its remote tasks, the final step is to perform local execution. We formally see this as part of the adaptive executor, though the code is largely separate (in local_executor.c). Local execution is essentially just executing the shard queries on local shards directly by invoking the planner & executor. In other words, there is no additional backends or connections are established for local execution. + +Some queries strictly require local execution. In particular, queries that depend on objects (types, tables) created by the current transaction, or joins between regular tables and Citus local or reference tables. + +In case of a multi-shard query, a downside of local execution is that there is no parallelism across shards. Therefore, the executor tries to avoid local execution for simple multi-shard queries outside of a transaction block. Instead, it will open multiple connections to localhost to run queries in parallel. In a multi-statement transaction, the executor always prefers local execution even for multi-shard queries, since the tranasaction might also perform operations that require local execution. + +Some queries cannot use local execution. For instance, we cannot use CREATE INDEX CONCURRENTLY as part of a bigger transaction, and we have not implemented a local version of EXPLAIN ANALYZE. We also cannot perform replication commands like creating a subscription via local execution. For the most part, these commands are typically executed outside of a transaction block or as internal commands, so it does not significantly affect the user experience. + +The executor always does the local execution after remote execution. That way, if there are any problems with the remote execution, Citus can still switch back (e.g., failover) to local execution. + +## Subplans + +Execution of subplans (CTEs, subqueries that cannot be pushed down) is relatively straight-forward. The distributed plan has a list of subplans, which can be regular or distributed, and they are passed to the PostgreSQL executor sequentially. + +The result of each subplan is broadcast to all participating nodes via the COPY .. WITH (format ‘result’) command, which writes to an intermediate result. The intermediate results are read in subsequent shard queries via the read_intermediate_result function. + +A current downside of the read_intermediate_result function is that it first copies all the tuples into a tuple store, which may be flushed to disk. This could be fixed through a CustomScan, or in PostgreSQL itself. + +## Re-partitioning + +Re-partitioning happens when joining distributed tables on columns other than the distribution column, or when the tables are not co-located. In the distributed plan, a re-partitioning operation is generally expressed through a Job which has dependent Jobs. The dependent Jobs are a special type of subplan whose results are re-partitioned. + +Two stages are executed to resolve the dependent jobs: + +- Run a query on all shards using the worker_partition_query_result function, which writes the result of the query to a set of intermediate results based on a partition column and set of hash ranges +- Fetch the intermediate results to the target node using fetch_intermediate_result, for each source shard group & target hash range pair. + +These stages are run in parallel for all dependent jobs (read: all tables in a join) by building a combined task list and passing it to the adaptive executor. This logic primarily lives in ExecuteTasksInDependencyOrder. + +Once all dependent jobs are finished, the main Job is executed via the regular adaptive executor code path. The main job will include calls to read_intermediate_result that concatenate all the intermediate results for a particular hash range. + +Single hash re-partition join example + +Dependent jobs have similarities with subplans. A Job can only be a distributed query without a merge step, which is what allows the results to be repartitioned, while a subplan can be any type of plan, and is always broadcast. One could imagine a subplan also being repartitioned if it is subsequently used in a join with a distributed table. The difference between subplans and jobs in the distributed query plans is one of the most significant technical debts. + +## COPY .. FROM command + +The COPY .. FROM command is used to load a CSV (or TSV, or binary copy format) file or stream from the client into a table. The \copy command is a psql command that can load files from the client, and internally does COPY .. FROM STDIN and sends the file contents over the socket. + +**Citus supports COPY into distributed tables via the ProcessUtility_hook by internally doing a COPY to each shard.** We go through the regular COPY parsing logic in PostgreSQL (BeginCopyFrom & NextCopyFrom), which reads from the socket, parses the CSV, and returns a tuple. The tuple is passed through the CitusCopyDestReceiver API. Most of the relevant logic lives in CitusSendTupleToPlacements. + +**The CitusCopyDestReceiver inspects the value in the distribution column and finds the corresponding shard.** It opens a connection to the node(s) on which the shard is placed, starts a COPY into the shard, and forwards the tuple. For performance reasons, we use the binary copy format over the internal connections, when possible (e.g. all types have send/receive), even if the client used CSV. + +**The COPY protocol does not require immediate confirmation when sending a tuple**, which means we can continue parsing the next tuple without waiting for the previous tuple to be fully processed. This creates nice pipelining behaviour where tuples are effectively ingested in parallel and can improve performance over regular PostgreSQL, even though parsing runs at the same speed. This effect will be more pronounced when insertions are relatively heavy-weight due to triggers or heavy indexes. + +**COPY does not always use a connection per shard.** If there were already writes to multiple shards on a specific connection earlier in the transaction (e.g. consecutive inserts), then that connection must be used for the writes done by the COPY (e.g. to be able to check unique constraints). However, we can only COPY into one table at a time. In this case, the COPY logic maps multiple shards to the same connection and switches back-and-forth between shards through multiple COPY commands (which has overhead). If we get a tuple for a shard that is currently active, we forward immediately over the connection. Otherwise, we add the tuple to a per-shard buffer, or switch the connection if we already sent `citus.copy_switchover_threshold` bytes to the current shard. + +There is a caveat in the current COPY logic. Citus always uses non-blocking I/O, which means libpq keeps outgoing bytes in a buffer when the socket is busy. We only run the relevant libpq functions to flush the per-connection libpq buffer (or flush the per-shard buffer) when there is a tuple for a particular connection, or when reaching the end of the stream. Ideally, we keep getting tuples for all the different shards, such that all connections are flushed. In some cases, when many consecutive tuples are for the same shard, a large amount of data can remain buffered on the coordinator in libpq or the per-shard buffer when we come to the end of the stream (CitusCopyDestReceiverShutdown). The connections and per-shard buffers are then flushed one by one. There is room for optimization where the COPY loop and final flush behave more like the adaptive executor and uses a WaitEventSet to check for I/O events on all the sockets, and flush the libpq buffer. + +Another (smaller) caveat is that the libpq buffer can fill up if the outgoing connection to the worker cannot keep up with the rate at which the coordinator is receiving and parsing tuples. To bound the size of the buffer and thereby avoid running out of memory, we force a flush on a connection after every `citus.remote_copy_flush_threshold` bytes that are written to a connection. We do this regardless of whether the libpq buffer is becoming large, because we do not have direct insight into its current size. Fortunately, it will only cause a very short pause if the buffer is not large or empty. + +For local shards, COPY can also use local execution. We use local execution by default in transaction blocks, but try to use connections to the local node for a single statement COPY because we get more parallelism benefits. + +## COPY .. TO command + +The COPY .. TO command is used to dump the data from a table, or to get the output of a query in CSV format. The COPY (SELECT ..) TO syntax does not use any special logic. PostgreSQL’s implementation will plan and execute the query in the usual way, and Citus will intercept queries on distributed tables. That means these commands do not use COPY internally to query the shards. Instead, the results of the query are buffered in a tuple store and then converted to CSV. + +The COPY distributed_table TO .. syntax will typically return a lot of data and buffering it all in a tuplestore would cause issues. Therefore, Citus uses the process utility hook to propagate the COPY distributed_table TO .. command to each shard one by one. The output is forwarded directly to the client. If the user asked for a header, it is only requested from the first shard to avoid repeating it for each shard. + +## INSERT..SELECT + +The INSERT.. SELECT command inserts the result of a SELECT query into a target table. In real-time analytics use cases, INSERT..SELECT enables transformation of an incoming stream of data inside the database. A typical example is maintaining a rollup table or converting raw data into a more structured form and adding indexes. + +INSERT..SELECT modes + +Citus has three different methods of handling INSERT..SELECT commands that insert into a distributed table as shown in the figure above. We identify these methods as: (1) co-located, where shards for the source and destination tables are co-located; (2) repartitioning, where the source and destination tables are not co-located and the operation requires a distributed reshuffle; and (3) pull to coordinator, where neither of the previous two methods can be applied. These three approaches can process around 100M, 10M, and 1M rows per second, respectively, in a single command. + +Co-located INSERT..SELECT is executed in a similar fashion to multi-shard update/delete commands. There is a single list of tasks with one task for each shard group, which runs via the adaptive executor. + +INSERT..SELECT with re-partitioning is architecturally similar to re-partition joins, but it goes via separate code path and uses more optimizations. Empty files are skipped and files traveling between the same pair of nodes are batched in a single call to fetch_intermediate_results, which saves round trips. The final step in INSERT..SELECT with re-partitioning runs queries like INSERT INTO dist_table SELECT .. FROM read_intermediate_result(…) with optional ON CONFLICT and RETURNING clauses. In principle, we could do an additional GROUP BY in the final step when grouping by the target distribution column, but that is not currently implemented and instead falls back to pull to coordinator. + +INSERT..SELECT via the coordinator logic uses the COPY code path to write results of an arbitrary SELECT into multiple shards at the same time. In case of ON CONFLICT or RETURNING, they are first written to intermediate results that are co-located with the destination shards. Then a co-located INSERT..SELECT between the intermediate results and the target shards is performed, similar to the final step of re-partitioning. + +## Merge command + +Merge command the same principles as INSERT .. SELECT processing. However, due to the nature of distributed systems, there are few more additional limitations on top of the INSERT .. SELECT processing. The [MERGE blog post](https://www.citusdata.com/blog/2023/07/27/how-citus-12-supports-postgres-merge/) dives deep on this topic. + +# DDL + +DDL commands are primarily handled via the ProcessUtility hook, which gets the parse tree of the DDL command. For supported DDL commands, we always follow the same sequence of steps: + +1. Qualify the table names in the parse tree (simplifies deparsing, avoids sensitivity to search_path changes) +2. Pre-process logic +3. Call original ProcessUtility to execute the command on the local shell table +4. Post-process logic +5. Execute command on all other nodes +6. Execute command on shards (in case of table DDL) + +Either the pre-process or post-process step generates a "Distributed DDL Job", which contains a task list to run in steps 4 & 5 (via adaptive executor). + +In general pre-process should: + +- Acquire any locks that are needed beyond the ones PostgreSQL will acquire in step 3 +- Perform upfront error checks (e.g. is this unique constrained allowed on a distributed table?) + +Post-process should: + +- Ensure dependencies of the current object exist on worker nodes (e.g. types used in parameters when creating a function) +- Deparse the DDL parse tree to a string +- Generate a task list using the deparsed DDL command + +The reason for handling dependencies and deparsing in post-process step is that in case of a CREATE/ALTER, the object exist in its intended form at that point. In case of a DROP, the opposite is true and the pre-process should be used. Most commands have either a pre-process or post-process function. We have not been particularly careful about defining what should be done in pre-process vs. post-process, so the steps are not always the same across different commands. + +Not all table DDL is currently deparsed. In that case, the original command sent by the client is used. That is a shortcoming in our DDL logic that causes user-facing issues and should be addressed. We do not directly construct a separate DDL command for each shard. Instead, we call the `worker_apply_shard_ddl_command(shardid bigint, ddl_command text)` function which parses the DDL command, replaces the table names with shard names in the parse tree according to the shard ID, and then executes the command. That also has some shortcomings, because we cannot support more complex DDL commands in this manner (e.g. adding multiple foreign keys). Ideally, all DDL would be deparsed, and for table DDL the deparsed query string would have shard names, similar to regular queries. + + +## Object & dependency propagation + +These two topics are closely related, so we'll discuss them together. You can start the topic by reading [Nils' blog](https://www.citusdata.com/blog/2020/06/25/using-custom-types-with-citus-and-postgres/) on the topic. + +### The concept of "Dependency" for Postgres/Citus + +Starting with the basics, Postgres already understands object dependencies. For instance, it won't allow you to execute `DROP SCHEMA` without the `CASCADE` option if tables exist within the schema. In this case, the table is a `dependent object`, and the schema serves as the `referenced object`. + +```sql +CREATE SCHEMA sc1; +CREATE TABLE sc1.test(a int); +DROP SCHEMA sc1; +ERROR: cannot drop schema sc1 because other objects depend on it +DETAIL: table sc1.test depends on schema sc1 +HINT: Use DROP ... CASCADE to drop the dependent objects too. +``` + +The information about these dependencies is stored in a specific Postgres catalog table, known as [`pg_depend`](https://www.postgresql.org/docs/current/catalog-pg-depend.html). You can inspect the aforementioned dependency within this catalog using the following query: + +```sql +SELECT + pg_identify_object_as_address(classid, objid, objsubid) as dependent_object, + pg_identify_object_as_address(refclassid, refobjid, refobjsubid) as referenced_object +FROM + pg_depend +WHERE + (classid, objid, objsubid) + IN + (SELECT classid, objid, objsubid FROM pg_get_object_address('table', '{sc1,test}', '{}')); + +┌─────────────────────────┬───────────────────┐ +│ dependent_object │ referenced_object │ +├─────────────────────────┼───────────────────┤ +│ (table,"{sc1,test}",{}) │ (schema,{sc1},{}) │ +└─────────────────────────┴───────────────────┘ +(1 row) +``` + +### Citus' Approach to Object Creation and Dependency Tracking: `pg_dist_object` + +Citus employs its own catalog table called `pg_dist_object`. This table keeps records of all objects that need to be created on every node in the cluster. These objects are commonly referred to as `Distributed Objects`. + +When adding a new node to the cluster using `citus_add_node()`, Citus must ensure the creation of all dependent objects even before moving data to the new node. For instance, if a table relies on a custom type or an extension, these objects need to be created before any table is set up. In short, Citus is responsible for setting up all the dependent objects related to the tables. + +Similarly, when creating a new Citus table, Citus must confirm that all dependent objects, such as custom types, already exist before the shell table or shards are set up on the worker nodes. Note that this applies not just to tables; all distributed objects follow the same pattern. + +Here is a brief overview of `pg_dist_object`, which has a similar structure to `pg_depend` in terms of overlapping columns like `classid, objid, objsubid`: + +```sql +CREATE SCHEMA sc1; +CREATE TABLE sc1.test(a int); +SELECT create_distributed_table('sc1.test', 'a'); + +SELECT + pg_identify_object_as_address(classid, objid, objsubid) as distributed_object +FROM + pg_dist_object; +┌─────────────────────────────┐ +│ distributed_object │ +├─────────────────────────────┤ +│ (role,{onderkalaci},{}) │ +│ (database,{onderkalaci},{}) │ +│ (schema,{sc1},{}) │ +│ (table,"{sc1,test}",{}) │ +└─────────────────────────────┘ +(4 rows) +``` + + +### When Is `pg_dist_object` Populated? + +Generally, the process is straightforward: When a new object is created, Citus adds a record to `pg_dist_object`. The C functions responsible for this are `MarkObjectDistributed()` and `MarkObjectDistributedViaSuperuser()`. We'll discuss the difference between them in the next section. + +Citus employs a universal strategy for dealing with objects. Every object creation, alteration, or deletion event (like custom types, tables, or extensions) is represented by the C struct `DistributeObjectOps`. You can find a list of all supported object types in [`distribute_object_ops.c`](https://github.com/citusdata/citus/blob/2c190d068918d1c457894adf97f550e5b3739184/src/backend/distributed/commands/distribute_object_ops.c#L4). As of Citus 12.1, most Postgres objects are supported, although there are a few exceptions. + +Whenever `DistributeObjectOps->markDistributed` is set to true—usually during `CREATE` operations—Citus calls `MarkObjectDistributed()`. Citus also labels the same objects as distributed across all nodes via the `citus_internal_add_object_metadata()` UDF. + +Here's a simple example: + +```sql +-- Citus automatically creates the object on all nodes +CREATE TYPE type_test AS (a int, b int); +... +NOTICE: issuing SELECT worker_create_or_replace_object('CREATE TYPE public.type_test AS (a integer, b integer);'); +.... + WITH distributed_object_data(typetext, objnames, objargs, distargumentindex, colocationid, force_delegation) AS (VALUES ('schema', ARRAY['public']::text[], ARRAY[]::text[], -1, 0, false)) SELECT citus_internal_add_object_metadata(typetext, objnames, objargs, distargumentindex::int, colocationid::int, force_delegation::bool) FROM distributed_object_data; + ... + +-- Then, check pg_dist_object. This should be consistent across all nodes. +SELECT + pg_identify_object_as_address(classid, objid, objsubid) as distributed_object +FROM + pg_dist_object +WHERE + (classid, objid, objsubid) + IN + (SELECT classid, objid, objsubid FROM pg_get_object_address('type', '{type_test}', '{}')); +┌──────────────────────────────┐ +│ distributed_object │ +├──────────────────────────────┤ +│ (type,{public.type_test},{}) │ +└──────────────────────────────┘ +(1 row) +``` + +In rare cases, `pg_dist_object` is updated during Citus version upgrades. If you upgrade Citus from `version X` to `version Y`, and a certain object becomes a supported distributed object in `version Y` but wasn't in `version X`, Citus marks it as such during the `ALTER EXTENSION citus` command. The details can be found in the C function `PostprocessAlterExtensionCitusUpdateStmt()`. + +### How Are `pg_dist_object` and `pg_depend` Related? + +In the prior sections, we focused on standalone objects, but in reality, most objects have dependencies. That's where `pg_depend` and also `pg_shdepend` become crucial. Any mention of `pg_depend` in this section also applies to `pg_shdepend`. + +When Citus creates an object, it scans the `pg_depend` table to identify all dependencies and then automatically generates these dependencies as distributed objects. + +The core C function in this process is `EnsureDependenciesExistOnAllNodes()`. This function takes the object as an argument and conducts a depth-first search (DFS) on `pg_depend` and `pg_shdepend` tables. The DFS sequence is crucial because dependencies must be established in a specific order. For instance, if a table depends on a type `t1`, and `t1` relies on another type `t2`, then `t2` must be created before `t1`. The DFS ensures that this order is maintained. + +If Citus encounters a dependency it can't support, it will throw an error instead of silently allowing it. The rationale behind this approach is to avoid subtle issues later, especially when adding new nodes. For instance, Citus currently throws an error for circular dependencies. The main function performing these checks is `EnsureDependenciesCanBeDistributed()`. + +During the DFS, Citus might need to extend its search, especially for complex dependencies like array types that don't have a straightforward dependency on their element types. Citus expands the traversal to account for such cases. The main function responsible for this is `ExpandCitusSupportedTypes()`, which has extensive comments explaining the specific rules. + +### Current User vs `superuser` for Object Propagation: + +The difference between `MarkObjectDistributed()` and `MarkObjectDistributedViaSuperuser()` is important here. Generally, Citus tries to minimize the use of `superuser` operations for security reasons. However, there are cases where it's necessary. We employ `superuser` permissions primarily when marking the dependencies of an object we are working on. This is because creating dependencies might require higher-level privileges that the current user might not have. For example, if a schema depends on a role, and the current user doesn't have the privilege to create roles, an error will be thrown. To avoid this, we use `superuser` for creating dependencies. + +However, there's an exception. If the dependency is created within the same transaction, we use the current user. This prevents visibility issues and is mainly relevant for `serial` columns. More details can be found in [Citus GitHub PR 7028](https://github.com/citusdata/citus/pull/7028). + +### When Are the Objects in `pg_dist_object` Used? + +There are three main scenarios: + ++ When adding a new node—or more precisely, activating it—Citus reads all objects listed in `pg_dist_object`, sorts them by dependency, and then creates those objects on the new node. The core C function for this is `SendDependencyCreationCommands()`, and the sorting is done by `OrderObjectAddressListInDependencyOrder()`. + ++ When Citus creates a new object and processes its dependencies, any dependencies already marked as distributed are skipped. This is handled in `FollowNewSupportedDependencies()`, where dependencies are bypassed if `IsAnyObjectDistributed()` returns true. + ++ When user modifies an object, Citus acts only when the object is distributed. For non-distributed object, Citus gives the control back to Postgres. + +## Foreign keys + +Citus relies fully on Postgres to enforce foreign keys. To provide that, Citus requires the relevant shards to be colocated. That’s also why the foreign keys between distributed tables should always include the distribution key. When reference tables / citus local tables involved, Citus can relax some of the restrictions. [Onder’s talk Demystifying Postgres Foreign Key Constraints on Citus](https://www.youtube.com/watch?v=xReWGcSg7sc) at CitusCon discusses all the supported foreign key combinations within Citus. + +There is one tricky behavior regarding transactions when there is a foreign key from a distributed table to a reference table. If a statement in a transaction modifies the reference table, then Postgres acquires row locks on the referencing tables (e.g., shards of the distributed table) within the internal connection that modified the reference table. After that point, Citus cannot access the shards of the distributed table in parallel anymore. Otherwise, the multiple internal connections that would be opened via parallel command might compete to acquire the same locks, leading to a (self) distributed deadlock. To prevent these scenarios, Citus switches to sequential execution. The relevant function is `RecordParallelRelationAccessForTaskList()`, which documents the possible scenarios. The regression test file [foreign_key_restriction_enforcement](https://github.com/citusdata/citus/blob/2c190d068918d1c457894adf97f550e5b3739184/src/test/regress/sql/foreign_key_restriction_enforcement.sql) has lots of nice examples of this behavior. + + +## DROP TABLE + +Citus' handling of `DROP TABLE` is slightly different than other DDL operations. In this section, we aim to highlight the key differences and their reasoning. + +Citus implements an event trigger, [`citus_drop_trigger()`](https://github.com/citusdata/citus/blob/main/src/backend/distributed/sql/udfs/citus_drop_trigger/latest.sql). The trigger is defined as: +```sql + select * from pg_event_trigger ; +┌───────┬────────────────────────────┬──────────┬──────────┬─────────┬────────────┬─────────┐ +│ oid │ evtname │ evtevent │ evtowner │ evtfoid │ evtenabled │ evttags │ +├───────┼────────────────────────────┼──────────┼──────────┼─────────┼────────────┼─────────┤ +│ 16676 │ citus_cascade_to_partition │ sql_drop │ 10 │ 16675 │ O │ │ +└───────┴────────────────────────────┴──────────┴──────────┴─────────┴────────────┴─────────┘ +(1 row) +``` + +The drop trigger proves useful for capturing all tables affected by the `CASCADE` operation. For instance, if you delete a parent table, Postgres will automatically execute a `DROP TABLE` command for its partitions. Citus can then seamlessly apply the same operation to all cascaded tables, eliminating the need for manual identification of tables that would be affected by the cascade. + +Another reason for utilizing a trigger for `DROP` processing is that after executing `standardProcess_Utility`, the `oid` of the table being dropped is eliminated from Postgres' catalog tables. This makes it more challenging to manage a dropped table in `PostProcessUtility`, as is customary for many `DDL` commands. Instead, we depend on the event trigger to supply the `oid` of the table that has been dropped. This allows us to delete all related metadata, such as entries in `pg_dist_partition` or `pg_dist_shard` from Citus' catalog tables. Additionally, we eliminate all relevant metadata from every node in the cluster. Ultimately, this enables us to remove the shard placements linked to the dropped Citus table. + +Also, if we were to rely on `standardProcess_Utility`, we'd need to handle all sorts of `DROP` commands that could cascade into `DROP TABLE`. With drop trigger, Postgres handles that and calls Citus' drop trigger. + +Generally speaking, there isn't a compelling reason to avoid using `PostProcessUtility` for managing `DROP TABLE` commands. Theoretically, one could implement all the same logic within `PostProcessUtility`. However, the drop trigger offers a convenient approach. + + Additional functionalities are present in [`PreprocessDropTableStmt()`](https://github.com/citusdata/citus/blob/c323f49e8378b5e8ce95457c845659b5fc14ccb1/src/backend/distributed/commands/table.c#L146), particularly concerning the handling of partitioned tables and colocation locking. These aspects are well-documented in the code, so for further details, please refer to the documentation there. + +# Connection management + +Each client session makes “internal” connections to other nodes in the cluster. Connection management is an important part of our overall execution logic. The design largely comes from the need to achieve a few different goals: + +- Cache and reuse connections for low latency. +- Parallelize commands over multiple connections per node, to use multiple cores. +- Multi-statement transactions have locks and uncommitted state that is only visible over a particular connection. We therefore need to make sure that: + - After a write to a shard, any access to that shard group should use the same connection as the write. We need to cover the whole shard group because writes and locks can cascade to other shards in the shard group via foreign keys, and they might be used together in a join. + - After a write to a reference tables, any subsequent read of a reference table, including joins between distributed table shards and reference tables, should use the same connection as the write. +- Metadata and global object changes should always use the same connection. +- We should not overload worker nodes with parallel connections. + +In some cases, these goals conflict. For instance, if a multi-statement transaction performs a parallel delete on a distributed table, and then inserts into a reference table, and then attempts to join the distributed table with the reference table, then there is no way to complete that transaction correctly, since there is no single connection that can see both the reference table update and all the updates to distributed table shards. The command that reaches the conflict will error out: + +```sql +-- may fail if delete is parallelized +begin; +delete from dist_table; +insert into reference_table values (1,2); +select * from dist_table join reference_table on (x = a); +ERROR: cannot perform query with placements that were modified over multiple connections +abort; + +``` + +The workaround is to `set citus.multi_shard_modify_mode TO 'sequential';` before or at the start of the transaction, which forces the delete (multi-shard modification) command to use a single connection, such that the insert and select can use the same connection. + +The primary goal of the connection management layer is not to solve all these problems, but to detect them and prevent any form of incorrectness, such as not seeing preceding changes in the transaction and self-deadlocks. A lot of important error-checking logic lives in FindPlacementListConnection, which attempts to find a suitable connection given a list of shard placements out of the connections that are already open, and also checks if the intent of the caller would lead to a conflict. + +The connection management logic is divided into two parts: + +- **connection_management.c** tracks all connections for various purposes and concerns itself with connection establishment, caching, and error handling. +- **placement_connections.c** concerns itself with finding the right connection for a given shard placement access based on preceding commands in the transaction. + +## Connection management + +Connection management tracks all the connections made by the current backend to other worker nodes. The connections can exist for the lifetime of the transaction, or longer when they are cached. The connections are kept in a hash that is keyed by hostname, port, user, database, and replication (yes/no). Each hash entry has a list of connections, since there can be multiple when the executor decides to parallelize a multi-shard query. + +Citus operations that need a connection call `StartNodeUserDatabaseConnection` (or a wrapper), which either returns an existing connection or a new one. the caller should wait for the connection to be fully established. + +When a Citus operation needs a connection to a worker node (hostname, port, user, database, replication), it can ask for it in a few different ways via flags: + +- Pick any connection (default), open a new one if none exists +- Force a new connection (FORCE_NEW_CONNECTION), even if connections already exist +- Pick a connection outside of a transaction (OUTSIDE_TRANSACTION), or open a new one if none exists +- Pick the connection used for metadata syncing (REQUIRE_METADATA_CONNECTION), or open a new one if none exists and mark it for metadata syncing + +In addition, the caller can claim a connection exclusively, in which case it will not be returned until it is unclaimed (or transaction end). For instance, the adaptive executor claims connections it uses exclusively. When it calls `StartNodeUserDatabaseConnection` again, it will always get a new connection that it can use to parallelize the query. + +It is important that global commands like creating a type, or a function, or changing Citus metadata, all use the same connection. Otherwise, we might end up creating a type over one connection, and a function that depends on it over another. The use of the REQUIRE_METADATA_CONNECTION flag prevents this. + +The FORCE_NEW_CONNECTION and OUTSIDE_TRANSACTION flags can BOTH be used to execute (and commit) commands outside of the current transaction. Many usages of the older FORCE_NEW_CONNECTION flag could perhaps be replaced by OUTSIDE_TRANSACTION. A benefit of FORCE_NEW_CONNECTION is that it can provide a more intuitive way to parallelize commands than claiming connections exclusively. For instance, the `run_command_on_shards` uses FORCE_NEW_CONNECTION for this purpose. + +It is worth noting that Citus currently always opens a new connection when switching to a different user (e.g. via SET ROLE), rather than propagating the SET ROLE command. That can lead to some inconsistent behaviour (e.g. cannot see uncommitted writes after SET ROLE). + +## Placement connection tracking + +The placement connection tracking logic stores which shard group placements were accessed over which connections during the current transactions, and whether they performed a SELECT, DML, or DDL. It considers whether to use same connection for accesses to the same shard group placement in the following cases: + +- SELECT after SELECT - can use different connection +- DML after SELECT – can use different connection +- All other cases – must use same connection + +The key function that deals with this logic is `FindPlacementListConnection` in [placement_connection.c](/src/backend/distributed/connection/placement_connection.c), which is called via `GetConnectionIfPlacementAccessedInXact` by the adaptive executor. + +We sometimes allow the same shard group placement to be accessed from different connections (first two cases). Consider a transaction that does a query on a reference table followed by a join between a distributed table and a reference table. Currently Citus would parallelize the second query, but that implicitly causes the reference table to be accessed from multiple connections. After that, we can still perform writes on the reference table (second case), because they do not conflict with the reads. However, we cannot perform most DDL commands involving the reference table because the locks would conflict with the reads, such that it would self-deadlock (blocked waiting for itself). We throw an error to prevent the self-deadlock and suggest set citus.multi_shard_modify_mode is ‘sequential’. Probably some DDL commands that take weaker locks would still be permissible, but we currently treat them all the same way. + +A downside of the current placement connection tracking logic is that it does not consider foreign keys to reference tables, and the fact that writes and locks can cascade from a write to a reference table. We have a separate subsystem for error checking those scenarios (relation_access_tracking.c), but it would be nice if they can be unified. + +## citus.max_cached_connections_per_worker + +An important part of the connection management is caching at least 1 outgoing connection per worker node in the session. Establishing a new connection for every query is quite expensive due to SSL establishment, forking a process on the worker node, and rebuilding caches. Transactional workloads that have a high rate of short-running queries benefit a lot from caching connections. For analytical queries that take hundreds of milliseconds or more, the relative benefit is smaller, but often still noticeable. + +At the end of a transaction, the connection management logic decides which connections to keep. It keeps at most `citus.max_cached_connections_per_worker` regular connections that are in a healthy state, unless they are open for more than `citus.max_cached_connection_lifetime` (10 minutes by default). For workloads with a high rate of multi-shard queries, it can be beneficial to increase `citus.max_cached_connections_per_worker`. + +## citus.max_shared_pool_size + +**The citus.max_shared_pool_size setting can be used to limit the number of outgoing connections across processes **. Each session has its own set of connections to other nodes. We often make multiple connections to the same worker node from the same session to parallelize analytical queries, but if all session are doing that we might overload the worker nodes with connections. That is prevented by setting citus.max_shared_pool_size, which should be at least `citus.max_client_connections` on coordinator node, and at most `max_connections - citus.max_client_connections` on worker node. + +The principle behind `citus.max_shared_pool_size` is that under high concurrency (all client connections used) it converges to each process having 1 connection per node. To do so, we distinguish between “optional” and “required” connections. When the executor asks the connection management layer for a connection, the first connection to a node is always required, and other connections are optional. If all connection slots are in use, the connection manager blocks until one is available when asking for a required connection, or returns NULL when asking for an optional connection. That signals to the executor that it cannot currently expand its pool. It may try again later. Most Citus code paths are tweaked to be able to complete their operation with 1 connection per node, and use local execution for local shards. + +Note that `citus.max_shared_pool_size` can only control the number of outgoing connections on a single node. When there are many nodes, the number of possible inbound internal connections is the sum of the `citus.max_shared_pool_size` on all other nodes. To ensure this does not exceed max_connections, we recommend that `sum(citus.max_client_connections) < max_connections`. + +# Transactions (2PC) + +Citus uses the transaction callbacks in PostgreSQL for pre-commit, post-commit, and abort to implement distributed transactions. In general, distributed transactions comprise a transaction on the coordinator and one or more transactions on worker nodes. For transactions that only involve a single worker node, Citus delegates responsibility to the worker node. For transactions that involve multiple nodes, Citus uses two-phase commit for atomicity and implements distributed deadlock detection. + +## Single-node transactions + +Most multi-tenant and high-performance CRUD workloads only involve transactions that access a single worker node (or rather, a single shard group). For example, multi-tenant applications typically distribute and co-locate tables by tenant and transactions typically only involve a single tenant. When all statements in a transaction are routed to the same worker node, the coordinator simply sends commit/abort commands to that worker node from the commit/abort callbacks. In this case, the transaction is effectively delegated to that worker node. The worker node, by definition, provides the same guarantees as a single PostgreSQL server. + +## Multi-node transactions + +For transactions that write to multiple nodes, Citus uses the built-in two-phase commit (2PC) machinery in PostgreSQL. In the pre-commit callback, a “prepare transaction” command is sent over all connections to worker nodes with open transaction blocks, then a commit record is stored on the coordinator. In the post-commit callback, “commit prepared” commands are sent to commit on the worker nodes. The maintenance daemon takes care of recovering failed 2PC transactions by comparing the commit records on the coordinator to the list of pending prepared transactions on the worker. The presence of a record implies the transaction was committed, while the absence implies it was aborted. Pending prepared transactions are moved forward accordingly. + +2PC recovery + +Nice animation at: [How Citus Executes Distributed Transactions on Postgres](https://www.citusdata.com/blog/2017/11/22/how-citus-executes-distributed-transactions/) + +## No distributed snapshot isolation + +Multi-node transactions provide atomicity, consistency, and durability guarantees. Since the prepared transactions commit at different times, they do not provide distributed snapshot isolation guarantees. + +An example anomaly that can occur is two distributed transactions: + +Two inserts in a transaction block into two different shards + +```sql +BEGIN; +INSERT INTO test (key, value) VALUES (1,2); +INSERT INTO test (key, value) VALUES (2,2); +END; +``` + +An update across shards + +```sql +UPDATE test SET value = 3 WHERE value = 2; +``` + +An update across shards +```sql +UPDATE test SET value = 3 WHERE value = 2; +``` +If Citus provided serializability, there could only be 2 outcomes (a happens first or b happens first). However, it can have at least 4 outcomes, because the update depends on the inserts, and it might see only one of the insert as committed. + +This can happen because the inserts commit using a 2PC if the shards are on different nodes, and therefore they might not become visible at exactly the same time. Since the commits happen in parallel, there are no guarantees w.r.t. which insert becomes visible first. The update could see either insert as committed, or none, or both, depending on exact timings. Hence, there is no well-defined order between a and b, theye are intertwined. + +If the inserts depend on the update, there may be even more possible outcomes. For instance, if there is a unique constraint on (key, value), and we do upserts concurrently with the multi-shard update: + +```sql +BEGIN; +INSERT INTO test (key, value) VALUES (1,2) ON CONFLICT DO NOTHING; +INSERT INTO test (key, value) VALUES (2,2) ON CONFLICT DO NOTHING; +END; +``` + +Now, whether the insert proceeds or does nothing depends on whether the update is already committed or not. Hence, this scenario has 6 possible outcomes. + +It is hard for users to understand these semantics and their implications. Therefore, many database researchers and engineers have a strong preference for serializability. Having fewer possible outcomes means less potential for bugs and unintended situations. On the other hand, the performance impacts of snapshot isolation are generally significant, and we have not seen a lot of problems due to the lack of snapshot isolation in practice. The types of transactional workloads that scale well and therefore benefit from Citus are the types of workloads that scope their transactions to a single node and therefore get all the usual PostgreSQL guarantees. + +Our long-term goal is to provide snapshot isolation as an optional feature, with at least read committed guarantees (default in PostgreSQL). + + + +## Distributed Deadlocks + +Deadlocks are inevitable in a database system which supports transactions, and Citus is no exception. Marco wrote a useful blog post on what are locks & deadlocks & distributed deadlocks, please read the blog post first: https://www.citusdata.com/blog/2017/08/31/databases-and-distributed-deadlocks-a-faq/ Another good introduction for distributed deadlocks can be found here: https://www.citusdata.com/blog/2017/11/22/how-citus-executes-distributed-transactions/ + + + +At a high-level, the applications should try to avoid (distributed) deadlocks. The application should avoid patterns that could cause deadlocks. If those patterns are unavailable, then the database can still resolve the deadlocks. + + + +### Distributed Deadlock Detection Implementation + +Citus heavily relies on PostgreSQL’s internal locking infrastructure for detecting distributed deadlocks. The entry function for the distributed deadlock detection is ` CheckForDistributedDeadlocks ()`. Distributed deadlock detection runs in the background as part of maintenance daemon. + +At a high level, Citus assigns “distributed transaction ids” for all backends running distributed transactions that might be part of a distributed deadlock (e.g., BEGIN; command; or any multi-shard command). See `assign_distributed_transaction()` function: +```sql + +BEGIN + +DELETE FROM test WHERE a = 1; + +NOTICE: issuing BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;SELECT assign_distributed_transaction_id(0, 5, '2023-09-14 17:39:21.263272+03'); + +``` + +Then, Citus periodically (default 2 seconds), pulls all the “lock graphs” from all the nodes and combines them. If it finds a cycle in the combined graph, Citus concludes that there is a deadlock and kills one of the (distributed) processes involved in the graph. To give an example, assume we have the following case: + ++ Transaction 1 waits Transaction 2 on Node-1 ++ Transaction 2 waits Transaction 1 on Node-2 + +In this case, none of the transactions can continue. This is a distributed deadlock as neither `Node-1` nor `Node-2` can detect the deadlock as there is no local deadlocks. To find distributed deadlocks, we pull the `lock graph`s from each node and combine. + +Let’s dive a little deeper. A node-lock lock graph is created in C function ` BuildLocalWaitGraph ()`. The lock graph includes only distributed transactions that are assigned via `assign_distributed_transaction` UDF. As noted, Citus heavily relies on Postgres on which backends are waiting for others, for details see ` AddEdgesForLockWaits ()` and ` AddEdgesForWaitQueue ()` C functions. + +Once each local lock graph is created, then the results are combined in on the coordinator. Then, for each node in the graph, we do a DFS (depth-first search) to check if there is a cycle involving that node. If there is a cycle, we conculde that there is a distributed deadlock. + +While doing the DFS, we also keep track of the other backends that are involved in the cycle. Citus picks the `youngest` transaction as the candidate to cancel (e.g., sends SIGINT). The idea is that let’s allow longer running transactions to continue, such as a long running DDL. + +If there is a cycle in the local graph, typically Postgres’ deadlock detection kicks in before Citus’ deadlock detection, hence breaks the cycle. There is a safe race condition between Citus’ deadlock detection and Postgres’ deadlock detection. Even if the race happens, the worst-case scenario is that the multiple backends from the same cycle is cancelled. In practice, we do not see much, because Citus deadlock detection runs `2x` slower (e.g., `citus.distributed_deadlock_detection_factor`) than Postgres deadlock detection. + +Deadlock detection + +For debugging purposes, you can enable logging with distributed deadlock detection: `citus.log_distributed_deadlock_detection` + +With query from any node, we run the deadlock detection from all nodes. However, each node would only try to find deadlocks on the backends that are initiated on them. This helps to scale deadlock detection workload across all nodes. + +When there are too many active backends(>1000), creating lots of `waiting activity` (e.g., blocked on the same locks not necessarily deadlocks involved), then the deadlock detection process might become a bottleneck. There are probably some opportunities to optimize the code for these kinds of workloads. As a workaround, we suggest increase `citus.distributed_deadlock_detection_factor`. + +The distributed transactionId and backend/PID mapping is done via BackendData structure. For every Postgres backend, Citus keeps a `BackendData` structure. Each backends state is preserved in `MyBackendData` C structure. Assigning (and removing) distributed transaction id to a backend means to update this structure. + +If we were to implement distributed deadlock detection today, we would probably try to build it on top of `Global PID` concept instead of `distributed transaction id`. But, before changing that, we should make sure the `Global PID` is robust enough. `Global PID` today mostly used for observation of the cluster. We should slowly put more emphasis on the `Global PID` and once we feel confortable with it, we can consider using it for distributed deadlock detection as well. + +# Locking +Locks in a database like Postgres (and Citus) make sure that only one user can change a piece of data at a time. This helps to keep the data correct and safe. If two users try to change the same data at the same time, it could create problems or errors. + +Citus, a distributed database, needs extra locks because it stores data across multiple servers. These extra locks help make sure that even when many servers are involved, the data stays correct and safe during changes made by multiple users. + +In PostgreSQL and Citus, there are several types of locks that serve different purposes. In this section, we’d like to go over these different types of locks and explain when/how they are useful. + +## Lock Levels + +In database management, locking mechanisms are crucial for maintaining data integrity during concurrent operations. However, not all locks are created equal. As a building block, PostgreSQL allows different levels/modes of locks. So, this is probably different than what you have learned in your college, where if a lock is held, others have to wait. No, in PostgreSQL, some locks do not conflict with each other, whereas some do. This flexibility allows Postgres (and Citus) to implement sophisticated concurrency scenarios. + +For details of lock levels, please refer to PostgreSQL docs: https://www.postgresql.org/docs/current/explicit-locking.html + +Understanding these lock types and their levels of restrictiveness can help you better manage concurrent operations and ensure data integrity. + +## Lock Monitoring + +Both PostgreSQL and Citus provide comprehensive views for monitoring the locks held (or waiting on) for each backend. `pg_locks`: https://www.postgresql.org/docs/current/view-pg-locks.html. + +In Citus, we have the same view, but they are collected from all nodes in the cluster: `citus_locks` + +You can find lots of examples of how `pg_locks` (and `citus_locks`) can be used in debugging systems. One of the good one is from PostgreSQL’s wiki, ` Сombination of blocked and blocking activity`: https://wiki.postgresql.org/wiki/Lock_Monitoring The same query is also implemented within Citus for the distributed cluster, with the name: citus_lock_waits: https://github.com/citusdata/citus/blob/4e46708789478d6deccd3d121f2b4da7f631ebe3/src/backend/distributed/sql/udfs/citus_lock_waits/11.0-1.sql#L4 + +These simple monitoring tools are essential to understanding the concurrency in PostgreSQL and Citus. + +## Lock Types + +1. **Table-level Locks**: + +Table-level locks in PostgreSQL range from less restrictive to more restrictive, allowing various levels of concurrent access. They can lock an entire table to ensure data integrity during operations like adding columns. You can also acquire any of these locks explicitly with the command LOCK. Two transactions cannot hold locks of conflicting modes on the same table at the same time. (However, a transaction never conflicts with itself. For example, it might acquire `ACCESS EXCLUSIVE` lock and later acquire `ACCESS SHARE` lock on the same table.) + +Marco’s blog post on locks could provide a nice read on this topic: https://www.citusdata.com/blog/2018/02/15/when-postgresql-blocks/ + +As a rule, in most cases, Citus relies on PostgreSQL to acquire the table-level locks. For example, + ++ When a DDL is executed on a Citus table, Citus first executes Postgres’ `standardProcess_Utility()` function. One of the key reasons behind that is Postgres acquires the table-level lock, and Citus provides similar concurrency behavior with Postgres on Citus tables. If an `ALTER TABLE .. ADD COLUMN` is running on a distributed table, no `SELECT` command could run concurrently due to the table-level locks. + ++ When regular commands like `INSERT`/`UPDATE`/`DELETE`/`SELECT` is executed, Citus again relies on Postgres to acquire the table-level locks. PostgreSQL acquires the table-level locks during the parsing of the statements, which makes life simple for Citus, as parsing happens even before any Citus logic kicks in. If the command doesn’t require parsing, such as prepared statements, then Postgres still acquires the same locks before using the cached plan. So, from Citus’ perspective, there mostly is nothing to do for acquiring the table-level locks. + + + There is only a one expection to this rule, Citus' _local plan caching_. When Citus caches the queries by itself, Citus acquires the relevant table-level locks. See `ExecuteLocalTaskListExtended()` as the relevant C function. + + +Citus additionally use table-level locks for certain table management operations on tables. With all these operations, Citus aims to fit into the same concurrency behaviors as Postgres. For example, when `create_distributed_table()` is executed, Citus acquires an `ExclusiveLock` on the table. We do that because we want to block `write`s on the tables – which acquire RowExclusiveLock -- but let `read-only` queries to continue – which acquire AccessShareLock. An additional benefit of this approach is that no two concurrent `create_distributed_table` on the same table can run. + + +One another use case for table-level locks on Citus is the table-level locks acquired on the Citus metadata tables. Citus uses table-level locks on the metadata tables to define the concurrency behavior of certain operations. For example, while creating a new table or moving shards, it is common to acquire `ShareLock` on `pg_dist_node` table, and `citus_add_node` function to acquire `ExclusiveLock` on the same metadata table. The latter signals the rest of the backends that the node metadata is about to change, so it is not allowed to rely on the current state of `pg_dist_node` (or vice-versa `citus_add_node` should wait until rebalance finishes). + +The main C function involved in table-level locking is ` LockRelationOid ()`. So, you can put a break-point to this function and see when/how Citus and Postgres acquires table-level locks. + + +2. **Row-level Locks**: + +Row-level locks are more granular and lock only specific rows within a table. This allows multiple users to read and update different rows simultaneously, which can improve performance for multi-user scenarios. + + Citus does NOT involve in the row-level locks, fully relies on Postgres to acquire the locks on the shards. Marco’s blog-post gives a nice overview of row-level locks: https://www.citusdata.com/blog/2018/02/15/when-postgresql-blocks/ + + + +3. **Advisory Locks:** + +Advisory locks are a special type of lock in PostgreSQL that give you more control over database operations. Unlike standard table or row-level locks that automatically lock database objects, advisory locks serve as flexible markers or flags. Developers can implement these custom locks to define their own rules for managing concurrency, making them particularly useful for extensions and custom workflows. + +#### Importance of Advisory locks for Citus + +In a distributed system like Citus, advisory locks take on an even more critical role. Because Citus spreads data across multiple nodes, managing concurrent operations becomes a complex task. Citus heavily relies on advisory locks for a variety of essential operations. Whether it's handling queries from any node, moving/splitting shards, preventing deadlocks, or managing colocation of related data, advisory locks serve as a powerful tool for ensuring smooth operation and data integrity. + +By employing advisory locks, Citus effectively deals with the complexities that come with distributed databases. They allow the system to implement sophisticated concurrency scenarios, ensuring that data remains consistent and operations are efficient across all nodes in the cluster. + +Below, we list some of the crucial advisory locks that Citus relies on: + +#### Citus Advisory Locks 1: Distributed Execution locks + +The C code is for a function called `AcquireExecutorShardLocksForExecution()`. The function has an extensive comment for the specific rules. The function's main goal is to get advisory locks on shard IDs to make sure data stays safe and consistent across different operations. These locks are sometimes referred as `ShardResourceLock`s in the code. + +In the context of distributed databases like Citus, "safe" generally means avoiding situations where different nodes in the cluster are trying to modify the same data at the same time in a way that could lead to errors, inconsistencies, or even deadlocks. This is critical when data is replicated across nodes (e.g., multiple copies of the same shard like reference tables) or when a single operation affects multiple shards (e.g., multi-shard update). + +The "consistency" here primarily refers to two things: + +1. **Order of Operations on Replicated Tables**: In a replicated table setup, the same data exists on multiple nodes. The function aims to make sure that any updates, deletes, or inserts happen in the same order on all copies of the data (replicas). This way, all the replicas stay in sync. + +2. **Preventing Distributed Deadlocks**: When you're running multi-shard operations that update the data, you can run into distributed deadlocks if operations on different nodes lock shards in a different order. This function ensures that the locks are acquired in a specific, consistent order, thus minimizing the risk of deadlocks. + +There are also options (`GUCs`) to relax these locking mechanisms based on the user's needs, but they come with the trade-off of potentially reduced consistency or increased risk of deadlocks. + +So, in summary, this function is about acquiring the right kind of lock based on what the operation is doing and what kind of table it's affecting, all to ensure that the data stays consistent and that operations are executed safely. + + +#### Citus Advisory Locks 2: Metadata locks + +The second class of advisory locks referred as `metadata locks` in the code. See `AcquireMetadataLocks()` and `LockShardDistributionMetadata()` functions. + +The main goal is to prevent concurrent placement changes and query executions. Essentially ensure that the query execution always works on the accurate placement metadata (e.g., shard placements). + +Citus always acquire `Metadata Lock`s for shard moves and shard splits, irrespetive of blocking vs non-blocking operations. For blocking operations, the locks are held from the start of the operation whereas for non-blocking operations the locks are held briefly at the end right before metadata is updated. + +Citus always acquires `Metadata Lock`s for modification queries, at the `CitusBeginModifyScan` such that it serializes query modification with placement metadata changes. A modification query would always see up-to date metadata for the placements involved. Otherwise, the modification might get lost. + +Citus does not acquire Metadata Locks for SELECT queries. The main reason is that SELECTs are often long-running and would hold up the move. Instead, we allow SELECT commands to operate on the old placements in case of a concurrent shard move. The SELECT commands would already see the snapshot of the shard(s) when the SELECT started. So, there is no difference in terms of query correctness. We then later drop the old placements via "deferred drop" (see Resource cleanup). + +#### Citus Advisory Locks 3: Query from any node + +When users are allowed to run queries from any node, then in certain cases, we need to form a synchronization that involes multiple nodes. Advisory locks is a convinent tool for achieving these types of goals. + + Citus exposes few UDFs like `lock_shard_resources()` and `lock_shard_metadata()` which are simple wrappers around the metadata and executor locks we discussed above. + + When there are nodes with metadata, then Citus acquires some of the advisory locks on all nodes, like: + + ```sql + select citus_move_shard_placement(102008, 'localhost', 9701, 'localhost', 9702, shard_transfer_mode:='force_logical'); + .... + + DETAIL: on server onderkalaci@localhost:9702 connectionId: 2 +NOTICE: issuing SELECT lock_shard_metadata(7, ARRAY[102008]) +DETAIL: on server onderkalaci@localhost:9701 connectionId: 1 +NOTICE: issuing SELECT lock_shard_metadata(7, ARRAY[102008]) +DETAIL: on server onderkalaci@localhost:9702 connectionId: 2 +... +``` + +Another useful application of advisory locks in query from any node is modifications to reference tables. Reference tables (or in general replicated tables) have multiple placements for a given shard. So, modifications to the placements of the same shard should be serialized. We cannot allow multiple modification commands to modify the placements in different orders. It could cause diverging the contents of the data. + +The coordinator already serializes the modifications to reference tables (or in general all replicated tables) via `LockShardResource()` C function. When there are other nodes in the cluster, Citus sends the similar command, to the first worker node in the cluster. In general, Citus aims to serialize operations on the reference tables via acquiring advisory locks on the first worker node, see `SerializeNonCommutativeWrites()` and `LockShardListResourcesOnFirstWorker()` C functions. We use the `first worker node` as an optimization. Instead of acquiring the locks in all the nodes, each node sorts the worker nodes deterministically, and acquires the lock on the first node. Whichever distributed transaction acquires the lock, it has the autority to continue to the transaction. If there are any other transactions, they are blocked until the first distributed transaction finishes, as it would be in coordinator-only configuration. We used the first worker node as opposed to the coordinator for two reasons. First, the coordinator might already be getting lots of client queries, and we don't want to create additional load to the coordinator. Second, in some Citus deployments, the coordinator may **not** be in the metadata. Hence, the other nodes might not know about the coordinator. + +Getting back to the basic flow, the outcome of modifying the reference tables (or replicated tables) is the following where `lock_shard_resources` is acquired on the first node: + +```sql + BEGIN; +-- 9701 is the first worker node in the metadata +insert into reference_table VALUES (1); +NOTICE: issuing BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;SELECT assign_distributed_transaction_id(0, 8, '2023-09-18 16:30:18.715259+03'); +DETAIL: on server onderkalaci@localhost:9701 connectionId: 1 +NOTICE: issuing SELECT lock_shard_resources(3, ARRAY[102040]) +DETAIL: on server onderkalaci@localhost:9701 connectionId: 1 +NOTICE: issuing INSERT INTO public.reference_table_102040 (a) VALUES (1) + +``` + + +#### Citus Advisory Locks 4: Colocation locks + +Although not ideal, there are currently multiple advisory locks that deal with colocation: `AcquireRebalanceColocationLock()` and `AcquirePlacementColocationLock()`. + +The former has a simple logic. It is to prevent concurrent shard moves of the same shards with the same table colocation. So, basically, prevent user running `citus_move_shard_placement()` for the same colocated shards. + +The latter is a bit more interesting. It aims to ensure the placements of the same colocation group never diverges regarding where the placements reside. This might sound a given feature of Citus. However, with concurrent `create_distributed_table` and `shard move/split`s there are might be some race conditions. The former operation might use the view of the placements before the `shard move/split`, whereas the latter changes this. As a result, the new table might have a placement that is not colocated with the other placements anymore. + +To prevent that, Citus acquires `AcquirePlacementColocationLock()` while the metadata of placements changed/read. This lock introduced to fix a user reported bug: https://github.com/citusdata/citus/issues/6050 + + +4. **Low-level Locks (SpinLocks and LWLocks)**: + +SpinLocks and LWLocks are low-level locking mechanisms often used internally by the database system. +Citus uses `LwLocks` and `SpinLocks` as described in Postgres' source code: https://github.com/postgres/postgres/tree/master/src/backend/storage/lmgr + ++ **Spinlocks:** Spinlocks are used for very short-term locking and are meant to be held only for a few instructions. They don't have features like deadlock detection or automatic release, and waiting processes keep checking ("busy-loop") until they can acquire the lock. + +The lack of "automatic release" could be very critical. For other lock types, when the transaction finishes, the locks are released by Postgres automatically. It means that, say a `palloc` fails due to lack of enough memory, we rely on Postgres to release all the locks. However, this is **NOT** true for spin locks. So, do not even allocate any memory while holding spinlock, only do very simple assignments etc. Otherwise, the lock might be held until a restart of the server. + +In the past we had some bugs where we had a `palloc` failure while holding `SpinLock` and which prevented the lock to be released. So, be extra careful when using `SpinLock`. See the bugfix as a reference: https://github.com/citusdata/citus/pull/2568/files + ++ **Lightweight Locks (LWLocks):** These locks are mainly used for controlling access to shared memory data structures and support both exclusive and shared lock modes. While they also lack deadlock detection, they do automatically release when errors are raised, and waiting processes block on a SysV semaphore, conserving CPU time. + + +# Rebalancing + +A high-level overview of the rebalancer is given in [this rebalancer blog post](https://www.citusdata.com/blog/2021/03/13/scaling-out-postgres-with-citus-open-source-shard-rebalancer/). + +## Rebalancing algorithm + +## Shard moves + +Shard moves move a shard group placement to a different node (group). Moves are orchestrated by the `citus_move_shard_placement` UDF, which is also the function that the rebalancer runs to move a shard. + +We implement blocking and non-blocking shard splits. Non-blocking shard moves use logical replication, which has an important limitation. If the (distributed) table does not have a replica identity (usually the primary key), then update/delete commands will error out once we create a publication. That means using a non-blocking move without a replica identity does incur some downtime. Since a blocking move is generally faster (in part because it forces out regular work), it may be less invasive. We therefore force the user to choose when trying to move a shard group that includes a table without a replica identity by supplying `shard_transfer_mode := 'force_logical'` or `shard_transfer_mode := 'block_writes'`. + +The blocking-move is mostly a simplified variant of the non-blocking move (with locks taken upfront). A non-blocking move involves the following steps: + +- **Create the new shard group placement on the target node**. We also create constraints that do not involve an index and set up ownership and access control. +- **Create publication(s) on the source node**. We create publications containing the shards in the source shard group placement. We create one publications per table owner, mainly because we need one subscription per table owner to prevent privilege escalation issues on older versions of PostgreSQL (15 and below). +- **Create replication slot(s) and export snapshot(s)**. We create a slot per table owner because we use a separate subscription per table owner, similar to publications. Subscriptions can create the replication slot, but we (nowadays) copy the data outside of the subscription because we apply several optimizations. +- **Create subscription(s) in disabled state**. We create subscriptions upfront in case there are any errors (e.g. hitting resource limits, connectivity issues). We create one subscription per table owner, and we set the subscription owner to the table owner. The logical replication will happen with the permissions of the subscription owner. +- **Copy the data from the source to target** by calling `worker_shard_copy` function for each source shard placement via the executor. The `worker_shard_copy` function makes a single pass over the source shard and pushes it into the target shard via `COPY`. We found this to be faster than using the `copy_data` option in the subscription because we can benefit from binary copy, optimizations in the adaptive executor, uses fewer replication slots, and it simplifies the flow. Some of these optimizations might be obsolete as of PostgreSQL 16. +- **Enable subscription(s)**, which starts the replication of writes that happened on the source shard group placement during the data copy. +- **Wait for subscription(s) to catch up to the current source LSN**. This can take a while since many writes could have happened during the data copy. +- **Create indexes, unique/exclusion constraints, statistics, etc.**. For efficiency, we create these objects after copying the data and catching up to concurrent writes. +- **Wait for subscription(s) to catch up to the current source LSN**. This can take a while since many writes could have happened during the index creation. +- **Block writes to the split parent by acquiring metadata locks globally**. At this point, we wait for any ongoing INSERT/UPDATE/DELETE/COPY/MERGE to finish and block new ones. Once we acquire the locks we try to quickly finalize the split. +- **Wait for subscription(s) to catch up to the current source LSN**. Some writes could still have happened before acquiring locks, we wait for those writes to be replicated. +- **Update the metadata**. We globally update the `pg_dist_placement` record to point to the new node. Writes tactically acquire metadata locks just before reading from `pg_dist_placement`, so they will see the new placement as soon as we commit. +- **Create foreign keys on the target shard group placement**. Creating foreign keys is deferred until the replication is fully done, because we used multiple subscriptions for tables with different owners and this is the first time that the data is guaranteed to be consistent between shards. We avoid rechecking foreign keys by using the `citus.skip_constraint_validation` setting on the session. +- **Final cleanup of connections, resources**. We primarily lean on "Resource cleanup" to drop publications, replication slots, subscriptions, which ensures they are removed both in case of success and failure. The source shard group placement is dropped once all ongoing (read-only) queries are done, by repeatedly dropping with a short lock timeout until it succeeds. + +It is worth noting that the final commit happens in a 2PC, with all the characteristics of a 2PC. If the commit phase fails on one of the nodes, writes on the shell table remain blocked on that node until the prepared transaction is recovered, after which they will see the updated placement. The data movement generally happens outside of the 2PC, so the 2PC failing on the target node does not necessarily prevent access to the shard. + +A similar operation to shard moves is `citus_copy_shard_placement`, which can be used to add a replica to a shard group. We also use this function to replicate reference tables without blocking. The main difference is that dropping the old shard group placement is skipped. + +A workaround for the replica identity problem is to always assign REPLICA IDENTITY FULL to distributed tables / shards if they have no other replica identity. However, prior to PostgreSQL 16, replication of updates and delete to a table with replica identity full could be extremely slow (it does a sequential scan per tuple). As of PostgreSQL 16, the logical replication worker can use a regular btree index to find a matching tuple (if one exists). Even for distributed tables without any indexes, and without a replica identity, we could tactically set REPLICA IDENTITY FULL on the shards, and create a suitable index on the target shard group placement for the duration of the move. Once we implement this, we could avoid erroring for distributed tables without a replica identity. + +## Shard splits + +Shard splits convert one shard group ("split parent") into two or more shard groups ("split children") by splitting the hash range. The new shard groups can be placed on the node itself, or on other nodes. We implement blocking and non-blocking shard splits. The blocking variant is mostly a simplified version of non-blocking, so we only cover non-blocking here. Shard splits have many similarities to shard moves, and have the same `shard_transfer_mode` choice. + +The shard split is a lengthy process performed by the `NonBlockingShardSplit` function, supported by a custom output plugin to handle writes that happen during the split. There are a few different entry-points in this logic, namely: `citus_split_shard_by_split_points`, `create_distributed_table_concurrently`, and `isolate_tenant_to_node`. + +We currently do not build a separate .so file for the output plug-in, so it is part of citus.so and therefore the name of the output plug-in is "citus". The purpose of the output plug-in is to translate changes to the original shard group to changes to the split children, and emit them in pgoutput format (by calling the original pgoutput plug-in). In some cases, the schema of the split parent can be subtly different from the split children. In particular, some columns may have been dropped on the parent. Dropped columns remain in the metadata and remaining columns are not renumbered, but when we create the split children we only create it with current columns. When this scenario occurs, we convert the tuple in `GetTupleForTargetSchema`. + +A split involves the following steps: + +- **Create the new shard groups ("split children") on the target node(s)**. We also create constraints that do not involve an index and set up ownership and access control. +- **Create "dummy" shard groups on the source node**, unless the split child is also on the source node. The reason for creating the dummy shards is primarily to make the pgoutput output plug-in happy. Our output plug-in maps changes to the split parent into changes to split children before calling pgouput, and those tables need to exist for pgoutput to be able to interpret and emit the change, even when that table is not actually used on the source node. +- **Create replica identities on dummy shards**. This is also needed to keep pgoutput happy, because for updates and deletes it emits the values in the replica identity columns, so it needs to know what the replica identity is. +- **Create publication(s) on the source node**, which include both the parent and children. We add the split parent for our own output plug-in to recognize which shard group it should split, and we add the split children for pgoutput to recognize that it should emit them. We might make multiple publications per shard group because we use a separate publication and subscription per table owner, to prevent privilege escalation issues on older versions of PostgreSQL (15 and below). +- **Set up the shard split output plug-in**. We configure our output plug-in on the source node via `worker_split_shard_replication_setup`, which sets up a dynamic shared memory (DSM) segment that the output plug-in will read from. We currently only have one DSM segment, which would need to changed to support concurrent splits from the same node. +- **Create replication slot(s) and export snapshot(s)**. We cannot perform any write to the database before this step, because this step waits for all transactions that perform writes to finish. We create multiple slots because we use a separate slot per table owner, similar to publications. +- **Create subscription(s) in disabled state**. We create subscriptions upfront in case there are any errors (e.g. hitting resource limits, connectivity issues). We create a slot per table owner because we use a separate subscription per table owner, similar to publications. The logical replication will happen with the permissions of the subscription owner. +- **Split the data in the split parent into the split children** using `worker_split_copy` with the exported snapshot. The `worker_split_copy` function makes a single pass over the parent shard and pushes it into the split children via `COPY`, either via a connection to another node or by invoking the COPY logic locally when the split children are on the same node. Internally, it uses the DestReceiver APIS and effectively it layers the DestReceiver used in re-partition operations on top of the DestReceiver used by `worker_shard_copy` in shard moves. We run a separate `worker_split_copy` task for every shard in the shard group and execute them via the adaptive executor, which may elect to parallelize them. +- **Enable subscription(s)**, which starts the replication of writes that happened on the split parent during the data copy into the split children. +- **Wait for subscription(s) to catch up to the current source LSN**. This can take a while since many writes could have happened during the data copy. +- **Create indexes, unique/exclusion constraints, statistics, etc.**. For efficiency, we create these objects after copying the data and catching up to concurrent writes. +- **Wait for subscription(s) to catch up to the current source LSN**. This can take a while since many writes could have happened during the index creation. +- **Block writes to the split parent by acquiring metadata locks globally**. At this point, we wait for any ongoing INSERT/UPDATE/DELETE/COPY/MERGE to finish and block new ones. Once we acquire the locks we try to quickly finalize the split. +- **Wait for subscription(s) to catch up to the current source LSN**. Some writes could still have happened before acquiring locks, we wait for those writes to be replicated. +- **Update the metadata**. We globally delete the metadata of the split parent, and insert the metadata of the split children. In case of `create_distributed_table_concurrently` we also update `pg_dist_partition` and `pg_dist_colocation`. +- **Create partitioning hierarchy and foreign keys on the split children**. Creating these relationships is deferred until the replication is fully done, because we used multiple subscriptions for tables with different owners and this is the first time that the data is guaranteed to be consistent between shards. We avoid rechecking foreign keys by using the `citus.skip_constraint_validation` setting on the session. +- **Final cleanup of DSM, connections, resources**. We clean up all the resources we created such as publications, subscriptions, replication slots, dummy shards via "Resource lceanup", as well as the split parent (deferred, in case of success) or split children (in case of failure). We currently do not clean up the DSM in case of failure, but we always idempotently reset it when doing another split. + +A difference between splits and moves is that the old shard ID disappears. In case of a move, only the placement changes and for writes we always look up placement in the executor after acquiring locks that conflict with moves (wait until move is done). In case of a split, the query changes in more fundamental ways, and a single-shard query might actually become a multi-shard queryif it were replanned. When a writes get to the executor, after acquiring locks that conflict with the shard split (wait until split is done), we check whether the shard still exists _in the metadata_ and in case of fast path queries (which are strictly single shard), we try to reroute in `TryToRerouteFastPathModifyQuery`. Otherwise, we error in `EnsureAnchorShardsInJobExist`. In case of reads, we lean on the deferred drop logic to let the read proceed on the old shard placement. + +## Background tasks + +## Resource cleanup + +During a shard move/split, some PostgreSQL objects can be created that live outside of the scope of any transaction or are committed early. We need to make sure those objects are dropped once the shard move ends, either through failure or success. For instance, subscriptions and publications used for logical replication need to be dropped in case of failure, but also the target shard (in case of failure) and source shard (in case of success). + +To achieve that, we write records to pg_dist_cleanup before creating an object to remember that we need to clean it. We distinguish between a few scenarios: + +**Cleanup-on-failure**: Cleanup should only happen if the operation fails. The main example is the target shard of a move/split. We achieve cleanup-on-failure by writing pg_dist_cleanup records in a subtransaction (transaction on a localhost connection that commits immediately) and deleting them in the outer transaction that performs the move/split. That way, they remain in pg_dist_cleanup in case of failure, but disappear in case of success. + +**Cleanup-deferred-on-success**: Cleanup should only happen after the operation (move/split) succeeds. We use this to clean the source shards of a shard move. We previously dropped shards immediately as part of the transaction, but this frequently led to deadlocks at the end of a shard move. We achieve cleanup-on-success by writing pg_dist_cleanup records as part of the outer transaction that performs the move/split. + +**Cleanup-always**: For most resources that require cleanup records, cleanup should happen regardless of whether the operation succeeds or fails. For instance, subscriptions and publications should always be dropped. We achieve cleanup always by writing pg_dist_cleanup records in a subtransaction, and at the end of the operation we try to clean up object immediately and if it succeeds delete the record. If cleanup fails, we do not fail the whole operation, but instead leave the pg_dist_cleanup record in place for the maintenance daemon. + +Resource cleaner (currently shard_cleaner.c) is part of the maintenance daemon and periodically checks pg_dist_cleanup for cleanup tasks. It’s important to prevent cleanup of operations that are already running. Therefore, each operation has a unique operation ID (from a sequence) and takes an advisory lock on the operation ID. The resource cleaner learns the operation ID from pg_dist_cleanup and attempts to acquire this lock. If it cannot acquire the lock, the operation is not done and cleanup is skipped. If it can, the operation is done, and the resource cleaner rechecks whether the record still exists, since it could have been deleted by the operation. + +Cleanup records always need to be committed before creating the actual object. It’s also important for the cleanup operation to be idempotent, since the server might crash immediately after committing a cleanup record, but before actually creating the object. Hence, the object might not exist when trying to clean it up. In that case, the cleanup is seen as successful, and the cleanup record removed. + +# Logical decoding / CDC + +PostgreSQL supports change data capture (CDC) via the logical decoding interface. The basic idea behind logical decoding is that you make a replication connection (a special type of postgres connection), start replication, and then the backend process reads through the WAL and decodes the WAL records and emits it over the wire in a format defined by the output plugin. If we were to use regular logical decoding on the nodes of a Citus cluster, we would see the name of the shard in each write, and internal data transfers such as shard moves would result in inserts being emitted. We use several techniques to avoid this. + +All writes in PostgreSQL are marked with a replication origin (0 by default) and the decoder can make decisions on whether to emit the change based on the replication origin. We use this to filter out internal data transfers. If `citus.enable_change_data_capture` is enabled, all internal data transfers are marked with the special DoNotReplicateId replication origin by calling the `citus_internal_start_replication_origin_tracking()` UDF before writing the data. This replication origin ID is special in the sense that it does not need to be created (which prevents locking issues, especially when dropping replication origins). It is still up to output plugin to decide what to do with changes marked as DoNotReplicateId. + +We have very minimal control over replication commands like `CREATE_REPLICATION_SLOT`, since there are no direct hooks, and decoder names (e.g. “pgoutput”) are typically hard-coded in the client. The only method we found of overriding logical decoding behaviour is to overload the output plugin name in the dynamic library path. + +For specific output plugins, we supply a wrapper .so that has the same name as the existing output plugin, but in a separate directory in the PostgreSQL installation folder, and we automatically prefix the `dynamic_library_path` with this folder such that PostgreSQL will load our wrapper. The wrapper internally loads the original output plugin, and calls the original output plugin functions after applying two transformations: + +- Shard OIDS are mapped to distributed table OIDS +- Changes marked with DoNotReplicateId are skipped + +Mapping the shard OIDs to distributed table OIDs not only makes the output understandable for users, but also simplifies our implementation of the CREATE PUBLICATION command, which is used to configure the pgoutput plugin (used by logical replication). We create the same publication on all nodes using the same distributed table names. Since the original pgoutput plugin only sees changes to distributed tables, it can relate those to the set of distributed tables in the publication. + +We have to build a .so for each wrapper separately. We currently build wrappers for [pgoutput and wal2json](https://github.com/citusdata/citus/blob/main/src/backend/distributed/cdc/Makefile#L8). + +This approach fulfills our main requirements, though we currently have a small correctness issue. Logical decoding always deals with a situation in the past, and to do so they build a historical snapshot of the PostgreSQL catalogs. Tables may have been renamed or dropped since the change happened, but the historical snapshot shows the schema as it was at the time of the change. However, we cannot build a historical snapshot of the Citus catalogs, and we therefore rely on the present values. The main issue that can arise is that the shard may have been dropped, in which case the change might be emitted using its original shard name, since it’s not recognized as a shard name. In many cases, this issue is avoided by caching the Citus catalogs. + +An open issue with CDC is that there is no good way to get a consistent snapshot followed by a change stream that starts from the snapshot. One way to resolve this is to allow reading only from local shards using an exported snapshot. That way, clients can create a replication slot and export a snapshot from each node, pull a subset of the data from each node using the snapshots, and then start replication on each node from the snapshot LSN. + +## CDC ordering + +When you have a multi-node cluster, clients should connect to each node and combine the changes. It is important to note that there are no guarantees with regard to when and in what order changes will be emitted between nodes. It is especially important to understand that changes cannot be reordered (e.g. based on timestamp or transaction ID), because only the node-level order is correct. The lack of distributed snapshot isolation in Citus means that changes can be interleaved (a happens before b on node 1, b happens before a on node 2). The node-level decoder output will reflect that as it happened. + +_Do not reorder changes based on timestamp or distributed transaction ID or anything that is not guaranteed to preserve node-level order. It is never correct._ + +# Global PID + +The global PID (gpid) is used to give each client connection to the cluster a unique process identifier, and to understand which internal connections belong to a specific client connection. A gpid consists of the combination of the node ID and the PID of the coordinating process (i.e. the process serving a client connection). It can be seen in various monitoring views: + +```sql +SELECT citus_backend_gpid(); +SELECT * FROM citus_stat_activity; +SELECT * FROM citus_lock_waits; +SELECT * FROM citus_locks; +``` + +The gpid is passed over internal connections via the application_name setting. This is one of the few settings that pgbouncer automatically propagates when reusing a server connection for a different client connection. Hence, gpids are robust to having pgbouncers in between nodes, but it means that internal sessions might switch between gpids. + +Additional details: Monitor distributed Postgres activity with citus_stat_activity & citus_lock_waits (citusdata.com) + +# Function call delegation + +One of the downsides of multi-statement transactions in a distributed database is the extra network round trips involved in each individual statement, even when each statement goes to the same worker node. In Citus this can be solved by marking a function or stored procedure as distributed. A distributed function has a distribution argument and can be co-located with distributed tables. It can be created using: + +```sql +SELECT create_distributed_function('delivery(int,int)', '$1'); +``` + +When a distributed function is called, the argument is treated as a distribution column filter on a co-located distributed table and delegated to the worker node that stores the corresponding shards. Ideally, every statement in the function uses the distribution argument as a distribution column filter and only accesses co-located tables, such that the transaction remains local to the worker node. Otherwise, the worker assumes the role of coordinator and performs a distributed transaction. Function call delegation is especially useful in multi-tenant applications that involve complex transactions, as those transactions can be handled in a single network round-trip and with almost no overhead on the coordinator. + +diagram of how Citus coordinator delegates stored procedure call to worker nodes + +We’ve implemented function call delegation through early-stage checks in the planner hook and the utility hook (for CALL, in case of procedures). If the query matches the simple form shown in the figure above, and the function is marked as distributed, then the function call will be propagated to the right node based on the sharding metadata of a co-located table. + +On the target node, the function is executed as usual using the distributed tables (shell tables + metadata) on that node. The target node will hopefully find that most of the queries are on local shards and only use local execution and take advantage of _local plan caching_. + + + +# Query from any node + +Some Citus users have remarkably high query throughputs (>500k/s). A single-coordinator architecture could sometimes become a bottleneck for scaling such applications. To avoid that, Citus supports querying the database from any node in the cluster. + +In the past, this feature was referred to as Citus MX. We currently refer that as Query From Any Node. The idea is simple: Synchronize all the metadata (including the shell tables and pg_dist_XXX tables) on all the nodes. We do this for all DDL commands as well as when a new node is added to the cluster. In essence, all the nodes in the cluster always have the same metadata through 2PC. + +Once the metadata is synced, then each node can act as the coordinator, capable of doing the distributed query processing. We also provide some monitoring tools such that from the user’s perspective, it should not matter which node the client is connected to. The user should be able to monitor / cancel all the activity in the cluster, using the infrastructure described here: https://www.citusdata.com/blog/2022/07/21/citus-stat-activity-views-for-distributed-postgres/ + +One of the challenges with query from any node is the total number of connections in the cluster. In a single coordinator world, only the coordinator establishes connections per node. Now, each node connects to each other. Hence, the user should adjust the connection related settings, see here for details: https://www.citusdata.com/updates/v11-0/#connection-management + +By default, Citus hides all the shards from the applications because it had confused many users: https://www.citusdata.com/updates/v11-0/#shard-visibility We do it in a slightly hacky way. Read ` HideShardsFromSomeApplications ()` C function for the details. + + + +Another important piece of query from any node is that the managed service should provide a single connection string and do the load balancing for the user. It is impractical to have multiple connection strings to the database from any application’s perspective. As of writing this document (Sept. 2023), the managed service did not provide this infrastructure. Another future improvement area for query from any node is the “smart client”. A smart “pgbouncer” type of client might be able to route the client queries to the worker node with the relevant data. This could eliminate the need for additional query routing in case the query does not hit the worker node with the relevant data. + +Another future improvement is to allow running DDLs from any node. Currently, DDLs (including ALTER TABLE, create_distributed_table etc) all should go through the coordinator. + +## Why didn’t we have dedicated Query Nodes and Data Nodes? + +Some distributed databases distinguish the Query Nodes and Data Nodes. As the names imply, Query Nodes would only do the query processing, whereas Data Nodes would only hold the data. In Citus, we decided not to follow that route, mostly because our initial benchmarks showed that combined nodes performed better in terms of price/performance. Still, some people argued that it might be better to have different classes of nodes such that they can be tuned /scaled-up-out differently based on the load for a given application. + +Dedicated query nodes benchmarks + +If this discussion comes up again, we suggest running some more benchmarks and ensuring the performance characteristics do not change dramatically. We do not foresee any architectural problems with that. It mostly comes down to price, performance, and product discussions. Note that you can quickly test this by disallowing certain nodes to have shards on them. You should also consider whether reference tables should still be present on query nodes, and whether there are any behavioural differences between query nodes and the coordinator. + +## Shard visibility + +Shards live in the same schema as the distributed table they belong to, so you might expect to see them when connecting to a worker node and running `\d`. While this was previously the case, it caused confusion among users and also breaks tools like `pg_dump`. Therefore, we now aggressively hide the shards by default from any query on `pg_class`. We do this by injecting a `relation_is_a_known_shard(oid)` filter in the query tree via the planner hook when we encounter a RangeTblEntry for `pg_class`. The fact that shards are hidden from `pg_class` does not affect queries on the shards, since PostgreSQL internals will not go through the query planner when accessing `pg_class`. + +Shards can be revealed via two settings: + +- `citus.override_shard_visibility = off` disables shard hiding entirely +- `citus.show_shards_for_app_name_prefixes`= 'pgAdmin,psql'` disables shard hiding only for specific application_name values, by prefix