Full Code of citusdata/citus for AI

main 347d7236231e cached
3056 files
39.3 MB
4.1M tokens
6506 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (16,461K chars total). Download the full file to get everything.
Repository: citusdata/citus
Branch: main
Commit: 347d7236231e
Files: 3056
Total size: 39.3 MB

Directory structure:
gitextract_h2dbs482/

├── .codeclimate.yml
├── .codecov.yml
├── .devcontainer/
│   ├── .gdbinit
│   ├── .gitignore
│   ├── .psqlrc
│   ├── .vscode/
│   │   ├── Pipfile
│   │   ├── generate_c_cpp_properties-json.py
│   │   └── launch.json
│   ├── Dockerfile
│   ├── Makefile
│   ├── devcontainer.json
│   ├── pgenv/
│   │   └── config/
│   │       └── default.conf
│   ├── requirements.txt
│   └── src/
│       └── test/
│           └── regress/
│               └── Pipfile
├── .editorconfig
├── .flake8
├── .gitattributes
├── .github/
│   ├── actions/
│   │   ├── parallelization/
│   │   │   └── action.yml
│   │   ├── save_logs_and_results/
│   │   │   └── action.yml
│   │   ├── setup_extension/
│   │   │   └── action.yml
│   │   └── upload_coverage/
│   │       └── action.yml
│   ├── packaging/
│   │   ├── packaging_ignore.yml
│   │   └── validate_build_output.sh
│   ├── pull_request_template.md
│   └── workflows/
│       ├── build_and_test.yml
│       ├── codeql.yml
│       ├── devcontainer.yml
│       ├── flaky_test_debugging.yml
│       ├── packaging-test-pipelines.yml
│       └── run_tests.yml
├── .gitignore
├── .ignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVCONTAINER.md
├── EXTENSION_COMPATIBILITY.md
├── LICENSE
├── Makefile
├── Makefile.global.in
├── NOTICE
├── README.md
├── SECURITY.md
├── STYLEGUIDE.md
├── aclocal.m4
├── autogen.sh
├── cgmanifest.json
├── ci/
│   ├── README.md
│   ├── banned.h.sh
│   ├── build-citus.sh
│   ├── check_all_ci_scripts_are_run.sh
│   ├── check_all_tests_are_run.sh
│   ├── check_gucs_are_alphabetically_sorted.sh
│   ├── check_migration_files.sh
│   ├── check_sql_snapshots.sh
│   ├── ci_helpers.sh
│   ├── disallow_c_comments_in_migrations.sh
│   ├── disallow_hash_comments_in_spec_files.sh
│   ├── disallow_long_changelog_entries.sh
│   ├── editorconfig.sh
│   ├── fix_gitignore.sh
│   ├── fix_style.sh
│   ├── include_grouping.py
│   ├── normalize_expected.sh
│   ├── print_stack_trace.sh
│   ├── remove_useless_declarations.sh
│   └── sort_and_group_includes.sh
├── config/
│   ├── config.guess
│   └── general.m4
├── configure
├── configure.ac
├── prep_buildtree
├── pyproject.toml
├── src/
│   ├── backend/
│   │   ├── .gitignore
│   │   ├── columnar/
│   │   │   ├── .gitattributes
│   │   │   ├── .gitignore
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── citus_columnar.control
│   │   │   ├── columnar.c
│   │   │   ├── columnar_compression.c
│   │   │   ├── columnar_customscan.c
│   │   │   ├── columnar_debug.c
│   │   │   ├── columnar_metadata.c
│   │   │   ├── columnar_reader.c
│   │   │   ├── columnar_storage.c
│   │   │   ├── columnar_tableam.c
│   │   │   ├── columnar_writer.c
│   │   │   ├── mod.c
│   │   │   ├── sql/
│   │   │   │   ├── citus_columnar--11.1-0--11.1-1.sql
│   │   │   │   ├── citus_columnar--11.1-0.sql
│   │   │   │   ├── citus_columnar--11.1-1--11.2-1.sql
│   │   │   │   ├── citus_columnar--11.1-1.sql
│   │   │   │   ├── citus_columnar--11.2-1--11.3-1.sql
│   │   │   │   ├── citus_columnar--11.3-1--12.2-1.sql
│   │   │   │   ├── citus_columnar--12.2-1--13.2-1.sql
│   │   │   │   ├── citus_columnar--13.2-1--14.0-1.sql
│   │   │   │   ├── citus_columnar--14.0-1--15.0-1.sql
│   │   │   │   ├── columnar--10.0-1--10.0-2.sql
│   │   │   │   ├── columnar--10.0-3--10.1-1.sql
│   │   │   │   ├── columnar--10.1-1--10.2-1.sql
│   │   │   │   ├── columnar--10.2-1--10.2-2.sql
│   │   │   │   ├── columnar--10.2-2--10.2-3.sql
│   │   │   │   ├── columnar--10.2-3--10.2-4.sql
│   │   │   │   ├── columnar--11.0-2--11.0-3.sql
│   │   │   │   ├── columnar--11.0-3--11.1-1.sql
│   │   │   │   ├── columnar--9.5-1--10.0-1.sql
│   │   │   │   ├── downgrades/
│   │   │   │   │   ├── citus--11.0-3--11.0-2.sql
│   │   │   │   │   ├── citus_columnar--11.1-1--11.1-0.sql
│   │   │   │   │   ├── citus_columnar--11.2-1--11.1-1.sql
│   │   │   │   │   ├── citus_columnar--11.3-1--11.2-1.sql
│   │   │   │   │   ├── citus_columnar--12.2-1--11.3-1.sql
│   │   │   │   │   ├── citus_columnar--13.2-1--12.2-1.sql
│   │   │   │   │   ├── citus_columnar--14.0-1--13.2-1.sql
│   │   │   │   │   ├── citus_columnar--15.0-1--14.0-1.sql
│   │   │   │   │   ├── columnar--10.0-1--9.5-1.sql
│   │   │   │   │   ├── columnar--10.0-2--10.0-1.sql
│   │   │   │   │   ├── columnar--10.1-1--10.0-3.sql
│   │   │   │   │   ├── columnar--10.2-1--10.1-1.sql
│   │   │   │   │   ├── columnar--10.2-2--10.2-1.sql
│   │   │   │   │   ├── columnar--10.2-3--10.2-2.sql
│   │   │   │   │   ├── columnar--10.2-4--10.2-3.sql
│   │   │   │   │   └── columnar--11.1-1--11.0-3.sql
│   │   │   │   └── udfs/
│   │   │   │       ├── alter_columnar_table_reset/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   ├── 11.1-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── alter_columnar_table_set/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   ├── 11.1-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_ensure_am_depends_catalog/
│   │   │   │       │   ├── 10.2-4.sql
│   │   │   │       │   ├── 11.1-1.sql
│   │   │   │       │   ├── 11.2-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_ensure_objects_exist/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_finish_pg_upgrade/
│   │   │   │       │   ├── 13.2-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_handler/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── downgrade_columnar_storage/
│   │   │   │       │   ├── 10.2-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       └── upgrade_columnar_storage/
│   │   │   │           ├── 10.2-1.sql
│   │   │   │           └── latest.sql
│   │   │   └── write_state_management.c
│   │   └── distributed/
│   │       ├── .gitignore
│   │       ├── Makefile
│   │       ├── README.md
│   │       ├── cdc/
│   │       │   ├── Makefile
│   │       │   ├── Makefile.decoder
│   │       │   ├── cdc_decoder.c
│   │       │   ├── cdc_decoder_utils.c
│   │       │   └── cdc_decoder_utils.h
│   │       ├── citus--11.1-1.control
│   │       ├── citus.control
│   │       ├── clock/
│   │       │   ├── README.md
│   │       │   └── causal_clock.c
│   │       ├── commands/
│   │       │   ├── README.md
│   │       │   ├── alter_table.c
│   │       │   ├── begin.c
│   │       │   ├── call.c
│   │       │   ├── cascade_table_operation_for_connected_relations.c
│   │       │   ├── citus_add_local_table_to_metadata.c
│   │       │   ├── citus_global_signal.c
│   │       │   ├── cluster.c
│   │       │   ├── collation.c
│   │       │   ├── comment.c
│   │       │   ├── common.c
│   │       │   ├── create_distributed_table.c
│   │       │   ├── database.c
│   │       │   ├── dependencies.c
│   │       │   ├── distribute_object_ops.c
│   │       │   ├── domain.c
│   │       │   ├── drop_distributed_table.c
│   │       │   ├── extension.c
│   │       │   ├── foreign_constraint.c
│   │       │   ├── foreign_data_wrapper.c
│   │       │   ├── foreign_server.c
│   │       │   ├── function.c
│   │       │   ├── grant.c
│   │       │   ├── index.c
│   │       │   ├── index_pg_source.c
│   │       │   ├── local_multi_copy.c
│   │       │   ├── multi_copy.c
│   │       │   ├── non_main_db_distribute_object_ops.c
│   │       │   ├── owned.c
│   │       │   ├── policy.c
│   │       │   ├── publication.c
│   │       │   ├── rename.c
│   │       │   ├── role.c
│   │       │   ├── schema.c
│   │       │   ├── schema_based_sharding.c
│   │       │   ├── seclabel.c
│   │       │   ├── sequence.c
│   │       │   ├── serialize_distributed_ddls.c
│   │       │   ├── statistics.c
│   │       │   ├── subscription.c
│   │       │   ├── table.c
│   │       │   ├── text_search.c
│   │       │   ├── trigger.c
│   │       │   ├── truncate.c
│   │       │   ├── type.c
│   │       │   ├── utility_hook.c
│   │       │   ├── vacuum.c
│   │       │   ├── variableset.c
│   │       │   └── view.c
│   │       ├── connection/
│   │       │   ├── connection_configuration.c
│   │       │   ├── connection_management.c
│   │       │   ├── locally_reserved_shared_connections.c
│   │       │   ├── placement_connection.c
│   │       │   ├── remote_commands.c
│   │       │   ├── shared_connection_stats.c
│   │       │   └── worker_log_messages.c
│   │       ├── deparser/
│   │       │   ├── citus_deparseutils.c
│   │       │   ├── citus_grantutils.c
│   │       │   ├── citus_ruleutils.c
│   │       │   ├── citus_setutils.c
│   │       │   ├── deparse.c
│   │       │   ├── deparse_attribute_stmts.c
│   │       │   ├── deparse_collation_stmts.c
│   │       │   ├── deparse_comment_stmts.c
│   │       │   ├── deparse_database_stmts.c
│   │       │   ├── deparse_domain_stmts.c
│   │       │   ├── deparse_extension_stmts.c
│   │       │   ├── deparse_foreign_data_wrapper_stmts.c
│   │       │   ├── deparse_foreign_server_stmts.c
│   │       │   ├── deparse_function_stmts.c
│   │       │   ├── deparse_owned_stmts.c
│   │       │   ├── deparse_publication_stmts.c
│   │       │   ├── deparse_role_stmts.c
│   │       │   ├── deparse_schema_stmts.c
│   │       │   ├── deparse_seclabel_stmts.c
│   │       │   ├── deparse_sequence_stmts.c
│   │       │   ├── deparse_statistics_stmts.c
│   │       │   ├── deparse_table_stmts.c
│   │       │   ├── deparse_text_search.c
│   │       │   ├── deparse_type_stmts.c
│   │       │   ├── deparse_view_stmts.c
│   │       │   ├── format_collate.c
│   │       │   ├── objectaddress.c
│   │       │   ├── qualify.c
│   │       │   ├── qualify_aggregate_stmts.c
│   │       │   ├── qualify_collation_stmt.c
│   │       │   ├── qualify_domain.c
│   │       │   ├── qualify_function_stmt.c
│   │       │   ├── qualify_publication_stmt.c
│   │       │   ├── qualify_role_stmt.c
│   │       │   ├── qualify_sequence_stmt.c
│   │       │   ├── qualify_statistics_stmt.c
│   │       │   ├── qualify_table_stmt.c
│   │       │   ├── qualify_text_search_stmts.c
│   │       │   ├── qualify_type_stmt.c
│   │       │   ├── qualify_view_stmt.c
│   │       │   ├── ruleutils_16.c
│   │       │   ├── ruleutils_17.c
│   │       │   └── ruleutils_18.c
│   │       ├── executor/
│   │       │   ├── adaptive_executor.c
│   │       │   ├── citus_custom_scan.c
│   │       │   ├── directed_acyclic_graph_execution.c
│   │       │   ├── distributed_execution_locks.c
│   │       │   ├── distributed_intermediate_results.c
│   │       │   ├── executor_util_params.c
│   │       │   ├── executor_util_tasks.c
│   │       │   ├── executor_util_tuples.c
│   │       │   ├── insert_select_executor.c
│   │       │   ├── intermediate_results.c
│   │       │   ├── local_executor.c
│   │       │   ├── merge_executor.c
│   │       │   ├── multi_executor.c
│   │       │   ├── multi_server_executor.c
│   │       │   ├── partitioned_intermediate_results.c
│   │       │   ├── placement_access.c
│   │       │   ├── repartition_executor.c
│   │       │   ├── repartition_join_execution.c
│   │       │   ├── subplan_execution.c
│   │       │   ├── transmit.c
│   │       │   └── tuple_destination.c
│   │       ├── metadata/
│   │       │   ├── dependency.c
│   │       │   ├── distobject.c
│   │       │   ├── metadata_cache.c
│   │       │   ├── metadata_sync.c
│   │       │   ├── metadata_utility.c
│   │       │   ├── node_metadata.c
│   │       │   └── pg_get_object_address_16_17_18.c
│   │       ├── operations/
│   │       │   ├── citus_create_restore_point.c
│   │       │   ├── citus_split_shard_by_split_points.c
│   │       │   ├── citus_tools.c
│   │       │   ├── create_shards.c
│   │       │   ├── delete_protocol.c
│   │       │   ├── health_check.c
│   │       │   ├── isolate_shards.c
│   │       │   ├── modify_multiple_shards.c
│   │       │   ├── node_promotion.c
│   │       │   ├── node_protocol.c
│   │       │   ├── partitioning.c
│   │       │   ├── replicate_none_dist_table_shard.c
│   │       │   ├── shard_cleaner.c
│   │       │   ├── shard_rebalancer.c
│   │       │   ├── shard_split.c
│   │       │   ├── shard_transfer.c
│   │       │   ├── stage_protocol.c
│   │       │   ├── worker_copy_table_to_node_udf.c
│   │       │   ├── worker_node_manager.c
│   │       │   ├── worker_shard_copy.c
│   │       │   ├── worker_split_copy_udf.c
│   │       │   ├── worker_split_shard_release_dsm_udf.c
│   │       │   └── worker_split_shard_replication_setup_udf.c
│   │       ├── planner/
│   │       │   ├── README.md
│   │       │   ├── combine_query_planner.c
│   │       │   ├── cte_inline.c
│   │       │   ├── deparse_shard_query.c
│   │       │   ├── distributed_planner.c
│   │       │   ├── extended_op_node_utils.c
│   │       │   ├── fast_path_router_planner.c
│   │       │   ├── function_call_delegation.c
│   │       │   ├── insert_select_planner.c
│   │       │   ├── intermediate_result_pruning.c
│   │       │   ├── local_distributed_join_planner.c
│   │       │   ├── local_plan_cache.c
│   │       │   ├── merge_planner.c
│   │       │   ├── multi_explain.c
│   │       │   ├── multi_join_order.c
│   │       │   ├── multi_logical_optimizer.c
│   │       │   ├── multi_logical_planner.c
│   │       │   ├── multi_physical_planner.c
│   │       │   ├── multi_router_planner.c
│   │       │   ├── query_colocation_checker.c
│   │       │   ├── query_pushdown_planning.c
│   │       │   ├── recursive_planning.c
│   │       │   ├── relation_restriction_equivalence.c
│   │       │   ├── shard_pruning.c
│   │       │   └── tdigest_extension.c
│   │       ├── progress/
│   │       │   └── multi_progress.c
│   │       ├── relay/
│   │       │   └── relay_event_utility.c
│   │       ├── replication/
│   │       │   └── multi_logical_replication.c
│   │       ├── shardsplit/
│   │       │   ├── shardsplit_decoder.c
│   │       │   ├── shardsplit_logical_replication.c
│   │       │   └── shardsplit_shared_memory.c
│   │       ├── shared_library_init.c
│   │       ├── sql/
│   │       │   ├── cat_upgrades/
│   │       │   │   ├── add_clone_info_to_pg_dist_node.sql
│   │       │   │   └── remove_clone_info_to_pg_dist_node.sql
│   │       │   ├── citus--10.0-1--10.0-2.sql
│   │       │   ├── citus--10.0-2--10.0-3.sql
│   │       │   ├── citus--10.0-3--10.0-4.sql
│   │       │   ├── citus--10.0-4--10.1-1.sql
│   │       │   ├── citus--10.1-1--10.2-1.sql
│   │       │   ├── citus--10.2-1--10.2-2.sql
│   │       │   ├── citus--10.2-2--10.2-3.sql
│   │       │   ├── citus--10.2-3--10.2-4.sql
│   │       │   ├── citus--10.2-4--10.2-5.sql
│   │       │   ├── citus--10.2-5--10.2-4.sql
│   │       │   ├── citus--10.2-5--11.0-1.sql
│   │       │   ├── citus--11.0-1--11.0-2.sql
│   │       │   ├── citus--11.0-2--11.0-3.sql
│   │       │   ├── citus--11.0-3--11.0-4.sql
│   │       │   ├── citus--11.0-4--11.0-3.sql
│   │       │   ├── citus--11.0-4--11.1-1.sql
│   │       │   ├── citus--11.1-1--11.2-1.sql
│   │       │   ├── citus--11.2-1--11.2-2.sql
│   │       │   ├── citus--11.2-2--11.3-1.sql
│   │       │   ├── citus--11.3-1--11.3-2.sql
│   │       │   ├── citus--11.3-2--12.0-1.sql
│   │       │   ├── citus--12.0-1--12.1-1.sql
│   │       │   ├── citus--12.1-1--13.0-1.sql
│   │       │   ├── citus--13.0-1--13.1-1.sql
│   │       │   ├── citus--13.1-1--13.2-1.sql
│   │       │   ├── citus--13.2-1--14.0-1.sql
│   │       │   ├── citus--14.0-1--15.0-1.sql
│   │       │   ├── citus--8.0-1--8.0-2.sql
│   │       │   ├── citus--8.0-1.sql
│   │       │   ├── citus--8.0-10--8.0-11.sql
│   │       │   ├── citus--8.0-11--8.0-12.sql
│   │       │   ├── citus--8.0-12--8.0-13.sql
│   │       │   ├── citus--8.0-13--8.1-1.sql
│   │       │   ├── citus--8.0-2--8.0-3.sql
│   │       │   ├── citus--8.0-3--8.0-4.sql
│   │       │   ├── citus--8.0-4--8.0-5.sql
│   │       │   ├── citus--8.0-5--8.0-6.sql
│   │       │   ├── citus--8.0-6--8.0-7.sql
│   │       │   ├── citus--8.0-7--8.0-8.sql
│   │       │   ├── citus--8.0-8--8.0-9.sql
│   │       │   ├── citus--8.0-9--8.0-10.sql
│   │       │   ├── citus--8.1-1--8.2-1.sql
│   │       │   ├── citus--8.2-1--8.2-2.sql
│   │       │   ├── citus--8.2-2--8.2-3.sql
│   │       │   ├── citus--8.2-3--8.2-4.sql
│   │       │   ├── citus--8.2-4--8.3-1.sql
│   │       │   ├── citus--8.3-1--9.0-1.sql
│   │       │   ├── citus--9.0-1--9.0-2.sql
│   │       │   ├── citus--9.0-2--9.1-1.sql
│   │       │   ├── citus--9.1-1--9.2-1.sql
│   │       │   ├── citus--9.2-1--9.2-2.sql
│   │       │   ├── citus--9.2-2--9.2-4.sql
│   │       │   ├── citus--9.2-4--9.3-2.sql
│   │       │   ├── citus--9.3-1--9.2-4.sql
│   │       │   ├── citus--9.3-2--9.4-1.sql
│   │       │   ├── citus--9.4-1--9.4-2.sql
│   │       │   ├── citus--9.4-1--9.5-1.sql
│   │       │   ├── citus--9.4-2--9.4-1.sql
│   │       │   ├── citus--9.4-2--9.4-3.sql
│   │       │   ├── citus--9.4-3--9.4-2.sql
│   │       │   ├── citus--9.5-1--10.0-4.sql
│   │       │   ├── citus--9.5-1--9.5-2.sql
│   │       │   ├── citus--9.5-2--9.5-1.sql
│   │       │   ├── citus--9.5-2--9.5-3.sql
│   │       │   ├── citus--9.5-3--9.5-2.sql
│   │       │   ├── datatypes/
│   │       │   │   └── citus_cluster_clock/
│   │       │   │       └── 11.2-1.sql
│   │       │   ├── downgrades/
│   │       │   │   ├── citus--10.0-4--9.5-1.sql
│   │       │   │   ├── citus--10.1-1--10.0-4.sql
│   │       │   │   ├── citus--10.2-1--10.1-1.sql
│   │       │   │   ├── citus--10.2-2--10.2-1.sql
│   │       │   │   ├── citus--10.2-3--10.2-2.sql
│   │       │   │   ├── citus--10.2-4--10.2-3.sql
│   │       │   │   ├── citus--11.0-1--10.2-4.sql
│   │       │   │   ├── citus--11.0-2--11.0-1.sql
│   │       │   │   ├── citus--11.0-3--11.0-2.sql
│   │       │   │   ├── citus--11.1-1--11.0-4.sql
│   │       │   │   ├── citus--11.2-1--11.1-1.sql
│   │       │   │   ├── citus--11.2-2--11.2-1.sql
│   │       │   │   ├── citus--11.3-1--11.2-2.sql
│   │       │   │   ├── citus--11.3-2--11.3-1.sql
│   │       │   │   ├── citus--12.0-1--11.3-2.sql
│   │       │   │   ├── citus--12.1-1--12.0-1.sql
│   │       │   │   ├── citus--13.0-1--12.1-1.sql
│   │       │   │   ├── citus--13.1-1--13.0-1.sql
│   │       │   │   ├── citus--13.2-1--13.1-1.sql
│   │       │   │   ├── citus--14.0-1--13.2-1.sql
│   │       │   │   ├── citus--15.0-1--14.0-1.sql
│   │       │   │   ├── citus--9.2-4--9.2-2.sql
│   │       │   │   ├── citus--9.3-2--9.2-4.sql
│   │       │   │   ├── citus--9.4-1--9.3-2.sql
│   │       │   │   └── citus--9.5-1--9.4-1.sql
│   │       │   └── udfs/
│   │       │       ├── alter_distributed_table/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── alter_old_partitions_set_access_method/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── alter_role_if_exists/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── alter_table_set_access_method/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── any_value/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_activate_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_clone_node/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_inactive_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_rebalance_strategy/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_secondary_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_backend_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_blocking_pids/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_calculate_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_check_cluster_node_health/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_check_connection_to_node/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_cleanup_orphaned_resources/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_cleanup_orphaned_shards/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_conninfo_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_coordinator_nodeid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_copy_shard_placement/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_disable_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_local_group_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_node_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_object_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_partition_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_placement_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_shard_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_stat_activity/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_drain_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_drop_trigger/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_extradata_container/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_finalize_upgrade_to_citus11/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   ├── 11.0-3.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_finish_citus_upgrade/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_finish_pg_upgrade/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.0-4.sql
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   ├── 10.2-5.sql
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-4.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   ├── 9.4-2.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   ├── 9.5-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_get_node_clock/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_get_transaction_clock/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_acquire_citus_advisory_object_class_lock/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_colocation_metadata/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_object_metadata/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_partition_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_placement_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_shard_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_tenant_schema/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_adjust_local_clock_to_remote/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_copy_single_shard_placement/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_database_command/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_colocation_metadata/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_partition_metadata/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_placement_metadata/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_shard_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_tenant_schema/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_global_blocked_processes/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_local_blocked_processes/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_mark_node_not_synced/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_unregister_tenant_schema_globally/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_update_none_dist_table_metadata/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_update_placement_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_update_relation_colocation/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_is_clock_after/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_is_coordinator/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_is_primary_node/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_isolation_test_session_is_blocked/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 8.0-6.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_cancel/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_list/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_status/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_wait/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_local_disk_space_stats/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_lock_waits/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_locks/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_move_shard_placement/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_node_capacity_1/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodeid_for_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodename_for_nodeid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodeport_for_nodeid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodes/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_pause_node_within_txn/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_pid_for_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_prepare_pg_upgrade/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.0-1.sql
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   ├── 9.4-2.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   ├── 9.5-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_promote_clone_and_rebalance/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_start/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_status/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_stop/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_wait/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_remote_connection_stats/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_remove_clone_node/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_remove_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_run_local_command/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schema_distribute/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schema_move/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schema_undistribute/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schemas/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_set_coordinator_host/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_set_default_rebalance_strategy/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_set_node_property/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_allowed_on_node_true/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_cost_1/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_cost_by_disk_size/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_indexes_on_worker/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_sizes/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shards/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.3-2.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shards_on_worker/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_split_shard_by_split_points/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_activity/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_counters/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_counters_reset/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants_local/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants_local_reset/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants_reset/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stats/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_tables/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.0-4.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.3-2.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_task_wait/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_total_relation_size/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 7.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_unmark_object_distributed/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_update_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_update_shard_statistics/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_update_table_statistics/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.0-3.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_validate_rebalance_strategy_functions/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── commit_management_command_2pc/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── coord_binary_combine_agg/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── coord_binary_combine_agg_ffunc/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── coord_binary_combine_agg_sfunc/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_citus_local_table/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_distributed_function/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_distributed_table/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_distributed_table_concurrently/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_time_partitions/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── distributed_tables_colocated/
│   │       │       │   ├── 9.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── drop_old_time_partitions/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fetch_intermediate_results/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_all_partition_shard_index_names/
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_partition_shard_index_names/
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_pre_citus10_partitioned_table_constraint_names/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_pre_citus14_colocation_group_collation_mismatches/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_all_active_transactions/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_global_active_transactions/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_missing_time_partition_ranges/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_rebalance_progress/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_rebalance_table_shards_plan/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_snapshot_based_node_split_plan/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── isolate_tenant_to_new_shard/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 8.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_add_inactive_node/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_add_node/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_drain_node/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_set_node_property/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_cancel_backend/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_dist_rebalance_strategy_trigger_func/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_dist_shard_placement_trigger_func/
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_terminate_backend/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── read_intermediate_results/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── rebalance_table_shards/
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── remove_local_tables_from_metadata/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── repl_origin_helper/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── replicate_reference_tables/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── replicate_table_shards/
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── run_command_on_all_nodes/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── run_command_on_coordinator/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── shard_name/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── start_metadata_sync_to_all_nodes/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── stop_metadata_sync_to_node/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── time_partition_range/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── time_partitions/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── truncate_local_data_after_distributing_table/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── undistribute_table/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── update_distributed_table_colocation/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── upgrade_to_reference_table/
│   │       │       │   ├── 8.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_adjust_identity_column_seq_ranges/
│   │       │       │   ├── 11.2-2.sql
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_binary_partial_agg/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_binary_partial_agg_ffunc/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_change_sequence_dependency/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_copy_table_to_node/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_create_or_alter_role/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_create_or_replace_object/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_create_schema/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_drop_all_shell_tables/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_drop_sequence_dependency/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_drop_shell_table/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_fix_partition_shard_index_names/
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_fix_pre_citus10_partitioned_table_constraint_names/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_last_saved_explain_analyze/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   ├── 9.4-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_nextval/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partition_query_result/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partitioned_relation_size/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partitioned_relation_total_size/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partitioned_table_size/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_record_sequence_dependency/
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_repartition_cleanup/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_save_query_explain_analyze/
│   │       │       │   ├── 9.4-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_split_copy/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_split_shard_release_dsm/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       └── worker_split_shard_replication_setup/
│   │       │           ├── 11.1-1.sql
│   │       │           ├── 11.2-1.sql
│   │       │           └── latest.sql
│   │       ├── stats/
│   │       │   ├── query_stats.c
│   │       │   ├── stat_counters.c
│   │       │   └── stat_tenants.c
│   │       ├── test/
│   │       │   ├── backend_counter.c
│   │       │   ├── citus_depended_object.c
│   │       │   ├── citus_stat_tenants.c
│   │       │   ├── colocation_utils.c
│   │       │   ├── create_shards.c
│   │       │   ├── deparse_function_query.c
│   │       │   ├── deparse_shard_query.c
│   │       │   ├── dependency.c
│   │       │   ├── distributed_deadlock_detection.c
│   │       │   ├── distributed_intermediate_results.c
│   │       │   ├── distribution_metadata.c
│   │       │   ├── fake_am.c
│   │       │   ├── fake_fdw.c
│   │       │   ├── foreign_key_relationship_query.c
│   │       │   ├── global_pid.c
│   │       │   ├── hide_shards.c
│   │       │   ├── intermediate_results.c
│   │       │   ├── make_external_connection.c
│   │       │   ├── metadata_sync.c
│   │       │   ├── partitioning_utils.c
│   │       │   ├── progress_utils.c
│   │       │   ├── prune_shard_list.c
│   │       │   ├── relation_access_tracking.c
│   │       │   ├── run_from_same_connection.c
│   │       │   ├── sequential_execution.c
│   │       │   ├── shard_rebalancer.c
│   │       │   ├── shared_connection_counters.c
│   │       │   └── xact_stats.c
│   │       ├── transaction/
│   │       │   ├── backend_data.c
│   │       │   ├── citus_dist_stat_activity.c
│   │       │   ├── distributed_deadlock_detection.c
│   │       │   ├── lock_graph.c
│   │       │   ├── relation_access_tracking.c
│   │       │   ├── remote_transaction.c
│   │       │   ├── transaction_management.c
│   │       │   ├── transaction_recovery.c
│   │       │   └── worker_transaction.c
│   │       ├── utils/
│   │       │   ├── acquire_lock.c
│   │       │   ├── aggregate_utils.c
│   │       │   ├── array_type.c
│   │       │   ├── background_jobs.c
│   │       │   ├── background_worker_utils.c
│   │       │   ├── cancel_utils.c
│   │       │   ├── citus_clauses.c
│   │       │   ├── citus_copyfuncs.c
│   │       │   ├── citus_depended_object.c
│   │       │   ├── citus_nodefuncs.c
│   │       │   ├── citus_outfuncs.c
│   │       │   ├── citus_readfuncs.c
│   │       │   ├── citus_safe_lib.c
│   │       │   ├── citus_version.c
│   │       │   ├── clonenode_utils.c
│   │       │   ├── colocation_utils.c
│   │       │   ├── directory.c
│   │       │   ├── distribution_column.c
│   │       │   ├── distribution_column_map.c
│   │       │   ├── enable_ssl.c
│   │       │   ├── errormessage.c
│   │       │   ├── foreign_key_relationship.c
│   │       │   ├── function.c
│   │       │   ├── function_utils.c
│   │       │   ├── hash_helpers.c
│   │       │   ├── jsonbutils.c
│   │       │   ├── listutils.c
│   │       │   ├── log_utils.c
│   │       │   ├── maintenanced.c
│   │       │   ├── multi_partitioning_utils.c
│   │       │   ├── namespace_utils.c
│   │       │   ├── param_utils.c
│   │       │   ├── priority.c
│   │       │   ├── query_utils.c
│   │       │   ├── reference_table_utils.c
│   │       │   ├── relation_utils.c
│   │       │   ├── replication_origin_session_utils.c
│   │       │   ├── resource_lock.c
│   │       │   ├── role.c
│   │       │   ├── shard_utils.c
│   │       │   ├── shardinterval_utils.c
│   │       │   ├── string_utils.c
│   │       │   ├── task_execution_utils.c
│   │       │   ├── tenant_schema_metadata.c
│   │       │   ├── tuplestore.c
│   │       │   └── type_utils.c
│   │       └── worker/
│   │           ├── task_tracker_protocol.c
│   │           ├── worker_create_or_replace.c
│   │           ├── worker_data_fetch_protocol.c
│   │           ├── worker_drop_protocol.c
│   │           ├── worker_partition_protocol.c
│   │           ├── worker_shard_visibility.c
│   │           ├── worker_sql_task_protocol.c
│   │           └── worker_truncate_trigger_protocol.c
│   ├── include/
│   │   ├── .gitignore
│   │   ├── citus_config.h.in
│   │   ├── citus_version.h.in
│   │   ├── columnar/
│   │   │   ├── columnar.h
│   │   │   ├── columnar_compression.h
│   │   │   ├── columnar_customscan.h
│   │   │   ├── columnar_metadata.h
│   │   │   ├── columnar_storage.h
│   │   │   ├── columnar_tableam.h
│   │   │   └── columnar_version_compat.h
│   │   ├── distributed/
│   │   │   ├── adaptive_executor.h
│   │   │   ├── argutils.h
│   │   │   ├── backend_data.h
│   │   │   ├── background_jobs.h
│   │   │   ├── background_worker_utils.h
│   │   │   ├── cancel_utils.h
│   │   │   ├── causal_clock.h
│   │   │   ├── citus_acquire_lock.h
│   │   │   ├── citus_clauses.h
│   │   │   ├── citus_custom_scan.h
│   │   │   ├── citus_depended_object.h
│   │   │   ├── citus_nodefuncs.h
│   │   │   ├── citus_nodes.h
│   │   │   ├── citus_ruleutils.h
│   │   │   ├── citus_safe_lib.h
│   │   │   ├── clonenode_utils.h
│   │   │   ├── colocation_utils.h
│   │   │   ├── combine_query_planner.h
│   │   │   ├── commands/
│   │   │   │   ├── multi_copy.h
│   │   │   │   ├── sequence.h
│   │   │   │   ├── serialize_distributed_ddls.h
│   │   │   │   └── utility_hook.h
│   │   │   ├── commands.h
│   │   │   ├── comment.h
│   │   │   ├── connection_management.h
│   │   │   ├── coordinator_protocol.h
│   │   │   ├── cte_inline.h
│   │   │   ├── deparse_shard_query.h
│   │   │   ├── deparser.h
│   │   │   ├── directed_acyclic_graph_execution.h
│   │   │   ├── distributed_deadlock_detection.h
│   │   │   ├── distributed_execution_locks.h
│   │   │   ├── distributed_planner.h
│   │   │   ├── distribution_column.h
│   │   │   ├── enterprise.h
│   │   │   ├── error_codes.h
│   │   │   ├── errormessage.h
│   │   │   ├── executor_util.h
│   │   │   ├── extended_op_node_utils.h
│   │   │   ├── foreign_key_relationship.h
│   │   │   ├── function_call_delegation.h
│   │   │   ├── function_utils.h
│   │   │   ├── hash_helpers.h
│   │   │   ├── insert_select_executor.h
│   │   │   ├── insert_select_planner.h
│   │   │   ├── intermediate_result_pruning.h
│   │   │   ├── intermediate_results.h
│   │   │   ├── jsonbutils.h
│   │   │   ├── listutils.h
│   │   │   ├── local_distributed_join_planner.h
│   │   │   ├── local_executor.h
│   │   │   ├── local_multi_copy.h
│   │   │   ├── local_plan_cache.h
│   │   │   ├── locally_reserved_shared_connections.h
│   │   │   ├── lock_graph.h
│   │   │   ├── log_utils.h
│   │   │   ├── maintenanced.h
│   │   │   ├── memutils.h
│   │   │   ├── merge_executor.h
│   │   │   ├── merge_planner.h
│   │   │   ├── metadata/
│   │   │   │   ├── dependency.h
│   │   │   │   ├── distobject.h
│   │   │   │   └── pg_dist_object.h
│   │   │   ├── metadata_cache.h
│   │   │   ├── metadata_sync.h
│   │   │   ├── metadata_utility.h
│   │   │   ├── multi_executor.h
│   │   │   ├── multi_explain.h
│   │   │   ├── multi_join_order.h
│   │   │   ├── multi_logical_optimizer.h
│   │   │   ├── multi_logical_planner.h
│   │   │   ├── multi_logical_replication.h
│   │   │   ├── multi_partitioning_utils.h
│   │   │   ├── multi_physical_planner.h
│   │   │   ├── multi_progress.h
│   │   │   ├── multi_router_planner.h
│   │   │   ├── multi_server_executor.h
│   │   │   ├── namespace_utils.h
│   │   │   ├── param_utils.h
│   │   │   ├── pg_dist_background_job.h
│   │   │   ├── pg_dist_background_task.h
│   │   │   ├── pg_dist_backrgound_task_depend.h
│   │   │   ├── pg_dist_cleanup.h
│   │   │   ├── pg_dist_colocation.h
│   │   │   ├── pg_dist_local_group.h
│   │   │   ├── pg_dist_node.h
│   │   │   ├── pg_dist_node_metadata.h
│   │   │   ├── pg_dist_partition.h
│   │   │   ├── pg_dist_placement.h
│   │   │   ├── pg_dist_rebalance_strategy.h
│   │   │   ├── pg_dist_schema.h
│   │   │   ├── pg_dist_shard.h
│   │   │   ├── pg_dist_transaction.h
│   │   │   ├── placement_access.h
│   │   │   ├── placement_connection.h
│   │   │   ├── priority.h
│   │   │   ├── query_colocation_checker.h
│   │   │   ├── query_pushdown_planning.h
│   │   │   ├── query_utils.h
│   │   │   ├── recursive_planning.h
│   │   │   ├── reference_table_utils.h
│   │   │   ├── relation_access_tracking.h
│   │   │   ├── relation_restriction_equivalence.h
│   │   │   ├── relation_utils.h
│   │   │   ├── relay_utility.h
│   │   │   ├── remote_commands.h
│   │   │   ├── remote_transaction.h
│   │   │   ├── repartition_executor.h
│   │   │   ├── repartition_join_execution.h
│   │   │   ├── replicate_none_dist_table_shard.h
│   │   │   ├── replication_origin_session_utils.h
│   │   │   ├── resource_lock.h
│   │   │   ├── run_from_same_connection.h
│   │   │   ├── shard_cleaner.h
│   │   │   ├── shard_pruning.h
│   │   │   ├── shard_rebalancer.h
│   │   │   ├── shard_split.h
│   │   │   ├── shard_transfer.h
│   │   │   ├── shard_utils.h
│   │   │   ├── shardinterval_utils.h
│   │   │   ├── shardsplit_logical_replication.h
│   │   │   ├── shardsplit_shared_memory.h
│   │   │   ├── shared_connection_stats.h
│   │   │   ├── shared_library_init.h
│   │   │   ├── stats/
│   │   │   │   ├── query_stats.h
│   │   │   │   ├── stat_counters.h
│   │   │   │   └── stat_tenants.h
│   │   │   ├── string_utils.h
│   │   │   ├── subplan_execution.h
│   │   │   ├── task_execution_utils.h
│   │   │   ├── tdigest_extension.h
│   │   │   ├── tenant_schema_metadata.h
│   │   │   ├── time_constants.h
│   │   │   ├── transaction_identifier.h
│   │   │   ├── transaction_management.h
│   │   │   ├── transaction_recovery.h
│   │   │   ├── transmit.h
│   │   │   ├── tuple_destination.h
│   │   │   ├── tuplestore.h
│   │   │   ├── type_utils.h
│   │   │   ├── utils/
│   │   │   │   ├── array_type.h
│   │   │   │   ├── directory.h
│   │   │   │   ├── distribution_column_map.h
│   │   │   │   └── function.h
│   │   │   ├── version_compat.h
│   │   │   ├── worker_create_or_replace.h
│   │   │   ├── worker_log_messages.h
│   │   │   ├── worker_manager.h
│   │   │   ├── worker_protocol.h
│   │   │   ├── worker_shard_copy.h
│   │   │   ├── worker_shard_visibility.h
│   │   │   └── worker_transaction.h
│   │   ├── pg_version_compat.h
│   │   └── pg_version_constants.h
│   └── test/
│       ├── cdc/
│       │   ├── Makefile
│       │   ├── postgresql.conf
│       │   └── t/
│       │       ├── 001_cdc_create_distributed_table_test.pl
│       │       ├── 002_cdc_create_distributed_table_concurrently.pl
│       │       ├── 003_cdc_parallel_insert.pl
│       │       ├── 004_cdc_move_shard.pl
│       │       ├── 005_cdc_reference_table_test.pl
│       │       ├── 006_cdc_schema_change_and_move.pl
│       │       ├── 007_cdc_undistributed_table_test.pl
│       │       ├── 008_cdc_shard_split_test.pl
│       │       ├── 009_cdc_shard_split_test_non_blocking.pl
│       │       ├── 010_cdc_shard_split_parallel_insert.pl
│       │       ├── 011_cdc_alter_distributed_table.pl
│       │       ├── 012_cdc_restart_test.pl
│       │       ├── 013_cdc_drop_last_column_for_one_shard.pl
│       │       ├── 014_cdc_with_table_like_shard_name.pl
│       │       ├── 015_cdc_without_citus.pl
│       │       ├── 016_cdc_wal2json.pl
│       │       └── cdctestlib.pm
│       ├── hammerdb/
│       │   ├── README.md
│       │   └── run_hammerdb.sh
│       ├── regress/
│       │   ├── .gitignore
│       │   ├── Makefile
│       │   ├── Pipfile
│       │   ├── README.md
│       │   ├── after_citus_upgrade_coord_schedule
│       │   ├── after_pg_upgrade_with_columnar_schedule
│       │   ├── after_pg_upgrade_without_columnar_schedule
│       │   ├── base_isolation_schedule
│       │   ├── base_schedule
│       │   ├── before_citus_upgrade_coord_schedule
│       │   ├── before_pg_upgrade_with_columnar_schedule
│       │   ├── before_pg_upgrade_without_columnar_schedule
│       │   ├── bin/
│       │   │   ├── copy_modified
│       │   │   ├── copy_modified_wrapper
│       │   │   ├── create_test.py
│       │   │   ├── diff
│       │   │   ├── diff-filter
│       │   │   ├── normalize.sed
│       │   │   ├── test/
│       │   │   │   ├── expected/
│       │   │   │   │   ├── different.out
│       │   │   │   │   └── same.out
│       │   │   │   ├── file.out
│       │   │   │   ├── file_different.out
│       │   │   │   └── file_same.out
│       │   │   └── test_diff
│       │   ├── citus_tests/
│       │   │   ├── __init__.py
│       │   │   ├── arbitrary_configs/
│       │   │   │   ├── README.md
│       │   │   │   ├── __init__.py
│       │   │   │   └── citus_arbitrary_configs.py
│       │   │   ├── common.py
│       │   │   ├── config.py
│       │   │   ├── print_test_names.py
│       │   │   ├── query_generator/
│       │   │   │   ├── .gitignore
│       │   │   │   ├── README.md
│       │   │   │   ├── bin/
│       │   │   │   │   ├── citus_compare_dist_local_joins.sh
│       │   │   │   │   ├── diff-checker.py
│       │   │   │   │   └── run_query_compare_test.py
│       │   │   │   ├── config/
│       │   │   │   │   ├── config.py
│       │   │   │   │   ├── config.yaml
│       │   │   │   │   └── config_parser.py
│       │   │   │   ├── data_gen.py
│       │   │   │   ├── ddl_gen.py
│       │   │   │   ├── generate_queries.py
│       │   │   │   ├── node_defs.py
│       │   │   │   ├── out/
│       │   │   │   │   └── .gitignore
│       │   │   │   ├── query_gen.py
│       │   │   │   └── random_selections.py
│       │   │   ├── run_test.py
│       │   │   ├── test/
│       │   │   │   ├── README.md
│       │   │   │   ├── __init__.py
│       │   │   │   ├── conftest.py
│       │   │   │   ├── test_columnar.py
│       │   │   │   ├── test_extension.py
│       │   │   │   └── test_prepared_statements.py
│       │   │   ├── upgrade/
│       │   │   │   ├── README.md
│       │   │   │   ├── __init__.py
│       │   │   │   ├── citus_upgrade_test.py
│       │   │   │   ├── generate_citus_tarballs.sh
│       │   │   │   └── pg_upgrade_test.py
│       │   │   └── utils.py
│       │   ├── columnar_isolation_schedule
│       │   ├── columnar_schedule
│       │   ├── create_schedule
│       │   ├── data/
│       │   │   ├── ads.csv
│       │   │   ├── agg.data
│       │   │   ├── agg_type.data
│       │   │   ├── array_types.csv
│       │   │   ├── campaigns.csv
│       │   │   ├── clicks.csv
│       │   │   ├── companies.csv
│       │   │   ├── contestants.1.csv
│       │   │   ├── contestants.2.csv
│       │   │   ├── customer-1-10.data
│       │   │   ├── customer-1-15.data
│       │   │   ├── customer-1-20.data
│       │   │   ├── customer-1-30.data
│       │   │   ├── customer-11-20.data
│       │   │   ├── customer-21-30.data
│       │   │   ├── customer-subset-11-20.data
│       │   │   ├── customer-subset-21-30.data
│       │   │   ├── customer.1.data
│       │   │   ├── customer.2.data
│       │   │   ├── customer.3.data
│       │   │   ├── datetime_types.csv
│       │   │   ├── enum_and_composite_types.csv
│       │   │   ├── events_table.data
│       │   │   ├── impressions.csv
│       │   │   ├── large_records.data
│       │   │   ├── lineitem.1.data
│       │   │   ├── lineitem.2.data
│       │   │   ├── nation.data
│       │   │   ├── null_values.csv
│       │   │   ├── orders.1.data
│       │   │   ├── orders.2.data
│       │   │   ├── other_types.csv
│       │   │   ├── part.data
│       │   │   ├── part.more.data
│       │   │   ├── range_types.csv
│       │   │   ├── supplier.data
│       │   │   └── users_table.data
│       │   ├── enterprise_failure_schedule
│       │   ├── enterprise_isolation_logicalrep_1_schedule
│       │   ├── enterprise_isolation_logicalrep_2_schedule
│       │   ├── enterprise_isolation_logicalrep_3_schedule
│       │   ├── enterprise_isolation_schedule
│       │   ├── enterprise_minimal_schedule
│       │   ├── enterprise_schedule
│       │   ├── expected/
│       │   │   ├── adaptive_executor.out
│       │   │   ├── adaptive_executor_repartition.out
│       │   │   ├── add_coordinator.out
│       │   │   ├── adv_lock_permission.out
│       │   │   ├── aggregate_support.out
│       │   │   ├── alter_database_owner.out
│       │   │   ├── alter_database_propagation.out
│       │   │   ├── alter_distributed_table.out
│       │   │   ├── alter_index.out
│       │   │   ├── alter_role_propagation.out
│       │   │   ├── alter_table_add_column.out
│       │   │   ├── alter_table_set_access_method.out
│       │   │   ├── alter_table_single_shard_table.out
│       │   │   ├── anonymous_columns.out
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name.out
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name_create.out
│       │   │   ├── arbitrary_configs_recurring_outer_join.out
│       │   │   ├── arbitrary_configs_router.out
│       │   │   ├── arbitrary_configs_router_create.out
│       │   │   ├── arbitrary_configs_truncate.out
│       │   │   ├── arbitrary_configs_truncate_cascade.out
│       │   │   ├── arbitrary_configs_truncate_cascade_create.out
│       │   │   ├── arbitrary_configs_truncate_create.out
│       │   │   ├── arbitrary_configs_truncate_partition.out
│       │   │   ├── arbitrary_configs_truncate_partition_create.out
│       │   │   ├── auto_undist_citus_local.out
│       │   │   ├── background_rebalance.out
│       │   │   ├── background_rebalance_parallel.out
│       │   │   ├── background_rebalance_parallel_reference_tables.out
│       │   │   ├── background_task_queue_monitor.out
│       │   │   ├── base_enable_mx.out
│       │   │   ├── binary_protocol.out
│       │   │   ├── bool_agg.out
│       │   │   ├── cdc_library_path.out
│       │   │   ├── ch_bench_having.out
│       │   │   ├── ch_bench_having_mx.out
│       │   │   ├── ch_bench_subquery_repartition.out
│       │   │   ├── ch_benchmarks_1.out
│       │   │   ├── ch_benchmarks_2.out
│       │   │   ├── ch_benchmarks_3.out
│       │   │   ├── ch_benchmarks_4.out
│       │   │   ├── ch_benchmarks_5.out
│       │   │   ├── ch_benchmarks_6.out
│       │   │   ├── ch_benchmarks_create_load.out
│       │   │   ├── chbenchmark_all_queries.out
│       │   │   ├── check_cluster_state.out
│       │   │   ├── check_mx.out
│       │   │   ├── citus_aggregated_stats.out
│       │   │   ├── citus_copy_shard_placement.out
│       │   │   ├── citus_depended_object.out
│       │   │   ├── citus_drain_node.out
│       │   │   ├── citus_internal_access.out
│       │   │   ├── citus_local_dist_joins.out
│       │   │   ├── citus_local_table_triggers.out
│       │   │   ├── citus_local_tables.out
│       │   │   ├── citus_local_tables_ent.out
│       │   │   ├── citus_local_tables_mx.out
│       │   │   ├── citus_local_tables_queries.out
│       │   │   ├── citus_local_tables_queries_mx.out
│       │   │   ├── citus_locks.out
│       │   │   ├── citus_non_blocking_split_columnar.out
│       │   │   ├── citus_non_blocking_split_shard_cleanup.out
│       │   │   ├── citus_non_blocking_split_shards.out
│       │   │   ├── citus_run_command.out
│       │   │   ├── citus_schema_distribute_undistribute.out
│       │   │   ├── citus_schema_move.out
│       │   │   ├── citus_shards.out
│       │   │   ├── citus_split_shard_by_split_points.out
│       │   │   ├── citus_split_shard_by_split_points_deferred_drop.out
│       │   │   ├── citus_split_shard_by_split_points_failure.out
│       │   │   ├── citus_split_shard_by_split_points_negative.out
│       │   │   ├── citus_split_shard_columnar_partitioned.out
│       │   │   ├── citus_stat_tenants.out
│       │   │   ├── citus_table_triggers.out
│       │   │   ├── citus_update_table_statistics.out
│       │   │   ├── clock.out
│       │   │   ├── columnar_alter.out
│       │   │   ├── columnar_alter_set_type.out
│       │   │   ├── columnar_analyze.out
│       │   │   ├── columnar_chunk_filtering.out
│       │   │   ├── columnar_chunk_filtering_0.out
│       │   │   ├── columnar_citus_integration.out
│       │   │   ├── columnar_clean.out
│       │   │   ├── columnar_copyto.out
│       │   │   ├── columnar_create.out
│       │   │   ├── columnar_cursor.out
│       │   │   ├── columnar_data_types.out
│       │   │   ├── columnar_drop.out
│       │   │   ├── columnar_empty.out
│       │   │   ├── columnar_fallback_scan.out
│       │   │   ├── columnar_first_row_number.out
│       │   │   ├── columnar_index_concurrency.out
│       │   │   ├── columnar_indexes.out
│       │   │   ├── columnar_insert.out
│       │   │   ├── columnar_join.out
│       │   │   ├── columnar_load.out
│       │   │   ├── columnar_lz4.out
│       │   │   ├── columnar_lz4_0.out
│       │   │   ├── columnar_matview.out
│       │   │   ├── columnar_memory.out
│       │   │   ├── columnar_partitioning.out
│       │   │   ├── columnar_paths.out
│       │   │   ├── columnar_paths_0.out
│       │   │   ├── columnar_permissions.out
│       │   │   ├── columnar_pg15.out
│       │   │   ├── columnar_query.out
│       │   │   ├── columnar_recursive.out
│       │   │   ├── columnar_rollback.out
│       │   │   ├── columnar_tableoptions.out
│       │   │   ├── columnar_temp_tables.out
│       │   │   ├── columnar_test_helpers.out
│       │   │   ├── columnar_transactions.out
│       │   │   ├── columnar_trigger.out
│       │   │   ├── columnar_truncate.out
│       │   │   ├── columnar_types_without_comparison.out
│       │   │   ├── columnar_update_delete.out
│       │   │   ├── columnar_vacuum.out
│       │   │   ├── columnar_vacuum_vs_insert.out
│       │   │   ├── columnar_write_concurrency.out
│       │   │   ├── columnar_write_concurrency_index.out
│       │   │   ├── columnar_zstd.out
│       │   │   ├── columnar_zstd_0.out
│       │   │   ├── comment_on_database.out
│       │   │   ├── comment_on_role.out
│       │   │   ├── connectivity_checks.out
│       │   │   ├── coordinator_evaluation.out
│       │   │   ├── coordinator_evaluation_modify.out
│       │   │   ├── coordinator_evaluation_select.out
│       │   │   ├── coordinator_shouldhaveshards.out
│       │   │   ├── cpu_priority.out
│       │   │   ├── create_citus_local_table_cascade.out
│       │   │   ├── create_distributed_table_concurrently.out
│       │   │   ├── create_drop_database_propagation.out
│       │   │   ├── create_drop_database_propagation_pg15.out
│       │   │   ├── create_drop_database_propagation_pg16.out
│       │   │   ├── create_ref_dist_from_citus_local.out
│       │   │   ├── create_role_propagation.out
│       │   │   ├── create_single_shard_table.out
│       │   │   ├── cross_join.out
│       │   │   ├── cte_inline.out
│       │   │   ├── cte_nested_modification.out
│       │   │   ├── cte_prepared_modify.out
│       │   │   ├── cursors.out
│       │   │   ├── custom_aggregate_support.out
│       │   │   ├── custom_aggregate_support_0.out
│       │   │   ├── data_types.out
│       │   │   ├── detect_conn_close.out
│       │   │   ├── disable_object_propagation.out
│       │   │   ├── distributed_collations.out
│       │   │   ├── distributed_collations_conflict.out
│       │   │   ├── distributed_domain.out
│       │   │   ├── distributed_functions.out
│       │   │   ├── distributed_functions_conflict.out
│       │   │   ├── distributed_intermediate_results.out
│       │   │   ├── distributed_locks.out
│       │   │   ├── distributed_planning.out
│       │   │   ├── distributed_planning_create_load.out
│       │   │   ├── distributed_procedure.out
│       │   │   ├── distributed_triggers.out
│       │   │   ├── distributed_types.out
│       │   │   ├── distributed_types_conflict.out
│       │   │   ├── distributed_types_xact_add_enum_value.out
│       │   │   ├── dml_recursive.out
│       │   │   ├── drop_column_partitioned_table.out
│       │   │   ├── drop_database.out
│       │   │   ├── drop_partitioned_table.out
│       │   │   ├── dropped_columns_1.out
│       │   │   ├── dropped_columns_create_load.out
│       │   │   ├── ensure_citus_columnar_not_exists.out
│       │   │   ├── ensure_no_intermediate_data_leak.out
│       │   │   ├── ensure_no_shared_connection_leak.out
│       │   │   ├── escape_extension_name.out
│       │   │   ├── escape_extension_name_0.out
│       │   │   ├── executor_local_failure.out
│       │   │   ├── expression_reference_join.out
│       │   │   ├── failure_add_disable_node.out
│       │   │   ├── failure_connection_establishment.out
│       │   │   ├── failure_copy_on_hash.out
│       │   │   ├── failure_copy_to_reference.out
│       │   │   ├── failure_create_database.out
│       │   │   ├── failure_create_distributed_table_concurrently.out
│       │   │   ├── failure_create_distributed_table_non_empty.out
│       │   │   ├── failure_create_index_concurrently.out
│       │   │   ├── failure_create_reference_table.out
│       │   │   ├── failure_create_table.out
│       │   │   ├── failure_cte_subquery.out
│       │   │   ├── failure_ddl.out
│       │   │   ├── failure_distributed_results.out
│       │   │   ├── failure_failover_to_local_execution.out
│       │   │   ├── failure_insert_select_pushdown.out
│       │   │   ├── failure_insert_select_repartition.out
│       │   │   ├── failure_insert_select_via_coordinator.out
│       │   │   ├── failure_multi_dml.out
│       │   │   ├── failure_multi_row_insert.out
│       │   │   ├── failure_multi_shard_update_delete.out
│       │   │   ├── failure_mx_metadata_sync.out
│       │   │   ├── failure_mx_metadata_sync_multi_trans.out
│       │   │   ├── failure_non_main_db_2pc.out
│       │   │   ├── failure_offline_move_shard_placement.out
│       │   │   ├── failure_on_create_subscription.out
│       │   │   ├── failure_online_move_shard_placement.out
│       │   │   ├── failure_parallel_connection.out
│       │   │   ├── failure_ref_tables.out
│       │   │   ├── failure_replicated_partitions.out
│       │   │   ├── failure_savepoints.out
│       │   │   ├── failure_setup.out
│       │   │   ├── failure_single_mod.out
│       │   │   ├── failure_single_select.out
│       │   │   ├── failure_split_cleanup.out
│       │   │   ├── failure_tenant_isolation.out
│       │   │   ├── failure_tenant_isolation_nonblocking.out
│       │   │   ├── failure_test_helpers.out
│       │   │   ├── failure_truncate.out
│       │   │   ├── failure_vacuum.out
│       │   │   ├── fast_path_router_modify.out
│       │   │   ├── fkeys_between_local_ref.out
│       │   │   ├── follower_single_node.out
│       │   │   ├── forcedelegation_functions.out
│       │   │   ├── foreign_key_restriction_enforcement.out
│       │   │   ├── foreign_key_to_reference_shard_rebalance.out
│       │   │   ├── foreign_key_to_reference_table.out
│       │   │   ├── foreign_tables_mx.out
│       │   │   ├── function_create.out
│       │   │   ├── function_propagation.out
│       │   │   ├── function_with_case_when.out
│       │   │   ├── functions.out
│       │   │   ├── generated_identity.out
│       │   │   ├── geqo.out
│       │   │   ├── global_cancel.out
│       │   │   ├── grant_on_database_propagation.out
│       │   │   ├── grant_on_database_propagation_from_non_maindb.out
│       │   │   ├── grant_on_foreign_server_propagation.out
│       │   │   ├── grant_on_function_propagation.out
│       │   │   ├── grant_on_schema_propagation.out
│       │   │   ├── grant_on_sequence_propagation.out
│       │   │   ├── grant_on_table_propagation.out
│       │   │   ├── grant_on_table_propagation_0.out
│       │   │   ├── grant_role_from_non_maindb.out
│       │   │   ├── having_subquery.out
│       │   │   ├── hyperscale_tutorial.out
│       │   │   ├── index_create.out
│       │   │   ├── insert_select_connection_leak.out
│       │   │   ├── insert_select_into_local_table.out
│       │   │   ├── insert_select_repartition.out
│       │   │   ├── insert_select_single_shard_table.out
│       │   │   ├── intermediate_result_pruning.out
│       │   │   ├── intermediate_result_pruning_create.out
│       │   │   ├── intermediate_result_pruning_queries_1.out
│       │   │   ├── intermediate_result_pruning_queries_2.out
│       │   │   ├── intermediate_results.out
│       │   │   ├── isolation_acquire_distributed_locks.out
│       │   │   ├── isolation_add_coordinator.out
│       │   │   ├── isolation_add_node_vs_reference_table_operations.out
│       │   │   ├── isolation_add_remove_node.out
│       │   │   ├── isolation_append_copy_vs_all.out
│       │   │   ├── isolation_blocking_move_multi_shard_commands.out
│       │   │   ├── isolation_blocking_move_multi_shard_commands_on_mx.out
│       │   │   ├── isolation_blocking_move_single_shard_commands.out
│       │   │   ├── isolation_blocking_move_single_shard_commands_on_mx.out
│       │   │   ├── isolation_blocking_shard_split.out
│       │   │   ├── isolation_blocking_shard_split_with_fkey_to_reference.out
│       │   │   ├── isolation_cancellation.out
│       │   │   ├── isolation_check_mx.out
│       │   │   ├── isolation_citus_dist_activity.out
│       │   │   ├── isolation_citus_locks.out
│       │   │   ├── isolation_citus_pause_node.out
│       │   │   ├── isolation_citus_pause_node_1.out
│       │   │   ├── isolation_citus_schema_distribute_undistribute.out
│       │   │   ├── isolation_cluster_management.out
│       │   │   ├── isolation_concurrent_dml.out
│       │   │   ├── isolation_concurrent_move_create_table.out
│       │   │   ├── isolation_copy_placement_vs_copy_placement.out
│       │   │   ├── isolation_copy_placement_vs_modification.out
│       │   │   ├── isolation_copy_vs_all_on_mx.out
│       │   │   ├── isolation_create_citus_local_table.out
│       │   │   ├── isolation_create_distributed_concurrently_after_drop_column.out
│       │   │   ├── isolation_create_distributed_table.out
│       │   │   ├── isolation_create_distributed_table_concurrently.out
│       │   │   ├── isolation_create_restore_point.out
│       │   │   ├── isolation_create_table_vs_add_remove_node.out
│       │   │   ├── isolation_data_migration.out
│       │   │   ├── isolation_database_cmd_from_any_node.out
│       │   │   ├── isolation_ddl_vs_all.out
│       │   │   ├── isolation_delete_vs_all.out
│       │   │   ├── isolation_dis2ref_foreign_keys_on_mx.out
│       │   │   ├── isolation_distributed_deadlock_detection.out
│       │   │   ├── isolation_distributed_transaction_id.out
│       │   │   ├── isolation_drop_alter_index_select_for_update_on_mx.out
│       │   │   ├── isolation_drop_shards.out
│       │   │   ├── isolation_drop_vs_all.out
│       │   │   ├── isolation_dump_global_wait_edges.out
│       │   │   ├── isolation_dump_local_wait_edges.out
│       │   │   ├── isolation_ensure_dependency_activate_node.out
│       │   │   ├── isolation_extension_commands.out
│       │   │   ├── isolation_fix_partition_shard_index_names.out
│       │   │   ├── isolation_get_all_active_transactions.out
│       │   │   ├── isolation_get_distributed_wait_queries_mx.out
│       │   │   ├── isolation_global_pid.out
│       │   │   ├── isolation_hash_copy_vs_all.out
│       │   │   ├── isolation_insert_select_conflict.out
│       │   │   ├── isolation_insert_select_repartition.out
│       │   │   ├── isolation_insert_select_vs_all.out
│       │   │   ├── isolation_insert_select_vs_all_on_mx.out
│       │   │   ├── isolation_insert_vs_all.out
│       │   │   ├── isolation_insert_vs_all_on_mx.out
│       │   │   ├── isolation_insert_vs_vacuum.out
│       │   │   ├── isolation_logical_replication_binaryless.out
│       │   │   ├── isolation_logical_replication_multi_shard_commands.out
│       │   │   ├── isolation_logical_replication_multi_shard_commands_on_mx.out
│       │   │   ├── isolation_logical_replication_nonsu_nonbypassrls.out
│       │   │   ├── isolation_logical_replication_single_shard_commands.out
│       │   │   ├── isolation_logical_replication_single_shard_commands_on_mx.out
│       │   │   ├── isolation_logical_replication_skip_fk_validation.out
│       │   │   ├── isolation_logical_replication_with_partitioning.out
│       │   │   ├── isolation_master_update_node.out
│       │   │   ├── isolation_master_update_node_0.out
│       │   │   ├── isolation_master_update_node_1.out
│       │   │   ├── isolation_max_client_connections.out
│       │   │   ├── isolation_merge.out
│       │   │   ├── isolation_merge_replicated.out
│       │   │   ├── isolation_metadata_sync_deadlock.out
│       │   │   ├── isolation_metadata_sync_vs_all.out
│       │   │   ├── isolation_modify_with_subquery_vs_dml.out
│       │   │   ├── isolation_move_placement_vs_modification.out
│       │   │   ├── isolation_move_placement_vs_modification_fk.out
│       │   │   ├── isolation_move_placement_vs_move_placement.out
│       │   │   ├── isolation_multi_shard_modify_vs_all.out
│       │   │   ├── isolation_multiuser_locking.out
│       │   │   ├── isolation_multiuser_locking_0.out
│       │   │   ├── isolation_non_blocking_shard_split.out
│       │   │   ├── isolation_non_blocking_shard_split_fkey.out
│       │   │   ├── isolation_non_blocking_shard_split_with_index_as_replicaIdentity.out
│       │   │   ├── isolation_partitioned_copy_vs_all.out
│       │   │   ├── isolation_progress_monitoring.out
│       │   │   ├── isolation_range_copy_vs_all.out
│       │   │   ├── isolation_rebalancer_deferred_drop.out
│       │   │   ├── isolation_ref2ref_foreign_keys.out
│       │   │   ├── isolation_ref2ref_foreign_keys_enterprise.out
│       │   │   ├── isolation_ref2ref_foreign_keys_on_mx.out
│       │   │   ├── isolation_ref_select_for_update_vs_all_on_mx.out
│       │   │   ├── isolation_ref_update_delete_upsert_vs_all_on_mx.out
│       │   │   ├── isolation_reference_copy_vs_all.out
│       │   │   ├── isolation_reference_on_mx.out
│       │   │   ├── isolation_reference_table.out
│       │   │   ├── isolation_remove_coordinator.out
│       │   │   ├── isolation_replace_wait_function.out
│       │   │   ├── isolation_replicate_reference_tables_to_coordinator.out
│       │   │   ├── isolation_replicated_dist_on_mx.out
│       │   │   ├── isolation_schema_based_sharding.out
│       │   │   ├── isolation_select_for_update.out
│       │   │   ├── isolation_select_vs_all.out
│       │   │   ├── isolation_select_vs_all_on_mx.out
│       │   │   ├── isolation_setup.out
│       │   │   ├── isolation_shard_move_vs_start_metadata_sync.out
│       │   │   ├── isolation_shard_rebalancer.out
│       │   │   ├── isolation_shard_rebalancer_progress.out
│       │   │   ├── isolation_shouldhaveshards.out
│       │   │   ├── isolation_tenant_isolation.out
│       │   │   ├── isolation_tenant_isolation_nonblocking.out
│       │   │   ├── isolation_tenant_isolation_with_fkey_to_reference.out
│       │   │   ├── isolation_transaction_recovery.out
│       │   │   ├── isolation_truncate_vs_all.out
│       │   │   ├── isolation_truncate_vs_all_on_mx.out
│       │   │   ├── isolation_undistribute_table.out
│       │   │   ├── isolation_update_delete_upsert_vs_all_on_mx.out
│       │   │   ├── isolation_update_node.out
│       │   │   ├── isolation_update_node_lock_writes.out
│       │   │   ├── isolation_update_vs_all.out
│       │   │   ├── isolation_upsert_vs_all.out
│       │   │   ├── isolation_vacuum_skip_locked.out
│       │   │   ├── isolation_validate_vs_insert.out
│       │   │   ├── issue_5099.out
│       │   │   ├── issue_5248.out
│       │   │   ├── issue_5763.out
│       │   │   ├── issue_6543.out
│       │   │   ├── issue_6592.out
│       │   │   ├── issue_6758.out
│       │   │   ├── issue_7477.out
│       │   │   ├── issue_7891.out
│       │   │   ├── issue_8243.out
│       │   │   ├── join_pushdown.out
│       │   │   ├── limit_intermediate_size.out
│       │   │   ├── local_dist_join.out
│       │   │   ├── local_dist_join_load.out
│       │   │   ├── local_dist_join_mixed.out
│       │   │   ├── local_dist_join_modifications.out
│       │   │   ├── local_execution_local_plan.out
│       │   │   ├── local_shard_copy.out
│       │   │   ├── local_shard_execution.out
│       │   │   ├── local_shard_execution_dropped_column.out
│       │   │   ├── local_shard_execution_replicated.out
│       │   │   ├── local_shard_utility_command_execution.out
│       │   │   ├── local_table_join.out
│       │   │   ├── locally_execute_intermediate_results.out
│       │   │   ├── logical_rep_consistency.out
│       │   │   ├── logical_replication.out
│       │   │   ├── materialized_view.out
│       │   │   ├── merge.out
│       │   │   ├── merge_arbitrary.out
│       │   │   ├── merge_arbitrary_create.out
│       │   │   ├── merge_partition_tables.out
│       │   │   ├── merge_repartition1.out
│       │   │   ├── merge_repartition2.out
│       │   │   ├── merge_schema_sharding.out
│       │   │   ├── merge_unsupported.out
│       │   │   ├── merge_unsupported_0.out
│       │   │   ├── merge_vcore.out
│       │   │   ├── metadata_sync_from_non_maindb.out
│       │   │   ├── metadata_sync_helpers.out
│       │   │   ├── minimal_cluster_management.out
│       │   │   ├── mixed_relkind_tests.out
│       │   │   ├── modification_correctness.out
│       │   │   ├── multi_add_node_from_backup.out
│       │   │   ├── multi_add_node_from_backup_negative.out
│       │   │   ├── multi_add_node_from_backup_sync_replica.out
│       │   │   ├── multi_agg_approximate_distinct.out
│       │   │   ├── multi_agg_approximate_distinct_0.out
│       │   │   ├── multi_agg_distinct.out
│       │   │   ├── multi_agg_type_conversion.out
│       │   │   ├── multi_alias.out
│       │   │   ├── multi_alter_table_add_constraints.out
│       │   │   ├── multi_alter_table_add_constraints_without_name.out
│       │   │   ├── multi_alter_table_add_foreign_key_without_name.out
│       │   │   ├── multi_alter_table_row_level_security.out
│       │   │   ├── multi_alter_table_row_level_security_escape.out
│       │   │   ├── multi_alter_table_statements.out
│       │   │   ├── multi_array_agg.out
│       │   │   ├── multi_average_expression.out
│       │   │   ├── multi_basic_queries.out
│       │   │   ├── multi_behavioral_analytics_basics.out
│       │   │   ├── multi_behavioral_analytics_create_table.out
│       │   │   ├── multi_behavioral_analytics_create_table_superuser.out
│       │   │   ├── multi_behavioral_analytics_single_shard_queries.out
│       │   │   ├── multi_cache_invalidation.out
│       │   │   ├── multi_citus_tools.out
│       │   │   ├── multi_cluster_management.out
│       │   │   ├── multi_colocated_shard_rebalance.out
│       │   │   ├── multi_colocation_utils.out
│       │   │   ├── multi_complex_count_distinct.out
│       │   │   ├── multi_complex_expressions.out
│       │   │   ├── multi_copy.out
│       │   │   ├── multi_count_type_conversion.out
│       │   │   ├── multi_create_fdw.out
│       │   │   ├── multi_create_role_dependency.out
│       │   │   ├── multi_create_shards.out
│       │   │   ├── multi_create_table.out
│       │   │   ├── multi_create_table_constraints.out
│       │   │   ├── multi_create_table_superuser.out
│       │   │   ├── multi_create_users.out
│       │   │   ├── multi_cross_shard.out
│       │   │   ├── multi_data_types.out
│       │   │   ├── multi_deparse_function.out
│       │   │   ├── multi_deparse_procedure.out
│       │   │   ├── multi_deparse_shard_query.out
│       │   │   ├── multi_distributed_transaction_id.out
│       │   │   ├── multi_distribution_metadata.out
│       │   │   ├── multi_drop_extension.out
│       │   │   ├── multi_dropped_column_aliases.out
│       │   │   ├── multi_explain.out
│       │   │   ├── multi_explain_0.out
│       │   │   ├── multi_extension.out
│       │   │   ├── multi_fix_partition_shard_index_names.out
│       │   │   ├── multi_follower_configure_followers.out
│       │   │   ├── multi_follower_dml.out
│       │   │   ├── multi_follower_sanity_check.out
│       │   │   ├── multi_follower_select_statements.out
│       │   │   ├── multi_foreign_key.out
│       │   │   ├── multi_foreign_key_relation_graph.out
│       │   │   ├── multi_function_evaluation.out
│       │   │   ├── multi_function_in_join.out
│       │   │   ├── multi_generate_ddl_commands.out
│       │   │   ├── multi_hash_pruning.out
│       │   │   ├── multi_having_pushdown.out
│       │   │   ├── multi_index_statements.out
│       │   │   ├── multi_insert_select.out
│       │   │   ├── multi_insert_select_behavioral_analytics_create_table.out
│       │   │   ├── multi_insert_select_conflict.out
│       │   │   ├── multi_insert_select_non_pushable_queries.out
│       │   │   ├── multi_insert_select_window.out
│       │   │   ├── multi_join_order_additional.out
│       │   │   ├── multi_join_order_tpch_repartition.out
│       │   │   ├── multi_join_order_tpch_small.out
│       │   │   ├── multi_join_pruning.out
│       │   │   ├── multi_json_agg.out
│       │   │   ├── multi_json_object_agg.out
│       │   │   ├── multi_jsonb_agg.out
│       │   │   ├── multi_jsonb_object_agg.out
│       │   │   ├── multi_large_shardid.out
│       │   │   ├── multi_level_recursive_queries.out
│       │   │   ├── multi_limit_clause.out
│       │   │   ├── multi_limit_clause_approximate.out
│       │   │   ├── multi_load_data.out
│       │   │   ├── multi_load_data_superuser.out
│       │   │   ├── multi_load_more_data.out
│       │   │   ├── multi_master_protocol.out
│       │   │   ├── multi_metadata_access.out
│       │   │   ├── multi_metadata_attributes.out
│       │   │   ├── multi_metadata_sync.out
│       │   │   ├── multi_metadata_sync_domain.out
│       │   │   ├── multi_modifications.out
│       │   │   ├── multi_modifying_xacts.out
│       │   │   ├── multi_move_mx.out
│       │   │   ├── multi_multiuser.out
│       │   │   ├── multi_multiuser_auth.out
│       │   │   ├── multi_multiuser_basic_queries.out
│       │   │   ├── multi_multiuser_copy.out
│       │   │   ├── multi_multiuser_grant.out
│       │   │   ├── multi_multiuser_load_data.out
│       │   │   ├── multi_multiuser_master_protocol.out
│       │   │   ├── multi_multiuser_master_protocol_0.out
│       │   │   ├── multi_mx_add_coordinator.out
│       │   │   ├── multi_mx_alter_distributed_table.out
│       │   │   ├── multi_mx_call.out
│       │   │   ├── multi_mx_call_0.out
│       │   │   ├── multi_mx_copy_data.out
│       │   │   ├── multi_mx_create_table.out
│       │   │   ├── multi_mx_ddl.out
│       │   │   ├── multi_mx_explain.out
│       │   │   ├── multi_mx_explain_0.out
│       │   │   ├── multi_mx_function_call_delegation.out
│       │   │   ├── multi_mx_function_call_delegation_0.out
│       │   │   ├── multi_mx_function_table_reference.out
│       │   │   ├── multi_mx_hide_shard_names.out
│       │   │   ├── multi_mx_hide_shard_names_0.out
│       │   │   ├── multi_mx_insert_select_repartition.out
│       │   │   ├── multi_mx_metadata.out
│       │   │   ├── multi_mx_modifications.out
│       │   │   ├── multi_mx_modifications_to_reference_tables.out
│       │   │   ├── multi_mx_modifying_xacts.out
│       │   │   ├── multi_mx_node_metadata.out
│       │   │   ├── multi_mx_partitioning.out
│       │   │   ├── multi_mx_reference_table.out
│       │   │   ├── multi_mx_repartition_join_w1.out
│       │   │   ├── multi_mx_repartition_join_w2.out
│       │   │   ├── multi_mx_repartition_udt_prepare.out
│       │   │   ├── multi_mx_repartition_udt_w1.out
│       │   │   ├── multi_mx_repartition_udt_w2.out
│       │   │   ├── multi_mx_router_planner.out
│       │   │   ├── multi_mx_schema_support.out
│       │   │   ├── multi_mx_tpch_query1.out
│       │   │   ├── multi_mx_tpch_query10.out
│       │   │   ├── multi_mx_tpch_query12.out
│       │   │   ├── multi_mx_tpch_query14.out
│       │   │   ├── multi_mx_tpch_query19.out
│       │   │   ├── multi_mx_tpch_query3.out
│       │   │   ├── multi_mx_tpch_query6.out
│       │   │   ├── multi_mx_tpch_query7.out
│       │   │   ├── multi_mx_tpch_query7_nested.out
│       │   │   ├── multi_mx_transaction_recovery.out
│       │   │   ├── multi_mx_truncate_from_worker.out
│       │   │   ├── multi_name_lengths.out
│       │   │   ├── multi_name_resolution.out
│       │   │   ├── multi_null_minmax_value_pruning.out
│       │   │   ├── multi_orderby_limit_pushdown.out
│       │   │   ├── multi_outer_join.out
│       │   │   ├── multi_outer_join_columns.out
│       │   │   ├── multi_outer_join_reference.out
│       │   │   ├── multi_partition_pruning.out
│       │   │   ├── multi_partitioning.out
│       │   │   ├── multi_partitioning_utils.out
│       │   │   ├── multi_poolinfo_usage.out
│       │   │   ├── multi_prepare_plsql.out
│       │   │   ├── multi_prepare_sql.out
│       │   │   ├── multi_prune_shard_list.out
│       │   │   ├── multi_query_directory_cleanup.out
│       │   │   ├── multi_read_from_secondaries.out
│       │   │   ├── multi_real_time_transaction.out
│       │   │   ├── multi_reference_table.out
│       │   │   ├── multi_remove_node_reference_table.out
│       │   │   ├── multi_repartition_join_planning.out
│       │   │   ├── multi_repartition_join_pruning.out
│       │   │   ├── multi_repartition_join_ref.out
│       │   │   ├── multi_repartition_join_task_assignment.out
│       │   │   ├── multi_repartition_udt.out
│       │   │   ├── multi_repartitioned_subquery_udf.out
│       │   │   ├── multi_replicate_reference_table.out
│       │   │   ├── multi_rls_join_distribution_key.out
│       │   │   ├── multi_router_planner.out
│       │   │   ├── multi_router_planner_fast_path.out
│       │   │   ├── multi_row_insert.out
│       │   │   ├── multi_row_router_insert.out
│       │   │   ├── multi_schema_support.out
│       │   │   ├── multi_select_distinct.out
│       │   │   ├── multi_select_for_update.out
│       │   │   ├── multi_sequence_default.out
│       │   │   ├── multi_shard_update_delete.out
│       │   │   ├── multi_simple_queries.out
│       │   │   ├── multi_single_relation_subquery.out
│       │   │   ├── multi_size_queries.out
│       │   │   ├── multi_sql_function.out
│       │   │   ├── multi_sql_function_0.out
│       │   │   ├── multi_subquery.out
│       │   │   ├── multi_subquery_behavioral_analytics.out
│       │   │   ├── multi_subquery_complex_queries.out
│       │   │   ├── multi_subquery_complex_reference_clause.out
│       │   │   ├── multi_subquery_in_where_clause.out
│       │   │   ├── multi_subquery_in_where_reference_clause.out
│       │   │   ├── multi_subquery_misc.out
│       │   │   ├── multi_subquery_misc_0.out
│       │   │   ├── multi_subquery_union.out
│       │   │   ├── multi_subquery_window_functions.out
│       │   │   ├── multi_subtransactions.out
│       │   │   ├── multi_table_ddl.out
│       │   │   ├── multi_task_assignment_policy.out
│       │   │   ├── multi_task_string_size.out
│       │   │   ├── multi_tenant_isolation.out
│       │   │   ├── multi_tenant_isolation_nonblocking.out
│       │   │   ├── multi_test_catalog_views.out
│       │   │   ├── multi_test_helpers.out
│       │   │   ├── multi_test_helpers_superuser.out
│       │   │   ├── multi_tpch_query1.out
│       │   │   ├── multi_tpch_query10.out
│       │   │   ├── multi_tpch_query12.out
│       │   │   ├── multi_tpch_query14.out
│       │   │   ├── multi_tpch_query19.out
│       │   │   ├── multi_tpch_query3.out
│       │   │   ├── multi_tpch_query6.out
│       │   │   ├── multi_tpch_query7.out
│       │   │   ├── multi_tpch_query7_nested.out
│       │   │   ├── multi_transaction_recovery.out
│       │   │   ├── multi_transaction_recovery_multiple_databases.out
│       │   │   ├── multi_transactional_drop_shards.out
│       │   │   ├── multi_truncate.out
│       │   │   ├── multi_unsupported_worker_operations.out
│       │   │   ├── multi_update_select.out
│       │   │   ├── multi_upsert.out
│       │   │   ├── multi_utilities.out
│       │   │   ├── multi_utility_statements.out
│       │   │   ├── multi_utility_warnings.out
│       │   │   ├── multi_view.out
│       │   │   ├── multi_working_columns.out
│       │   │   ├── mx_coordinator_shouldhaveshards.out
│       │   │   ├── mx_foreign_key_to_reference_table.out
│       │   │   ├── mx_regular_user.out
│       │   │   ├── nested_execution.out
│       │   │   ├── nested_execution_create.out
│       │   │   ├── node_conninfo_reload.out
│       │   │   ├── non_colocated_leaf_subquery_joins.out
│       │   │   ├── non_colocated_subquery_joins.out
│       │   │   ├── non_super_user_cdc_library_path.out
│       │   │   ├── non_super_user_object_metadata.out
│       │   │   ├── null_parameters.out
│       │   │   ├── object_propagation_debug.out
│       │   │   ├── other_databases.out
│       │   │   ├── partition_wise_join.out
│       │   │   ├── partition_wise_join_0.out
│       │   │   ├── partitioned_indexes_create.out
│       │   │   ├── partitioned_intermediate_results.out
│       │   │   ├── partitioning_issue_3970.out
│       │   │   ├── pg12.out
│       │   │   ├── pg13.out
│       │   │   ├── pg13_propagate_statistics.out
│       │   │   ├── pg13_with_ties.out
│       │   │   ├── pg14.out
│       │   │   ├── pg15.out
│       │   │   ├── pg15_jsonpath.out
│       │   │   ├── pg16.out
│       │   │   ├── pg17.out
│       │   │   ├── pg17_0.out
│       │   │   ├── pg17_json.out
│       │   │   ├── pg17_json_0.out
│       │   │   ├── pg18.out
│       │   │   ├── pg18_0.out
│       │   │   ├── pg_dump.out
│       │   │   ├── pgmerge.out
│       │   │   ├── postgres.out
│       │   │   ├── prepared_statements_1.out
│       │   │   ├── prepared_statements_2.out
│       │   │   ├── prepared_statements_3.out
│       │   │   ├── prepared_statements_4.out
│       │   │   ├── prepared_statements_create_load.out
│       │   │   ├── propagate_extension_commands.out
│       │   │   ├── propagate_foreign_servers.out
│       │   │   ├── propagate_set_commands.out
│       │   │   ├── propagate_statistics.out
│       │   │   ├── publication.out
│       │   │   ├── query_single_shard_table.out
│       │   │   ├── reassign_owned.out
│       │   │   ├── recurring_join_pushdown.out
│       │   │   ├── recurring_outer_join.out
│       │   │   ├── recursive_dml_queries_mx.out
│       │   │   ├── recursive_dml_with_different_planners_executors.out
│       │   │   ├── recursive_relation_planning_restriction_pushdown.out
│       │   │   ├── recursive_view_local_table.out
│       │   │   ├── ref_citus_local_fkeys.out
│       │   │   ├── relation_access_tracking.out
│       │   │   ├── relation_access_tracking_single_node.out
│       │   │   ├── remove_coordinator.out
│       │   │   ├── remove_coordinator_from_metadata.out
│       │   │   ├── remove_non_default_nodes.out
│       │   │   ├── rename_public_to_citus_schema_and_recreate.out
│       │   │   ├── replicate_reference_tables_to_coordinator.out
│       │   │   ├── replicated_partitioned_table.out
│       │   │   ├── replicated_table_disable_node.out
│       │   │   ├── resync_metadata_with_sequences.out
│       │   │   ├── role_command_from_any_node.out
│       │   │   ├── role_operations_from_non_maindb.out
│       │   │   ├── row_types.out
│       │   │   ├── run_command_on_all_nodes.out
│       │   │   ├── schema_based_sharding.out
│       │   │   ├── schemas.out
│       │   │   ├── schemas_create.out
│       │   │   ├── seclabel.out
│       │   │   ├── seclabel_non_maindb.out
│       │   │   ├── sequences.out
│       │   │   ├── sequences_create.out
│       │   │   ├── sequences_owned_by.out
│       │   │   ├── sequences_with_different_types.out
│       │   │   ├── sequential_modifications.out
│       │   │   ├── set_operation_and_local_tables.out
│       │   │   ├── set_operations.out
│       │   │   ├── set_role_in_transaction.out
│       │   │   ├── shard_move_constraints.out
│       │   │   ├── shard_move_constraints_blocking.out
│       │   │   ├── shard_move_deferred_delete.out
│       │   │   ├── shard_rebalancer.out
│       │   │   ├── shard_rebalancer_unit.out
│       │   │   ├── shared_connection_stats.out
│       │   │   ├── shared_connection_waits.out
│       │   │   ├── single_hash_repartition_join.out
│       │   │   ├── single_node.out
│       │   │   ├── single_node_enterprise.out
│       │   │   ├── single_node_truncate.out
│       │   │   ├── single_shard_table_prep.out
│       │   │   ├── single_shard_table_udfs.out
│       │   │   ├── split_shard.out
│       │   │   ├── sql_procedure.out
│       │   │   ├── sqlancer_failures.out
│       │   │   ├── sqlsmith_failures.out
│       │   │   ├── ssl_by_default.out
│       │   │   ├── start_stop_metadata_sync.out
│       │   │   ├── stat_counters.out
│       │   │   ├── stat_statements.out
│       │   │   ├── statement_cancel_error_message.out
│       │   │   ├── subqueries_deep.out
│       │   │   ├── subqueries_not_supported.out
│       │   │   ├── subquery_and_cte.out
│       │   │   ├── subquery_append.out
│       │   │   ├── subquery_basics.out
│       │   │   ├── subquery_complex_target_list.out
│       │   │   ├── subquery_executors.out
│       │   │   ├── subquery_in_targetlist.out
│       │   │   ├── subquery_in_where.out
│       │   │   ├── subquery_local_tables.out
│       │   │   ├── subquery_partitioning.out
│       │   │   ├── subquery_prepared_statements.out
│       │   │   ├── subquery_view.out
│       │   │   ├── subscripting_op.out
│       │   │   ├── system_queries.out
│       │   │   ├── tableam.out
│       │   │   ├── tablespace.out
│       │   │   ├── task_tracker_assign_task.out
│       │   │   ├── task_tracker_cleanup_job.out
│       │   │   ├── task_tracker_create_table.out
│       │   │   ├── task_tracker_partition_task.out
│       │   │   ├── tdigest_aggregate_support.out
│       │   │   ├── tdigest_aggregate_support_0.out
│       │   │   ├── tdigest_aggregate_support_1.out
│       │   │   ├── text_search.out
│       │   │   ├── undistribute_table.out
│       │   │   ├── undistribute_table_cascade.out
│       │   │   ├── undistribute_table_cascade_mx.out
│       │   │   ├── union_pushdown.out
│       │   │   ├── unsupported_lateral_subqueries.out
│       │   │   ├── update_colocation_mx.out
│       │   │   ├── upgrade_autoconverted_after.out
│       │   │   ├── upgrade_autoconverted_before.out
│       │   │   ├── upgrade_basic_after.out
│       │   │   ├── upgrade_basic_after_non_mixed.out
│       │   │   ├── upgrade_basic_before.out
│       │   │   ├── upgrade_basic_before_non_mixed.out
│       │   │   ├── upgrade_citus_finish_citus_upgrade.out
│       │   │   ├── upgrade_citus_locks.out
│       │   │   ├── upgrade_citus_stat_activity.out
│       │   │   ├── upgrade_columnar_after.out
│       │   │   ├── upgrade_columnar_before.out
│       │   │   ├── upgrade_distributed_function_after.out
│       │   │   ├── upgrade_distributed_function_before.out
│       │   │   ├── upgrade_distributed_triggers_after.out
│       │   │   ├── upgrade_distributed_triggers_after_0.out
│       │   │   ├── upgrade_distributed_triggers_before.out
│       │   │   ├── upgrade_distributed_triggers_before_0.out
│       │   │   ├── upgrade_list_citus_objects.out
│       │   │   ├── upgrade_pg_dist_cleanup_after.out
│       │   │   ├── upgrade_pg_dist_cleanup_after_0.out
│       │   │   ├── upgrade_pg_dist_cleanup_before.out
│       │   │   ├── upgrade_pg_dist_cleanup_before_0.out
│       │   │   ├── upgrade_post_11_after.out
│       │   │   ├── upgrade_post_11_after_0.out
│       │   │   ├── upgrade_post_11_before.out
│       │   │   ├── upgrade_post_11_before_0.out
│       │   │   ├── upgrade_post_14_after.out
│       │   │   ├── upgrade_post_14_after_0.out
│       │   │   ├── upgrade_post_14_before.out
│       │   │   ├── upgrade_post_14_before_0.out
│       │   │   ├── upgrade_rebalance_strategy_after.out
│       │   │   ├── upgrade_rebalance_strategy_before.out
│       │   │   ├── upgrade_ref2ref_after.out
│       │   │   ├── upgrade_ref2ref_before.out
│       │   │   ├── upgrade_schema_based_sharding_after.out
│       │   │   ├── upgrade_schema_based_sharding_before.out
│       │   │   ├── upgrade_single_shard_table_after.out
│       │   │   ├── upgrade_single_shard_table_before.out
│       │   │   ├── upgrade_type_after.out
│       │   │   ├── upgrade_type_before.out
│       │   │   ├── validate_constraint.out
│       │   │   ├── values.out
│       │   │   ├── view_propagation.out
│       │   │   ├── views.out
│       │   │   ├── views_create.out
│       │   │   ├── window_functions.out
│       │   │   ├── with_basics.out
│       │   │   ├── with_dml.out
│       │   │   ├── with_executors.out
│       │   │   ├── with_join.out
│       │   │   ├── with_modifying.out
│       │   │   ├── with_nested.out
│       │   │   ├── with_partitioning.out
│       │   │   ├── with_prepare.out
│       │   │   ├── with_set_operations.out
│       │   │   ├── with_transactions.out
│       │   │   ├── with_where.out
│       │   │   ├── worker_copy_table_to_node.out
│       │   │   ├── worker_split_binary_copy_test.out
│       │   │   ├── worker_split_copy_test.out
│       │   │   └── worker_split_text_copy_test.out
│       │   ├── failure_base_schedule
│       │   ├── failure_schedule
│       │   ├── flaky_tests.md
│       │   ├── isolation_schedule
│       │   ├── log_test_times
│       │   ├── minimal_columnar_schedule
│       │   ├── minimal_pg_upgrade_schedule
│       │   ├── minimal_schedule
│       │   ├── mitmscripts/
│       │   │   ├── .gitignore
│       │   │   ├── CONTRIBUTING.md
│       │   │   ├── README.md
│       │   │   ├── fluent.py
│       │   │   └── structs.py
│       │   ├── mixed_after_citus_upgrade_schedule
│       │   ├── mixed_before_citus_upgrade_schedule
│       │   ├── multi_1_create_citus_schedule
│       │   ├── multi_1_schedule
│       │   ├── multi_add_backup_node_schedule
│       │   ├── multi_follower_schedule
│       │   ├── multi_mx_schedule
│       │   ├── multi_schedule
│       │   ├── multi_schedule_hyperscale
│       │   ├── multi_schedule_hyperscale_superuser
│       │   ├── mx_base_schedule
│       │   ├── mx_minimal_schedule
│       │   ├── operations_schedule
│       │   ├── pg_regress_multi.pl
│       │   ├── postgres_schedule
│       │   ├── single_shard_table_prep_schedule
│       │   ├── spec/
│       │   │   ├── README.md
│       │   │   ├── columnar_index_concurrency.spec
│       │   │   ├── columnar_temp_tables.spec
│       │   │   ├── columnar_vacuum_vs_insert.spec
│       │   │   ├── columnar_write_concurrency.spec
│       │   │   ├── columnar_write_concurrency_index.spec
│       │   │   ├── isolation_acquire_distributed_locks.spec
│       │   │   ├── isolation_add_coordinator.spec
│       │   │   ├── isolation_add_node_vs_reference_table_operations.spec
│       │   │   ├── isolation_add_remove_node.spec
│       │   │   ├── isolation_blocking_move_multi_shard_commands.spec
│       │   │   ├── isolation_blocking_move_multi_shard_commands_on_mx.spec
│       │   │   ├── isolation_blocking_move_single_shard_commands.spec
│       │   │   ├── isolation_blocking_move_single_shard_commands_on_mx.spec
│       │   │   ├── isolation_blocking_shard_split.spec
│       │   │   ├── isolation_blocking_shard_split_with_fkey_to_reference.spec
│       │   │   ├── isolation_cancellation.spec
│       │   │   ├── isolation_check_mx.spec
│       │   │   ├── isolation_citus_dist_activity.spec
│       │   │   ├── isolation_citus_locks.spec
│       │   │   ├── isolation_citus_pause_node.spec
│       │   │   ├── isolation_citus_schema_distribute_undistribute.spec
│       │   │   ├── isolation_cluster_management.spec
│       │   │   ├── isolation_concurrent_dml.spec
│       │   │   ├── isolation_concurrent_move_create_table.spec
│       │   │   ├── isolation_copy_placement_vs_copy_placement.spec
│       │   │   ├── isolation_copy_placement_vs_modification.spec
│       │   │   ├── isolation_copy_vs_all_on_mx.spec
│       │   │   ├── isolation_create_citus_local_table.spec
│       │   │   ├── isolation_create_distributed_concurrently_after_drop_column.spec
│       │   │   ├── isolation_create_distributed_table.spec
│       │   │   ├── isolation_create_distributed_table_concurrently.spec
│       │   │   ├── isolation_create_restore_point.spec
│       │   │   ├── isolation_create_table_vs_add_remove_node.spec
│       │   │   ├── isolation_data_migration.spec
│       │   │   ├── isolation_database_cmd_from_any_node.spec
│       │   │   ├── isolation_ddl_vs_all.spec
│       │   │   ├── isolation_delete_vs_all.spec
│       │   │   ├── isolation_dis2ref_foreign_keys_on_mx.spec
│       │   │   ├── isolation_distributed_deadlock_detection.spec
│       │   │   ├── isolation_distributed_transaction_id.spec
│       │   │   ├── isolation_drop_alter_index_select_for_update_on_mx.spec
│       │   │   ├── isolation_drop_shards.spec
│       │   │   ├── isolation_drop_vs_all.spec
│       │   │   ├── isolation_dump_global_wait_edges.spec
│       │   │   ├── isolation_dump_local_wait_edges.spec
│       │   │   ├── isolation_ensure_dependency_activate_node.spec
│       │   │   ├── isolation_extension_commands.spec
│       │   │   ├── isolation_fix_partition_shard_index_names.spec
│       │   │   ├── isolation_get_all_active_transactions.spec
│       │   │   ├── isolation_get_distributed_wait_queries_mx.spec
│       │   │   ├── isolation_global_pid.spec
│       │   │   ├── isolation_hash_copy_vs_all.spec
│       │   │   ├── isolation_insert_select_conflict.spec
│       │   │   ├── isolation_insert_select_repartition.spec
│       │   │   ├── isolation_insert_select_vs_all.spec
│       │   │   ├── isolation_insert_select_vs_all_on_mx.spec
│       │   │   ├── isolation_insert_vs_all.spec
│       │   │   ├── isolation_insert_vs_all_on_mx.spec
│       │   │   ├── isolation_insert_vs_vacuum.spec
│       │   │   ├── isolation_logical_replication_binaryless.spec
│       │   │   ├── isolation_logical_replication_multi_shard_commands.spec
│       │   │   ├── isolation_logical_replication_multi_shard_commands_on_mx.spec
│       │   │   ├── isolation_logical_replication_nonsu_nonbypassrls.spec
│       │   │   ├── isolation_logical_replication_single_shard_commands.spec
│       │   │   ├── isolation_logical_replication_single_shard_commands_on_mx.spec
│       │   │   ├── isolation_logical_replication_skip_fk_validation.spec
│       │   │   ├── isolation_logical_replication_with_partitioning.spec
│       │   │   ├── isolation_master_update_node.spec
│       │   │   ├── isolation_max_client_connections.spec
│       │   │   ├── isolation_merge.spec
│       │   │   ├── isolation_merge_replicated.spec
│       │   │   ├── isolation_metadata_sync_deadlock.spec
│       │   │   ├── isolation_metadata_sync_vs_all.spec
│       │   │   ├── isolation_modify_with_subquery_vs_dml.spec
│       │   │   ├── isolation_move_placement_vs_modification.spec
│       │   │   ├── isolation_move_placement_vs_modification_fk.spec
│       │   │   ├── isolation_move_placement_vs_move_placement.spec
│       │   │   ├── isolation_multi_shard_modify_vs_all.spec
│       │   │   ├── isolation_multiuser_locking.spec
│       │   │   ├── isolation_mx_common.include.spec
│       │   │   ├── isolation_non_blocking_shard_split.spec
│       │   │   ├── isolation_non_blocking_shard_split_fkey.spec
│       │   │   ├── isolation_non_blocking_shard_split_with_index_as_replicaIdentity.spec
│       │   │   ├── isolation_partitioned_copy_vs_all.spec
│       │   │   ├── isolation_progress_monitoring.spec
│       │   │   ├── isolation_range_copy_vs_all.spec
│       │   │   ├── isolation_rebalancer_deferred_drop.spec
│       │   │   ├── isolation_ref2ref_foreign_keys.spec
│       │   │   ├── isolation_ref2ref_foreign_keys_enterprise.spec
│       │   │   ├── isolation_ref2ref_foreign_keys_on_mx.spec
│       │   │   ├── isolation_ref_select_for_update_vs_all_on_mx.spec
│       │   │   ├── isolation_ref_update_delete_upsert_vs_all_on_mx.spec
│       │   │   ├── isolation_reference_copy_vs_all.spec
│       │   │   ├── isolation_reference_on_mx.spec
│       │   │   ├── isolation_reference_table.spec
│       │   │   ├── isolation_remove_coordinator.spec
│       │   │   ├── isolation_replace_wait_function.spec
│       │   │   ├── isolation_replicate_reference_tables_to_coordinator.spec
│       │   │   ├── isolation_replicated_dist_on_mx.spec
│       │   │   ├── isolation_schema_based_sharding.spec
│       │   │   ├── isolation_select_for_update.spec
│       │   │   ├── isolation_select_vs_all.spec
│       │   │   ├── isolation_select_vs_all_on_mx.spec
│       │   │   ├── isolation_setup.spec
│       │   │   ├── isolation_shard_move_vs_start_metadata_sync.spec
│       │   │   ├── isolation_shard_rebalancer.spec
│       │   │   ├── isolation_shard_rebalancer_progress.spec
│       │   │   ├── isolation_shouldhaveshards.spec
│       │   │   ├── isolation_tenant_isolation.spec
│       │   │   ├── isolation_tenant_isolation_nonblocking.spec
│       │   │   ├── isolation_tenant_isolation_with_fkey_to_reference.spec
│       │   │   ├── isolation_transaction_recovery.spec
│       │   │   ├── isolation_truncate_vs_all.spec
│       │   │   ├── isolation_truncate_vs_all_on_mx.spec
│       │   │   ├── isolation_undistribute_table.spec
│       │   │   ├── isolation_update_delete_upsert_vs_all_on_mx.spec
│       │   │   ├── isolation_update_node.spec
│       │   │   ├── isolation_update_node_lock_writes.spec
│       │   │   ├── isolation_update_vs_all.spec
│       │   │   ├── isolation_upsert_vs_all.spec
│       │   │   ├── isolation_vacuum_skip_locked.spec
│       │   │   ├── isolation_validate_vs_insert.spec
│       │   │   └── shared_connection_waits.spec
│       │   ├── split_schedule
│       │   ├── sql/
│       │   │   ├── adaptive_executor.sql
│       │   │   ├── adaptive_executor_repartition.sql
│       │   │   ├── add_coordinator.sql
│       │   │   ├── adv_lock_permission.sql
│       │   │   ├── aggregate_support.sql
│       │   │   ├── alter_database_owner.sql
│       │   │   ├── alter_database_propagation.sql
│       │   │   ├── alter_distributed_table.sql
│       │   │   ├── alter_index.sql
│       │   │   ├── alter_role_propagation.sql
│       │   │   ├── alter_table_add_column.sql
│       │   │   ├── alter_table_set_access_method.sql
│       │   │   ├── alter_table_single_shard_table.sql
│       │   │   ├── anonymous_columns.sql
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name.sql
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name_create.sql
│       │   │   ├── arbitrary_configs_recurring_outer_join.sql
│       │   │   ├── arbitrary_configs_router.sql
│       │   │   ├── arbitrary_configs_router_create.sql
│       │   │   ├── arbitrary_configs_truncate.sql
│       │   │   ├── arbitrary_configs_truncate_cascade.sql
│       │   │   ├── arbitrary_configs_truncate_cascade_create.sql
│       │   │   ├── arbitrary_configs_truncate_create.sql
│       │   │   ├── arbitrary_configs_truncate_partition.sql
│       │   │   ├── arbitrary_configs_truncate_partition_create.sql
│       │   │   ├── auto_undist_citus_local.sql
│       │   │   ├── background_rebalance.sql
│       │   │   ├── background_rebalance_parallel.sql
│       │   │   ├── background_rebalance_parallel_reference_tables.sql
│       │   │   ├── background_task_queue_monitor.sql
│       │   │   ├── base_enable_mx.sql
│       │   │   ├── binary_protocol.sql
│       │   │   ├── bool_agg.sql
│       │   │   ├── cdc_library_path.sql
│       │   │   ├── ch_bench_having.sql
│       │   │   ├── ch_bench_having_mx.sql
│       │   │   ├── ch_bench_subquery_repartition.sql
│       │   │   ├── ch_benchmarks_1.sql
│       │   │   ├── ch_benchmarks_2.sql
│       │   │   ├── ch_benchmarks_3.sql
│       │   │   ├── ch_benchmarks_4.sql
│       │   │   ├── ch_benchmarks_5.sql
│       │   │   ├── ch_benchmarks_6.sql
│       │   │   ├── ch_benchmarks_create_load.sql
│       │   │   ├── chbenchmark_all_queries.sql
│       │   │   ├── check_cluster_state.sql
│       │   │   ├── check_mx.sql
│       │   │   ├── citus_aggregated_stats.sql
│       │   │   ├── citus_copy_shard_placement.sql
│       │   │   ├── citus_depended_object.sql
│       │   │   ├── citus_drain_node.sql
│       │   │   ├── citus_internal_access.sql
│       │   │   ├── citus_local_dist_joins.sql
│       │   │   ├── citus_local_table_triggers.sql
│       │   │   ├── citus_local_tables.sql
│       │   │   ├── citus_local_tables_ent.sql
│       │   │   ├── citus_local_tables_mx.sql
│       │   │   ├── citus_local_tables_queries.sql
│       │   │   ├── citus_local_tables_queries_mx.sql
│       │   │   ├── citus_locks.sql
│       │   │   ├── citus_non_blocking_split_columnar.sql
│       │   │   ├── citus_non_blocking_split_shard_cleanup.sql
│       │   │   ├── citus_non_blocking_split_shards.sql
│       │   │   ├── citus_run_command.sql
│       │   │   ├── citus_schema_distribute_undistribute.sql
│       │   │   ├── citus_schema_move.sql
│       │   │   ├── citus_shards.sql
│       │   │   ├── citus_split_shard_by_split_points.sql
│       │   │   ├── citus_split_shard_by_split_points_deferred_drop.sql
│       │   │   ├── citus_split_shard_by_split_points_failure.sql
│       │   │   ├── citus_split_shard_by_split_points_negative.sql
│       │   │   ├── citus_split_shard_columnar_partitioned.sql
│       │   │   ├── citus_stat_tenants.sql
│       │   │   ├── citus_table_triggers.sql
│       │   │   ├── citus_update_table_statistics.sql
│       │   │   ├── clock.sql
│       │   │   ├── columnar_alter.sql
│       │   │   ├── columnar_alter_set_type.sql
│       │   │   ├── columnar_analyze.sql
│       │   │   ├── columnar_chunk_filtering.sql
│       │   │   ├── columnar_citus_integration.sql
│       │   │   ├── columnar_clean.sql
│       │   │   ├── columnar_copyto.sql
│       │   │   ├── columnar_create.sql
│       │   │   ├── columnar_cursor.sql
│       │   │   ├── columnar_data_types.sql
│       │   │   ├── columnar_drop.sql
│       │   │   ├── columnar_empty.sql
│       │   │   ├── columnar_fallback_scan.sql
│       │   │   ├── columnar_first_row_number.sql
│       │   │   ├── columnar_indexes.sql
│       │   │   ├── columnar_insert.sql
│       │   │   ├── columnar_join.sql
│       │   │   ├── columnar_load.sql
│       │   │   ├── columnar_lz4.sql
│       │   │   ├── columnar_matview.sql
│       │   │   ├── columnar_memory.sql
│       │   │   ├── columnar_partitioning.sql
│       │   │   ├── columnar_paths.sql
│       │   │   ├── columnar_permissions.sql
│       │   │   ├── columnar_pg15.sql
│       │   │   ├── columnar_query.sql
│       │   │   ├── columnar_recursive.sql
│       │   │   ├── columnar_rollback.sql
│       │   │   ├── columnar_tableoptions.sql
│       │   │   ├── columnar_test_helpers.sql
│       │   │   ├── columnar_transactions.sql
│       │   │   ├── columnar_trigger.sql
│       │   │   ├── columnar_truncate.sql
│       │   │   ├── columnar_types_without_comparison.sql
│       │   │   ├── columnar_update_delete.sql
│       │   │   ├── columnar_vacuum.sql
│       │   │   ├── columnar_zstd.sql
│       │   │   ├── comment_on_database.sql
│       │   │   ├── comment_on_role.sql
│       │   │   ├── connectivity_checks.sql
│       │   │   ├── coordinator_evaluation.sql
│       │   │   ├── coordinator_evaluation_modify.sql
│       │   │   ├── coordinator_evaluation_select.sql
│       │   │   ├── coordinator_shouldhaveshards.sql
│       │   │   ├── cpu_priority.sql
│       │   │   ├── create_citus_local_table_cascade.sql
│       │   │   ├── create_distributed_table_concurrently.sql
│       │   │   ├── create_drop_database_propagation.sql
│       │   │   ├── create_drop_database_propagation_pg15.sql
│       │   │   ├── create_drop_database_propagation_pg16.sql
│       │   │   ├── create_ref_dist_from_citus_local.sql
│       │   │   ├── create_role_propagation.sql
│       │   │   ├── create_single_shard_table.sql
│       │   │   ├── cross_join.sql
│       │   │   ├── cte_inline.sql
│       │   │   ├── cte_nested_modification.sql
│       │   │   ├── cte_prepared_modify.sql
│       │   │   ├── cursors.sql
│       │   │   ├── custom_aggregate_support.sql
│       │   │   ├── data_types.sql
│       │   │   ├── detect_conn_close.sql
│       │   │   ├── disable_object_propagation.sql
│       │   │   ├── distributed_collations.sql
│       │   │   ├── distributed_collations_conflict.sql
│       │   │   ├── distributed_domain.sql
│       │   │   ├── distributed_functions.sql
│       │   │   ├── distributed_functions_conflict.sql
│       │   │   ├── distributed_intermediate_results.sql
│       │   │   ├── distributed_locks.sql
│       │   │   ├── distributed_planning.sql
│       │   │   ├── distributed_planning_create_load.sql
│       │   │   ├── distributed_procedure.sql
│       │   │   ├── distributed_triggers.sql
│       │   │   ├── distributed_types.sql
│       │   │   ├── distributed_types_conflict.sql
│       │   │   ├── distributed_types_xact_add_enum_value.sql
│       │   │   ├── dml_recursive.sql
│       │   │   ├── drop_column_partitioned_table.sql
│       │   │   ├── drop_database.sql
│       │   │   ├── drop_partitioned_table.sql
│       │   │   ├── dropped_columns_1.sql
│       │   │   ├── dropped_columns_create_load.sql
│       │   │   ├── ensure_citus_columnar_not_exists.sql
│       │   │   ├── ensure_no_intermediate_data_leak.sql
│       │   │   ├── ensure_no_shared_connection_leak.sql
│       │   │   ├── escape_extension_name.sql
│       │   │   ├── executor_local_failure.sql
│       │   │   ├── expression_reference_join.sql
│       │   │   ├── failure_add_disable_node.sql
│       │   │   ├── failure_connection_establishment.sql
│       │   │   ├── failure_copy_on_hash.sql
│       │   │   ├── failure_copy_to_reference.sql
│       │   │   ├── failure_create_database.sql
│       │   │   ├── failure_create_distributed_table_concurrently.sql
│       │   │   ├── failure_create_distributed_table_non_empty.sql
│       │   │   ├── failure_create_index_concurrently.sql
│       │   │   ├── failure_create_reference_table.sql
│       │   │   ├── failure_create_table.sql
│       │   │   ├── failure_cte_subquery.sql
│       │   │   ├── failure_ddl.sql
│       │   │   ├── failure_distributed_results.sql
│       │   │   ├── failure_failover_to_local_execution.sql
│       │   │   ├── failure_insert_select_pushdown.sql
│       │   │   ├── failure_insert_select_repartition.sql
│       │   │   ├── failure_insert_select_via_coordinator.sql
│       │   │   ├── failure_multi_dml.sql
│       │   │   ├── failure_multi_row_insert.sql
│       │   │   ├── failure_multi_shard_update_delete.sql
│       │   │   ├── failure_mx_metadata_sync.sql
│       │   │   ├── failure_mx_metadata_sync_multi_trans.sql
│       │   │   ├── failure_offline_move_shard_placement.sql
│       │   │   ├── failure_on_create_subscription.sql
│       │   │   ├── failure_online_move_shard_placement.sql
│       │   │   ├── failure_parallel_connection.sql
│       │   │   ├── failure_ref_tables.sql
│       │   │   ├── failure_replicated_partitions.sql
│       │   │   ├── failure_savepoints.sql
│       │   │   ├── failure_setup.sql
│       │   │   ├── failure_single_mod.sql
│       │   │   ├── failure_single_select.sql
│       │   │   ├── failure_split_cleanup.sql
│       │   │   ├── failure_tenant_isolation.sql
│       │   │   ├── failure_tenant_isolation_nonblocking.sql
│       │   │   ├── failure_test_helpers.sql
│       │   │   ├── failure_truncate.sql
│       │   │   ├── failure_vacuum.sql
│       │   │   ├── fast_path_router_modify.sql
│       │   │   ├── fkeys_between_local_ref.sql
│       │   │   ├── follower_single_node.sql
│       │   │   ├── forcedelegation_functions.sql
│       │   │   ├── foreign_key_restriction_enforcement.sql
│       │   │   ├── foreign_key_to_reference_shard_rebalance.sql
│       │   │   ├── foreign_key_to_reference_table.sql
│       │   │   ├── foreign_tables_mx.sql
│       │   │   ├── function_create.sql
│       │   │   ├── function_propagation.sql
│       │   │   ├── function_with_case_when.sql
│       │   │   ├── functions.sql
│       │   │   ├── generated_identity.sql
│       │   │   ├── geqo.sql
│       │   │   ├── global_cancel.sql
│       │   │   ├── grant_on_database_propagation.sql
│       │   │   ├── grant_on_foreign_server_propagation.sql
│       │   │   ├── grant_on_function_propagation.sql
│       │   │   ├── grant_on_schema_propagation.sql
│       │   │   ├── grant_on_sequence_propagation.sql
│       │   │   ├── grant_on_table_propagation.sql
│       │   │   ├── having_subquery.sql
│       │   │   ├── hyperscale_tutorial.sql
│       │   │   ├── index_create.sql
│       │   │   ├── insert_select_connection_leak.sql
│       │   │   ├── insert_select_into_local_table.sql
│       │   │   ├── insert_select_repartition.sql
│       │   │   ├── insert_select_single_shard_table.sql
│       │   │   ├── intermediate_result_pruning.sql
│       │   │   ├── intermediate_result_pruning_create.sql
│       │   │   ├── intermediate_result_pruning_queries_1.sql
│       │   │   ├── intermediate_result_pruning_queries_2.sql
│       │   │   ├── intermediate_results.sql
│       │   │   ├── issue_5099.sql
│       │   │   ├── issue_5248.sql
│       │   │   ├── issue_5763.sql
│       │   │   ├── issue_6543.sql
│       │   │   ├── issue_6592.sql
│       │   │   ├── issue_6758.sql
│       │   │   ├── issue_7477.sql
│       │   │   ├── issue_7891.sql
│       │   │   ├── issue_8243.sql
│       │   │   ├── join_pushdown.sql
│       │   │   ├── limit_intermediate_size.sql
│       │   │   ├── local_dist_join.sql
│       │   │   ├── local_dist_join_load.sql
│       │   │   ├── local_dist_join_mixed.sql
│       │   │   ├── local_dist_join_modifications.sql
│       │   │   ├── local_execution_local_plan.sql
│       │   │   ├── local_shard_copy.sql
│       │   │   ├── local_shard_execution.sql
│       │   │   ├── local_shard_execution_dropped_column.sql
│       │   │   ├── local_shard_execution_replicated.sql
│       │   │   ├── local_shard_utility_command_execution.sql
│       │   │   ├── local_table_join.sql
│       │   │   ├── locally_execute_intermediate_results.sql
│       │   │   ├── logical_rep_consistency.sql
│       │   │   ├── logical_replication.sql
│       │   │   ├── materialized_view.sql
│       │   │   ├── merge.sql
│       │   │   ├── merge_arbitrary.sql
│       │   │   ├── merge_arbitrary_create.sql
│       │   │   ├── merge_partition_tables.sql
│       │   │   ├── merge_repartition1.sql
│       │   │   ├── merge_repartition2.sql
│       │   │   ├── merge_schema_sharding.sql
│       │   │   ├── merge_unsupported.sql
│       │   │   ├── merge_vcore.sql
│       │   │   ├── metadata_sync_helpers.sql
│       │   │   ├── minimal_cluster_management.sql
│       │   │   ├── mixed_relkind_tests.sql
│       │   │   ├── modification_correctness.sql
│       │   │   ├── multi_add_node_from_backup.sql
│       │   │   ├── multi_add_node_from_backup_negative.sql
│       │   │   ├── multi_add_node_from_backup_sync_replica.sql
│       │   │   ├── multi_agg_approximate_distinct.sql
│       │   │   ├── multi_agg_distinct.sql
│       │   │   ├── multi_agg_type_conversion.sql
│       │   │   ├── multi_alias.sql
│       │   │   ├── multi_alter_table_add_constraints.sql
│       │   │   ├── multi_alter_table_add_constraints_without_name.sql
│       │   │   ├── multi_alter_table_add_foreign_key_without_name.sql
│       │   │   ├── multi_alter_table_row_level_security.sql
│       │   │   ├── multi_alter_table_row_level_security_escape.sql
│       │   │   ├── multi_alter_table_statements.sql
│       │   │   ├── multi_array_agg.sql
│       │   │   ├── multi_average_expression.sql
│       │   │   ├── multi_basic_queries.sql
│       │   │   ├── multi_behavioral_analytics_basics.sql
│       │   │   ├── multi_behavioral_analytics_create_table.sql
│       │   │   ├── multi_behavioral_analytics_create_table_superuser.sql
│       │   │   ├── multi_behavioral_analytics_single_shard_queries.sql
│       │   │   ├── multi_cache_invalidation.sql
│       │   │   ├── multi_citus_tools.sql
│       │   │   ├── multi_cluster_management.sql
│       │   │   ├── multi_colocated_shard_rebalance.sql
│       │   │   ├── multi_colocation_utils.sql
│       │   │   ├── multi_complex_count_distinct.sql
│       │   │   ├── multi_complex_expressions.sql
│       │   │   ├── multi_copy.sql
│       │   │   ├── multi_count_type_conversion.sql
│       │   │   ├── multi_create_fdw.sql
│       │   │   ├── multi_create_role_dependency.sql
│       │   │   ├── multi_create_shards.sql
│       │   │   ├── multi_create_table.sql
│       │   │   ├── multi_create_table_constraints.sql
│       │   │   ├── multi_create_table_superuser.sql
│       │   │   ├── multi_create_users.sql
│       │   │   ├── multi_cross_shard.sql
│       │   │   ├── multi_data_types.sql
│       │   │   ├── multi_deparse_function.sql
│       │   │   ├── multi_deparse_procedure.sql
│       │   │   ├── multi_deparse_shard_query.sql
│       │   │   ├── multi_distributed_transaction_id.sql
│       │   │   ├── multi_distribution_metadata.sql
│       │   │   ├── multi_drop_extension.sql
│       │   │   ├── multi_dropped_column_aliases.sql
│       │   │   ├── multi_explain.sql
│       │   │   ├── multi_extension.sql
│       │   │   ├── multi_fix_partition_shard_index_names.sql
│       │   │   ├── multi_follower_configure_followers.sql
│       │   │   ├── multi_follower_dml.sql
│       │   │   ├── multi_follower_sanity_check.sql
│       │   │   ├── multi_follower_select_statements.sql
│       │   │   ├── multi_foreign_key.sql
│       │   │   ├── multi_foreign_key_relation_graph.sql
│       │   │   ├── multi_function_evaluation.sql
│       │   │   ├── multi_function_in_join.sql
│       │   │   ├── multi_generate_ddl_commands.sql
│       │   │   ├── multi_hash_pruning.sql
│       │   │   ├── multi_having_pushdown.sql
│       │   │   ├── multi_index_statements.sql
│       │   │   ├── multi_insert_select.sql
│       │   │   ├── multi_insert_select_conflict.sql
│       │   │   ├── multi_insert_select_non_pushable_queries.sql
│       │   │   ├── multi_insert_select_window.sql
│       │   │   ├── multi_join_order_additional.sql
│       │   │   ├── multi_join_order_tpch_repartition.sql
│       │   │   ├── multi_join_order_tpch_small.sql
│       │   │   ├── multi_join_pruning.sql
│       │   │   ├── multi_json_agg.sql
│       │   │   ├── multi_json_object_agg.sql
│       │   │   ├── multi_jsonb_agg.sql
│       │   │   ├── multi_jsonb_object_agg.sql
│       │   │   ├── multi_large_shardid.sql
│       │   │   ├── multi_level_recursive_queries.sql
│       │   │   ├── multi_limit_clause.sql
│       │   │   ├── multi_limit_clause_approximate.sql
│       │   │   ├── multi_load_data.sql
│       │   │   ├── multi_load_data_superuser.sql
│       │   │   ├── multi_load_more_data.sql
│       │   │   ├── multi_master_protocol.sql
│       │   │   ├── multi_metadata_access.sql
│       │   │   ├── multi_metadata_attributes.sql
│       │   │   ├── multi_metadata_sync.sql
│       │   │   ├── multi_metadata_sync_domain.sql
│       │   │   ├── multi_modifications.sql
│       │   │   ├── multi_modifying_xacts.sql
│       │   │   ├── multi_move_mx.sql
│       │   │   ├── multi_multiuser.sql
│       │   │   ├── multi_multiuser_auth.sql
│       │   │   ├── multi_multiuser_basic_queries.sql
│       │   │   ├── multi_multiuser_copy.sql
│       │   │   ├── multi_multiuser_grant.sql
│       │   │   ├── multi_multiuser_load_data.sql
│       │   │   ├── multi_multiuser_master_protocol.sql
│       │   │   ├── multi_mx_add_coordinator.sql
│       │   │   ├── multi_mx_alter_distributed_table.sql
│       │   │   ├── multi_mx_call.sql
│       │   │   ├── multi_mx_copy_data.sql
│       │   │   ├── multi_mx_create_table.sql
│       │   │   ├── multi_mx_ddl.sql
│       │   │   ├── multi_mx_explain.sql
│       │   │   ├── multi_mx_function_call_delegation.sql
│       │   │   ├── multi_mx_function_table_reference.sql
│       │   │   ├── multi_mx_hide_shard_names.sql
│       │   │   ├── multi_mx_insert_select_repartition.sql
│       │   │   ├── multi_mx_metadata.sql
│       │   │   ├── multi_mx_modifications.sql
│       │   │   ├── multi_mx_modifications_to_reference_tables.sql
│       │   │   ├── multi_mx_modifying_xacts.sql
│       │   │   ├── multi_mx_node_metadata.sql
│       │   │   ├── multi_mx_partitioning.sql
│       │   │   ├── multi_mx_reference_table.sql
│       │   │   ├── multi_mx_repartition_join_w1.sql
│       │   │   ├── multi_mx_repartition_join_w2.sql
│       │   │   ├── multi_mx_repartition_udt_prepare.sql
│       │   │   ├── multi_mx_repartition_udt_w1.sql
│       │   │   ├── multi_mx_repartition_udt_w2.sql
│       │   │   ├── multi_mx_router_planner.sql
│       │   │   ├── multi_mx_schema_support.sql
│       │   │   ├── multi_mx_tpch_query1.sql
│       │   │   ├── multi_mx_tpch_query10.sql
│       │   │   ├── multi_mx_tpch_query12.sql
│       │   │   ├── multi_mx_tpch_query14.sql
│       │   │   ├── multi_mx_tpch_query19.sql
│       │   │   ├── multi_mx_tpch_query3.sql
│       │   │   ├── multi_mx_tpch_query6.sql
│       │   │   ├── multi_mx_tpch_query7.sql
│       │   │   ├── multi_mx_tpch_query7_nested.sql
│       │   │   ├── multi_mx_transaction_recovery.sql
│       │   │   ├── multi_mx_truncate_from_worker.sql
│       │   │   ├── multi_name_lengths.sql
│       │   │   ├── multi_name_resolution.sql
│       │   │   ├── multi_null_minmax_value_pruning.sql
│       │   │   ├── multi_orderby_limit_pushdown.sql
│       │   │   ├── multi_outer_join.sql
│       │   │   ├── multi_outer_join_columns.sql
│       │   │   ├── multi_outer_join_reference.sql
│       │   │   ├── multi_partition_pruning.sql
│       │   │   ├── multi_partitioning.sql
│       │   │   ├── multi_partitioning_utils.sql
│       │   │   ├── multi_poolinfo_usage.sql
│       │   │   ├── multi_prepare_plsql.sql
│       │   │   ├── multi_prepare_sql.sql
│       │   │   ├── multi_prune_shard_list.sql
│       │   │   ├── multi_query_directory_cleanup.sql
│       │   │   ├── multi_read_from_secondaries.sql
│       │   │   ├── multi_real_time_transaction.sql
│       │   │   ├── multi_reference_table.sql
│       │   │   ├── multi_remove_node_reference_table.sql
│       │   │   ├── multi_repartition_join_planning.sql
│       │   │   ├── multi_repartition_join_pruning.sql
│       │   │   ├── multi_repartition_join_ref.sql
│       │   │   ├── multi_repartition_join_task_assignment.sql
│       │   │   ├── multi_repartition_udt.sql
│       │   │   ├── multi_repartitioned_subquery_udf.sql
│       │   │   ├── multi_replicate_reference_table.sql
│       │   │   ├── multi_rls_join_distribution_key.sql
│       │   │   ├── multi_router_planner.sql
│       │   │   ├── multi_router_planner_fast_path.sql
│       │   │   ├── multi_row_insert.sql
│       │   │   ├── multi_row_router_insert.sql
│       │   │   ├── multi_schema_support.sql
│       │   │   ├── multi_select_distinct.sql
│       │   │   ├── multi_select_for_update.sql
│       │   │   ├── multi_sequence_default.sql
│       │   │   ├── multi_shard_update_delete.sql
│       │   │   ├── multi_simple_queries.sql
│       │   │   ├── multi_single_relation_subquery.sql
│       │   │   ├── multi_size_queries.sql
│       │   │   ├── multi_sql_function.sql
│       │   │   ├── multi_subquery.sql
│       │   │   ├── multi_subquery_behavioral_analytics.sql
│       │   │   ├── multi_subquery_complex_queries.sql
│       │   │   ├── multi_subquery_complex_reference_clause.sql
│       │   │   ├── multi_subquery_in_where_clause.sql
│       │   │   ├── multi_subquery_in_where_reference_clause.sql
│       │   │   ├── multi_subquery_misc.sql
│       │   │   ├── multi_subquery_union.sql
│       │   │   ├── multi_subquery_window_functions.sql
│       │   │   ├── multi_subtransactions.sql
│       │   │   ├── multi_table_ddl.sql
│       │   │   ├── multi_task_assignment_policy.sql
│       │   │   ├── multi_task_string_size.sql
│       │   │   ├── multi_tenant_isolation.sql
│       │   │   ├── multi_tenant_isolation_nonblocking.sql
│       │   │   ├── multi_test_catalog_views.sql
│       │   │   ├── multi_test_helpers.sql
│       │   │   ├── multi_test_helpers_superuser.sql
│       │   │   ├── multi_tpch_query1.sql
│       │   │   ├── multi_tpch_query10.sql
│       │   │   ├── multi_tpch_query12.sql
│       │   │   ├── multi_tpch_query14.sql
│       │   │   ├── multi_tpch_query19.sql
│       │   │   ├── multi_tpch_query3.sql
│       │   │   ├── multi_tpch_query6.sql
│       │   │   ├── multi_tpch_query7.sql
│       │   │   ├── multi_tpch_query7_nested.sql
│       │   │   ├── multi_transaction_recovery.sql
│       │   │   ├── multi_transaction_recovery_multiple_databases.sql
│       │   │   ├── multi_transactional_drop_shards.sql
│       │   │   ├── multi_truncate.sql
│       │   │   ├── multi_unsupported_worker_operations.sql
│       │   │   ├── multi_update_select.sql
│       │   │   ├── multi_upsert.sql
│       │   │   ├── multi_utilities.sql
│       │   │   ├── multi_utility_statements.sql
│       │   │   ├── multi_utility_warnings.sql
│       │   │   ├── multi_view.sql
│       │   │   ├── multi_working_columns.sql
│       │   │   ├── mx_coordinator_shouldhaveshards.sql
│       │   │   ├── mx_foreign_key_to_reference_table.sql
│       │   │   ├── mx_regular_user.sql
│       │   │   ├── nested_execution.sql
│       │   │   ├── nested_execution_create.sql
│       │   │   ├── node_conninfo_reload.sql
│       │   │   ├── non_colocated_leaf_subquery_joins.sql
│       │   │   ├── non_colocated_subquery_joins.sql
│       │   │   ├── non_super_user_cdc_library_path.sql
│       │   │   ├── non_super_user_object_metadata.sql
│       │   │   ├── null_parameters.sql
│       │   │   ├── object_propagation_debug.sql
│       │   │   ├── partition_wise_join.sql
│       │   │   ├── partitioned_indexes_create.sql
│       │   │   ├── partitioned_intermediate_results.sql
│       │   │   ├── partitioning_issue_3970.sql
│       │   │   ├── pg12.sql
│       │   │   ├── pg13.sql
│       │   │   ├── pg13_propagate_statistics.sql
│       │   │   ├── pg13_with_ties.sql
│       │   │   ├── pg14.sql
│       │   │   ├── pg15.sql
│       │   │   ├── pg15_jsonpath.sql
│       │   │   ├── pg16.sql
│       │   │   ├── pg17.sql
│       │   │   ├── pg17_json.sql
│       │   │   ├── pg18.sql
│       │   │   ├── pg_dump.sql
│       │   │   ├── pgmerge.sql
│       │   │   ├── postgres.sql
│       │   │   ├── prepared_statements_1.sql
│       │   │   ├── prepared_statements_2.sql
│       │   │   ├── prepared_statements_3.sql
│       │   │   ├── prepared_statements_4.sql
│       │   │   ├── prepared_statements_create_load.sql
│       │   │   ├── propagate_extension_commands.sql
│       │   │   ├── propagate_foreign_servers.sql
│       │   │   ├── propagate_set_commands.sql
│       │   │   ├── propagate_statistics.sql
│       │   │   ├── publication.sql
│       │   │   ├── query_single_shard_table.sql
│       │   │   ├── reassign_owned.sql
│       │   │   ├── recurring_join_pushdown.sql
│       │   │   ├── recurring_outer_join.sql
│       │   │   ├── recursive_dml_queries_mx.sql
│       │   │   ├── recursive_dml_with_different_planners_executors.sql
│       │   │   ├── recursive_relation_planning_restriction_pushdown.sql
│       │   │   ├── recursive_view_local_table.sql
│       │   │   ├── ref_citus_local_fkeys.sql
│       │   │   ├── relation_access_tracking.sql
│       │   │   ├── relation_access_tracking_single_node.sql
│       │   │   ├── remove_coordinator.sql
│       │   │   ├── remove_coordinator_from_metadata.sql
│       │   │   ├── remove_non_default_nodes.sql
│       │   │   ├── rename_public_to_citus_schema_and_recreate.sql
│       │   │   ├── replicate_reference_tables_to_coordinator.sql
│       │   │   ├── replicated_partitioned_table.sql
│       │   │   ├── replicated_table_disable_node.sql
│       │   │   ├── resync_metadata_with_sequences.sql
│       │   │   ├── role_command_from_any_node.sql
│       │   │   ├── row_types.sql
│       │   │   ├── run_command_on_all_nodes.sql
│       │   │   ├── schema_based_sharding.sql
│       │   │   ├── schemas.sql
│       │   │   ├── schemas_create.sql
│       │   │   ├── seclabel.sql
│       │   │   ├── sequences.sql
│       │   │   ├── sequences_create.sql
│       │   │   ├── sequences_owned_by.sql
│       │   │   ├── sequences_with_different_types.sql
│       │   │   ├── sequential_modifications.sql
│       │   │   ├── set_operation_and_local_tables.sql
│       │   │   ├── set_operations.sql
│       │   │   ├── set_role_in_transaction.sql
│       │   │   ├── shard_move_constraints.sql
│       │   │   ├── shard_move_constraints_blocking.sql
│       │   │   ├── shard_move_deferred_delete.sql
│       │   │   ├── shard_rebalancer.sql
│       │   │   ├── shard_rebalancer_unit.sql
│       │   │   ├── shared_connection_stats.sql
│       │   │   ├── single_hash_repartition_join.sql
│       │   │   ├── single_node.sql
│       │   │   ├── single_node_enterprise.sql
│       │   │   ├── single_node_truncate.sql
│       │   │   ├── single_shard_table_prep.sql
│       │   │   ├── single_shard_table_udfs.sql
│       │   │   ├── split_shard.sql
│       │   │   ├── sql_procedure.sql
│       │   │   ├── sqlancer_failures.sql
│       │   │   ├── sqlsmith_failures.sql
│       │   │   ├── ssl_by_default.sql
│       │   │   ├── start_stop_metadata_sync.sql
│       │   │   ├── stat_counters.sql
│       │   │   ├── stat_statements.sql
│       │   │   ├── statement_cancel_error_message.sql
│       │   │   ├── subqueries_deep.sql
│       │   │   ├── subqueries_not_supported.sql
│       │   │   ├── subquery_and_cte.sql
│       │   │   ├── subquery_append.sql
│       │   │   ├── subquery_basics.sql
│       │   │   ├── subquery_complex_target_list.sql
│       │   │   ├── subquery_executors.sql
│       │   │   ├── subquery_in_targetlist.sql
│       │   │   ├── subquery_in_where.sql
│       │   │   ├── subquery_local_tables.sql
│       │   │   ├── subquery_partitioning.sql
│       │   │   ├── subquery_prepared_statements.sql
│       │   │   ├── subquery_view.sql
│       │   │   ├── subscripting_op.sql
│       │   │   ├── system_queries.sql
│       │   │   ├── tableam.sql
│       │   │   ├── tablespace.sql
│       │   │   ├── tdigest_aggregate_support.sql
│       │   │   ├── text_search.sql
│       │   │   ├── undistribute_table.sql
│       │   │   ├── undistribute_table_cascade.sql
│       │   │   ├── undistribute_table_cascade_mx.sql
│       │   │   ├── union_pushdown.sql
│       │   │   ├── unsupported_lateral_subqueries.sql
│       │   │   ├── update_colocation_mx.sql
│       │   │   ├── upgrade_autoconverted_after.sql
│       │   │   ├── upgrade_autoconverted_before.sql
│       │   │   ├── upgrade_basic_after.sql
│       │   │   ├── upgrade_basic_after_non_mixed.sql
│       │   │   ├── upgrade_basic_before.sql
│       │   │   ├── upgrade_basic_before_non_mixed.sql
│       │   │   ├── upgrade_citus_finish_citus_upgrade.sql
│       │   │   ├── upgrade_citus_locks.sql
│       │   │   ├── upgrade_citus_stat_activity.sql
│       │   │   ├── upgrade_columnar_after.sql
│       │   │   ├── upgrade_columnar_before.sql
│       │   │   ├── upgrade_distributed_function_after.sql
│       │   │   ├── upgrade_distributed_function_before.sql
│       │   │   ├── upgrade_distributed_triggers_after.sql
│       │   │   ├── upgrade_distributed_triggers_before.sql
│       │   │   ├── upgrade_list_citus_objects.sql
│       │   │   ├── upgrade_pg_dist_cleanup_after.sql
│       │   │   ├── upgrade_pg_dist_cleanup_before.sql
│       │   │   ├── upgrade_post_11_after.sql
│       │   │   ├── upgrade_post_11_before.sql
│       │   │   ├── upgrade_post_14_after.sql
│       │   │   ├── upgrade_post_14_before.sql
│       │   │   ├── upgrade_rebalance_strategy_after.sql
│       │   │   ├── upgrade_rebalance_strategy_before.sql
│       │   │   ├── upgrade_ref2ref_after.sql
│       │   │   ├── upgrade_ref2ref_before.sql
│       │   │   ├── upgrade_schema_based_sharding_after.sql
│       │   │   ├── upgrade_schema_based_sharding_before.sql
│       │   │   ├── upgrade_single_shard_table_after.sql
│       │   │   ├── upgrade_single_shard_table_before.sql
│       │   │   ├── upgrade_type_after.sql
│       │   │   ├── upgrade_type_before.sql
│       │   │   ├── validate_constraint.sql
│       │   │   ├── values.sql
│       │   │   ├── view_propagation.sql
│       │   │   ├── views.sql
│       │   │   ├── views_create.sql
│       │   │   ├── window_functions.sql
│       │   │   ├── with_basics.sql
│       │   │   ├── with_dml.sql
│       │   │   ├── with_executors.sql
│       │   │   ├── with_join.sql
│       │   │   ├── with_modifying.sql
│       │   │   ├── with_nested.sql
│       │   │   ├── with_partitioning.sql
│       │   │   ├── with_prepare.sql
│       │   │   ├── with_set_operations.sql
│       │   │   ├── with_transactions.sql
│       │   │   ├── with_where.sql
│       │   │   ├── worker_copy_table_to_node.sql
│       │   │   ├── worker_split_binary_copy_test.sql
│       │   │   ├── worker_split_copy_test.sql
│       │   │   └── worker_split_text_copy_test.sql
│       │   ├── sql_base_schedule
│       │   └── sql_schedule
│       └── tap/
│           ├── Makefile
│           ├── citus_helpers.pm
│           ├── postgresql.conf
│           └── t/
│               └── restore_point_mx.pl
└── vendor/
    ├── README.md
    └── safestringlib/
        ├── .gitattributes
        ├── .gitignore
        ├── CMakeLists.txt
        ├── CODE_OF_CONDUCT.md
        ├── LICENSE
        ├── LICENSE&COPYING.txt
        ├── README.md
        ├── include/
        │   ├── safe_lib.h
        │   ├── safe_lib_errno.h
        │   ├── safe_lib_errno.h.in
        │   ├── safe_mem_lib.h
        │   ├── safe_str_lib.h
        │   ├── safe_types.h
        │   ├── safe_types.h.in
        │   └── snprintf_s.h
        ├── makefile
        └── safeclib/
            ├── abort_handler_s.c
            ├── ignore_handler_s.c
            ├── mem_primitives_lib.c
            ├── mem_primitives_lib.h
            ├── memcmp16_s.c
            ├── memcmp32_s.c
            ├── memcmp_s.c
            ├── memcpy16_s.c
            ├── memcpy32_s.c
            ├── memcpy_s.c
            ├── memmove16_s.c
            ├── memmove32_s.c
            ├── memmove_s.c
            ├── memset16_s.c
            ├── memset32_s.c
            ├── memset_s.c
            ├── memzero16_s.c
            ├── memzero32_s.c
            ├── memzero_s.c
            ├── safe_mem_constraint.c
            ├── safe_mem_constraint.h
            ├── safe_str_constraint.c
            ├── safe_str_constraint.h
            ├── safeclib_private.h
            ├── snprintf_support.c
            ├── stpcpy_s.c
            ├── stpncpy_s.c
            ├── strcasecmp_s.c
            ├── strcasestr_s.c
            ├── strcat_s.c
            ├── strcmp_s.c
            ├── strcmpfld_s.c
            ├── strcpy_s.c
            ├── strcpyfld_s.c
            ├── strcpyfldin_s.c
            ├── strcpyfldout_s.c
            ├── strcspn_s.c
            ├── strfirstchar_s.c
            ├── strfirstdiff_s.c
            ├── strfirstsame_s.c
            ├── strisalphanumeric_s.c
            ├── strisascii_s.c
            ├── strisdigit_s.c
            ├── strishex_s.c
            ├── strislowercase_s.c
            ├── strismixedcase_s.c
            ├── strispassword_s.c
            ├── strisuppercase_s.c
            ├── strlastchar_s.c
            ├── strlastdiff_s.c
            ├── strlastsame_s.c
            ├── strljustify_s.c
            ├── strncat_s.c
            ├── strncpy_s.c
            ├── strnlen_s.c
            ├── strnterminate_s.c
            ├── strpbrk_s.c
            ├── strprefix_s.c
            ├── strremovews_s.c
            ├── strspn_s.c
            ├── strstr_s.c
            ├── strtok_s.c
            ├── strtolowercase_s.c
            ├── strtouppercase_s.c
            ├── strzero_s.c
            ├── wcpcpy_s.c
            ├── wcscat_s.c
            ├── wcscpy_s.c
            ├── wcsncat_s.c
            ├── wcsncpy_s.c
            ├── wcsnlen_s.c
            ├── wmemcmp_s.c
            ├── wmemcpy_s.c
            ├── wmemmove_s.c
            └── wmemset_s.c

================================================
FILE CONTENTS
================================================

================================================
FILE: .codeclimate.yml
================================================
exclude_patterns:
  - "src/backend/distributed/utils/citus_outfuncs.c"
  - "src/backend/distributed/deparser/ruleutils_*.c"
  - "src/include/distributed/citus_nodes.h"
  - "src/backend/distributed/safeclib"
  - "src/backend/columnar/safeclib"
  - "**/vendor/"


================================================
FILE: .codecov.yml
================================================
codecov:
  notify:
    require_ci_to_pass: yes

coverage:
  precision: 2
  round: down
  range: "70...100"

  ignore:
    - "src/backend/distributed/utils/citus_outfuncs.c"
    - "src/backend/distributed/deparser/ruleutils_*.c"
    - "src/include/distributed/citus_nodes.h"
    - "src/backend/distributed/safeclib"
    - "vendor"

  status:
    project:
      default:
        target: 87.5
        threshold: 0.5

    patch:
      default:
        target: 75

    changes: no

parsers:
  gcov:
    branch_detection:
      conditional: yes
      loop: yes
      method: no
      macro: no

comment:
  layout: "header, diff"
  behavior: default
  require_changes: no


================================================
FILE: .devcontainer/.gdbinit
================================================
# gdbpg.py contains scripts to nicely print the postgres datastructures
# while in a gdb session. Since the vscode debugger is based on gdb this
# actually also works when debugging with vscode. Providing nice tools
# to understand the internal datastructures we are working with.
source /root/gdbpg.py

# when debugging postgres it is convenient to _always_ have a breakpoint
# trigger when an error is logged. Because .gdbinit is sourced before gdb
# is fully attached and has the sources loaded. To make sure the breakpoint
# is added when the library is loaded we temporary set the breakpoint pending
# to on. After we have added out breakpoint we revert back to the default
# configuration for breakpoint pending.
# The breakpoint is hard to read, but at entry of the function we don't have
# the level loaded in elevel. Instead we hardcode the location where the
# level of the current error is stored. Also gdb doesn't understand the
# ERROR symbol so we hardcode this to the value of ERROR. It is very unlikely
# this value will ever change in postgres, but if it does we might need to
# find a way to conditionally load the correct breakpoint.
set breakpoint pending on
break elog.c:errfinish if errordata[errordata_stack_depth].elevel == 21
set breakpoint pending auto

echo \n
echo ----------------------------------------------------------------------------------\n
echo when attaching to a postgres backend a breakpoint will be set on elog.c:errfinish \n
echo it will only break on errors being raised in postgres \n
echo \n
echo to disable this breakpoint from vscode run `-exec disable 1` in the debug console \n
echo this assumes it's the first breakpoint loaded as it is loaded from .gdbinit \n
echo this can be verified with `-exec info break`, enabling can be done with \n
echo `-exec enable 1` \n
echo ----------------------------------------------------------------------------------\n
echo \n


================================================
FILE: .devcontainer/.gitignore
================================================
postgresql-*.tar.bz2


================================================
FILE: .devcontainer/.psqlrc
================================================
\timing on
\pset linestyle unicode
\pset border 2
\setenv PAGER 'pspg --no-mouse -bX --no-commandbar --no-topbar'
\set HISTSIZE 100000
\set PROMPT1 '\n%[%033[1m%]%M %n@%/:%> (PID: %p)%R%[%033[0m%]%# '
\set PROMPT2 '  '


================================================
FILE: .devcontainer/.vscode/Pipfile
================================================
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
docopt = "*"

[dev-packages]

[requires]
python_version = "3.12"


================================================
FILE: .devcontainer/.vscode/generate_c_cpp_properties-json.py
================================================
#! /usr/bin/env pipenv-shebang
"""Generate C/C++ properties file for VSCode.

Uses pgenv to iterate postgres versions and generate
a C/C++ properties file for VSCode containing the
include paths for the postgres headers.

Usage:
  generate_c_cpp_properties-json.py <target_path>
  generate_c_cpp_properties-json.py (-h | --help)
  generate_c_cpp_properties-json.py --version

Options:
  -h --help     Show this screen.
  --version     Show version.

"""
import json
import subprocess

from docopt import docopt


def main(args):
    target_path = args['<target_path>']

    output = subprocess.check_output(['pgenv', 'versions'])
    # typical output is:
    #      14.8      pgsql-14.8
    #  *   15.3      pgsql-15.3
    #      16beta2    pgsql-16beta2
    # where the line marked with a * is the currently active version
    #
    # we are only interested in the first word of each line, which is the version number
    # thus we strip the whitespace and the * from the line and split it into words
    # and take the first word
    versions = [line.strip('* ').split()[0] for line in output.decode('utf-8').splitlines()]

    # create the list of configurations per version
    configurations = []
    for version in versions:
        configurations.append(generate_configuration(version))

    # create the json file
    c_cpp_properties = {
        "configurations": configurations,
        "version": 4
    }

    # write the c_cpp_properties.json file
    with open(target_path, 'w') as f:
        json.dump(c_cpp_properties, f, indent=4)


def generate_configuration(version):
    """Returns a configuration for the given postgres version.

    >>> generate_configuration('14.8')
    {
        "name": "Citus Development Configuration - Postgres 14.8",
        "includePath": [
            "/usr/local/include",
            "/home/citus/.pgenv/src/postgresql-14.8/src/**",
            "${workspaceFolder}/**",
            "${workspaceFolder}/src/include/",
        ],
        "configurationProvider": "ms-vscode.makefile-tools"
    }
    """
    return {
        "name": f"Citus Development Configuration - Postgres {version}",
        "includePath": [
            "/usr/local/include",
            f"/home/citus/.pgenv/src/postgresql-{version}/src/**",
            "${workspaceFolder}/**",
            "${workspaceFolder}/src/include/",
        ],
        "configurationProvider": "ms-vscode.makefile-tools"
    }


if __name__ == '__main__':
    arguments = docopt(__doc__, version='0.1.0')
    main(arguments)


================================================
FILE: .devcontainer/.vscode/launch.json
================================================
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach Citus (devcontainer)",
            "type": "cppdbg",
            "request": "attach",
            "processId": "${command:pickProcess}",
            "program": "/home/citus/.pgenv/pgsql/bin/postgres",
            "additionalSOLibSearchPath": "/home/citus/.pgenv/pgsql/lib",
            "setupCommands": [
                {
                    "text": "handle SIGUSR1 noprint nostop pass",
                    "description": "let gdb not stop when SIGUSR1 is sent to process",
                    "ignoreFailures": true
                }
            ],
        },
        {
            "name": "Open core file",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/citus/.pgenv/pgsql/bin/postgres",
            "coreDumpPath": "${input:corefile}",
            "cwd": "${workspaceFolder}",
            "MIMode": "gdb",
        }
    ],
    "inputs": [
        {
            "id": "corefile",
            "type": "command",
            "command": "extension.commandvariable.file.pickFile",
            "args": {
                "dialogTitle": "Select core file",
                "include": "**/core*",
            },
        },
    ],
}


================================================
FILE: .devcontainer/Dockerfile
================================================
FROM ubuntu:22.04 AS base

# environment is to make python pass an interactive shell, probably not the best timezone given a wide variety of colleagues
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# install build tools
RUN apt update && apt install -y \
    bison \
    bzip2 \
    cpanminus \
    curl \
    docbook-xml \
    docbook-xsl \
    flex \
    gcc \
    git \
    libcurl4-gnutls-dev \
    libicu-dev \
    libkrb5-dev \
    liblz4-dev \
    libpam0g-dev \
    libreadline-dev \
    libselinux1-dev \
    libssl-dev \
    libxml2-utils \
    libxslt-dev \
    libzstd-dev \
    locales \
    make \
    perl \
    pkg-config \
    python3 \
    python3-pip \
    software-properties-common \
    sudo \
    uuid-dev \
    valgrind \
    xsltproc \
    zlib1g-dev \
 && add-apt-repository ppa:deadsnakes/ppa -y \
 && apt install -y \
    python3.12 python3.12-venv python3-distutils \
 # software properties pulls in pkexec, which makes the debugger unusable in vscode
 && apt purge -y \
    software-properties-common \
 && apt autoremove -y \
 && apt clean

RUN sudo pip3 install pipenv pipenv-shebang

RUN cpanm install IPC::Run

RUN locale-gen en_US.UTF-8

# add the citus user to sudoers and allow all sudoers to login without a password prompt
RUN useradd -ms /bin/bash citus \
 && usermod -aG sudo citus \
 && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

WORKDIR /home/citus
USER citus

# run all make commands with the number of cores available
RUN echo "export MAKEFLAGS=\"-j \$(nproc)\"" >> "/home/citus/.bashrc"

RUN git clone --branch v1.3.2 --depth 1 https://github.com/theory/pgenv.git .pgenv
COPY --chown=citus:citus pgenv/config/ .pgenv/config/
ENV PATH="/home/citus/.pgenv/bin:${PATH}"
ENV PATH="/home/citus/.pgenv/pgsql/bin:${PATH}"

USER citus

# build postgres versions separately for effective parrallelism and caching of already built versions when changing only certain versions
FROM base AS pg16
RUN MAKEFLAGS="-j $(nproc)" pgenv build 16.11
RUN rm .pgenv/src/*.tar*
RUN make -C .pgenv/src/postgresql-*/ clean
RUN make -C .pgenv/src/postgresql-*/src/include install

# create a staging directory with all files we want to copy from our pgenv build
# we will copy the contents of the staged folder into the final image at once
RUN mkdir .pgenv-staging/
RUN cp -r .pgenv/src .pgenv/pgsql-* .pgenv/config .pgenv-staging/
RUN rm .pgenv-staging/config/default.conf

FROM base AS pg17
RUN MAKEFLAGS="-j $(nproc)" pgenv build 17.7
RUN rm .pgenv/src/*.tar*
RUN make -C .pgenv/src/postgresql-*/ clean
RUN make -C .pgenv/src/postgresql-*/src/include install

# create a staging directory with all files we want to copy from our pgenv build
# we will copy the contents of the staged folder into the final image at once
RUN mkdir .pgenv-staging/
RUN cp -r .pgenv/src .pgenv/pgsql-* .pgenv/config .pgenv-staging/
RUN rm .pgenv-staging/config/default.conf

FROM base AS pg18
RUN MAKEFLAGS="-j $(nproc)" pgenv build 18.3
RUN rm .pgenv/src/*.tar*
RUN make -C .pgenv/src/postgresql-*/ clean
RUN make -C .pgenv/src/postgresql-*/src/include install

# Stage the pgenv artifacts for PG18
RUN mkdir .pgenv-staging/
RUN cp -r .pgenv/src .pgenv/pgsql-* .pgenv/config .pgenv-staging/
RUN rm .pgenv-staging/config/default.conf


FROM base AS uncrustify-builder

RUN sudo apt update && sudo apt install -y cmake tree

WORKDIR /uncrustify
RUN curl -L https://github.com/uncrustify/uncrustify/archive/uncrustify-0.82.0.tar.gz | tar xz
WORKDIR /uncrustify/uncrustify-uncrustify-0.82.0/
RUN mkdir build
WORKDIR /uncrustify/uncrustify-uncrustify-0.82.0/build/
RUN cmake ..
RUN MAKEFLAGS="-j $(nproc)" make -s

RUN make install DESTDIR=/uncrustify

# builder for all pipenv's to get them contained in a single layer
FROM base AS pipenv

WORKDIR /workspaces/citus/

# tools to sync pgenv with vscode
COPY --chown=citus:citus .vscode/Pipfile .vscode/Pipfile.lock .devcontainer/.vscode/
RUN ( cd .devcontainer/.vscode && pipenv install )

# environment to run our failure tests
COPY --chown=citus:citus src/ src/
RUN ( cd src/test/regress && pipenv install )

# assemble the final container by copying over the artifacts from separately build containers
FROM base AS devcontainer

LABEL org.opencontainers.image.source=https://github.com/citusdata/citus
LABEL org.opencontainers.image.description="Development container for the Citus project"
LABEL org.opencontainers.image.licenses=AGPL-3.0-only

RUN yes | sudo unminimize

# install developer productivity tools
RUN sudo apt update \
 && sudo apt install -y \
    autoconf2.69 \
    bash-completion \
    fswatch \
    gdb \
    htop \
    libdbd-pg-perl \
    libdbi-perl \
    lsof \
    man \
    net-tools \
    psmisc \
    pspg \
    tree \
    vim \
 && sudo apt clean

# Since gdb will run in the context of the root user when debugging citus we will need to both
# download the gdbpg.py script as the root user, into their home directory, as well as add .gdbinit
# as a file owned by root
# This will make that as soon as the debugger attaches to a postgres backend (or frankly any other process)
# the gdbpg.py script will be sourced and the developer can direcly use it.
RUN sudo curl -o /root/gdbpg.py https://raw.githubusercontent.com/tvesely/gdbpg/6065eee7872457785f830925eac665aa535caf62/gdbpg.py
COPY --chown=root:root .gdbinit /root/

# install developer dependencies in the global environment
RUN --mount=type=bind,source=requirements.txt,target=requirements.txt pip install -r requirements.txt

# for persistent bash history across devcontainers we need to have
# a) a directory to store the history in
# b) a prompt command to append the history to the file
# c) specify the history file to store the history in
# b and c are done in the .bashrc to make it persistent across shells only
RUN sudo install -d -o citus -g citus /commandhistory \
 && echo "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" >> "/home/citus/.bashrc"

# install citus-dev
RUN git clone --branch develop https://github.com/citusdata/tools.git citus-tools \
 && ( cd citus-tools/citus_dev && pipenv install ) \
 && mkdir -p ~/.local/bin \
 && ln -s /home/citus/citus-tools/citus_dev/citus_dev-pipenv .local/bin/citus_dev \
 && sudo make -C citus-tools/uncrustify install bindir=/usr/local/bin pkgsysconfdir=/usr/local/etc/ \
 && mkdir -p ~/.local/share/bash-completion/completions/ \
 && ln -s ~/citus-tools/citus_dev/bash_completion ~/.local/share/bash-completion/completions/citus_dev

# TODO some LC_ALL errors, possibly solved by locale-gen
RUN git clone https://github.com/so-fancy/diff-so-fancy.git \
 && mkdir -p ~/.local/bin \
 && ln -s /home/citus/diff-so-fancy/diff-so-fancy .local/bin/

COPY --link --from=uncrustify-builder /uncrustify/usr/ /usr/

COPY --link --from=pg16 /home/citus/.pgenv-staging/ /home/citus/.pgenv/
COPY --link --from=pg17 /home/citus/.pgenv-staging/ /home/citus/.pgenv/
COPY --link --from=pg18 /home/citus/.pgenv-staging/ /home/citus/.pgenv/

COPY --link --from=pipenv /home/citus/.local/share/virtualenvs/ /home/citus/.local/share/virtualenvs/

# place to run your cluster with citus_dev
VOLUME /data
RUN sudo mkdir /data \
 && sudo chown citus:citus /data

COPY --chown=citus:citus .psqlrc .

# with the copy linking of layers github actions seem to misbehave with the ownership of the
# directories leading upto the link, hence a small patch layer to have to right ownerships set
RUN sudo chown --from=root:root citus:citus -R ~

# sets default pg version
RUN pgenv switch 18.3

# make connecting to the coordinator easy
ENV PGPORT=9700


================================================
FILE: .devcontainer/Makefile
================================================

init: ../.vscode/c_cpp_properties.json ../.vscode/launch.json

../.vscode:
	mkdir -p ../.vscode

../.vscode/launch.json: ../.vscode .vscode/launch.json
	cp .vscode/launch.json ../.vscode/launch.json

../.vscode/c_cpp_properties.json: ../.vscode
	./.vscode/generate_c_cpp_properties-json.py ../.vscode/c_cpp_properties.json


================================================
FILE: .devcontainer/devcontainer.json
================================================
{
    "image": "ghcr.io/citusdata/citus-devcontainer:main",
    "runArgs": [
        "--cap-add=SYS_PTRACE",
        "--cap-add=SYS_NICE",                 // allow NUMA page inquiry
        "--security-opt=seccomp=unconfined",  // unblocks move_pages() in the container
        "--ulimit=core=-1",
    ],
    "forwardPorts": [
        9700
    ],
    "customizations": {
        "vscode": {
            "extensions": [
                "eamodio.gitlens",
                "GitHub.copilot-chat",
                "GitHub.copilot",
                "github.vscode-github-actions",
                "github.vscode-pull-request-github",
                "ms-vscode.cpptools-extension-pack",
                "ms-vsliveshare.vsliveshare",
                "rioj7.command-variable",
            ],
            "settings": {
                "files.exclude": {
                    "**/*.o": true,
                    "**/.deps/": true,
                }
            },
        }
    },
    "mounts": [
        "type=volume,target=/data",
        "source=citus-bashhistory,target=/commandhistory,type=volume",
    ],
    "updateContentCommand": "./configure",
    "postCreateCommand": "make -C .devcontainer/",
}



================================================
FILE: .devcontainer/pgenv/config/default.conf
================================================
PGENV_MAKE_OPTIONS=(-s)

PGENV_CONFIGURE_OPTIONS=(
    --enable-debug
    --enable-depend
    --enable-cassert
    --enable-tap-tests
    'CFLAGS=-ggdb -Og -g3 -fno-omit-frame-pointer -DUSE_VALGRIND'
    --with-openssl
    --with-libxml
    --with-libxslt
    --with-uuid=e2fs
    --with-icu
    --with-lz4
)


================================================
FILE: .devcontainer/requirements.txt
================================================
black==24.3.0
click==8.1.7
isort==5.12.0
mypy-extensions==1.0.0
packaging==23.2
pathspec==0.11.2
platformdirs==4.0.0
tomli==2.0.1
typing_extensions==4.8.0


================================================
FILE: .devcontainer/src/test/regress/Pipfile
================================================
[[source]]
name = "pypi"
url = "https://pypi.python.org/simple"
verify_ssl = true

[packages]
mitmproxy = {git = "https://github.com/citusdata/mitmproxy.git", ref = "main"}
"aioquic" = ">=1.2.0,<1.3.0"
"mitmproxy-rs" = ">=0.12.6,<0.13.0"
argon2-cffi = ">=23.1.0"
bcrypt = ">=4.1.2"
brotli = "<=1.2.0"
h11 = "==0.16.0"
h2 = "==4.3.0"
tornado = ">=6.5.1,<6.6.0"
zstandard = ">=0.25.0"
construct = "*"
docopt = "==0.6.2"
cryptography = "==46.0.5"
pytest = "*"
psycopg = "*"
filelock = "*"
pytest-asyncio = "*"
pytest-timeout = "*"
pytest-xdist = "*"
pytest-repeat = "*"
pyyaml = "*"
werkzeug = "==3.1.5"
"typing-extensions" = ">=4.13.2,<5"
pyperclip = "==1.9.0"

[dev-packages]
black = "==24.10.0"
isort = "*"
flake8 = "*"
flake8-bugbear = "*"

[requires]
python_version = "3.12"


================================================
FILE: .editorconfig
================================================
# top-most EditorConfig file
root = true

# rules for all files
# we use tabs with indent size 4
[*]
indent_style = tab
indent_size = 4
tab_width = 4
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true

# Don't change test output files, pngs or test data files
[*.{out,png,data}]
insert_final_newline = unset
trim_trailing_whitespace = unset

[*.{sql,sh,py,toml}]
indent_style = space
indent_size = 4
tab_width = 4

[*.yml]
indent_style = space
indent_size = 2
tab_width = 2


================================================
FILE: .flake8
================================================
[flake8]
# E203 is ignored for black
extend-ignore = E203
# black will truncate to 88 characters usually, but long string literals it
# might keep. That's fine in most cases unless it gets really excessive.
max-line-length = 150
exclude = .git,__pycache__,vendor,tmp_*


================================================
FILE: .gitattributes
================================================
*		whitespace=space-before-tab,trailing-space
*.[chly]	whitespace=space-before-tab,trailing-space,indent-with-non-tab,tabwidth=4
*.dsl		whitespace=space-before-tab,trailing-space,tab-in-indent
*.patch		-whitespace
*.pl		whitespace=space-before-tab,trailing-space,tabwidth=4
*.po		whitespace=space-before-tab,trailing-space,tab-in-indent,-blank-at-eof
*.sgml		whitespace=space-before-tab,trailing-space,tab-in-indent,-blank-at-eol
*.x[ms]l	whitespace=space-before-tab,trailing-space,tab-in-indent

# Avoid confusing ASCII underlines with leftover merge conflict markers
README		conflict-marker-size=32
README.*	conflict-marker-size=32

# Certain data files that contain special whitespace, and other special cases
*.data						-whitespace

# Test output files that contain extra whitespace
*.out					-whitespace

# These files are maintained or generated elsewhere.  We take them as is.
configure				-whitespace

# all C files (implementation and header) use our style...
*.[ch] citus-style

# except these exceptions...
src/backend/distributed/utils/citus_outfuncs.c -citus-style
src/backend/distributed/deparser/ruleutils_16.c -citus-style
src/backend/distributed/deparser/ruleutils_17.c -citus-style
src/backend/distributed/deparser/ruleutils_18.c -citus-style
src/backend/distributed/commands/index_pg_source.c -citus-style

src/include/distributed/citus_nodes.h -citus-style
/vendor/** -citus-style

# Hide diff on github by default for copied udfs
src/backend/distributed/sql/udfs/*/[123456789]*.sql linguist-generated=true


================================================
FILE: .github/actions/parallelization/action.yml
================================================
name: 'Parallelization matrix'
inputs:
  count:
    required: false
    default: 32
outputs:
  json:
    value: ${{ steps.generate_matrix.outputs.json }}
runs:
  using: "composite"
  steps:
    - name: Generate parallelization matrix
      id: generate_matrix
      shell: bash
      run: |-
        json_array="{\"include\": ["
        for ((i = 1; i <= ${{ inputs.count }}; i++)); do
            json_array+="{\"id\":\"$i\"},"
        done
        json_array=${json_array%,}
        json_array+=" ]}"
        echo "json=$json_array" >> "$GITHUB_OUTPUT"
        echo "json=$json_array"


================================================
FILE: .github/actions/save_logs_and_results/action.yml
================================================
name: save_logs_and_results
inputs:
  folder:
    required: false
    default: "log"
runs:
  using: composite
  steps:
  - uses: actions/upload-artifact@v4.6.0
    name: Upload logs
    with:
      name: ${{ inputs.folder }}
      if-no-files-found: ignore
      path: |
        src/test/**/proxy.output
        src/test/**/results/
        src/test/**/tmp_check/master/log
        src/test/**/tmp_check/worker.57638/log
        src/test/**/tmp_check/worker.57637/log
        src/test/**/*.diffs
        src/test/**/out/ddls.sql
        src/test/**/out/queries.sql
        src/test/**/logfile_*
        /tmp/pg_upgrade_newData_logs
  - name: Publish regression.diffs
    run: |-
      diffs="$(find src/test/regress -name "*.diffs" -exec cat {} \;)"
      if ! [ -z "$diffs" ]; then
        echo '```diff' >> $GITHUB_STEP_SUMMARY
        echo -E "$diffs" >> $GITHUB_STEP_SUMMARY
        echo '```' >> $GITHUB_STEP_SUMMARY
        echo -E $diffs
      fi
    shell: bash
  - name: Print stack traces
    run: "./ci/print_stack_trace.sh"
    if: failure()
    shell: bash


================================================
FILE: .github/actions/setup_extension/action.yml
================================================
name: setup_extension
inputs:
  pg_major:
    required: false
  skip_installation:
    required: false
    default: false
    type: boolean
runs:
  using: composite
  steps:
  - name: Expose $PG_MAJOR to Github Env
    run: |-
        if [ -z "${{ inputs.pg_major }}" ]; then
          echo "PG_MAJOR=${PG_MAJOR}" >> $GITHUB_ENV
        else
          echo "PG_MAJOR=${{ inputs.pg_major }}" >> $GITHUB_ENV
        fi
    shell: bash
  - uses: actions/download-artifact@v4.1.8
    with:
      name: build-${{ env.PG_MAJOR }}
  - name: Install Extension
    if: ${{ inputs.skip_installation == 'false' }}
    run: tar xfv "install-$PG_MAJOR.tar" --directory /
    shell: bash
  - name: Configure
    run: |-
      chown -R circleci .
      git config --global --add safe.directory ${GITHUB_WORKSPACE}
      gosu circleci ./configure --without-pg-version-check
    shell: bash
  - name: Enable core dumps
    run: ulimit -c unlimited
    shell: bash


================================================
FILE: .github/actions/upload_coverage/action.yml
================================================
name: coverage
inputs:
  flags:
    required: false
  codecov_token:
    required: true
runs:
  using: composite
  steps:
  - uses: codecov/codecov-action@v3
    with:
      flags: ${{ inputs.flags }}
      token: ${{ inputs.codecov_token }}
      verbose: true
      gcov: true


================================================
FILE: .github/packaging/packaging_ignore.yml
================================================
base:
  - ".* warning: ignoring old recipe for target [`']check'"
  - ".* warning: overriding recipe for target [`']check'"


================================================
FILE: .github/packaging/validate_build_output.sh
================================================
#!/bin/bash

set -ex

# Function to get the OS version
get_rpm_os_version() {
    if [[ -f /etc/centos-release ]]; then
        cat /etc/centos-release | awk '{print $4}'
    elif [[ -f /etc/oracle-release ]]; then
        cat /etc/oracle-release | awk '{print $5}'
    else
        echo "Unknown"
    fi
}

package_type=${1}

# Since $HOME is set in GH_Actions as /github/home, pyenv fails to create virtualenvs.
# For this script, we set $HOME to /root and then set it back to /github/home.
GITHUB_HOME="${HOME}"
export HOME="/root"

eval "$(pyenv init -)"
pyenv versions
pyenv virtualenv ${PACKAGING_PYTHON_VERSION} packaging_env
pyenv activate packaging_env

git clone -b v0.8.27 --depth=1  https://github.com/citusdata/tools.git tools
python3 -m pip install -r tools/packaging_automation/requirements.txt


echo "Package type: ${package_type}"
echo "OS version: $(get_rpm_os_version)"

 # For RHEL 7, we need to install urllib3<2 due to below execution error
 # ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl'
 # module is compiled with 'OpenSSL 1.0.2k-fips  26 Jan 2017'.
 # See: https://github.com/urllib3/urllib3/issues/2168
if [[ ${package_type} == "rpm" && $(get_rpm_os_version) == 7* ]]; then
    python3 -m pip uninstall -y urllib3
    python3 -m pip install 'urllib3<2'
fi

python3 -m tools.packaging_automation.validate_build_output --output_file output.log \
                                                            --ignore_file .github/packaging/packaging_ignore.yml \
                                                            --package_type ${package_type}
pyenv deactivate
# Set $HOME back to /github/home
export HOME=${GITHUB_HOME}

# Print the output to the console


================================================
FILE: .github/pull_request_template.md
================================================
DESCRIPTION: PR description that will go into the change log, up to 78 characters


================================================
FILE: .github/workflows/build_and_test.yml
================================================
name: Build & Test
run-name: Build & Test - ${{ github.event.pull_request.title || github.ref_name }}
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
on:
  workflow_dispatch:
    inputs:
      skip_test_flakyness:
        required: false
        default: false
        type: boolean
  push:
    branches:
      - "main"
      - "release-*"
  pull_request:
    types: [opened, reopened,synchronize]
  merge_group:
jobs:
  # Since GHA does not interpolate env varibles in matrix context, we need to
  # define them in a separate job and use them in other jobs.
  params:
    runs-on: ubuntu-latest
    name: Initialize parameters
    outputs:
      build_image_name: "ghcr.io/citusdata/extbuilder"
      test_image_name: "ghcr.io/citusdata/exttester"
      citusupgrade_image_name: "ghcr.io/citusdata/citusupgradetester"
      fail_test_image_name: "ghcr.io/citusdata/failtester"
      pgupgrade_image_name: "ghcr.io/citusdata/pgupgradetester"
      style_checker_image_name: "ghcr.io/citusdata/stylechecker"
      style_checker_tools_version: "0.8.33"
      sql_snapshot_pg_version: "18.3"
      image_suffix: "-vac4338a"
      pg16_version: '{ "major": "16", "full": "16.13" }'
      pg17_version: '{ "major": "17", "full": "17.9" }'
      pg18_version: '{ "major": "18", "full": "18.3" }'
      upgrade_pg_versions: "16.13-17.9-18.3"
    steps:
      # Since GHA jobs need at least one step we use a noop step here.
      - name: Set up parameters
        run: echo 'noop'
  check-sql-snapshots:
    needs: params
    runs-on: ubuntu-latest
    container:
      image: ${{ needs.params.outputs.build_image_name }}:${{ needs.params.outputs.sql_snapshot_pg_version }}${{ needs.params.outputs.image_suffix }}
      options: --user root
    steps:
    - uses: actions/checkout@v4
    - name: Check Snapshots
      run: |
        git config --global --add safe.directory ${GITHUB_WORKSPACE}
        ci/check_sql_snapshots.sh
  check-style:
    needs: params
    runs-on: ubuntu-latest
    container:
      image: ${{ needs.params.outputs.style_checker_image_name }}:${{ needs.params.outputs.style_checker_tools_version }}${{ needs.params.outputs.image_suffix }}
    steps:
    - name: Check Snapshots
      run: |
        git config --global --add safe.directory ${GITHUB_WORKSPACE}
    - uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Check C Style
      run: citus_indent --check
    - name: Check Python style
      run: black --check .
    - name: Check Python import order
      run: isort --check .
    - name: Check Python lints
      run: flake8 .
    - name: Fix whitespace
      run: ci/editorconfig.sh && git diff --exit-code
    - name: Remove useless declarations
      run: ci/remove_useless_declarations.sh && git diff --cached --exit-code
    - name: Sort and group includes
      run: ci/sort_and_group_includes.sh && git diff --exit-code
    - name: Normalize test output
      run: ci/normalize_expected.sh && git diff --exit-code
    - name: Check for C-style comments in migration files
      run: ci/disallow_c_comments_in_migrations.sh && git diff --exit-code
    - name: 'Check for comment--cached ns that start with # character in spec files'
      run: ci/disallow_hash_comments_in_spec_files.sh && git diff --exit-code
    - name: Check for gitignore entries .for source files
      run: ci/fix_gitignore.sh && git diff --exit-code
    - name: Check for lengths of changelog entries
      run: ci/disallow_long_changelog_entries.sh
    - name: Check for banned C API usage
      run: ci/banned.h.sh
    - name: Check for tests missing in schedules
      run: ci/check_all_tests_are_run.sh
    - name: Check if all CI scripts are actually run
      run: ci/check_all_ci_scripts_are_run.sh
    - name: Check if all GUCs are sorted alphabetically
      run: ci/check_gucs_are_alphabetically_sorted.sh
    - name: Check for missing downgrade scripts
      run: ci/check_migration_files.sh
  build:
    needs: params
    name: Build for PG${{ fromJson(matrix.pg_version).major }}
    strategy:
      fail-fast: false
      matrix:
        image_name:
          - ${{ needs.params.outputs.build_image_name }}
        image_suffix:
          - ${{ needs.params.outputs.image_suffix}}
        pg_version:
          - ${{ needs.params.outputs.pg16_version }}
          - ${{ needs.params.outputs.pg17_version }}
          - ${{ needs.params.outputs.pg18_version }}
    runs-on: ubuntu-latest
    container:
      image: "${{ matrix.image_name }}:${{ fromJson(matrix.pg_version).full }}${{ matrix.image_suffix }}"
      options: --user root
    steps:
    - uses: actions/checkout@v4
    - name: Expose $PG_MAJOR to Github Env
      run: echo "PG_MAJOR=${PG_MAJOR}" >> $GITHUB_ENV
      shell: bash
    - name: Build
      run: "./ci/build-citus.sh"
      shell: bash
    - uses: actions/upload-artifact@v4.6.0
      with:
        name: build-${{ env.PG_MAJOR }}
        path: |-
          ./build-${{ env.PG_MAJOR }}/*
          ./install-${{ env.PG_MAJOR }}.tar
  test-citus:
    name: Test Citus
    uses: ./.github/workflows/run_tests.yml
    needs:
      - params
      - build
    with:
      pg_versions: >
        [
          ${{ needs.params.outputs.pg16_version }},
          ${{ needs.params.outputs.pg17_version }},
          ${{ needs.params.outputs.pg18_version }}
        ]
      make_targets: '["check-split", "check-multi", "check-multi-1", "check-multi-1-create-citus", "check-multi-mx", "check-vanilla", "check-isolation", "check-operations", "check-follower-cluster", "check-add-backup-node", "check-columnar", "check-columnar-isolation", "check-enterprise", "check-enterprise-isolation", "check-enterprise-isolation-logicalrep-1", "check-enterprise-isolation-logicalrep-2", "check-enterprise-isolation-logicalrep-3", "check-tap"]'
      image_suffix: ${{ needs.params.outputs.image_suffix }}
      image_name: ${{ needs.params.outputs.test_image_name }}
    secrets:
      codecov_token: ${{ secrets.CODECOV_TOKEN }}
  test-citus-failure:
    name: Test Citus Failure
    uses: ./.github/workflows/run_tests.yml
    needs:
      - params
      - build
    with:
      pg_versions: >
        [
          ${{ needs.params.outputs.pg16_version }},
          ${{ needs.params.outputs.pg17_version }},
          ${{ needs.params.outputs.pg18_version }}
        ]
      make_targets: '["check-failure", "check-enterprise-failure", "check-pytest", "check-query-generator"]'
      image_suffix: ${{ needs.params.outputs.image_suffix }}
      image_name: ${{ needs.params.outputs.fail_test_image_name }}
    secrets:
      codecov_token: ${{ secrets.CODECOV_TOKEN }}
  test-citus-cdc:
    name: Test Citus CDC
    uses: ./.github/workflows/run_tests.yml
    needs:
      - params
      - build
    with:
      pg_versions: >
        [
          ${{ needs.params.outputs.pg16_version }},
          ${{ needs.params.outputs.pg17_version }},
          ${{ needs.params.outputs.pg18_version }}
        ]
      make_targets: '["installcheck"]'
      image_suffix: ${{ needs.params.outputs.image_suffix }}
      image_name: ${{ needs.params.outputs.test_image_name }}
      suite: cdc
    secrets:
      codecov_token: ${{ secrets.CODECOV_TOKEN }}
  test-arbitrary-configs:
    name: PG${{ fromJson(matrix.pg_version).major }} - check-arbitrary-configs-${{ matrix.parallel }}
    runs-on: ["self-hosted", "1ES.Pool=1es-gha-citusdata-pool"]
    container:
      image: "${{ matrix.image_name }}:${{ fromJson(matrix.pg_version).full }}${{ needs.params.outputs.image_suffix }}"
      options: --user root
    needs:
      - params
      - build
    strategy:
      fail-fast: false
      matrix:
        image_name:
          - ${{ needs.params.outputs.fail_test_image_name }}
        pg_version:
          - ${{ needs.params.outputs.pg16_version }}
          - ${{ needs.params.outputs.pg17_version }}
          - ${{ needs.params.outputs.pg18_version }}
        parallel: [0,1,2,3,4,5] # workaround for running 6 parallel jobs
    steps:
    - uses: actions/checkout@v4
    - uses: "./.github/actions/setup_extension"
    - name: Test arbitrary configs
      run: |-
        # we use parallel jobs to split the tests into 6 parts and run them in parallel
        # the script below extracts the tests for the current job
        N=6  # Total number of jobs (see matrix.parallel)
        X=${{ matrix.parallel }}  # Current job number
        TESTS=$(src/test/regress/citus_tests/print_test_names.py |
          tr '\n' ',' | awk -v N="$N" -v X="$X" -F, '{
            split("", parts)
            for (i = 1; i <= NF; i++) {
                parts[i % N] = parts[i % N] $i ","
            }
            print substr(parts[X], 1, length(parts[X])-1)
        }')
        echo $TESTS
        gosu circleci \
          make -C src/test/regress \
            check-arbitrary-configs parallel=4 CONFIGS=$TESTS
    - uses: "./.github/actions/save_logs_and_results"
      if: always()
      with:
        folder: ${{ env.PG_MAJOR }}_arbitrary_configs_${{ matrix.parallel }}
    - uses: "./.github/actions/upload_coverage"
      if: always()
      with:
        flags: ${{ env.PG_MAJOR }}_arbitrary_configs_${{ matrix.parallel }}
        codecov_token: ${{ secrets.CODECOV_TOKEN }}
  test-pg-upgrade:
    name: PG${{ matrix.old_pg_major }}-PG${{ matrix.new_pg_major }} - check-pg-upgrade
    runs-on: ubuntu-latest
    container:
      image: "${{ needs.params.outputs.pgupgrade_image_name }}:${{ needs.params.outputs.upgrade_pg_versions }}${{ needs.params.outputs.image_suffix }}"
      options: --user root
    needs:
    - params
    - build
    strategy:
      fail-fast: false
      matrix:
        include:
          - old_pg_major: 16
            new_pg_major: 17
          - old_pg_major: 17
            new_pg_major: 18
          - old_pg_major: 16
            new_pg_major: 18
    env:
      old_pg_major: ${{ matrix.old_pg_major }}
      new_pg_major: ${{ matrix.new_pg_major }}
    steps:
    - uses: actions/checkout@v4
    - uses: "./.github/actions/setup_extension"
      with:
        pg_major: "${{ env.old_pg_major }}"
    - uses: "./.github/actions/setup_extension"
      with:
        pg_major: "${{ env.new_pg_major }}"
    - name: Install and test postgres upgrade
      run: |-
        gosu circleci \
          make -C src/test/regress \
            check-pg-upgrade \
            old-bindir=/usr/lib/postgresql/${{ env.old_pg_major }}/bin \
            new-bindir=/usr/lib/postgresql/${{ env.new_pg_major }}/bin \
            test-with-columnar=false

        gosu circleci \
          make -C src/test/regress \
            check-pg-upgrade \
            old-bindir=/usr/lib/postgresql/${{ env.old_pg_major }}/bin \
            new-bindir=/usr/lib/postgresql/${{ env.new_pg_major }}/bin \
            test-with-columnar=true
    - name: Copy pg_upgrade logs for newData dir
      run: |-
        mkdir -p /tmp/pg_upgrade_newData_logs
        if ls src/test/regress/tmp_upgrade/newData/*.log 1> /dev/null 2>&1; then
            cp src/test/regress/tmp_upgrade/newData/*.log /tmp/pg_upgrade_newData_logs
        fi
      if: failure()
    - uses: "./.github/actions/save_logs_and_results"
      if: always()
      with:
        folder: ${{ env.old_pg_major }}_${{ env.new_pg_major }}_upgrade
    - uses: "./.github/actions/upload_coverage"
      if: always()
      with:
        flags: ${{ env.old_pg_major }}_${{ env.new_pg_major }}_upgrade
        codecov_token: ${{ secrets.CODECOV_TOKEN }}
  test-citus-upgrade:
    name: PG${{ fromJson(matrix.pg_version).major }} - check-citus-upgrade
    runs-on: ubuntu-latest
    container:
      image: "${{ needs.params.outputs.citusupgrade_image_name }}:${{ fromJson(matrix.pg_version).full }}${{ needs.params.outputs.image_suffix }}"
      options: --user root
    needs:
    - params
    - build
    strategy:
      fail-fast: false
      matrix:
        pg_version:
          - ${{ needs.params.outputs.pg16_version }}
          - ${{ needs.params.outputs.pg17_version }}
    steps:
    - uses: actions/checkout@v4
    - uses: "./.github/actions/setup_extension"
      with:
        skip_installation: true
    - name: Install and test citus upgrade
      run: |-
        # run make check-citus-upgrade for all citus versions
        # the image has ${CITUS_VERSIONS} set with all versions it contains the binaries of
        for citus_version in ${CITUS_VERSIONS}; do \
          gosu circleci \
            make -C src/test/regress \
              check-citus-upgrade \
              bindir=/usr/lib/postgresql/${PG_MAJOR}/bin \
              citus-old-version=${citus_version} \
              citus-pre-tar=/install-pg${PG_MAJOR}-citus${citus_version}.tar \
              citus-post-tar=${GITHUB_WORKSPACE}/install-$PG_MAJOR.tar; \
        done;
        # run make check-citus-upgrade-mixed for all citus versions
        # the image has ${CITUS_VERSIONS} set with all versions it contains the binaries of
        for citus_version in ${CITUS_VERSIONS}; do \
          gosu circleci \
            make -C src/test/regress \
              check-citus-upgrade-mixed \
              citus-old-version=${citus_version} \
              bindir=/usr/lib/postgresql/${PG_MAJOR}/bin \
              citus-pre-tar=/install-pg${PG_MAJOR}-citus${citus_version}.tar \
              citus-post-tar=${GITHUB_WORKSPACE}/install-$PG_MAJOR.tar; \
        done;
    - uses: "./.github/actions/save_logs_and_results"
      if: always()
      with:
        folder: ${{ env.PG_MAJOR }}_citus_upgrade
    - uses: "./.github/actions/upload_coverage"
      if: always()
      with:
        flags: ${{ env.PG_MAJOR }}_citus_upgrade
        codecov_token: ${{ secrets.CODECOV_TOKEN }}
  ch_benchmark:
    name: CH Benchmark
    if: startsWith(github.ref, 'refs/heads/ch_benchmark/')
    runs-on: ubuntu-latest
    needs:
    - build
    steps:
    - uses: actions/checkout@v4
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: install dependencies and run ch_benchmark tests
      uses: azure/CLI@v1
      with:
        inlineScript: |
          cd ./src/test/hammerdb
          chmod +x run_hammerdb.sh
          run_hammerdb.sh citusbot_ch_benchmark_rg
  tpcc_benchmark:
    name: TPCC Benchmark
    if: startsWith(github.ref, 'refs/heads/tpcc_benchmark/')
    runs-on: ubuntu-latest
    needs:
    - build
    steps:
    - uses: actions/checkout@v4
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: install dependencies and run tpcc_benchmark tests
      uses: azure/CLI@v1
      with:
        inlineScript: |
          cd ./src/test/hammerdb
          chmod +x run_hammerdb.sh
          run_hammerdb.sh citusbot_tpcc_benchmark_rg
  prepare_parallelization_matrix_32:
    name: Prepare parallelization matrix
    if: ${{ needs.test-flakyness-pre.outputs.tests != ''}}
    needs: test-flakyness-pre
    runs-on: ubuntu-latest
    outputs:
      json: ${{ steps.parallelization.outputs.json }}
    steps:
      - uses: actions/checkout@v4
      - uses: "./.github/actions/parallelization"
        id: parallelization
        with:
          count: 32
  test-flakyness-pre:
    name: Detect regression tests need to be ran
    if: ${{ !inputs.skip_test_flakyness }}}
    runs-on: ubuntu-latest
    needs: build
    outputs:
      tests: ${{ steps.detect-regression-tests.outputs.tests }}
    steps:
    - uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Detect regression tests need to be ran
      id: detect-regression-tests
      run: |-
        detected_changes=$(git diff origin/main... --name-only --diff-filter=AM | (grep 'src/test/regress/sql/.*\.sql\|src/test/regress/spec/.*\.spec\|src/test/regress/citus_tests/test/test_.*\.py' || true))
        tests=${detected_changes}

        # split the tests to be skipped --today we only skip upgrade tests
        # and snapshot based node addition tests.
        # snapshot based node addition tests are not flaky, as they promote
        # the streaming replica (clone) to a PostgreSQL primary node that is one way
        # operation
        skipped_tests=""
        not_skipped_tests=""
        for test in $tests; do
            if [[ $test =~ ^src/test/regress/sql/upgrade_ ]] || [[ $test =~ ^src/test/regress/sql/multi_add_node_from_backup ]]; then
                skipped_tests="$skipped_tests $test"
            else
                not_skipped_tests="$not_skipped_tests $test"
            fi
        done

        if [ ! -z "$skipped_tests" ]; then
            echo "Skipped tests " $skipped_tests
        fi

        if [ -z "$not_skipped_tests" ]; then
            echo "Not detected any tests that flaky test detection should run"
        else
            echo "Detected tests " $not_skipped_tests
        fi

        echo 'tests<<EOF' >> $GITHUB_OUTPUT
        echo "$not_skipped_tests" >> "$GITHUB_OUTPUT"
        echo 'EOF' >> $GITHUB_OUTPUT
  test-flakyness:
    if: ${{ needs.test-flakyness-pre.outputs.tests != ''}}
    name: Test flakyness
    runs-on: ubuntu-latest
    container:
      image: ${{ needs.params.outputs.fail_test_image_name }}:${{ fromJson(needs.params.outputs.pg18_version).full }}${{ needs.params.outputs.image_suffix }}
      options: --user root
    env:
      runs: 8
    needs:
    - params
    - build
    - test-flakyness-pre
    - prepare_parallelization_matrix_32
    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.prepare_parallelization_matrix_32.outputs.json) }}
    steps:
    - uses: actions/checkout@v4
    - uses: actions/download-artifact@v4.1.8
    - uses: "./.github/actions/setup_extension"
    - name: Run minimal tests
      run: |-
        tests="${{ needs.test-flakyness-pre.outputs.tests }}"
        tests_array=($tests)
        for test in "${tests_array[@]}"
        do
            test_name=$(echo "$test" | sed -r "s/.+\/(.+)\..+/\1/")
            gosu circleci src/test/regress/citus_tests/run_test.py $test_name --repeat ${{ env.runs }} --use-whole-schedule-line
        done
      shell: bash
    - uses: "./.github/actions/save_logs_and_results"
      if: always()
      with:
        folder: test_flakyness_parallel_${{ matrix.id }}


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"

on:
  schedule:
    - cron: '59 23 * * 6'
  workflow_dispatch:

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-22.04
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'cpp', 'python']

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v4
      with:
        languages: ${{ matrix.language }}

    - name: Install package dependencies
      run: |
        # Create the file repository configuration:
        sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main 15" > /etc/apt/sources.list.d/pgdg.list'
        # Import the repository signing key:
        wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
        sudo apt-get update
        sudo apt-get install -y --no-install-recommends \
          autotools-dev \
          build-essential \
          ca-certificates \
          curl \
          debhelper \
          devscripts \
          fakeroot \
          flex \
          libcurl4-openssl-dev \
          libdistro-info-perl \
          libedit-dev \
          libfile-fcntllock-perl \
          libicu-dev \
          libkrb5-dev \
          liblz4-1 \
          liblz4-dev \
          libpam0g-dev \
          libreadline-dev \
          libselinux1-dev \
          libssl-dev \
          libxslt-dev \
          libzstd-dev \
          libzstd1 \
          lintian \
          postgresql-server-dev-17 \
          python3-pip \
          python3-setuptools \
          wget \
          zlib1g-dev


    - name: Configure, Build and Install Citus
      if: matrix.language == 'cpp'
      run: |
        ./configure
        make -sj8
        sudo make install-all

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4


================================================
FILE: .github/workflows/devcontainer.yml
================================================
name: "Build devcontainer"

# Since building of containers can be quite time consuming, and take up some storage,
# there is no need to finish a build for a tag if new changes are concurrently being made.
# This cancels any previous builds for the same tag, and only the latest one will be kept.
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on:
  push:
    paths:
      - ".devcontainer/**"
  workflow_dispatch:

jobs:
  docker:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
      attestations: write
      id-token: write
    steps:
      -
        name: Docker meta
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ghcr.io/citusdata/citus-devcontainer
          tags: |
            type=ref,event=branch
            type=sha
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      -
        name: 'Login to GitHub Container Registry'
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{github.actor}}
          password: ${{secrets.GITHUB_TOKEN}}
      -
        name: Build and push
        uses: docker/build-push-action@v5
        with:
          context: "{{defaultContext}}:.devcontainer"
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          cache-from: type=gha
          cache-to: type=gha,mode=max


================================================
FILE: .github/workflows/flaky_test_debugging.yml
================================================
name: Flaky test debugging
run-name: Flaky test debugging - ${{ inputs.flaky_test }} (${{ inputs.flaky_test_runs_per_job }}x${{ inputs.flaky_test_parallel_jobs }})
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
on:
  workflow_dispatch:
    inputs:
      flaky_test:
        required: true
        type: string
        description: Test to run
      flaky_test_runs_per_job:
        required: false
        default: 8
        type: number
        description: Number of times to run the test
      flaky_test_parallel_jobs:
        required: false
        default: 32
        type: number
        description: Number of parallel jobs to run
jobs:
  build:
    name: Build Citus
    runs-on: ubuntu-latest
    container:
      image: ${{ vars.build_image_name }}:${{ vars.pg16_version  }}${{ vars.image_suffix }}
      options: --user root
    steps:
    - uses: actions/checkout@v4
    - name: Configure, Build, and Install
      run: |
        echo "PG_MAJOR=${PG_MAJOR}" >> $GITHUB_ENV
        ./ci/build-citus.sh
      shell: bash
    - uses: actions/upload-artifact@v4.6.0
      with:
        name: build-${{ env.PG_MAJOR }}
        path: |-
          ./build-${{ env.PG_MAJOR }}/*
          ./install-${{ env.PG_MAJOR }}.tar
  prepare_parallelization_matrix:
    name: Prepare parallelization matrix
    runs-on: ubuntu-latest
    outputs:
      json: ${{ steps.parallelization.outputs.json }}
    steps:
      - uses: actions/checkout@v4
      - uses: "./.github/actions/parallelization"
        id: parallelization
        with:
          count: ${{ inputs.flaky_test_parallel_jobs }}
  test_flakyness:
    name: Test flakyness
    runs-on: ubuntu-latest
    container:
      image: ${{ vars.fail_test_image_name }}:${{ vars.pg16_version  }}${{ vars.image_suffix }}
      options: --user root
    needs:
      [build, prepare_parallelization_matrix]
    env:
      test: "${{ inputs.flaky_test }}"
      runs: "${{ inputs.flaky_test_runs_per_job }}"
      skip: false
    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.prepare_parallelization_matrix.outputs.json) }}
    steps:
    - uses: actions/checkout@v4
    - uses: "./.github/actions/setup_extension"
    - name: Run minimal tests
      run: |-
          gosu circleci src/test/regress/citus_tests/run_test.py ${{ env.test }} --repeat ${{ env.runs }} --use-whole-schedule-line
      shell: bash
    - uses: "./.github/actions/save_logs_and_results"
      if: always()
      with:
          folder: check_flakyness_parallel_${{ matrix.id }}


================================================
FILE: .github/workflows/packaging-test-pipelines.yml
================================================
name: Build tests in packaging images

on:
  pull_request:
    types: [opened, reopened,synchronize]
  merge_group:

  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:

  get_postgres_versions_from_file:
    runs-on: ubuntu-latest
    outputs:
      pg_versions: ${{ steps.get-postgres-versions.outputs.pg_versions }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 2
      - name: Get Postgres Versions
        id: get-postgres-versions
        run: |
          set -euxo pipefail
          # Postgres versions are stored in .github/workflows/build_and_test.yml
          # file in json strings with major and full keys.
          # Below command extracts the versions and get the unique values.
          pg_versions=$(cat .github/workflows/build_and_test.yml | grep -oE '"major": "[0-9]+", "full": "[^"]+"' | sed -E 's/.*"major": "([0-9]+)".*/\1/' | sort -n | uniq | tr '\n' ',')
          pg_versions_array="[ ${pg_versions} ]"
          echo "Supported PG Versions: ${pg_versions_array}"
          # Below line is needed to set the output variable to be used in the next job
          echo "pg_versions=${pg_versions_array}" >> $GITHUB_OUTPUT
        shell: bash
  rpm_build_tests:
    name: rpm_build_tests
    needs: get_postgres_versions_from_file
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        # While we use separate images for different Postgres versions in rpm
        # based distros
        # For this reason, we need to use a "matrix" to generate names of
        # rpm images, e.g. citus/packaging:centos-7-pg12
        packaging_docker_image:
          - oraclelinux-8
          - almalinux-8
          - almalinux-9
        POSTGRES_VERSION: ${{ fromJson(needs.get_postgres_versions_from_file.outputs.pg_versions) }}

    container:
      image: citus/packaging:${{ matrix.packaging_docker_image }}-pg${{ matrix.POSTGRES_VERSION }}
      options: --user root

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set Postgres and python parameters for rpm based distros
        run: |
          echo "/usr/pgsql-${{ matrix.POSTGRES_VERSION }}/bin" >> $GITHUB_PATH
          echo "/root/.pyenv/bin:$PATH" >> $GITHUB_PATH
          echo "PACKAGING_PYTHON_VERSION=3.8.16" >> $GITHUB_ENV

      - name: Configure
        run: |
          echo "Current Shell:$0"
          echo "GCC Version: $(gcc --version)"
          ./configure 2>&1 | tee output.log

      - name: Make clean
        run: |
          make clean

      - name: Make
        run: |
          git config --global --add safe.directory ${GITHUB_WORKSPACE}
          make CFLAGS="-Wno-missing-braces" -sj$(cat /proc/cpuinfo | grep "core id" | wc -l) 2>&1 | tee -a output.log

          # Check the exit code of the make command
          make_exit_code=${PIPESTATUS[0]}

          # If the make command returned a non-zero exit code, exit with the same code
          if [[ $make_exit_code -ne 0 ]]; then
              echo "make command failed with exit code $make_exit_code"
              exit $make_exit_code
          fi

      - name: Make install
        run: |
          make CFLAGS="-Wno-missing-braces" install 2>&1 | tee -a output.log

      - name: Validate output
        env:
          POSTGRES_VERSION: ${{ matrix.POSTGRES_VERSION }}
          PACKAGING_DOCKER_IMAGE: ${{ matrix.packaging_docker_image }}
        run: |
          echo "Postgres version: ${POSTGRES_VERSION}"
          ./.github/packaging/validate_build_output.sh "rpm"

  deb_build_tests:
    name: deb_build_tests
    needs: get_postgres_versions_from_file
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        # On deb based distros, we use the same docker image for
        # builds based on different Postgres versions because deb
        # based images include all postgres installations.
        # For this reason, we have multiple runs --which is 3 today--
        # for each deb based image and we use POSTGRES_VERSION to set
        # PG_CONFIG variable in each of those runs.
        packaging_docker_image:
          - debian-bookworm-all
          - debian-bullseye-all
          - ubuntu-focal-all
          - ubuntu-jammy-all

        POSTGRES_VERSION: ${{ fromJson(needs.get_postgres_versions_from_file.outputs.pg_versions) }}
        exclude:
          # PG18 is not supported on Ubuntu focal
          - packaging_docker_image: ubuntu-focal-all
            POSTGRES_VERSION: 18

    container:
      image: citus/packaging:${{ matrix.packaging_docker_image }}
      options: --user root

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set pg_config path and python parameters for deb based distros
        run: |
          echo "PG_CONFIG=/usr/lib/postgresql/${{ matrix.POSTGRES_VERSION }}/bin/pg_config" >> $GITHUB_ENV
          echo "/root/.pyenv/bin:$PATH" >> $GITHUB_PATH
          echo "PACKAGING_PYTHON_VERSION=3.8.16" >> $GITHUB_ENV

      - name: Configure
        run: |
          echo "Current Shell:$0"
          echo "GCC Version: $(gcc --version)"
          ./configure 2>&1 | tee output.log

      - name: Make clean
        run: |
          make clean

      - name: Make
        shell: bash
        run: |
          set -e
          git config --global --add safe.directory ${GITHUB_WORKSPACE}
          make -sj$(cat /proc/cpuinfo | grep "core id" | wc -l) 2>&1 | tee -a output.log

          # Check the exit code of the make command
          make_exit_code=${PIPESTATUS[0]}

          # If the make command returned a non-zero exit code, exit with the same code
          if [[ $make_exit_code -ne 0 ]]; then
              echo "make command failed with exit code $make_exit_code"
              exit $make_exit_code
          fi


      - name: Make install
        run: |
          make install 2>&1 | tee -a output.log

      - name: Validate output
        env:
          POSTGRES_VERSION: ${{ matrix.POSTGRES_VERSION }}
          PACKAGING_DOCKER_IMAGE: ${{ matrix.packaging_docker_image }}
        run: |
          echo "Postgres version: ${POSTGRES_VERSION}"
          ./.github/packaging/validate_build_output.sh "deb"


================================================
FILE: .github/workflows/run_tests.yml
================================================
name: Run Tests
on:
  workflow_call:
    inputs:
      pg_versions:
        required: true
        type: string
      make_targets:
        required: true
        type: string
      image_suffix:
        required: true
        type: string
      image_name:
        required: true
        type: string
      suite:
        required: false
        type: string
        default: "regress"
      citus_version:
        required: false
        type: string
        default: ""
      citus_libdir:
        required: false
        type: string
        default: ""
      citus_libdir_label:
        required: false
        type: string
        default: ""
      n_1_mode:
        required: false
        type: string
        default: ""
    secrets:
      codecov_token:
        required: false

jobs:
  test:
    name: PG${{ matrix.pg_version.major }} - ${{ matrix.make }}${{ inputs.citus_version && format(' - {0}', inputs.citus_version) || '' }}${{ inputs.citus_libdir_label && format(' - lib-{0}', inputs.citus_libdir_label) || '' }}
    strategy:
      fail-fast: false
      matrix:
        pg_version: ${{ fromJson(inputs.pg_versions) }}
        make: ${{ fromJson(inputs.make_targets) }}
    runs-on: ubuntu-latest
    container:
      image: "${{ inputs.image_name }}:${{ matrix.pg_version.full }}${{ inputs.image_suffix }}"
      options: >-
        --user root
        --dns=8.8.8.8
        --cap-add=SYS_NICE
        --security-opt seccomp=unconfined
    steps:
      - uses: actions/checkout@v4
      - uses: "./.github/actions/setup_extension"
      - name: Fix PostgreSQL library permissions for symlink setup
        if: ${{ inputs.citus_libdir != '' }}
        run: chmod -R a+w /usr/lib/postgresql/${{ matrix.pg_version.major }}/lib/
      - name: Run Test
        run: CITUSVERSION=${{ inputs.citus_version }} CITUSLIBDIR=${{ inputs.citus_libdir }} N_1_MODE=${{ inputs.n_1_mode }} gosu circleci make -C src/test/${{ inputs.suite }} ${{ matrix.make }}
        timeout-minutes: 20
      - uses: "./.github/actions/save_logs_and_results"
        if: always()
        with:
          folder: ${{ matrix.pg_version.major }}_${{ matrix.make }}${{ inputs.citus_version && format('_{0}', inputs.citus_version) || '' }}${{ inputs.citus_libdir_label && format('_{0}', inputs.citus_libdir_label) || '' }}${{ inputs.n_1_mode && format('_{0}', inputs.n_1_mode) || '' }}
      - uses: "./.github/actions/upload_coverage"
        if: always()
        with:
          flags: ${{ env.PG_MAJOR }}_${{ inputs.suite }}_${{ matrix.make }}${{ inputs.citus_version && format('_{0}', inputs.citus_version) || '' }}${{ inputs.citus_libdir_label && format('_{0}', inputs.citus_libdir_label) || '' }}${{ inputs.n_1_mode && format('_{0}', inputs.n_1_mode) || '' }}
          codecov_token: ${{ secrets.codecov_token }}


================================================
FILE: .gitignore
================================================
# Global excludes across all subdirectories
*.o
*.so
*.so.[0-9]
*.so.[0-9].[0-9]
*.sl
*.sl.[0-9]
*.sl.[0-9].[0-9]
*.dylib
*.dll
*.a
*.mo
*.pot
objfiles.txt
.deps/
*.gcno
*.gcda
*.gcov
*.gcov.out
lcov.info
coverage/
*.vcproj
*.vcxproj
win32ver.rc
*.exe
lib*dll.def
lib*.pc
*.bc

# Local excludes in root directory
/config.log
/config.status
/pgsql.sln
/pgsql.sln.cache
/Debug/
/Release/
/autom4te.cache
/Makefile.global
/src/Makefile.custom
/compile_commands.json
/src/backend/distributed/cdc/build-cdc-*/*
/src/test/cdc/tmp_check/*
/src/test/tap/tmp_check/*
/src/test/tap/log/*


# temporary files vim creates
*.swp

# vscode
.vscode/*

# output from diff normalization that shouldn't be commited
*.unmodified
*.modified

# style related temporary outputs
*.uncrustify
.venv

# added output when modifying check_gucs_are_alphabetically_sorted.sh
guc.out


================================================
FILE: .ignore
================================================
/vendor


================================================
FILE: CHANGELOG.md
================================================
### citus v14.0.0 (February 9, 2026) ###

* Drops PG15 support (#8372)

* Adds support for PostgreSQL 18 (#8065)

* Adds support for virtual generated columns on distributed tables
  for PostgreSQL 18 (#8346)

* Propagates publish_generated_columns publication option to worker
  nodes for distributed tables on PostgreSQL 18 (#8360)

* Respects VACUUM/ANALYZE ONLY semantics for Citus tables by
  skipping shard propagation when ONLY is specified on
  PostgreSQL 18 (#8365)

* Allows configuring sslkeylogfile connection parameter using
  citus.node_conn_info on PostgreSQL 18 (#8437)

* Fixes INSERT .. SELECT planning error with GROUP BY on
  PostgreSQL 18 (#8256)

* Fixes deparser error with named joins and whole-row references
  on PostgreSQL 18 (#8300)

* Fixes columnar temp table access failure on PostgreSQL 18 (#8309)

* Fixes multi-shard MIN/MAX on composite types by blessing record
  aggregates (#8429)

* Fixes distributed MIN/MAX for array types (#8421)

* Adds propagation of ENFORCED / NOT ENFORCED on CHECK
  constraints (#8349)

* Stops on-demand statistics collection for clusters and deprecates
  citus.enable_statistics_collection GUC (#8460)

* Disallows creating a distributed table or altering it to be colocated
  with another table if distribution key collations don't
  match (#8257)

* Makes citus_create_restore_point MX-safe by blocking 2PC commit
  decisions (#8352)

* Supports binary transfer from worker to coordinator for custom
  aggregates (#8446)

* Ensures query remains safe for deparse when a modify scan needs to
  evaluate expressions before worker query execution (#8443)

* Avoids local plan cache reuse for multi-shard queries (#8371)

* Tightens distributed plan check to cover distributed
  subplans (#8388)

* Improves performance by avoiding unnecessary shallow copy of target
  list when no array or json subscripts are present (#8155)

* Fixes a bug that ignores reference or schema sharded tables in worker
  subquery task construction when no distributed tables are
  involved (#8440)

* Fixes a bug in redundant WHERE clause detection (#8162)

* Fixes a bug that causes allowing UPDATE / MERGE queries that may
  change the distribution column value (#8214)

* Fixes a bug that causes an unexpected error when executing
  repartitioned MERGE (#8201)

* Fixes an assertion failure in Citus maintenance daemon that can
  happen in very slow systems (#8158)

* Removes an assertion from Postgres ruleutils that was rendered
  meaningless by a previous Citus commit (#8136)

* Fixes incorrect rejection of colocated joins when Row Level
  Security policies use volatile functions (#8357)

* Fixes metadata sync failure when distributed tables use domain
  types defined in non-public schemas (#8363)

* Fixes a crash on CREATE STATISTICS with non-table
  expressions (#8213, #8227)

* Fixes invalid input syntax for type bigint in citus_stats with
  large tables (#8166)

* Fixes an undefined behavior that could happen when computing
  tenant score for citus_stat_tenants (#7954)

### citus v13.1.1 (Oct 1st, 2025) ###

* Adds support for latest PG minors: 14.19, 15.14, 16.10 (#8142)

* Fixes an assertion failure when an expression in the query references
  a CTE (#8106)

* Fixes a bug that causes an unexpected error when executing
  repartitioned MERGE (#8201)

* Fixes a bug that causes allowing UPDATE / MERGE queries that may
  change the distribution column value (#8214)

* Updates dynamic_library_path automatically when CDC is enabled (#8025)

### citus v13.0.5 (Oct 1st, 2025) ###

* Adds support for latest PG minors: 14.19, 15.14, 16.10 (#7986, #8142)

* Fixes a bug that causes an unexpected error when executing
  repartitioned MERGE (#8201)

* Fixes a bug that causes allowing UPDATE / MERGE queries that may
  change the distribution column value (#8214)

* Fixes a bug in redundant WHERE clause detection (#8162)

* Updates dynamic_library_path automatically when CDC is enabled (#8025)

### citus v12.1.10 (Oct 1, 2025) ###

* Adds support for latest PG minors: 14.19, 15.14, 16.10 (#7986, #8142)

* Fixes a bug that causes allowing UPDATE / MERGE queries that may
  change the distribution column value (#8214)

* Fixes an assertion failure that happens when querying a view that is
  defined on distributed tables (#8136)

### citus v12.1.9 (Sep 3, 2025) ###

* Adds a GUC for queries with outer joins and pseudoconstant quals (#8163)

* Updates dynamic_library_path automatically when CDC is enabled (#7715)

### citus v13.2.0 (August 18, 2025) ###

* Adds `citus_add_clone_node()`, `citus_add_clone_node_with_nodeid()`,
  `citus_remove_clone_node()` and `citus_remove_clone_node_with_nodeid()`
  UDFs to support snapshot-based node splits. This feature allows promoting
  a streaming replica (clone) to a primary node and rebalancing shards
  between the original and newly promoted node without requiring a full data
  copy. This greatly reduces rebalance times for scale-out operations when
  the new node already has the data via streaming replication (#8122)

* Improves performance of shard rebalancer by parallelizing moves and removing
  bottlenecks that blocked concurrent logical-replication transfers. This
  reduces rebalance windows especially for clusters with large reference
  tables and allows multiple shard transfers to run in parallel (#7983)

* Adds citus.enable_recurring_outer_join_pushdown GUC (enabled by default)
  to allow pushing down LEFT/RIGHT outer joins having a reference table in
  the outer side and a distributed table on the inner side (e.g.,
  \<reference table\> LEFT JOIN \<distributed table\>) (#7973)

* Adds citus.enable_local_fast_path_query_optimization (enabled by default)
  GUC to avoid unnecessary query deparsing to improve performance of
  fast-path queries targeting local shards (#8035)

* Adds `citus_stats()` UDF that can be used to retrieve distributed `pg_stats`
  for the provided Citus table. (#8026)

* Avoids automatically creating citus_columnar when there are no relations
  using it (#8081)

* Makes sure to check if the distribution key is in the target list before
  pushing down a query with a union and an outer join (#8092)

* Fixes a bug in EXPLAIN ANALYZE to prevent unintended (duplicate) execution
  of the (sub)plans during the explain phase (#8017)

* Fixes potential memory corruptions that could happen when accessing
  various catalog tables after a Citus downgrade is followed by a Citus
  upgrade (#7950, #8120, #8124, #8121, #8114, #8146)

* Fixes UPDATE statements with indirection and array/jsonb subscripting with
  more than one field (#7675)

* Fixes an assertion failure that happens when an expression in the query
  references a CTE (#8106)

* Fixes an assertion failure that happens when querying a view that is
  defined on distributed tables (#8136)

### citus v13.1.0 (May 30th, 2025) ###

* Adds `citus_stat_counters` view that can be used to query
  stat counters that Citus collects while the feature is enabled, which is
  controlled by citus.enable_stat_counters. `citus_stat_counters()` can be
  used to query the stat counters for the provided database oid and
  `citus_stat_counters_reset()` can be used to reset them for the provided
  database oid or for the current database if nothing or 0 is provided (#7917)

* Adds `citus_nodes` view that displays the node name, port role, and "active"
  for nodes in the cluster (#7968)

* Adds `citus_is_primary_node()` UDF to determine if the current node is a
  primary node in the cluster (#7720)

* Adds support for propagating `GRANT/REVOKE` rights on table columns (#7918)

* Adds support for propagating `REASSIGN OWNED BY` commands (#7319)

* Adds support for propagating `CREATE`/`DROP` database from all nodes (#7240,
  #7253, #7359)

* Propagates `SECURITY LABEL ON ROLE` statement from any node (#7508)

* Adds support for issuing role management commands from worker nodes (#7278)

* Adds support for propagating `ALTER USER RENAME` commands (#7204)

* Adds support for propagating `ALTER DATABASE <db_name> SET ..` commands
  (#7181)

* Adds support for propagating `SECURITY LABEL` on tables and columns (#7956)

* Adds support for propagating `COMMENT ON <database>/<role>` commands (#7388)

* Moves some of the internal citus functions from `pg_catalog` to
  `citus_internal` schema (#7473, #7470, #7466, 7456, 7450)

* Adjusts `max_prepared_transactions` only when it's set to default on PG >= 16
  (#7712)

* Adds skip_qualify_public param to shard_name() UDF to allow qualifying for
  "public" schema when needed (#8014)

* Allows `citus_*_size` on indexes on a distributed tables (#7271)

* Allows `GRANT ADMIN` to now also be `INHERIT` or `SET` in support of PG16

* Makes sure `worker_copy_table_to_node` errors out with Citus tables (#7662)

* Adds information to explain output when using
  `citus.explain_distributed_queries=false` (#7412)

* Logs username in the failed connection message (#7432)

* Makes sure to avoid incorrectly pushing-down the outer joins between
  distributed tables and recurring relations (like reference tables, local
  tables and `VALUES(..)` etc.) prior to PG 17 (#7937)

* Prevents incorrectly pushing `nextval()` call down to workers to avoid using
  incorrect sequence value for some types of `INSERT .. SELECT`s (#7976)

* Makes sure to prevent `INSERT INTO ... SELECT` queries involving subfield or
  sublink, to avoid crashes (#7912)

* Makes sure to take improvement_threshold into the account
  in `citus_add_rebalance_strategy()` (#7247)

* Makes sure to disallow creating a replicated distributed
  table concurrently (#7219)

* Fixes a bug that causes omitting `CASCADE` clause for the commands sent to
  workers for `REVOKE` commands on tables (#7958)

* Fixes an issue detected using address sanitizer (#7948, #7949)

* Fixes a bug in deparsing of shard query in case of "output-table column" name
  conflict (#7932)

* Fixes a crash in columnar custom scan that happens when a columnar table is
  used in a join (#7703)

* Fixes `MERGE` command when insert value does not have source distributed
  column (#7627)

* Fixes performance issue when using `\d tablename` on a server with many
  tables (#7577)

* Fixes performance issue in `GetForeignKeyOids` on systems with many
  constraints (#7580)

* Fixes performance issue when distributing a table that depends on an
  extension (#7574)

* Fixes performance issue when creating distributed tables if many already
  exist (#7575)

* Fixes a crash caused by some form of `ALTER TABLE ADD COLUMN` statements. When
  adding multiple columns, if one of the `ADD COLUMN` statements contains a
  `FOREIGN` constraint ommitting the referenced
  columns in the statement, a `SEGFAULT` occurs (#7522)

* Fixes assertion failure in maintenance daemon during Citus upgrades  (#7537)

* Fixes segmentation fault when using `CASE WHEN` in `DO` block functions
  (#7554)

* Fixes undefined behavior in `master_disable_node` due to argument mismatch
  (#7492)

* Fixes incorrect propagating of `GRANTED BY` and `CASCADE/RESTRICT` clauses
  for `REVOKE` statements (#7451)

* Fixes the incorrect column count after `ALTER TABLE` (#7379)

* Fixes timeout when underlying socket is changed for an inter-node connection
  (#7377)

* Fixes memory leaks (#7441, #7440)

* Fixes leaking of memory and memory contexts when tracking foreign keys between
  Citus tables (#7236)

* Fixes a potential segfault for background rebalancer (#7694)

* Fixes potential `NULL` dereference in casual clocks (#7704)

### citus v13.0.4 (May 29th, 2025) ###

* Fixes an issue detected using address sanitizer (#7966)

* Error out for queries with outer joins and pseudoconstant quals in versions
  prior to PG 17 (#7937)

### citus v12.1.8 (May 29, 2025) ###

* Fixes a crash in left outer joins that can happen when there is an an
  aggregate on a column from the inner side of the join (#7904)

* Fixes an issue detected using address sanitizer (#7965)

* Fixes a crash when executing a prepared CALL, which is not pure SQL but
available with some drivers like npgsql and jpgdbc (#7288)

### citus v13.0.3 (March 20th, 2025) ###

* Fixes a version bump issue in 13.0.2

### citus v13.0.2 (March 12th, 2025) ###

* Fixes a crash in columnar custom scan that happens when a columnar table is
  used in a join. (#7647)

* Fixes a bug that breaks `UPDATE SET (...) = (SELECT some_func(),... )`
  type of queries on Citus tables (#7914)

* Fixes a planning error caused by a redundant WHERE clause (#7907)

* Fixes a crash in left outer joins that can happen when there is an aggregate
  on a column from the inner side of the join. (#7901)

* Fixes deadlock with transaction recovery that is possible during Citus
  upgrades. (#7910)

* Fixes a bug that prevents inserting into Citus tables that uses
  a GENERATED ALWAYS AS IDENTITY column. (#7920)

* Ensures that a MERGE command on a distributed table with a WHEN NOT MATCHED BY
  SOURCE clause runs against all shards of the distributed table. (#7900)

* Fixes a bug that breaks router updates on distributed tables
  when a reference table is used in the subquery (#7897)

### citus v12.1.7 (Feb 6, 2025) ###

* Fixes a crash that happens because of unsafe catalog access when re-assigning
  the global pid after `application_name` changes (#7791)

* Prevents crashes when another extension skips executing the
  `ClientAuthentication_hook` of Citus. (#7836)

### citus v13.0.1 (February 4th, 2025) ###

* Drops support for PostgreSQL 14 (#7753)

### citus v13.0.0 (January 22, 2025) ###

* Adds support for PostgreSQL 17 (#7699, #7661)

* Adds `JSON_TABLE()` support in distributed queries (#7816)

* Propagates `MERGE ... WHEN NOT MATCHED BY SOURCE` (#7807)

* Propagates `MEMORY` and `SERIALIZE` options of `EXPLAIN` (#7802)

* Adds support for identity columns in distributed partitioned tables (#7785)

* Allows specifying an access method for distributed partitioned tables (#7818)

* Allows exclusion constraints on distributed partitioned tables (#7733)

* Allows configuring sslnegotiation using `citus.node_conn_info` (#7821)

* Avoids wal receiver timeouts during large shard splits (#7229)

* Fixes a bug causing incorrect writing of data to target `MERGE` repartition
  command (#7659)

* Fixes a crash that happens because of unsafe catalog access when re-assigning
  the global pid after `application_name` changes (#7791)

* Fixes incorrect `VALID UNTIL` setting assumption made for roles when syncing
  them to new nodes (#7534)

* Fixes segfault when calling distributed procedure with a parameterized
  distribution argument (#7242)

* Fixes server crash when trying to execute `activate_node_snapshot()` on a
  single-node cluster (#7552)

* Improves `citus_move_shard_placement()` to fail early if there is a new node
  without reference tables yet (#7467)

### citus v12.1.6 (Nov 14, 2024) ###

* Propagates `SECURITY LABEL .. ON ROLE` statements (#7304)

* Fixes crash caused by running queries with window partition (#7718)

### citus v12.1.5 (July 17, 2024) ###

* Adds support for MERGE commands with single shard distributed target tables
  (#7643)

* Fixes an error with MERGE commands when insert value does not have source
  distribution column (#7627)

### citus v12.1.4 (May 28, 2024) ###

* Adds null check for node in HasRangeTableRef (#7604)

### citus v12.1.3 (April 18, 2024) ###

* Allows overwriting host name for all inter-node connections by
  supporting "host" parameter in citus.node_conninfo (#7541)

* Avoids distributed deadlocks by changing the order in which the locks are
  acquired for the target and reference tables (#7542)

* Fixes a performance issue when distributing a table that depends on an
  extension (#7574)

* Fixes a performance issue when using "\d tablename" on a server with
  many tables (#7577)

* Fixes a crash caused by some form of ALTER TABLE ADD COLUMN
  statements. When adding multiple columns, if one of the ADD COLUMN
  statements contains a FOREIGN constraint omitting the referenced
  columns in the statement, a SEGFAULT was occurring. (#7522)

* Fixes a performance issue when creating distributed tables if many
  already exist (#7575, #7579)

* Fixes a bug when hostname in pg_dist_node resolves to multiple IPs
  (#7377)

* Fixes performance issue when tracking foreign key constraints on
  systems with many constraints (#7578)

* Fixes segmentation fault when using CASE WHEN in DO block within
  functions. (#7554)

* Fixes undefined behavior in master_disable_node due to argument
  mismatch (#7492)

* Fixes some potential bugs by correctly marking some variables as
  volatile (#7570)

* Logs username in the failed connection message (#7432)

### citus v11.0.10 (February 15, 2024) ###

* Removes pg_send_cancellation and all references (#7135)

### citus v12.1.2 (February 12, 2024) ###

* Fixes the incorrect column count after ALTER TABLE (#7379)

### citus v12.0.1 (July 11, 2023) ###

* Fixes incorrect default value assumption for VACUUM(PROCESS_TOAST) #7122)

* Fixes a bug that causes an unexpected error when adding a column
  with a NULL constraint (#7093)

* Fixes a bug that could cause COPY logic to skip data in case of OOM (#7152)

* Fixes a bug with deleting colocation groups (#6929)

* Fixes memory and memory contexts leaks in Foreign Constraint Graphs (#7236)

* Fixes shard size bug with too many shards (#7018)

* Fixes the incorrect column count after ALTER TABLE (#7379)

* Improves citus_tables view performance (#7050)

* Makes sure to disallow creating a replicated distributed table
  concurrently (#7219)

* Removes pg_send_cancellation and all references (#7135)

### citus v11.3.1 (February 12, 2024) ###

* Disallows MERGE when the query prunes down to zero shards (#6946)

* Fixes a bug related to non-existent objects in DDL commands (#6984)

* Fixes a bug that could cause COPY logic to skip data in case of OOM (#7152)

* Fixes a bug with deleting colocation groups (#6929)

* Fixes incorrect results on fetching scrollable with hold cursors (#7014)

* Fixes memory and memory context leaks in Foreign Constraint Graphs (#7236)

* Fixes replicate reference tables task fail when user is superuser (#6930)

* Fixes the incorrect column count after ALTER TABLE (#7379)

* Improves citus_shard_sizes performance (#7050)

* Makes sure to disallow creating a replicated distributed table
  concurrently (#7219)

* Removes pg_send_cancellation and all references (#7135)

### citus v11.2.2 (February 12, 2024) ###

* Fixes a bug in background shard rebalancer where the replicate
  reference tables task fails if the current user is not a superuser (#6930)

* Fixes a bug related to non-existent objects in DDL commands (#6984)

* Fixes a bug that could cause COPY logic to skip data in case of OOM (#7152)

* Fixes a bug with deleting colocation groups (#6929)

* Fixes incorrect results on fetching scrollable with hold cursors (#7014)

* Fixes memory and memory context leaks in Foreign Constraint Graphs (#7236)

* Fixes the incorrect column count after ALTER TABLE (#7379)

* Improves failure handling of distributed execution (#7090)

* Makes sure to disallow creating a replicated distributed table
  concurrently (#7219)

* Removes pg_send_cancellation (#7135)

### citus v11.1.7 (February 12, 2024) ###

* Fixes memory and memory context leaks in Foreign Constraint Graphs (#7236)

* Fixes a bug related to non-existent objects in DDL commands (#6984)

* Fixes a bug that could cause COPY logic to skip data in case of OOM (#7152)

* Fixes a bug with deleting colocation groups (#6929)

* Fixes incorrect results on fetching scrollable with hold cursors (#7014)

* Fixes the incorrect column count after ALTER TABLE (#7379)

* Improves failure handling of distributed execution (#7090)

* Makes sure to disallow creating a replicated distributed table
  concurrently (#7219)

* Removes pg_send_cancellation and all references (#7135)

### citus v11.0.9 (February 12, 2024) ###

* Fixes a bug that could cause COPY logic to skip data in case of OOM (#7152)

* Fixes a bug with deleting colocation groups (#6929)

* Fixes memory and memory context leaks in Foreign Constraint Graphs (#7236)

* Fixes the incorrect column count after ALTER TABLE (#7462)

* Improve failure handling of distributed execution (#7090)

### citus v12.1.1 (November 9, 2023) ###

* Fixes leaking of memory and memory contexts in Citus foreign key cache
  (#7236)

* Makes sure to disallow creating a replicated distributed table concurrently
  (#7219)

### citus v12.1.0 (September 12, 2023) ###

* Adds support for PostgreSQL 16.0 (#7173)

* Add `citus_schema_move()` function which moves tables within a
  distributed schema to another node (#7180)

* Adds `citus_pause_node_within_txn()` UDF that allows pausing the node with
  given id (#7089)

* Makes sure to enforce shard level colocation with the GUC
  `citus.enable_non_colocated_router_query_pushdown` (#7076)

* Allows creating reference / distributed-schema tables from local tables added
  to metadata and that use identity columns (#7131)

* Propagates `BUFFER_USAGE_LIMIT` option in `VACUUM` and `ANALYZE` (#7114)

* Propagates `PROCESS_MAIN`, `SKIP_DATABASE_STATS`, `ONLY_DATABASE_STATS`
  options in `VACUUM` (#7114)

* Propagates `GENERIC_PLAN` option in `EXPLAIN` (#7141)

* Propagates "rules" option in `CREATE COLLATION` (#7185)

* Propagates `GRANT`/ `REVOKE` for database privileges (#7109)

* Adds TRUNCATE trigger support on Citus foreign tables (#7170)

* Removes `pg_send_cancellation` (#7135)

* Prevents unnecessarily pulling the data into coordinator for some
  `INSERT .. SELECT` queries that target a single-shard group (#7077)

* Makes sure that rebalancer throws an error if replication factor is greater
  than the shard allowed node count. Also makes sure to avoid moving a shard
  to a node that it already exists on. (#7074)

* Fixes a bug that may appear during 2PC recovery when there are multiple
  databases (#7174)

* Fixes a bug that could cause `COPY` logic to skip data in case of
  out-of-memory (#7152)

* Fixes a bug that causes an unexpected error when adding a column with
  a `NULL` constraint (#7093)

* Fixes `PROCESS_TOAST` default value to `true` (#7122)

* Improves the error thrown when there is datatype mismatch in `MERGE ON`
  (#7081)

### citus v12.0.0 (July 11, 2023) ###

* Adds support for schema-based sharding.
  While `citus.enable_schema_based_sharding` GUC allows sharding the database
  based on newly created schemas, `citus_schema_distribute()` allows doing so
  for the existing schemas. Distributed schemas used for sharding the database
  can be listed by using the view `citus_schemas`, monitored by using the view
  `citus_stat_schemas`, and undistributed by using the udf
  `citus_schema_undistribute()`
  (#6866, #6979, #6933, #6936 and many others)

* Supports MERGE command across non-colocated distributed tables/subqueries,
  reference tables and joins on non-distribution columns (#6927)

* Drops PG13 Support (#7002, #7007)

* Changes default rebalance strategy to by_disk_size (#7033)

* Changes by_disk_size rebalance strategy to have a base size (#7035)

* Improves citus_tables view performance (#7018)

* Improves tenant monitoring performance (#6868)

* Introduces the GUC `citus.stat_tenants_untracked_sample_rate` for sampling in
  tenant monitoring (#7026)

* Adds CPU usage to citus_stat_tenants (#6844)

* Propagates `ALTER SCHEMA .. OWNER TO ..` commands to worker (#6987)

* Allows `ADD COLUMN` in command string with other commands (#7032)

* Allows `DROP CONSTRAINT` in command string with other commands (#7012)

* Makes sure to properly handle index storage options for `ADD CONSTRAINT
  `/ COLUMN commands (#7032)

* Makes sure to properly handle `IF NOT EXISTS` for `ADD COLUMN` commands
  (#7032)

* Allows using generated identity column based on int/smallint when creating
  a distributed table with the limitation of not being able perform DMLs on
  identity columns from worker nodes (#7008)

* Supports custom cast from / to timestamptz in time partition management UDFs
  (#6923)

* Optimizes pushdown planner on memory and cpu (#6945)

* Changes citus_shard_sizes view's table_name column to shard_id (#7003)

* The GUC search_path is now reported when it is updated (#6983)

* Disables citus.enable_non_colocated_router_query_pushdown GUC by default to
  ensure generating a consistent distributed plan for the queries that
  reference non-colocated distributed tables (#6909)

* Disallows MERGE with filters that prune down to zero shards (#6946)

* Makes sure to take `shouldhaveshards` setting into account for a node when
  planning rebalance steps (#6887)

* Improves the compatibility with other extension by forwarding to existing
  emit_log_hook in our log hook (#6877)

* Fixes wrong result when using `NOT MATCHED` with MERGE command (#6943)

* Fixes querying the view `citus_shard_sizes` when there are too many shards
  (#7018)

* Fixes a bug related to type casts from other types to text/varchar (#6391)

* Fixes propagating `CREATE SCHEMA AUTHORIZATION ..` with no schema name
  (#7015)

* Fixes an error when creating a FOREIGN KEY without a name referencing a schema
  qualified table (#6986)

* Fixes a rare bug which mostly happens with queries that contain both outer
  join and where clauses  (#6857)

* Fixes a bug related to propagation of schemas when pg_dist_node is empty
  (#6900)

* Fixes a crash when a query is locally executed with explain analyze (#6892)

### citus v11.3.0 (May 2, 2023) ###

* Introduces CDC implementation for Citus using logical replication
  (#6623, #6810, #6827)

* Adds support for `MERGE` command on co-located distributed tables joined on
  distribution column (#6696, #6733)

* Adds the view `citus_stat_tenants` that monitor statistics on tenant usages
  (#6725)

* Adds the GUC `citus.max_background_task_executors_per_node` to control number
  of background task executors involving a node (#6771)

* Allows parallel shard moves in background rebalancer (#6756)

* Introduces the GUC `citus.metadata_sync_mode` that introduces nontransactional
  mode for metadata sync (#6728, #6889)

* Propagates CREATE/ALTER/DROP PUBLICATION statements for distributed tables
  (#6776)

* Adds the GUC `citus.enable_non_colocated_router_query_pushdown` to ensure
  generating a consistent distributed plan for the queries that reference
  non-colocated distributed tables when set to "false" (#6793)

* Checks if all moves are able to be done via logical replication for rebalancer
  (#6754)

* Correctly reports shard size in `citus_shards` view (#6748)

* Fixes a bug in shard copy operations (#6721)

* Fixes a bug that prevents enforcing identity column restrictions on worker
  nodes (#6738)

* Fixes a bug with `INSERT .. SELECT` queries with identity columns (#6802)

* Fixes an issue that caused some queries with custom aggregates to fail (#6805)

* Fixes an issue when `citus_set_coordinator_host` is called more than once
  (#6837)

* Fixes an uninitialized memory access in shard split API (#6845)

* Fixes memory leak and max allocation block errors during metadata syncing
  (#6728)

* Fixes memory leak in `undistribute_table` (#6693)

* Fixes memory leak in `alter_distributed_table` (#6726)

* Fixes memory leak in `create_distributed_table` (#6722)

* Fixes memory leak issue with query results that returns single row (#6724)

* Improves rebalancer when shard groups have placement count less than worker
  count (#6739)

* Makes sure to stop maintenance daemon when dropping a database even without
  Citus extension (#6688)

* Prevents using `alter_distributed_table` and `undistribute_table` UDFs when a
  table has identity columns (#6738)

* Prevents using identity columns on data types other than `bigint` on
  distributed tables (#6738)

### citus v11.2.1 (April 20, 2023) ###

* Correctly reports shard size in `citus_shards` view (#6748)

* Fixes a bug in shard copy operations (#6721)

* Fixes a bug with `INSERT .. SELECT` queries with identity columns (#6802)

* Fixes an uninitialized memory access in shard split API (#6845)

* Fixes compilation for PG13.10 and PG14.7 (#6711)

* Fixes memory leak in `alter_distributed_table` (#6726)

* Fixes memory leak issue with query results that returns single row (#6724)

* Prevents using `alter_distributed_table` and `undistribute_table` UDFs when a
  table has identity columns (#6738)

* Prevents using identity columns on data types other than `bigint` on
  distributed tables (#6738)

### citus v11.1.6 (April 20, 2023) ###

* Correctly reports shard size in `citus_shards` view (#6748)

* Fixes a bug in shard copy operations (#6721)

* Fixes a bug that breaks pg upgrades if the user has a columnar table (#6624)

* Fixes a bug that causes background rebalancer to fail when a reference table
  doesn't have a primary key (#6682)

* Fixes a regression in allowed foreign keys on distributed tables (#6550)

* Fixes a use-after-free bug in connection management (#6685)

* Fixes an unexpected foreign table error by disallowing to drop the
  `table_name` option (#6669)

* Fixes an uninitialized memory access in shard split API (#6845)

* Fixes compilation for PG13.10 and PG14.7 (#6711)

* Fixes crash that happens when trying to replicate a reference table that is
  actually dropped (#6595)

* Fixes memory leak issue with query results that returns single row (#6724)

* Fixes the modifiers for subscription and role creation (#6603)

* Makes sure to quote all identifiers used for logical replication to prevent
  potential issues (#6604)

* Makes sure to skip foreign key validations at the end of shard moves (#6640)

### citus v11.0.8 (April 20, 2023) ###

* Correctly reports shard size in `citus_shards` view (#6748)

* Fixes a bug that breaks pg upgrades if the user has a columnar table (#6624)

* Fixes an unexpected foreign table error by disallowing to drop the
  `table_name` option (#6669)

* Fixes compilation warning on PG13 + OpenSSL 3.0 (#6038, #6502)

* Fixes crash that happens when trying to replicate a reference table that is
  actually dropped (#6595)

* Fixes memory leak issue with query results that returns single row (#6724)

* Fixes the modifiers for subscription and role creation (#6603)

* Fixes two potential dangling pointer issues (#6504, #6507)

* Makes sure to quote all identifiers used for logical replication to prevent
  potential issues (#6604)

### citus v10.2.9 (April 20, 2023) ###

* Correctly reports shard size in `citus_shards` view (#6748)

* Fixes a bug in `ALTER EXTENSION citus UPDATE` (#6383)

* Fixes a bug that breaks pg upgrades if the user has a columnar table (#6624)

* Fixes a bug that prevents retaining columnar table options after a
  table-rewrite (#6337)

* Fixes memory leak issue with query results that returns single row (#6724)

* Raises memory limits in columnar from 256MB to 1GB for reads and writes
  (#6419)

### citus v10.1.6 (April 20, 2023) ###

* Fixes a crash that occurs when the aggregate that cannot be pushed-down
  returns empty result from a worker (#5679)

* Fixes columnar freezing/wraparound bug (#5962)

* Fixes memory leak issue with query results that returns single row (#6724)

* Prevents alter table functions from dropping extensions (#5974)

### citus v10.0.8 (April 20, 2023) ###

* Fixes a bug that could break `DROP SCHEMA/EXTENSON` commands when there is a
  columnar table (#5458)

* Fixes a crash that occurs when the aggregate that cannot be pushed-down
  returns empty result from a worker (#5679)

* Fixes columnar freezing/wraparound bug (#5962)

* Fixes memory leak issue with query results that returns single row (#6724)

* Prevents alter table functions from dropping extensions (#5974)

### citus v9.5.12 (April 20, 2023) ###

* Fixes a crash that occurs when the aggregate that cannot be pushed-down
  returns empty result from a worker (#5679)

* Fixes memory leak issue with query results that returns single row (#6724)

* Prevents alter table functions from dropping extensions (#5974)

### citus v11.2.0 (January 30, 2023) ###

* Adds support for outer joins with reference tables / complex subquery-CTEs
  in the outer side of the join (e.g., \<reference table\> LEFT JOIN
  \<distributed table\>)

* Adds support for creating `PRIMARY KEY`s and `UNIQUE`/`EXCLUSION`/`CHECK`/
  `FOREIGN KEY` constraints via `ALTER TABLE` command without providing a
  constraint name

* Adds support for using identity columns on Citus tables

* Adds support for `MERGE` command on local tables

* Adds `citus_job_list()`, `citus_job_status()` and `citus_rebalance_status()`
  UDFs that allow monitoring rebalancer progress

* Adds `citus_task_wait()` UDF to wait on desired task status

* Adds `source_lsn`, `target_lsn` and `status` fields into
  `get_rebalance_progress()`

* Introduces `citus_copy_shard_placement()` UDF with node id

* Introduces `citus_move_shard_placement()` UDF with node id

* Propagates `BEGIN` properties to worker nodes

* Propagates `DROP OWNED BY` to worker nodes

* Deprecates `citus.replicate_reference_tables_on_activate` and makes it
  always `off`

* Drops GUC `citus.defer_drop_after_shard_move`

* Drops GUC `citus.defer_drop_after_shard_split`

* Drops `SHARD_STATE_TO_DELETE` state and uses the cleanup records instead

* Allows `citus_update_node()` to work with nodes from different clusters

* Adds signal handlers for queue monitor to gracefully shutdown, cancel and to
  see config changes

* Defers cleanup after a failure in shard move or split

* Extends cleanup process for replication artifacts

* Improves a query that terminates compelling backends from
  `citus_update_node()`

* Includes Citus global pid in all internal `application_name`s

* Avoids leaking `search_path` to workers when executing DDL commands

* Fixes `alter_table_set_access_method error()` for views

* Fixes `citus_drain_node()` to allow draining the specified worker only

* Fixes a bug in global pid assignment for connections opened by rebalancer
  internally

* Fixes a bug that causes background rebalancer to fail when a reference table
  doesn't have a primary key

* Fixes a bug that might cause failing to query the views based on tables that
  have renamed columns

* Fixes a bug that might cause incorrectly planning the sublinks in query tree

* Fixes a floating point exception during
  `create_distributed_table_concurrently()`

* Fixes a rebalancer failure due to integer overflow in subscription and role
  creation

* Fixes a regression in allowed foreign keys on distributed tables

* Fixes a use-after-free bug in connection management

* Fixes an unexpected foreign table error by disallowing to drop the
  table_name option

* Fixes an uninitialized memory access in `create_distributed_function()`

* Fixes crash that happens when trying to replicate a reference table that is
  actually dropped

* Make sure to cleanup the shard on the target node in case of a
  failed/aborted shard move

* Makes sure to create replication artifacts with unique names

* Makes sure to disallow triggers that depend on extensions

* Makes sure to quote all identifiers used for logical replication to prevent
  potential issues

* Makes sure to skip foreign key validations at the end of shard moves

* Prevents crashes on `UPDATE` with certain `RETURNING` clauses

* Propagates column aliases in the shard-level commands

### citus v11.1.5 (December 12, 2022) ###

* Fixes two potential dangling pointer issues

* Fixes compilation warning on PG13 + OpenSSL 3.0

### citus v11.0.7 (November 8, 2022) ###

* Adds the GUC `citus.allow_unsafe_constraints` to allow unique/exclusion/
  primary key constraints without distribution column

* Allows `citus_internal` `application_name` with additional suffix

* Disallows having `ON DELETE/UPDATE SET DEFAULT` actions on columns that
  default to sequences

* Fixes a bug in `ALTER EXTENSION citus UPDATE`

* Fixes a bug that causes a crash with empty/null password

* Fixes a bug that causes not retaining trigger enable/disable settings when
  re-creating them on shards

* Fixes a bug that might cause inserting incorrect `DEFAULT` values when
  applying foreign key actions

* Fixes a bug that prevents retaining columnar table options after a
  table-rewrite

* Fixes a bug that prevents setting colocation group of a partitioned
  distributed table to `none`

* Fixes an issue that can cause logical reference table replication to fail

* Raises memory limits in columnar from 256MB to 1GB for reads and writes

### citus v11.1.4 (October 24, 2022) ###

* Fixes an upgrade problem for `worker_fetch_foreign_file` when upgrade path
  starts from 8.3 up to 11.1

* Fixes an upgrade problem for `worker_repartition_cleanup` when upgrade path
  starts from 9.1 up to 11.1

### citus v11.1.3 (October 14, 2022) ###

* Adds support for PostgreSQL 15.0

* Fixes a bug in `ALTER EXTENSION citus UPDATE`

* Fixes a bug that causes a crash with empty/null password

* Fixes a bug that causes not retaining trigger enable/disable settings when
  re-creating them on shards

* Fixes a bug that prevents retaining columnar table options after a
  table-rewrite

* Raises memory limits in columnar from 256MB to 1GB for reads and writes

### citus v11.1.2 (September 30, 2022) ###

* Adds support for PostgreSQL 15rc1

* Disallows having `ON DELETE/UPDATE SET DEFAULT` actions on columns that
  default to sequences

* Fixes a bug that might cause inserting incorrect `DEFAULT` values when
  applying foreign key actions

* Fixes a performance issue related to shard-moves by creating replica
  identities before copying shards

* Improves logging during shard-splits and resource cleanup

* Makes sure to reuse connections for shard-splits and logical replication

* Makes sure to try dropping replication slots a few more times after a failure
  at the end of the shard-split

### citus v11.1.1 (September 16, 2022) ###

* Fixes a bug that prevents `create_distributed_table_concurrently()` working
  on an empty node

### citus v11.1.0 (September 15, 2022) ###

* Adds support for PostgreSQL 15beta4

* Adds ability to run shard rebalancer in the background

* Adds `create_distributed_table_concurrently()` UDF to distribute tables
  without interrupting the application

* Adds `citus_split_shard_by_split_points()` UDF that allows
  splitting a shard to specified set of nodes without blocking writes
  and based on given split points

* Adds support for non-blocking tenant isolation

* Adds support for isolation tenants that use partitioned tables
  or columnar tables

* Separates columnar table access method into a separate logical extension

* Adds support for online replication in `replicate_reference_tables()`

* Improves performance of blocking shard moves

* Improves non-blocking shard moves with a faster custom copy logic

* Creates all foreign keys quickly at the end of a shard move

* Limits `get_rebalance_progress()` to show shards in moving state

* Makes `citus_move_shard_placement()` idempotent if shard already exists
  on target node

* Shows `citus_copy_shard_placement()` progress in `get_rebalance_progres()`

* Supports changing CPU priorities for backends and shard moves

* Adds the GUC `citus.allow_unsafe_constraints` to allow unique/exclusion/
  primary key constraints without distribution column

* Introduces GUC `citus.skip_constraint_validation`

* Introduces `citus_locks` view

* Improves `citus_tables` view by showing local tables added to metadata

* Improves columnar table access method by moving old catalog tables into
  an internal schema and introduces more secure & informative views based
  on them

* Adds support for `GRANT/REVOKE` on aggregates

* Adds support for `NULLS NOT DISTINCT` clauses for indexes for PG15+

* Adds support for setting relation options for columnar tables using
  `ALTER TABLE`

* Adds support for unlogged distributed sequences

* Removes `do_repair` option from `citus_copy_shard_placement()`

* Removes deprecated re-partitioning functions like
  `worker_hash_partition_table()`

* Drops support for isolation tenants that use replicated tables

* Checks existence of the shards before insert, delete, and update

* Hides tables owned by extensions from `citus_tables` and `citus_shards`

* Propagates `VACUUM` and `ANALYZE` to worker nodes

* Makes non-partitioned table size calculation quicker

* Improves `create_distributed_table()` by creating new colocation entries when
  using `colocate_with => 'none'`

* Ensures that `SELECT .. FOR UPDATE` opens a transaction block when used in
  a function call

* Prevents a segfault by disallowing usage of SQL functions referencing to a
  distributed table

* Prevents creating a new colocation entry when replicating reference tables

* Fixes a bug in query escaping in `undistribute_table()` and
  `alter_distributed_table()`

* Fixes a bug preventing the usage of `isolate_tenant_to_new_shard()` with text
  column

* Fixes a bug that may cause `GRANT` to propagate within `CREATE EXTENSION`

* Fixes a bug that causes incorrectly marking `metadatasynced` flag for
  coordinator

* Fixes a bug that may prevent Citus from creating function in transaction
  block properly

* Fixes a bug that prevents promoting read-replicas as primaries

* Fixes a bug that prevents setting colocation group of a partitioned
  distributed table to `none`

* Fixes a bug that prevents using `AUTO` option for `VACUUM (INDEX_CLEANUP)`
  operation

* Fixes a segfault in `citus_copy_shard_placement()`

* Fixes an issue that can cause logical reference table replication to fail

* Fixes schema name qualification for `RENAME SEQUENCE` statement

* Fixes several small memory leaks

* Fixes the transaction timestamp column of the `get_current_transaction_id()`
  on coordinator

* Maps any unused parameters to a generic type in prepared statements

### citus v10.2.8 (August 19, 2022) ###

* Fixes compilation warning caused by latest upgrade script changes

* Fixes compilation warning on PG13 + OpenSSL 3.0

### citus v11.0.6 (August 19, 2022) ###

* Fixes a bug that could cause failures in `CREATE ROLE` statement

* Fixes a bug that could cause failures in `create_distributed_table`

* Fixes a bug that prevents distributing tables that depend on sequences

* Fixes reference table lock contention

* Fixes upgrade paths for 11.0

### citus v10.2.7 (August 19, 2022) ###

* Fixes a bug that could cause failures in `INSERT INTO .. SELECT`

* Fixes a bug that could cause leaking files when materialized views are
  refreshed

* Fixes an unexpected error for foreign tables when upgrading Postgres

* Fixes columnar freezing/wraparound bug

* Fixes reference table lock contention

* Prevents alter table functions from dropping extensions

### citus v11.0.5 (August 1, 2022) ###

* Avoids possible information leakage about existing users

* Allows using `WITH HOLD` cursors with parameters

* Fixes a bug that could cause failures in `INSERT INTO .. SELECT`

* Fixes a bug that prevents pushing down `IN` expressions when using columnar
  custom scan

* Fixes a concurrency bug between creating a co-located distributed table and
  shard moves

* Fixes a crash that can happen due to catalog read in `shmem_exit`

* Fixes an unexpected error caused by constraints when moving shards

* Fixes an unexpected error for foreign tables when upgrading Postgres

* Prevents adding local table into metadata if there is a view with circular
  dependencies on it

* Reduces memory consumption of index name fix for partitioned tables

### citus v11.0.4 (July 13, 2022) ###

* Fixes a bug that prevents promoting read-replicas as primaries

### citus v11.0.3 (July 5, 2022) ###

* Fixes a bug that prevents adding local tables with materialized views to
  Citus metadata

* Fixes a bug that prevents using `COMPRESSION` and `CONSTRAINT` on a column

* Fixes upgrades to Citus 11 when there are no nodes in the metadata

### citus v11.0.2 (June 15, 2022) ###

* Drops support for PostgreSQL 12

* Open sources enterprise features, see the rest of changelog items

* Turns metadata syncing on by default

* Introduces `citus_finish_citus_upgrade()` procedure which is necessary to
  upgrade from earlier versions

* Open sources non-blocking shard moves/shard rebalancer
  (`citus.logical_replication_timeout`)

* Open sources propagation of `CREATE/DROP/ALTER ROLE` statements

* Open sources propagation of `GRANT` statements

* Open sources propagation of `CLUSTER` statements

* Open sources propagation of `ALTER DATABASE ... OWNER TO ...`

* Open sources optimization for `COPY` when loading `JSON` to avoid double
  parsing of the `JSON` object (`citus.skip_jsonb_validation_in_copy`)

* Open sources support for row level security

* Open sources support for `pg_dist_authinfo`, which allows storing different
  authentication options for different users, e.g. you can store
  passwords or certificates here.

* Open sources support for `pg_dist_poolinfo`, which allows using connection
  poolers in between coordinator and workers

* Open sources tracking distributed query execution times using
  citus_stat_statements (`citus.stat_statements_max`,
  `citus.stat_statements_purge_interval`,
  `citus.stat_statements_track`). This is disabled by default.

* Open sources tenant_isolation

* Open sources support for `sslkey` and `sslcert` in `citus.node_conninfo`

* Adds `citus.max_client_connections` GUC to limit non-Citus connections

* Allows locally creating objects having a dependency that cannot be distributed

* Distributes aggregates with `CREATE AGGREGATE` command

* Distributes functions with `CREATE FUNCTION` command

* Adds `citus.create_object_propagation` GUC to control DDL creation behaviour
  in transactions

* Hides shards based on `application_name` prefix

* Prevents specifying `application_name` via `citus.node_conninfo`

* Starts identifying rebalancer backends by `application_name=citus_rebalancer`

* Starts identifying internal backends by `application_name=citus_internal`

* Adds `citus.enable_unsafe_triggers` flag to enable unsafe triggers on
  distributed tables

* Adds `fix_partition_shard_index_names` UDF to fix currently broken names

* Adds propagation for foreign server commands

* Adds propagation of `DOMAIN` objects

* Adds propagation of `TEXT SEARCH CONFIGURATION` objects

* Adds propagation of `TEXT SEARCH DICTIONARY` objects

* Adds support for `ALTER FUNCTION ... SUPPORT ...` commands

* Adds support for `CREATE SCHEMA AUTHORIZATION` statements without schema name

* Adds support for `CREATE/DROP/ALTER VIEW` commands

* Adds support for `TRUNCATE` for foreign tables

* Adds support for adding local tables to metadata using
  `citus_add_local_table_to_metadata()` UDF

* Adds support for adding partitioned local tables to Citus metadata

* Adds support for automatic binary encoding in re-partition joins when possible

* Adds support for foreign tables in MX

* Adds support for operator class parameters in indexes

* Adds support for re-partition joins in transaction blocks

* Adds support for re-partition joins on followers

* Adds support for shard replication > 1 hash distributed tables on Citus MX

* Adds support for `LOCK` commands on distributed tables from worker nodes

* Adds support for `TABLESAMPLE`

* Adds support for propagating views when syncing Citus table metadata

* Improves handling of `IN`, `OUT` and `INOUT` parameters for functions

* Introduces `citus_backend_gpid()` UDF to get global pid of the current backend

* Introduces `citus_check_cluster_node_health` UDF to check cluster connectivity

* Introduces `citus_check_connection_to_node` UDF to check node connectivity

* Introduces `citus_coordinator_nodeid` UDF to find the node id of the
  coordinator node

* Introduces `citus_stat_activity` view and drops `citus_worker_stat_activity`
  UDF

* Introduces `citus.use_citus_managed_tables` GUC to add local tables to Citus
  metadata automatically

* Introduces a new flag `force_delegation` in `create_distributed_function()`

* Introduces `run_command_on_coordinator` UDF

* Introduces `synchronous` option to `citus_disable_node()` UDF

* Introduces `citus_is_coordinator` UDF to check whether a node is the
  coordinator

* Allows adding a unique constraint with an index

* Allows `create_distributed_function()` on a function owned by an extension

* Allows creating distributed tables in sequential mode

* Allows disabling nodes when multiple failures happen

* Allows `lock_table_if_exits` to be called outside of a transaction blocks

* Adds support for pushing procedures with `OUT` arguments down to the worker
  nodes

* Overrides `pg_cancel_backend()` and `pg_terminate_backend()` to run with
  global pid

* Delegates function calls of the form `SELECT .. FROM func()`

* Adds propagation of `CREATE SCHEMA .. GRANT ON SCHEMA ..` commands

* Propagates `pg_dist_object` to worker nodes

* Adds propagation of `SCHEMA` operations

* Adds missing version-mismatch checks for columnar tables

* Adds missing version-mismatch checks for internal functions

* `citus_shard_indexes_on_worker` shows all local shard indexes regardless of
  `search_path`

* `citus_shards_on_worker` shows all local shards regardless of `search_path`

* Enables distributed execution from `run_command_on_*` functions

* Deprecates inactive shard state, never marks any placement inactive

* Disables distributed & reference foreign tables

* Prevents propagating objects having a circular dependency

* Prevents propagating objects having a dependency to an object with unsupported
  type

* Deprecates `master_get_table_metadata` UDF

* Disallows remote execution from queries on shards

* Drops `citus.enable_cte_inlining` GUC

* Drops `citus.single_shard_commit_protocol` GUC, defaults to 2PC

* Drops support for `citus.multi_shard_commit_protocol`, always use 2PC

* Avoids unnecessary errors for `ALTER STATISTICS IF EXISTS` when the statistics
  does not exist

* Fixes a bug that prevents dropping/altering indexes

* Fixes a bug that prevents non-client backends from accessing shards

* Fixes columnar freezing/wraparound bug

* Fixes `invalid read of size 1` memory error with `citus_add_node`

* Fixes schema name qualification for `ALTER/DROP SEQUENCE`

* Fixes schema name qualification for `ALTER/DROP STATISTICS`

* Fixes schema name qualification for `CREATE STATISTICS`

* Fixes a bug that causes columnar storage pages to have zero LSN

* Fixes a bug that causes issues while create dependencies from multiple
  sessions

* Fixes a bug that causes reading columnar metapage as all-zeros when
  writing to a columnar table

* Fixes a bug that could break `DROP SCHEMA/EXTENSON` commands when there is a
  columnar table

* Fixes a bug that could break pg upgrades due to missing `pg_depend` records
  for columnar table access method

* Fixes a bug that could cause `CREATE INDEX` to fail for expressions when using
  custom `search_path`

* Fixes a bug that could cause `worker_save_query_explain_analyze` to fail on
  custom types

* Fixes a bug that could cause failed re-partition joins to leak result tables

* Fixes a bug that could cause prerequisite columnar table access method
  objects being not created during pg upgrades

* Fixes a bug that could cause re-partition joins involving local shards to fail

* Fixes a bug that could cause false positive distributed deadlocks due to local
  execution

* Fixes a bug that could cause leaking files when materialized views are
  refreshed

* Fixes a bug that could cause unqualified `DROP DOMAIN IF EXISTS` to fail

* Fixes a bug that could cause wrong schema and ownership after
  `alter_distributed_table`

* Fixes a bug that could cause `EXPLAIN ANALYZE` to fail for prepared statements
  with custom type

* Fixes a bug that could cause Citus not to create function in transaction block
  properly

* Fixes a bug that could cause returning invalid JSON when running
  `EXPLAIN ANALYZE` with subplans

* Fixes a bug that limits usage of sequences in non-int columns

* Fixes a bug that prevents `DROP SCHEMA CASCADE`

* Fixes a build error that happens when `lz4` is not installed

* Fixes a clog lookup failure that could occur when writing to a columnar table

* Fixes a crash that occurs when the aggregate that cannot be pushed-down
  returns empty result from a worker

* Fixes a missing `FROM` clause entry error

* Fixes a possible segfault that could happen when reporting distributed
  deadlock

* Fixes an issue that could cause unexpected errors when there is an in-progress
  write to a columnar table

* Fixes an unexpected error that occurs due to aborted writes to a columnar
  table with an index

* Fixes an unexpected error that occurs when writing to a columnar table created
  in older version

* Fixes issue when compiling Citus from source with some compilers

* Fixes issues on `ATTACH PARTITION` logic

* Fixes naming issues of newly created partitioned indexes

* Honors `enable_metadata_sync` in node operations

* Improves nested execution checks and adds GUC to control
  (`citus.allow_nested_distributed_execution`)

* Improves self-deadlock prevention for `CREATE INDEX / REINDEX CONCURRENTLY`
  commands for builds using PG14 or higher

* Moves `pg_dist_object` to `pg_catalog` schema

* Parallelizes metadata syncing on node activation

* Partitions shards to be co-located with the parent shards

* Prevents Citus table functions from being called on shards

* Prevents creating distributed functions when there are out of sync nodes

* Prevents alter table functions from dropping extensions

* Refrains reading the metadata cache for all tables during upgrade

* Provides notice message for idempotent `create_distributed_function` calls

* Reinstates optimisation for uniform shard interval ranges

* Relaxes table ownership check to privileges check while acquiring lock

* Drops support for `citus.shard_placement_policy` GUC

* Drops `master_append_table_to_shard` UDF

* Drops `master_apply_delete_command` UDF

* Removes copy into new shard logic for append-distributed tables

* Drops support for distributed `cstore_fdw` tables in favor of Citus
  columnar table access method

* Removes support for dropping distributed and local indexes in the same
  statement

* Replaces `citus.enable_object_propagation` GUC with
  `citus.enable_metadata_sync`

* Requires superuser for `citus_add_node()` and `citus_activate_node()` UDFs

* Revokes read access to `columnar.chunk` from unprivileged user

* Disallows unsupported lateral subqueries on distributed tables

* Stops updating shard range in `citus_update_shard_statistics` for append
  tables

### citus v10.2.5 (March 15, 2022) ###

* Fixes a bug that could cause `worker_save_query_explain_analyze` to fail on
  custom types

* Fixes a bug that limits usage of sequences in non-integer columns

* Fixes a crash that occurs when the aggregate that cannot be pushed-down
  returns empty result from a worker

* Improves concurrent metadata syncing and metadata changing DDL operations

### citus v10.2.4 (February 1, 2022) ###

* Adds support for operator class parameters in indexes

* Fixes a bug with distributed functions that have `OUT` parameters or
  return `TABLE`

* Fixes a build error that happens when `lz4` is not installed

* Improves self-deadlock prevention for `CREATE INDEX` &
  `REINDEX CONCURRENTLY` commands for builds using PG14 or higher

* Fixes a bug that causes commands to fail when `application_name` is set

### citus v10.1.4 (February 1, 2022) ###

* Adds missing version checks for columnar tables

* Fixes a bug that could break `DROP SCHEMA/EXTENSION` commands when there is
  a columnar table

* Fixes a build error that happens when `lz4` is not installed

* Fixes a missing `FROM` clause entry error

* Reinstates optimisation for uniform shard interval ranges

* Fixes a bug that causes commands to fail when `application_name` is set

### citus v10.2.3 (November 29, 2021) ###

* Adds `fix_partition_shard_index_names` udf to fix currently broken
  partition index names

* Fixes a bug that could break `DROP SCHEMA/EXTENSION` commands when there is
  a columnar table

* Fixes a bug that could break pg upgrades due to missing `pg_depend` records
  for columnar table access method

* Fixes a missing `FROM` clause entry error

* Fixes an unexpected error that occurs when writing to a columnar table
  created in older versions

* Fixes issue when compiling Citus from source with some compilers

* Reinstates optimisation for uniform shard interval ranges

* Relaxes table ownership check to privileges check while acquiring lock

### citus v10.0.6 (November 12, 2021) ###

* Adds missing version checks for columnar tables

* Fixes a bug that caused `worker_append_table_to_shard` to write as superuser

* Fixes a bug with local cached plans on tables with dropped columns

* Fixes a missing `FROM` clause entry error

* Fixes a use after free issue that could happen when altering a distributed
  table

* Reinstates optimisation for uniform shard interval ranges

### citus v9.5.10 (November 8, 2021) ###

* Fixes a release problem in 9.5.9

### citus v9.5.9 (November 8, 2021) ###

* Fixes a bug preventing `INSERT SELECT .. ON CONFLICT` with a constraint name
  on local shards

* Fixes a bug with local cached plans on tables with dropped columns

* Fixes a crash in queries with a modifying `CTE` and a `SELECT`
  without `FROM`

* Fixes a missing `FROM` clause entry error

* Fixes a missing intermediate result when coordinator is in metadata

* Reinstates optimisation for uniform shard interval ranges

### citus v9.2.8 (November 4, 2021) ###

* Adds a configure flag to enforce security

### citus v9.2.7 (November 3, 2021) ###

* Fixes `ALTER TABLE IF EXISTS SET SCHEMA` with non-existing table bug

* Fixes `CREATE INDEX CONCURRENTLY` with no index name on a postgres table bug

* Fixes a bug that could cause crashes with certain compile flags

* Fixes a crash because of overflow in partition id with certain compile flags

* Fixes a memory leak in subtransaction memory handling

* Fixes deparsing for queries with anonymous column references

### citus v10.2.2 (October 14, 2021) ###

* Fixes a bug that causes reading columnar metapage as all-zeros when
  writing to a columnar table

* Fixes a bug that could cause prerequisite columnar table access method
  objects being not created during pg upgrades

* Fixes a bug that could cause `CREATE INDEX` to fail for expressions when
  using custom `search_path`

* Fixes an unexpected error that occurs due to aborted writes to a columnar
  table with an index

### citus v10.2.1 (September 24, 2021) ###

* Adds missing version-mismatch checks for columnar tables

* Adds missing version-mismatch checks for internal functions

* Fixes a bug that could cause partition shards being not co-located with
  parent shards

* Fixes a bug that prevents pushing down boolean expressions when using
  columnar custom scan

* Fixes a clog lookup failure that could occur when writing to a columnar table

* Fixes an issue that could cause unexpected errors when there is an
  in-progress write to a columnar table

* Revokes read access to `columnar.chunk` from unprivileged user

### citus v10.1.3 (September 17, 2021) ###

* Fixes a bug that caused `worker_append_table_to_shard` to write as superuser

* Fixes a crash in shard rebalancer when no distributed tables exist

* Fixes a use after free issue that could happen when altering a distributed
  table

### citus v9.5.8 (September 15, 2021) ###

* Fixes a bug that caused `worker_append_table_to_shard` to write as superuser

* Fixes a use after free issue that could happen when altering a distributed
  table

### citus v10.2.0 (September 14, 2021) ###

* Adds PostgreSQL 14 support

* Adds hash & btree index support for columnar tables

* Adds helper UDFs for easy time partition management:
  `get_missing_time_partition_ranges`, `create_time_partitions`, and
  `drop_old_time_partitions`

* Adds propagation of ALTER SEQUENCE

* Adds support for ALTER INDEX ATTACH PARTITION

* Adds support for CREATE INDEX ON ONLY

* Allows more graceful failovers when replication factor > 1

* Enables chunk group filtering to work with Params for columnar tables

* Enables qual push down for joins including columnar tables

* Enables transferring of data using binary encoding by default on PG14

* Improves `master_update_table_statistics` and provides distributed deadlock
  detection

* Includes `data_type` and `cache` in sequence definition on worker

* Makes start/stop_metadata_sync_to_node() transactional

* Makes sure that table exists before updating table statistics

* Prevents errors with concurrent `citus_update_table_statistics` and DROP table

* Reduces memory usage of columnar table scans by freeing the memory used for
  last stripe read

* Shows projected columns for columnar tables in EXPLAIN output

* Speeds up dropping partitioned tables

* Synchronizes hasmetadata flag on mx workers

* Uses current user while syncing metadata

* Adds a parameter to cleanup metadata when metadata syncing is stopped

* Fixes a bug about int and smallint sequences on MX

* Fixes a bug that cause partitions to have wrong distribution key after
  DROP COLUMN

* Fixes a bug that caused `worker_append_table_to_shard` to write as superuser

* Fixes a bug that caused `worker_create_or_alter_role` to crash with NULL input

* Fixes a bug that causes pruning incorrect shard of a range distributed table

* Fixes a bug that may cause crash while aborting transaction

* Fixes a bug that prevents attaching partitions when colocated foreign key
  exists

* Fixes a bug with `nextval('seq_name'::text)`

* Fixes a crash in shard rebalancer when no distributed tables exist

* Fixes a segfault caused by use after free in when using a cached connection

* Fixes a UNION pushdown issue

* Fixes a use after free issue that could happen when altering a distributed
  table

* Fixes showing target shard size in the rebalance progress monitor

### citus v10.1.2 (August 16, 2021) ###

* Allows more graceful failovers when replication factor > 1

* Fixes a bug that causes partitions to have wrong distribution key after
  `DROP COLUMN`

### citus v10.0.5 (August 16, 2021) ###

* Allows more graceful failovers when replication factor > 1

* Fixes a bug that causes partitions to have wrong distribution key after
  `DROP COLUMN`

* Improves citus_update_table_statistics and provides distributed deadlock
  detection

### citus v9.5.7 (August 16, 2021) ###

* Allows more graceful failovers when replication factor > 1

* Fixes a bug that causes partitions to have wrong distribution key after
  `DROP COLUMN`

* Improves master_update_table_statistics and provides distributed deadlock
  detection

### citus v9.4.6 (August 8, 2021) ###

* Allows more graceful failovers when replication factor > 1

* Improves master_update_table_statistics and provides distributed deadlock
  detection

### citus v10.1.1 (August 5, 2021) ###

* Improves citus_update_table_statistics and provides distributed deadlock
  detection

* Fixes showing target shard size in the rebalance progress monitor

### citus v10.1.0 (July 14, 2021) ###

* Drops support for PostgreSQL 11

* Adds `shard_count` parameter to `create_distributed_table` function

* Adds support for `ALTER DATABASE OWNER`

* Adds support for temporary columnar tables

* Adds support for using sequences as column default values when syncing
  metadata

* `alter_columnar_table_set` enforces columnar table option constraints

* Continues to remove shards after failure in `DropMarkedShards`

* Deprecates the `citus.replication_model` GUC

* Enables `citus.defer_drop_after_shard_move` by default

* Ensures free disk space before moving a shard

* Fetches shard size on the fly for the rebalance monitor

* Ignores old placements when disabling or removing a node

* Implements `improvement_threshold` at shard rebalancer moves

* Improves orphaned shard cleanup logic

* Improves performance of `citus_shards`

* Introduces `citus.local_hostname` GUC for connections to the current node

* Makes sure connection is closed after each shard move

* Makes sure that target node in shard moves is eligible for shard move

* Optimizes partitioned disk size calculation for shard rebalancer

* Prevents connection errors by properly terminating connections

* Prevents inheriting a distributed table

* Prevents users from dropping & truncating known shards

* Pushes down `VALUES` clause as long as not in outer part of a `JOIN`

* Reduces memory usage for multi-row inserts

* Reduces memory usage while rebalancing shards

* Removes length limits around partition names

* Removes dependencies on the existence of public schema

* Executor avoids opening extra connections

* Excludes orphaned shards while finding shard placements

* Preserves access method of materialized views when undistributing
  or altering distributed tables

* Fixes a bug that allowed moving of shards belonging to a reference table

* Fixes a bug that can cause a crash when DEBUG4 logging is enabled

* Fixes a bug that causes pruning incorrect shard of a range distributed table

* Fixes a bug that causes worker_create_or_alter_role to crash with NULL input

* Fixes a bug where foreign key to reference table was disallowed

* Fixes a bug with local cached plans on tables with dropped columns

* Fixes data race in `get_rebalance_progress`

* Fixes `FROM ONLY` queries on partitioned tables

* Fixes an issue that could cause citus_finish_pg_upgrade to fail

* Fixes error message for local table joins

* Fixes issues caused by omitting public schema in queries

* Fixes nested `SELECT` query with `UNION` bug

* Fixes null relationName bug at parallel execution

* Fixes possible segfaults when using Citus in the middle of an upgrade

* Fixes problems with concurrent calls of `DropMarkedShards`

* Fixes shared dependencies that are not resident in a database

* Fixes stale hostnames bug in prepared statements after `master_update_node`

* Fixes the relation size bug during rebalancing

* Fixes two race conditions in the get_rebalance_progress

* Fixes using 2PC when it might be necessary

### citus v10.0.4 (July 14, 2021) ###

* Introduces `citus.local_hostname` GUC for connections to the current node

* Removes dependencies on the existence of public schema

* Removes limits around long partition names

* Fixes a bug that can cause a crash when DEBUG4 logging is enabled

* Fixes a bug that causes pruning incorrect shard of a range distributed table

* Fixes an issue that could cause citus_finish_pg_upgrade to fail

* Fixes FROM ONLY queries on partitioned tables

* Fixes issues caused by public schema being omitted in queries

* Fixes problems with concurrent calls of DropMarkedShards

* Fixes relname null bug when using parallel execution

* Fixes two race conditions in the get_rebalance_progress

### citus v9.5.6 (July 8, 2021) ###

* Fixes minor bug in `citus_prepare_pg_upgrade` that caused it to lose its
  idempotency

### citus v9.5.5 (July 7, 2021) ###

* Adds a configure flag to enforce security

* Fixes a bug that causes pruning incorrect shard of a range distributed table

* Fixes an issue that could cause citus_finish_pg_upgrade to fail

### citus v9.4.5 (July 7, 2021) ###

* Adds a configure flag to enforce security

* Avoids re-using connections for intermediate results

* Fixes a bug that causes pruning incorrect shard of a range distributed table

* Fixes a bug that might cause self-deadlocks when COPY used in TX block

* Fixes an issue that could cause citus_finish_pg_upgrade to fail

### citus v8.3.3 (March 23, 2021) ###

* Fixes a bug that leads to various issues when a connection is lost

* Fixes a bug where one could create a foreign key between non-colocated tables

* Fixes a deadlock during transaction recovery

* Fixes a memory leak in adaptive executor when query returns many columns

### citus v10.0.3 (March 16, 2021) ###

* Prevents infinite recursion for queries that involve `UNION ALL`
  below `JOIN`

* Fixes a crash in queries with a modifying `CTE` and a `SELECT`
  without `FROM`

* Fixes upgrade and downgrade paths for `citus_update_table_statistics`

* Fixes a bug that causes `SELECT` queries to use 2PC unnecessarily

* Fixes a bug that might cause self-deadlocks with
  `CREATE INDEX` / `REINDEX CONCURRENTLY` commands

* Adds `citus.max_cached_connection_lifetime` GUC to set maximum connection
  lifetime

* Adds `citus.remote_copy_flush_threshold` GUC that controls
  per-shard memory usages by `COPY`

* Adds `citus_get_active_worker_nodes` UDF to deprecate
  `master_get_active_worker_nodes`

* Skips 2PC for readonly connections in a transaction

* Makes sure that local execution starts coordinated transaction

* Removes open temporary file warning when cancelling a query with
  an open tuple store

* Relaxes the locks when adding an existing node

### citus v10.0.2 (March 3, 2021) ###

* Adds a configure flag to enforce security

* Fixes a bug due to cross join without target list

* Fixes a bug with `UNION ALL` on PG 13

* Fixes a compatibility issue with pg_audit in utility calls

* Fixes insert query with CTEs/sublinks/subqueries etc

* Grants `SELECT` permission on `citus_tables` view to `public`

* Grants `SELECT` permission on columnar metadata tables to `public`

* Improves `citus_update_table_statistics` and provides distributed deadlock
  detection

* Preserves colocation with procedures in `alter_distributed_table`

* Prevents using `alter_columnar_table_set` and `alter_columnar_table_reset`
  on a columnar table not owned by the user

* Removes limits around long table names

### citus v9.5.4 (February 19, 2021) ###

* Fixes a compatibility issue with pg_audit in utility calls

### citus v10.0.1 (February 19, 2021) ###

* Fixes an issue in creation of `pg_catalog.time_partitions` view

### citus v9.5.3 (February 16, 2021) ###

* Avoids re-using connections for intermediate results

* Fixes a bug that might cause self-deadlocks when `COPY` used in xact block

* Fixes a crash that occurs when distributing table after dropping foreign key

### citus v10.0.0 (February 16, 2021) ###

* Adds support for per-table option for columnar storage

* Adds `rebalance_table_shards` to rebalance the shards across the nodes

* Adds `citus_drain_node` to move all shards away from any node

* Enables single-node Citus for production workloads

* Adds support for local table and distributed table/subquery joins

* Enables foreign keys between reference tables and local tables
  (`citus.enable_local_reference_table_foreign_keys`)

* Adds support for co-located/recurring correlated subqueries

* Adds support for co-located/recurring sublinks in the target list

* Adds `alter_distributed_table` and `alter_table_set_access_method` UDFs

* Adds `alter_old_partitions_set_access_method` UDF to compress old partitions

* Adds cascade option to `undistribute_table` UDF for foreign key connected
  relations

* Allows distributed table creation immediately after CREATE EXTENSION citus

* Automatically adds coordinator to the metadata before the first distributed
  table created

* Introduces adaptive connection management for local nodes

* Adds support for local execution in `INSERT..SELECT` commands that perform
  re-partitioning

* Adds `public.citus_tables` view

* Adds `pg_catalog.citus_shards`, `pg_catalog.citus_shards_on_worker` and
  `pg_catalog.citus_shard_indexes_on_worker` views

* Adds `pg_catalog.time_partitions` view for simple (time) partitions and their
  access methods

* Adds `remove_local_tables_from_metadata` UDF for local tables automatically
  added to metadata when defining foreign keys with reference tables

* Adds support for `CREATE INDEX` commands without index name on citus tables

* Adds support for `CREATE TABLE ... USING table_access_method` statements

* Propagates `ALTER TABLE .. SET LOGGED/UNLOGGED` statements

* Propagates `ALTER INDEX .. SET STATISTICS` statements

* Propagates `ALTER SCHEMA RENAME` statements

* Propagates `CREATE STATISTICS` statements across workers.

* Propagates `DROP STATISTICS` statements across the workers

* Propagates all types of `ALTER STATISTICS` statements.

* Avoids establishing new connections until the previous ones are finalized

* Avoids re-using connections for intermediate results

* Improves performance in some subquery pushdown cases

* Removes unused `citus.binary_master_copy_format` GUC

* Removes unused `citus.expire_cached_shards` GUC

* Removes unused `citus.large_table_shard_count` GUC

* Removes unused `citus.max_assign_task_batch_size` GUC

* Removes unused `citus.max_running_tasks_per_node` GUC

* Removes unused `citus.max_task_string_size` GUC

* Removes unused `citus.max_tracked_tasks_per_node` GUC

* Removes unused `citus.sslmode` GUC

* Removes unused `citus.task_tracker_delay` GUC

* Removes the word 'master' from Citus UDFs

* Removes unused UDF `mark_tables_colocated`

* Removes `upgrade_to_reference_table` UDF

* Renames 'master' to 'distributed' for columns of `citus_dist_stat_activity`

* Renames 'master' to 'distributed' for columns of `citus_worker_stat_activity`

* Chooses the default co-location group deterministically

* Deletes distributed transaction entries when removing a node

* Drops support for `create_citus_local_table` in favor of
  `citus_add_local_table_to_metadata`

* Fixes `EXPLAIN ANALYZE` error when query returns no columns

* Fixes a bug preventing `INSERT SELECT .. ON CONFLICT` with a constraint name
  on local shards

* Fixes a bug related to correctness of multiple joins

* Fixes a bug that might cause self-deadlocks when `COPY` used in xact block

* Fixes a bug with partitioned tables that block new partition creation due to
  wrong constraint names on workers

* Fixes a crash that occurs when distributing table after dropping foreign key

* Fixes a crash when adding/dropping foreign keys from reference to local
  tables added to metadata

* Fixes an unexpected error when executing `CREATE TABLE IF NOT EXISTS
  PARTITION OF` commands

* Fixes deadlock issue for `CREATE INDEX` in single node

* Fixes distributed deadlock detection being blocked by metadata sync

* Fixes handling indexes when adding local table to metadata

* Fixes `undistribute_table` when table has column with `GENERATED ALWAYS AS
  STORED` expressions

* Improves concurrent index creation failure message

* Prevents empty placement creation in the coordinator when executing
  `master_create_empty_shard()`

### citus v9.5.2 (January 26, 2021) ###

* Fixes distributed deadlock detection being blocked by metadata sync

* Prevents segfaults when SAVEPOINT handling cannot recover from connection
  failures

* Fixes possible issues that might occur with single shard distributed tables

### citus v9.4.4 (December 28, 2020) ###

* Fixes a bug that could cause router queries with local tables to be pushed
  down

* Fixes a segfault in connection management due to invalid connection hash
  entries

* Fixes possible issues that might occur with single shard distributed tables

### citus v9.5.1 (December 1, 2020) ###

* Enables PostgreSQL's parallel queries on EXPLAIN ANALYZE

* Fixes a bug that could cause excessive memory consumption when a partition is
  created

* Fixes a bug that triggers subplan executions unnecessarily with cursors

* Fixes a segfault in connection management due to invalid connection hash
  entries

### citus v9.4.3 (November 24, 2020) ###

* Enables PostgreSQL's parallel queries on EXPLAIN ANALYZE

* Fixes a bug that triggers subplan executions unnecessarily with cursors

### citus v9.5.0 (November 10, 2020) ###

* Adds support for PostgreSQL 13

* Removes the task-tracker executor

* Introduces citus local tables

* Introduces `undistribute_table` UDF to convert tables back to postgres tables

* Adds support for `EXPLAIN (ANALYZE) EXECUTE` and `EXPLAIN EXECUTE`

* Adds support for `EXPLAIN (ANALYZE, WAL)` for PG13

* Sorts the output of `EXPLAIN (ANALYZE)` by execution duration.

* Adds support for CREATE TABLE ... USING table_access_method

* Adds support for `WITH TIES` option in SELECT and INSERT SELECT queries

* Avoids taking multi-shard locks on workers

* Enforces `citus.max_shared_pool_size` config in COPY queries

* Enables custom aggregates with multiple parameters to be executed on workers

* Enforces `citus.max_intermediate_result_size` in local execution

* Improves cost estimation of INSERT SELECT plans

* Introduces delegation of procedures that read from reference tables

* Prevents pull-push execution for simple pushdownable subqueries

* Improves error message when creating a foreign key to a local table

* Makes `citus_prepare_pg_upgrade` idempotent by dropping transition tables

* Disallows `ON TRUE` outer joins with reference & distributed tables when
  reference table is outer relation to avoid incorrect results

* Disallows field indirection in INSERT/UPDATE queries to avoid incorrect
  results

* Disallows volatile functions in UPDATE subqueries to avoid incorrect results

* Fixes CREATE INDEX CONCURRENTLY crash with local execution

* Fixes `citus_finish_pg_upgrade` to drop all backup tables

* Fixes a bug that cause failures when `RECURSIVE VIEW` joined reference table

* Fixes DROP SEQUENCE failures when metadata syncing is enabled

* Fixes a bug that caused CREATE TABLE with CHECK constraint to fail

* Fixes a bug that could cause VACUUM to deadlock

* Fixes master_update_node failure when no background worker slots are available

* Fixes a bug that caused replica identity to not be propagated on shard repair

* Fixes a bug that could cause crashes after connection timeouts

* Fixes a bug that could cause crashes with certain compile flags

* Fixes a bug that could cause deadlocks on CREATE INDEX

* Fixes a bug with genetic query optimization in outer joins

* Fixes a crash when aggregating empty tables

* Fixes a crash with inserting domain constrained composite types

* Fixes a crash with multi-row & router INSERT's in local execution

* Fixes a possibility of doing temporary file cleanup more than once

* Fixes incorrect setting of join related fields

* Fixes memory issues around deparsing index commands

* Fixes reference table access tracking for sequential execution

* Fixes removal of a single node with only reference tables

* Fixes sending commands to coordinator when it is added as a worker

* Fixes write queries with const expressions and COLLATE in various places

* Fixes wrong cancellation message about distributed deadlock

### citus v9.4.2 (October 21, 2020) ###

* Fixes a bug that could lead to multiple maintenance daemons

* Fixes an issue preventing views in reference table modifications

### citus v9.4.1 (September 30, 2020) ###

* Fixes EXPLAIN ANALYZE output truncation

* Fixes a deadlock during transaction recovery

### citus v9.4.0 (July 28, 2020) ###

* Improves COPY by honoring max_adaptive_executor_pool_size config

* Adds support for insert into local table select from distributed table

* Adds support to partially push down tdigest aggregates

* Adds support for receiving binary encoded results from workers using
  citus.enable_binary_protocol

* Enables joins between local tables and CTEs

* Adds showing query text in EXPLAIN output when explain verbose is true

* Adds support for showing CTE statistics in EXPLAIN ANALYZE

* Adds support for showing amount of data received in EXPLAIN ANALYZE

* Introduces downgrade paths in migration scripts

* Avoids returning incorrect results when changing roles in a transaction

* Fixes `ALTER TABLE IF EXISTS SET SCHEMA` with non-existing table bug

* Fixes `CREATE INDEX CONCURRENTLY` with no index name on a postgres table bug

* Fixes a bug that could cause crashes with certain compile flags

* Fixes a bug with lists of configuration values in ALTER ROLE SET statements

* Fixes a bug that occurs when coordinator is added as a worker node

* Fixes a crash because of overflow in partition id with certain compile flags

* Fixes a crash that may happen if no worker nodes are added

* Fixes a crash that occurs when inserting implicitly coerced constants

* Fixes a crash when aggregating empty tables

* Fixes a memory leak in subtransaction memory handling

* Fixes crash when using rollback to savepoint after cancellation of DML

* Fixes deparsing for queries with anonymous column references

* Fixes distribution of composite types failing to include typemods

* Fixes explain analyze on adaptive executor repartitions

* Fixes possible error throwing in abort handle

* Fixes segfault when evaluating func calls with default params on coordinator

* Fixes several EXPLAIN ANALYZE issues

* Fixes write queries with const expressions and COLLATE in various places

* Fixes wrong cancellation message about distributed deadlocks

* Reports correct INSERT/SELECT method in EXPLAIN

* Disallows triggers on citus tables

### citus v9.3.5 (July 24, 2020) ###

* Fixes `ALTER TABLE IF EXISTS SET SCHEMA` with non-existing table bug

* Fixes `CREATE INDEX CONCURRENTLY` with no index name on a postgres table bug

* Fixes a crash because of overflow in partition id with certain compile flags

### citus v9.3.4 (July 21, 2020) ###

* Fixes a bug that could cause crashes with certain compile flags

* Fixes a bug with lists of configuration values in ALTER ROLE SET statements

* Fixes deparsing for queries with anonymous column references

### citus v9.3.3 (July 10, 2020) ###

* Fixes a memory leak in subtransaction memory handling

### citus v9.3.2 (Jun 22, 2020) ###

* Fixes a version bump issue in 9.3.1

### citus v9.2.6 (Jun 22, 2020) ###

* Fixes a version bump issue in 9.2.5

### citus v9.3.1 (Jun 17, 2020) ###

* Adds support to partially push down tdigest aggregates

* Fixes a crash that occurs when inserting implicitly coerced constants

### citus v9.2.5 (Jun 17, 2020) ###

* Adds support to partially push down tdigest aggregates

* Fixes an issue with distributing tables having generated cols not at the end

### citus v9.3.0 (May 6, 2020) ###

* Adds `max_shared_pool_size` to control number of connections across sessions

* Adds support for window functions on coordinator

* Improves shard pruning logic to understand OR-conditions

* Prevents using an extra connection for intermediate result multi-casts

* Adds propagation of `ALTER ROLE .. SET` statements

* Adds `update_distributed_table_colocation` UDF to update colocation of tables

* Introduces a UDF to truncate local data after distributing a table

* Adds support for creating temp schemas in parallel

* Adds support for evaluation of `nextval` in the target list on coordinator

* Adds support for local execution of `COPY/TRUNCATE/DROP/DDL` commands

* Adds support for local execution of shard creation

* Uses local execution in a transaction block

* Adds support for querying distributed table sizes concurrently

* Allows `master_copy_shard_placement` to replicate placements to new nodes

* Allows table type to be used in target list

* Avoids having multiple maintenance daemons active for a single database

* Defers reference table replication to shard creation time

* Enables joins between local tables and reference tables in transaction blocks

* Ignores pruned target list entries in coordinator plan

* Improves `SIGTERM` handling of maintenance daemon

* Increases the default of `citus.node_connection_timeout` to 30 seconds

* Fixes a bug that occurs when creating remote tasks in local execution

* Fixes a bug that causes some DML queries containing aggregates to fail

* Fixes a bug that could cause failures in queries with subqueries or CTEs

* Fixes a bug that may cause some connection failures to throw errors

* Fixes a bug which caused queries with SRFs and function evalution to fail

* Fixes a bug with generated columns when executing `COPY dist_table TO file`

* Fixes a crash when using non-constant limit clauses

* Fixes a failure when composite types used in prepared statements

* Fixes a possible segfault when dropping dist. table in a transaction block

* Fixes a possible segfault when non-pushdownable aggs are solely used in HAVING

* Fixes a segfault when executing queries using `GROUPING`

* Fixes an error when using `LEFT JOIN with GROUP BY` on primary key

* Fixes an issue with distributing tables having generated cols not at the end

* Fixes automatic SSL permission issue when using "initdb --allow-group-access"

* Fixes errors which could occur when subqueries are parameters to aggregates

* Fixes possible issues by invalidating the plan cache in `master_update_node`

* Fixes timing issues which could be caused by changing system clock

### citus v9.2.4 (March 30, 2020) ###

* Fixes a release problem in 9.2.3

### citus v9.2.3 (March 25, 2020) ###

* Do not use C functions that have been banned by Microsoft

* Fixes a bug that causes wrong results with complex outer joins

* Fixes issues found using static analysis

* Fixes left join shard pruning in pushdown planner

* Fixes possibility for segmentation fault in internal aggregate functions

* Fixes possible segfault when non pushdownable aggregates are used in `HAVING`

* Improves correctness of planning subqueries in `HAVING`

* Prevents using old connections for security if `citus.node_conninfo` changed

* Uses Microsoft approved cipher string for default TLS setup

### citus v9.0.2 (March 6, 2020) ###

* Fixes build errors on EL/OL 6 based distros

* Fixes a bug that caused maintenance daemon to fail on standby nodes

* Disallows distributed function creation when replication_model is `statement`

### citus v9.2.2 (March 5, 2020) ###

* Fixes a bug that caused some prepared stmts with function calls to fail

* Fixes a bug that caused some prepared stmts with composite types to fail

* Fixes a bug that caused missing subplan results in workers

* Improves performance of re-partition joins

### citus v9.2.1 (February 14, 2020) ###

* Fixes a bug that could cause crashes if distribution key is NULL

### citus v9.2.0 (February 10, 2020) ###

* Adds support for `INSERT...SELECT` queries with re-partitioning

* Adds `citus.coordinator_aggregation_strategy` to support more aggregates

* Adds caching of local plans on shards for Citus MX

* Adds compatibility support for dist. object infrastructure from old versions

* Adds defering shard-pruning for fast-path router queries to execution

* Adds propagation of `GRANT ... ON SCHEMA` queries

* Adds support for CTE pushdown via CTE inlining in distributed planning

* Adds support for `ALTER TABLE ... SET SCHEMA` propagation.

* Adds support for `DROP ROUTINE` & `ALTER ROUTINE` commands

* Adds support for any inner join on a reference table

* Changes `citus.log_remote_commands` level to `NOTICE`

* Disallows marking ref. table shards unhealthy in the presence of savepoints

* Disallows placing new shards with shards in TO_DELETE state

* Enables local execution of queries that do not need any data access

* Fixes Makefile trying to cleanup PG directory during install

* Fixes a bug causing errors when planning a query with multiple subqueries

* Fixes a possible deadlock that could happen during shard moves

* Fixes a problem when adding a new node due to tables referenced in func body

* Fixes an issue that could cause joins with reference tables to be slow

* Fixes cached metadata for shard is inconsistent issue

* Fixes inserting multiple composite types as partition key in VALUES

* Fixes unnecessary repartition on joins with more than 4 tables

* Prevents wrong results for replicated partitioned tables after failure

* Restricts LIMIT approximation for non-commutative aggregates

### citus v9.1.2 (December 30, 2019) ###

* Fixes a bug that prevents installation from source

### citus v9.1.1 (December 18, 2019) ###

* Fixes a bug causing SQL-executing UDFs to crash when passing in DDL

* Fixes a bug that caused column_to_column_name to crash for invalid input

* Fixes a bug that caused inserts into local tables w/ dist. subqueries to crash

* Fixes a bug that caused some noop DML statements to fail

* Fixes a bug that prevents dropping reference table columns

* Fixes a crash in IN (.., NULL) queries

* Fixes a crash when calling a distributed function from PL/pgSQL

* Fixes an issue that caused CTEs to sometimes leak connections

* Fixes strange errors in DML with unreachable sublinks

* Prevents statements in SQL functions to run outside of a transaction

### citus v9.1.0 (November 21, 2019) ###

* Adds extensions to distributed object propagation infrastructure

* Adds support for ALTER ROLE propagation

* Adds support for aggregates in create_distributed_function

* Adds support for expressions in reference joins

* Adds support for returning RECORD in multi-shard queries

* Adds support for simple IN subqueries on unique cols in repartition joins

* Adds support for subqueries in HAVING clauses

* Automatically distributes unary aggs w/ combinefunc and non-internal stype

* Disallows distributed func creation when replication_model is 'statement'

* Drops support for deprecated real-time and router executors

* Fixes a bug in local execution that could cause missing rows in RETURNING

* Fixes a bug that caused maintenance daemon to fail on standby nodes

* Fixes a bug that caused other CREATE EXTENSION commands to take longer

* Fixes a bug that prevented REFRESH MATERIALIZED VIEW

* Fixes a bug when view is used in modify statements

* Fixes a memory leak in adaptive executor when query returns many columns

* Fixes underflow init of default values in worker extended op node creation

* Fixes potential segfault in standard_planner inlining functions

* Fixes an issue that caused failures in RHEL 6 builds

* Fixes queries with repartition joins and group by unique column

* Improves CTE/Subquery performance by pruning intermediate rslt broadcasting

* Removes `citus.worker_list_file` GUC

* Revokes usage from the citus schema from public

### citus v9.0.1 (October 25, 2019) ###

* Fixes a memory leak in the executor

* Revokes usage from the citus schema from public

### citus v9.0.0 (October 7, 2019) ###

* Adds support for PostgreSQL 12

* Adds UDFs to help with PostgreSQL upgrades

* Distributes types to worker nodes

* Introduces `create_distributed_function` UDF

* Introduces local query execution for Citus MX

* Implements infrastructure for routing `CALL` to MX workers

* Implements infrastructure for routing `SELECT function()` to MX workers

* Adds support for foreign key constraints between reference tables

* Adds a feature flag to turn off `CREATE TYPE` propagation

* Adds option `citus.single_shard_commit_protocol`

* Adds support for `EXPLAIN SUMMARY`

* Adds support for `GENERATE ALWAYS AS STORED`

* Adds support for `serial` and `smallserial` in MX mode

* Adds support for anon composite types on the target list in router queries

* Avoids race condition between `create_reference_table` & `master_add_node`

* Fixes a bug in schemas of distributed sequence definitions

* Fixes a bug that caused `run_command_on_colocated_placements` to fail

* Fixes a bug that leads to various issues when a connection is lost

* Fixes a schema leak on `CREATE INDEX` statement

* Fixes assert failure in bare `SELECT FROM reference table FOR UPDATE` in MX

* Makes `master_update_node` MX compatible

* Prevents `pg_dist_colocation` from multiple records for reference tables

* Prevents segfault in `worker_partition_protocol` edgecase

* Propagates `ALTER FUNCTION` statements for distributed functions

* Propagates `CREATE OR REPLACE FUNCTION` for distributed functions

* Propagates `REINDEX` on tables & indexes

* Provides a GUC to turn of the new dependency propagation functionality

* Uses 2PC in adaptive executor when dealing with replication factors above 1

### citus v8.3.2 (August 09, 2019) ###

* Fixes performance issues by skipping unnecessary relation access recordings

### citus v8.3.1 (July 29, 2019) ###

* Improves Adaptive Executor performance

### citus v8.3.0 (July 10, 2019) ###

* Adds a new distributed executor: Adaptive Executor

* citus.enable_statistics_collection defaults to off (opt-in)

* Adds support for CTEs in router planner for modification queries

* Adds support for propagating SET LOCAL at xact start

* Adds option to force master_update_node during failover

* Deprecates master_modify_multiple_shards

* Improves round robin logic on router queries

* Creates all distributed schemas as superuser on a separate connection

* Makes COPY adapt to connection use behaviour of previous commands

* Replaces SESSION_LIFESPAN with configurable number of connections at xact end

* Propagates ALTER FOREIGN TABLE commands to workers

* Don't schedule tasks on inactive nodes

* Makes DROP/VALIDATE CONSTRAINT tolerant of ambiguous shard extension

* Fixes an issue with subquery map merge jobs as non-root

* Fixes null pointers caused by partial initialization of ConnParamsHashEntry

* Fixes errors caused by joins with shadowed aliases

* Fixes a regression in outer joining subqueries introduced in 8.2.0

* Fixes a crash that can occur under high memory load

* Fixes a bug that selects wrong worker when using round-robin assignment

* Fixes savepoint rollback after multi-shard modify/copy failure

* Fixes bad foreign constraint name search

* Fixes a bug that prevents stack size to be adjusted

### citus v8.2.2 (June 11, 2019) ###

* Fixes a bug in outer joins wrapped in subqueries

### citus v8.2.1 (April 03, 2019) ###

* Fixes a bug that prevents stack size to be adjusted

### citus v8.1.2 (April 03, 2019) ###

* Don't do redundant ALTER TABLE consistency checks at coordinator

* Fixes a bug that prevents stack size to be adjusted

* Fix an issue with some DECLARE .. CURSOR WITH HOLD commands

### citus v8.2.0 (March 28, 2019) ###

* Removes support and code for PostgreSQL 9.6

* Enable more outer joins with reference tables

* Execute CREATE INDEX CONCURRENTLY in parallel

* Treat functions as transaction blocks

* Add support for column aliases on join clauses

* Skip standard_planner() for trivial queries

* Added support for function calls in joins

* Round-robin task assignment policy relies on local transaction id

* Relax subquery union pushdown restrictions for reference tables

* Speed-up run_command_on_shards()

* Address some memory issues in connection config

* Restrict visibility of get_*_active_transactions functions to pg_monitor

* Don't do redundant ALTER TABLE consistency checks at coordinator

* Queries with only intermediate results do not rely on task assignment policy

* Finish connection establishment in parallel for multiple connections

* Fixes a bug related to pruning shards using a coerced value

* Fix an issue with some DECLARE .. CURSOR WITH HOLD commands

* Fixes a bug that could lead to infinite recursion during recursive planning

* Fixes a bug that could prevent planning full outer joins with using clause

* Fixes a bug that could lead to memory leak on `citus_relation_size`

* Fixes a problem that could cause segmentation fault with recursive planning

* Switch CI solution to CircleCI

### citus v8.0.3 (January 9, 2019) ###

* Fixes maintenance daemon panic due to unreleased spinlock

* Fixes an issue with having clause when used with complex joins

### citus v8.1.1 (January 7, 2019) ###

* Fixes maintenance daemon panic due to unreleased spinlock

* Fixes an issue with having clause when used with complex joins

### citus v8.1.0 (December 17, 2018) ###

* Turns on ssl by default for new installations of citus

* Restricts SSL Ciphers to TLS1.2 and above

* Adds support for INSERT INTO SELECT..ON CONFLICT/RETURNING via coordinator

* Adds support for round-robin task assignment for queries to reference tables

* Adds support for SQL tasks using worker_execute_sql_task UDF with task-tracker

* Adds support for VALIDATE CONSTRAINT queries

* Adds support for disabling hash aggregate with HLL

* Adds user ID suffix to intermediate files generated by task-tracker

* Only allow transmit from pgsql_job_cache directory

* Disallows GROUPING SET clauses in subqueries

* Removes restriction on user-defined group ID in node addition functions

* Relaxes multi-shard modify locks when enable_deadlock_prevention is disabled

* Improves security in task-tracker protocol

* Improves permission checks in internal DROP TABLE functions

* Improves permission checks in cluster management functions

* Cleans up UDFs and fixes permission checks

* Fixes crashes caused by stack size increase under high memory load

* Fixes a bug that could cause maintenance daemon panic

### citus v8.0.2 (December 13, 2018) ###

* Fixes a bug that could cause maintenance daemon panic

* Fixes crashes caused by stack size increase under high memory load

### citus v7.5.4 (December 11, 2018) ###

* Fixes a bug that could cause maintenance daemon panic

### citus v8.0.1 (November 27, 2018) ###

* Execute SQL tasks using worker_execute_sql_task UDF when using task-tracker

### citus v7.5.3 (November 27, 2018) ###

* Execute SQL tasks using worker_execute_sql_task UDF when using task-tracker

### citus v7.5.2 (November 14, 2018) ###

* Fixes inconsistent metadata error when shard metadata caching get interrupted

* Fixes a bug that could cause memory leak

* Fixes a bug that prevents recovering wrong transactions in MX

* Fixes a bug to prevent wrong memory accesses on Citus MX under very high load

* Fixes crashes caused by stack size increase under high memory load

### citus v8.0.0 (October 31, 2018) ###

* Adds support for PostgreSQL 11

* Adds support for applying DML operations on reference tables from MX nodes

* Adds distributed locking to truncated MX tables

* Adds support for running TRUNCATE command from MX worker nodes

* Adds views to provide insight about the distributed transactions

* Adds support for TABLESAMPLE in router queries

* Adds support for INCLUDE option in index creation

* Adds option to allow simple DML commands from hot standby

* Adds support for partitioned tables with replication factor > 1

* Prevents a deadlock on concurrent DROP TABLE and SELECT on Citus MX

* Fixes a bug that prevents recovering wrong transactions in MX

* Fixes a bug to prevent wrong memory accesses on Citus MX under very high load

* Fixes a bug in MX mode, calling DROP SCHEMA with existing partitioned table

* Fixes a bug that could cause modifying CTEs to select wrong execution mode

* Fixes a bug preventing rollback in CREATE PROCEDURE

* Fixes a bug on not being able to drop index on a partitioned table

* Fixes a bug on TRUNCATE when there is a foreign key to a reference table

* Fixes a performance issue in prepared INSERT..SELECT

* Fixes a bug which causes errors on DROP DATABASE IF EXISTS

* Fixes a bug to remove intermediate result directory in pull-push execution

* Improves query pushdown planning performance

* Evaluate functions anywhere in query

### citus v7.5.1 (August 28, 2018) ###

* Improves query pushdown planning performance

* Fixes a bug that could cause modifying CTEs to select wrong execution mode

### citus v7.4.2 (July 27, 2018) ###

* Fixes a segfault in real-time executor during online shard move

### citus v7.5.0 (July 25, 2018) ###

* Adds foreign key support from hash distributed to reference tables

* Adds SELECT ... FOR UPDATE support for router plannable queries

* Adds support for non-partition columns in count distinct

* Fixes a segfault in real-time executor during online shard move

* Fixes ALTER TABLE ADD COLUMN constraint check

* Fixes a bug where INSERT ... SELECT was allowed to update distribution column

* Allows DDL commands to be sequentialized via `citus.multi_shard_modify_mode`

* Adds support for topn_union_agg and topn_add_agg across shards

* Adds support for hll_union_agg and hll_add_agg across shards

* Fixes a bug that might cause shards to have a wrong owner

* GUC select_opens_transaction_block defers opening transaction block on workers

* Utils to implement DDLs for policies in future, warn about being unsupported

* Intermediate results use separate connections to avoid interfering with tasks

* Adds a node_conninfo GUC to set outgoing connection settings

### citus v6.2.6 (July 06, 2018) ###

* Adds support for respecting enable_hashagg in the master planner

### citus v7.4.1 (June 20, 2018) ###

* Fixes a bug that could cause transactions to incorrectly proceed after failure

* Fixes a bug on INSERT ... SELECT queries in prepared statements

### citus v7.4.0 (May 15, 2018) ###

* Adds support for non-pushdownable subqueries and CTEs in UPDATE/DELETE queries

* Adds support for pushdownable subqueries and joins in UPDATE/DELETE queries

* Adds faster shard pruning for subqueries

* Adds partitioning support to MX table

* Adds support for (VACUUM | ANALYZE) VERBOSE

* Adds support for multiple ANDs in `HAVING` for pushdown planner

* Adds support for quotation needy schema names

* Improves operator check time in physical planner for custom data types

* Removes broadcast join logic

* Deprecates `large_table_shard_count` and `master_expire_table_cache()`

* Modifies master_update_node to lock write on shards hosted by node over update

* `DROP TABLE` now drops shards as the currrent user instead of the superuser

* Adds specialised error codes for connection failures

* Improves error messages on connection failure

* Fixes issue which prevented multiple `citus_table_size` calls per query

* Tests are updated to use `create_distributed_table`

### citus v7.2.2 (May 4, 2018) ###

* Fixes a bug that could cause SELECTs to crash during a rebalance

### citus v7.3.0 (March 15, 2018) ###

* Adds support for non-colocated joins between subqueries

* Adds support for window functions that can be pushed down to worker

* Adds support for modifying CTEs

* Adds recursive plan for subqueries in WHERE clause with recurring FROM clause

* Adds support for bool_ and bit_ aggregates

* Adds support for Postgres `jsonb` and `json` aggregation functions

* Adds support for respecting enable_hashagg in the master plan

* Adds support for renaming a distributed table

* Adds support for ALTER INDEX (SET|RESET|RENAME TO) commands

* Adds support for setting storage parameters on distributed tables

* Performance improvements to reduce distributed planning time

* Fixes a bug on planner when aggregate is used in ORDER BY

* Fixes a bug on planner when DISTINCT (ON) clause is used with GROUP BY

* Fixes a bug of creating coordinator planner with distinct and aggregate clause

* Fixes a bug that could open a new connection on every table size function call

* Fixes a bug canceling backends that are not involved in distributed deadlocks

* Fixes count distinct bug on column expressions when used with subqueries

* Improves error handling on worker node failures

* Improves error messages for INSERT queries that have subqueries

### citus v7.2.1 (February 6, 2018) ###

* Fixes count distinct bug on column expressions when used with subqueries

* Adds support for respecting enable_hashagg in the master plan

* Fixes a bug canceling backends that are not involved in distributed deadlocks

### citus v7.2.0 (January 16, 2018) ###

* Adds support for CTEs

* Adds support for subqueries that require merge step

* Adds support for set operations (UNION, INTERSECT, ...)

* Adds support for 2PC auto-recovery

* Adds support for querying local tables in CTEs and subqueries

* Adds support for more SQL coverage in subqueries for reference tables

* Adds support for count(distinct) in queries with a subquery

* Adds support for non-equijoins when there is already an equijoin for queries

* Adds support for non-equijoins when there is already an equijoin for subquery

* Adds support for real-time executor to run in transaction blocks

* Adds infrastructure for storing intermediate distributed query results

* Adds a new GUC named `enable_repartition_joins` for auto executor switch

* Adds support for limiting the intermediate result size

* Improves support for queries with unions containing filters

* Improves support for queries with unions containing joins

* Improves support for subqueries in the `WHERE` clause

* Increases `COPY` throughput

* Enables pushing down queries containing only recurring tuples and `GROUP BY`

* Load-balance queries that read from 0 shards

* Improves support for using functions in subqueries

* Fixes a bug that could cause real-time executor to crash during cancellation

* Fixes a bug that could cause real-time executor to get stuck on cancellation

* Fixes a bug that could block modification queries unnecessarily

* Fixes a bug that could cause assigning wrong IDs to transactions

* Fixes a bug that could cause an assert failure with `ANALYZE` statements

* Fixes a bug that could allow pushing down wrong set operations in subqueries

* Fixes a bug that could cause a deadlock in create_distributed_table

* Fixes a bug that could confuse user about `ANALYZE` usage

* Fixes a bug that could lead to false positive distributed deadlock detections

* Relaxes the locking for DDL commands on partitioned tables

* Relaxes the locking on `COPY` with replication

* Logs more remote commands when citus.log_remote_commands is set

### citus v6.2.5 (January 11, 2018) ###

* Fixes a bug that could crash the coordinator while reporting a remote error

### citus v7.1.2 (January 4, 2018) ###

* Fixes a bug that could cause assigning wrong IDs to transactions

* Increases `COPY` throughput

### citus v7.1.1 (December 1, 2017) ###

* Fixes a bug that could prevent pushing down subqueries with reference tables

* Fixes a bug that could create false positive distributed deadlocks

* Fixes a bug that could prevent running concurrent COPY and multi-shard DDL

* Fixes a bug that could mislead users about `ANALYZE` queries

### citus v7.1.0 (November 14, 2017) ###

* Adds support for native queries with multi shard `UPDATE`/`DELETE` queries

* Expands reference table support in subquery pushdown

* Adds window function support for subqueries and `INSERT ... SELECT` queries

* Adds support for `COUNT(DISTINCT) [ON]` queries on non-partition columns

* Adds support for `DISTINCT [ON]` queries on non-partition columns

* Introduces basic usage statistic collector

* Adds support for setting replica identity while creating distributed tables

* Adds support for `ALTER TABLE ... REPLICA IDENTITY` queries

* Adds pushdown support for `LIMIT` and `HAVING` grouped by partition key

* Adds support for `INSERT ... SELECT` queries via worker nodes on MX clusters

* Adds support for adding primary key using already defined index

* Adds parameter to shard copy functions to support distinct replication models

* Changes `shard_name` UDF to omit public schema name

* Adds `master_move_node` UDF to make changes on nodename/nodeport more easy

* Fixes a bug that could cause casting error with `INSERT ... SELECT` queries

* Fixes a bug that could prevent upgrading servers from Citus 6.1

* Fixes a bug that could prevent attaching partitions to a table in schema

* Fixes a bug that could prevent adding a node to cluster with reference table

* Fixes a bug that could cause a crash with `INSERT ... SELECT` queries

* Fixes a bug that could prevent creating a partitoned table on Cloud

* Implements various performance improvements

* Adds internal infrastructures and tests to improve development process

* Addresses various race conditions and deadlocks

* Improves and standardizes error messages

### citus v7.0.3 (October 16, 2017) ###

* Fixes several bugs that could cause crash

* Fixes a bug that could cause deadlock while creating reference tables

* Fixes a bug that could cause false-positives in deadlock detection

* Fixes a bug that could cause  2PC recovery not to work from MX workers

* Fixes a bug that could cause cache incohorency

* Fixes a bug that could cause maintenance daemon to skip cache invalidations

* Improves performance of transaction recovery by using correct index

### citus v7.0.2 (September 28, 2017) ###

* Updates task-tracker to limit file access

### citus v6.2.4 (September 28, 2017) ###

* Updates task-tracker to limit file access

### citus v6.1.3 (September 28, 2017) ###

* Updates task-tracker to limit file access

### citus v7.0.1 (September 12, 2017) ###

* Fixes a bug that could cause memory leaks in `INSERT ... SELECT` queries

* Fixes a bug that could cause incorrect execution of prepared statements

* Fixes a bug that could cause excessive memory usage during COPY

* Incorporates latest changes from core PostgreSQL code

### citus v7.0.0 (August 28, 2017) ###

* Adds support for PostgreSQL 10

* Drops support for PostgreSQL 9.5

* Adds support for multi-row `INSERT`

* Adds support for router `UPDATE` and `DELETE` queries with subqueries

* Adds infrastructure for distributed deadlock detection

* Deprecates `enable_deadlock_prevention` flag

* Adds support for partitioned tables

* Adds support for creating `UNLOGGED` tables

* Adds support for `SAVEPOINT`

* Adds UDF `citus_create_restore_point` for taking distributed snapshots

* Adds support for evaluating non-pushable `INSERT ... SELECT` queries

* Adds support for subquery pushdown on reference tables

* Adds shard pruning support for `IN` and `ANY`

* Adds support for `UPDATE` and `DELETE` commands that prune down to 0 shard

* Enhances transaction support by relaxing some transaction restrictions

* Fixes a bug causing crash if distributed table has no shards

* Fixes a bug causing crash when removing inactive node

* Fixes a bug causing failure during `COPY` on tables with dropped columns

* Fixes a bug causing failure during `DROP EXTENSION`

* Fixes a bug preventing executing `VACUUM` and `INSERT` concurrently

* Fixes a bug in prepared `INSERT` statements containing an implicit cast

* Fixes several issues related to statement cancellations and connections

* Fixes several 2PC related issues

* Removes an unnecessary dependency causing warning messages in pg_dump

* Adds internal infrastructure for follower clusters

* Adds internal infrastructure for progress tracking

* Implements various performance improvements

* Adds internal infrastructures and tests to improve development process

* Addresses various race conditions and deadlocks

* Improves and standardizes error messages

### citus v6.2.3 (July 13, 2017) ###

* Fixes a crash during execution of local CREATE INDEX CONCURRENTLY

* Fixes a bug preventing usage of quoted column names in COPY

* Fixes a bug in prepared INSERTs with implicit cast in partition column

* Relaxes locks in VACUUM to ensure concurrent execution with INSERT

### citus v6.2.2 (May 31, 2017) ###

* Fixes a common cause of deadlocks when repairing tables with foreign keys

### citus v6.2.1 (May 24, 2017) ###

* Relaxes version-check logic to avoid breaking non-distributed commands

### citus v6.2.0 (May 16, 2017) ###

* Increases SQL subquery coverage by pushing down more kinds of queries

* Adds CustomScan API support to allow read-only transactions

* Adds support for `CREATE/DROP INDEX CONCURRENTLY`

* Adds support for `ALTER TABLE ... ADD CONSTRAINT`

* Adds support for `ALTER TABLE ... RENAME COLUMN`

* Adds support for `DISABLE/ENABLE TRIGGER ALL`

* Adds support for expressions in the partition column in INSERTs

* Adds support for query parameters in combination with function evaluation

* Adds support for creating distributed tables from non-empty local tables

* Adds UDFs to get size of distributed tables

* Adds UDFs to add a new node without replicating reference tables

* Adds checks to prevent running Citus binaries with wrong metadata tables

* Improves shard pruning performance for range queries

* Improves planner performance for joins involving co-located tables

* Improves shard copy performance by creating indexes after copy

* Improves task-tracker performance by batching several status checks

* Enables router planner for queries on range partitioned table

* Changes `TRUNCATE` to drop local data only if `enable_ddl_propagation` is off

* Starts to execute DDL on coordinator before workers

* Fixes a bug causing incorrectly reading invalidated cache

* Fixes a bug related to creation of schemas of in workers with incorrect owner

* Fixes a bug related to concurrent run of shard drop functions

* Fixes a bug related to `EXPLAIN ANALYZE` with DML queries

* Fixes a bug related to SQL functions in FROM clause

* Adds a GUC variable to report cross shard queries

* Fixes a bug related to partition columns without native hash function

* Adds internal infrastructures and tests to improve development process

* Addresses various race conditions and deadlocks

* Improves and standardizes error messages

### citus v6.1.2 (May 31, 2017) ###

* Fixes a common cause of deadlocks when repairing tables with foreign keys

### citus v6.1.1 (May 5, 2017) ###

* Fixes a crash caused by router executor use after connection timeouts

* Fixes a crash caused by relation cache invalidation during COPY

* Fixes bug related to DDL use within PL/pgSQL functions

* Fixes a COPY bug related to types lacking binary output functions

* Fixes a bug related to modifications with parameterized partition values

* Fixes improper value interpolation in worker sequence generation

* Guards shard pruning logic against zero-shard tables

* Fixes possible NULL pointer dereference and buffer underflow (via PVS-Studio)

* Fixes a INSERT ... SELECT bug that could push down non-partition column JOINs

### citus v6.1.0 (February 9, 2017) ###

* Implements _reference tables_, transactionally replicated to all nodes

* Adds `upgrade_to_reference_table` UDF to upgrade pre-6.1 reference tables

* Expands prepared statement support to nearly all statements

* Adds support for creating `VIEW`s which reference distributed tables

* Adds targeted `VACUUM`/`ANALYZE` support

* Adds support for the `FILTER` clause in aggregate expressions

* Adds support for function evaluation within `INSERT INTO ... SELECT`

* Adds support for creating foreign key constraints with `ALTER TABLE`

* Adds logic to choose router planner for all queries it supports

* Enhances `create_distributed_table` with parameter for explicit colocation

* Adds generally useful utility UDFs previously available as "Citus Tools"

* Adds user-facing UDFs for locking shard resources and metadata

* Refactors connection and transaction management; giving consistent experience

* Enhances `COPY` with fully transactional semantics

* Improves support for cancellation for a number of queries and commands

* Adds `column_to_column_name` UDF to help users understand `partkey` values

* Adds `master_disable_node` UDF for temporarily disabling nodes

* Adds proper MX ("masterless") metadata propagation logic

* Adds `start_metadata_sync_to_node` UDF to propagate metadata changes to nodes

* Enhances `SERIAL` compatibility with MX tables

* Adds `node_connection_timeout` parameter to control node connection timeouts

* Adds `enable_deadlock_prevention` setting to permit multi-node transactions

* Adds a `replication_model` setting to specify replication of new tables

* Changes the `shard_replication_factor` setting's default value to one

* Adds code to automatically set `max_prepared_transactions` if not configured

* Accelerates lookup of colocated shard placements

* Fixes a bug affecting `INSERT INTO ... SELECT` queries using constant values

* Fixes a bug by ensuring `COPY` does not mark placements inactive

* Fixes a bug affecting reads from `pg_dist_shard_placement` table

* Fixes a crash triggered by creating a foreign key without a column

* Fixes a crash related to accessing catalog tables after aborted transactions

* Fixes a bug affecting JOIN queries requiring repartitions

* Fixes a bug affecting node insertions to `pg_dist_node` table

* Fixes a crash triggered by queries with modifying common table expressions

* Fixes a bug affecting workloads with concurrent shard appends and deletions

* Addresses various race conditions and deadlocks

* Improves and standardizes error messages

### citus v6.0.1 (November 29, 2016) ###

* Fixes a bug causing failures during pg_upgrade

* Fixes a bug preventing DML queries during colocated table creation

* Fixes a bug that caused NULL parameters to be incorrectly passed as text

### citus v6.0.0 (November 7, 2016) ###

* Adds compatibility with PostgreSQL 9.6, now the recommended version

* Removes the `pg_worker_list.conf` file in favor of a `pg_dist_node` table

* Adds `master_add_node` and `master_add_node` UDFs to manage membership

* Removes the `\stage` command and corresponding csql binary in favor of `COPY`

* Removes `copy_to_distributed_table` in favor of first-class `COPY` support

* Adds support for multiple DDL statements within a transaction

* Adds support for certain foreign key constraints

* Adds support for parallel `INSERT INTO ... SELECT` against colocated tables

* Adds support for the `TRUNCATE` command

* Adds support for `HAVING` clauses in `SELECT` queries

* Adds support for `EXCLUDE` constraints which include the partition column

* Adds support for system columns in queries (`tableoid`, `ctid`, etc.)

* Adds support for relation name extension within `INDEX` definitions

* Adds support for no-op `UPDATE`s of the partition column

* Adds several general-purpose utility UDFs to aid in Citus maintenance

* Adds `master_expire_table_cache` UDF to forcibly expire cached shards

* Parallelizes the processing of DDL commands which affect distributed tables

* Adds support for repartition jobs using composite or custom types

* Enhances object name extension to handle long names and large shard counts

* Parallelizes the `master_modify_multiple_shards` UDF

* Changes distributed table creation to error if the target table is not empty

* Changes the `pg_dist_shard.logicalrelid` column from an `oid` to `regclass`

* Adds a `placementid` column to `pg_dist_shard_placement`, replacing Oid use

* Removes the `pg_dist_shard.shardalias` distribution metadata column

* Adds `pg_dist_partition.repmodel` to track tables using streaming replication

* Adds internal infrastructure to take snapshots of distribution metadata

* Addresses the need to invalidate prepared statements on metadata changes

* Adds a `mark_tables_colocated` UDF for denoting pre-6.0 manual colocation

* Fixes a bug affecting prepared statement execution within PL/pgSQL

* Fixes a bug affecting `COPY` commands using composite types

* Fixes a bug that could cause crashes during `EXPLAIN EXECUTE`

* Separates worker and master job temporary folders

* Eliminates race condition between distributed modification and repair

* Relaxes the requirement that shard repairs also repair colocated shards

* Implements internal functions to track which tables' shards are colocated

* Adds `pg_dist_partition.colocationid` to track colocation group membership

* Extends shard copy and move operations to respect colocation settings

* Adds `pg_dist_local_group` to prepare for future MX-related changes

* Adds `create_distributed_table` to easily create shards and infer colocation

### citus v5.2.2 (November 7, 2016) ###

* Adds support for `IF NOT EXISTS` clause of `CREATE INDEX` command

* Adds support for `RETURN QUERY` and `FOR ... IN` PL/pgSQL features

* Extends the router planner to handle more queries

* Changes `COUNT` of zero-row sets to return `0` rather than an empty result

* Reduces the minimum permitted `task_tracker_delay` to a single millisecond

* Fixes a bug that caused crashes during joins with a `WHERE false` clause

* Fixes a bug triggered by unique violation errors raised in long transactions

* Fixes a bug resulting in multiple registration of transaction callbacks

* Fixes a bug which could result in stale reads of distribution metadata

* Fixes a bug preventing distributed modifications in some PL/pgSQL functions

* Fixes some code paths that could hypothetically read uninitialized memory

* Lowers log level of _waiting for activity_ messages

### citus v5.2.1 (September 6, 2016) ###

* Fixes subquery pushdown to properly extract outer join qualifiers

* Addresses possible memory leak during multi-shard transactions

### citus v5.2.0 (August 15, 2016) ###

* Drops support for PostgreSQL 9.4; PostgreSQL 9.5 is required

* Adds schema support for tables, other named objects (types, operators, etc.)

* Evaluates non-immutable functions on master in all modification commands

* Adds support for SERIAL types in non-partition columns

* Adds support for RETURNING clause in INSERT, UPDATE, and DELETE commands

* Adds support for multi-statement transactions involving a fixed set of nodes

* Full SQL support for SELECT queries which can be executed on a single worker

* Adds option to perform DDL changes using prepared transactions (2PC)

* Adds an `enable_ddl_propagation` parameter to control DDL propagation

* Accelerates shard pruning during merges

* Adds `master_modify_multiple_shards` UDF to modify many shards at once

* Adds COPY support for arrays of user-defined types

* Now supports parameterized prepared statements for certain use cases

* Extends LIMIT/OFFSET support to all executor types

* Constraint violations now fail fast rather than hitting all placements

* Makes `master_create_empty_shard` aware of shard placement policy

* Reduces unnecessary sleep during queries processed by real-time executor

* Improves task tracker executor's task cleanup logic

* Relaxes restrictions on cancellation of DDL commands

* Removes ONLY keyword from worker SELECT queries

* Error message improvements and standardization

* Moves `master_update_shard_statistics` function to `pg_catalog` schema

* Fixes a bug where hash-partitioned anti-joins could return incorrect results

* Now sets storage type correctly for foreign table-backed shards

* Fixes `master_update_shard_statistics` issue with hash-partitioned tables

* Fixes an issue related to extending table names that require escaping

* Reduces risk of row counter overflows during modifications

* Fixes a crash related to FILTER clause use in COUNT DISTINCT subqueries

* Fixes crashes related to partition columns with high attribute numbers

* Fixes certain subquery and join crashes

* Detects flex for build even if PostgreSQL was built without it

* Fixes assert-enabled crash when `all_modifications_commutative` is true

### citus v5.2.0-rc.1 (August 1, 2016) ###

* Initial 5.2.0 candidate

### citus v5.1.1 (June 17, 2016) ###

* Adds complex count distinct expression support in repartitioned subqueries

* Improves task tracker job cleanup logic, addressing a memory leak

* Fixes bug that generated incorrect results for LEFT JOIN queries

* Improves compatibility with Debian's reproducible builds project

* Fixes build issues on FreeBSD platforms

### citus v5.1.0 (May 17, 2016) ###

* Adds distributed COPY to rapidly populate distributed tables

* Adds support for using EXPLAIN on distributed queries

* Recognizes and fast-paths single-shard SELECT statements automatically

* Increases INSERT throughput via shard pruning optimizations

* Improves planner performance for joins involving tables with many shards

* Adds ability to pass columns as arguments to function calls in UPDATEs

* Introduces transaction manager for use by multi-shard commands

* Adds COUNT(DISTINCT ...) pushdown optimization for hash-partitioned tables

* Adds support for certain UNIQUE indexes on hash- or range-partitioned tables

* Deprecates \stage in favor of using COPY for append-partition tables

* Deprecates `copy_to_distributed_table` in favor of first-class COPY support

* Fixes build problems when using non-packaged PostgreSQL installs

* Fixes bug that sometimes skipped pruning when partitioned by a VARCHAR column

* Fixes bug impeding use of user-defined functions in repartitioned subqueries

* Fixes bug involving queries with equality comparisons of boolean types

* Fixes crash that prevented use alongside `pg_stat_statements`

* Fixes crash arising from SELECT queries that lack a target list

* Improves warning and error messages

### citus v5.1.0-rc.2 (May 10, 2016) ###

* Fixes test failures

* Fixes EXPLAIN output when FORMAT JSON in use

### citus v5.1.0-rc.1 (May 4, 2016) ###

* Initial 5.1.0 candidate

### citus v5.0.1 (April 15, 2016) ###

* Fixes issues on 32-bit systems

### citus v5.0.0 (March 24, 2016) ###

* Public release under AGPLv3

* PostgreSQL extension compatible with PostgreSQL 9.5 and 9.4


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Microsoft Open Source Code of Conduct

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).

Resources:

- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Citus

We're happy you want to contribute! You can help us in different ways:

* Open an [issue](https://github.com/citusdata/citus/issues) with
  suggestions for improvements
* Fork this repository and submit a pull request

Before accepting any code contributions we ask that contributors
sign a Contributor License Agreement (CLA). For an explanation of
why we ask this as well as instructions for how to proceed, see the
[Microsoft CLA](https://cla.opensource.microsoft.com/).

### Devcontainer / Github Codespaces

The easiest way to start contributing is via our devcontainer. This container works both locally in visual studio code with docker-desktop/docker-for-mac as well as [Github Codespaces](https://github.com/features/codespaces). To open the project in vscode you will need the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers). For codespaces you will need to [create a new codespace](https://codespace.new/citusdata/citus).

With the extension installed you can run the following from the command pallet to get started

```
> Dev Containers: Clone Repository in Container Volume...
```

In the subsequent popup paste the url to the repo and hit enter.

```
https://github.com/citusdata/citus
```

This will create an isolated Workspace in vscode, complete with all tools required to build, test and run the Citus extension. We keep this container up to date with the supported postgres versions as well as the exact versions of tooling we use.

To quickly start we suggest splitting your terminal once to have two shells. The left one in the `/workspaces/citus`, the second one changed to `/data`. The left terminal will be used to interact with the project, the right one with a testing cluster.

To get citus installed from source we run `make install -s` in the first terminal. Once installed you can start a Citus cluster in the second terminal via `citus_dev make citus`. The cluster will run in the background, and can be interacted with via `citus_dev`. To get an overview of the available commands.

With the Citus cluster running you can connect to the coordinator in the first terminal via `psql -p9700`. Because the coordinator is the most common entrypoint the `PGPORT` environment is set accordingly, so a simple `psql` will connect directly to the coordinator.

### Debugging in the VS code

1. Start Debugging: Press F5 in VS Code to start debugging. When prompted, you'll need to attach the debugger to the appropriate PostgreSQL process.

2. Identify the Process: If you're running a psql command, take note of the PID that appears in your psql prompt. For example:
```
[local] citus@citus:9700 (PID: 5436)=#
```
This PID (5436 in this case) indicates the process that you should attach the debugger to.
If you are uncertain about which process to attach, you can list all running PostgreSQL processes using the following command:
```
ps aux | grep postgres
```

Look for the process associated with the PID you noted. For example:
```
citus      5436  0.0  0.0  0  0 ?        S    14:00   0:00 postgres: citus citus
```
4. Attach the Debugger: Once you've identified the correct PID, select that process when prompted in VS Code to attach the debugger. You should now be able to debug the PostgreSQL session tied to the psql command.

5. Set Breakpoints and Debug: With the debugger attached, you can set breakpoints within the code. This allows you to step through the code execution, inspect variables, and fully debug the PostgreSQL instance running in your container.

### Getting and building

[PostgreSQL documentation](https://www.postgresql.org/support/versioning/) has a
section on upgrade policy.

	We always recommend that all users run the latest available minor release [for PostgreSQL] for whatever major version is in use.

We expect Citus users to honor this recommendation and use latest available
PostgreSQL minor release. Failure to do so may result in failures in our test
suite. There are some known improvements in PG test architecture such as
[this commit](https://github.com/postgres/postgres/commit/3f323956128ff8589ce4d3a14e8b950837831803)
that are missing in earlier minor versions.

#### Mac

1. Install Xcode
2. Install packages with Homebrew

  ```bash
  brew update
  brew install git postgresql python
  ```

3. Get, build, and test the code

  ```bash
  git clone https://github.com/citusdata/citus.git

  cd citus
  ./configure
  # If you have already installed the project, you need to clean it first
  make clean
  make
  make install
  # Optionally, you might instead want to use `make install-all`
  # since `multi_extension` regression test would fail due to missing downgrade scripts.
  cd src/test/regress

  pip install pipenv
  pipenv --rm
  pipenv install
  pipenv shell

  make check
  ```

#### Debian-based Linux (Ubuntu, Debian)

1. Install build dependencies

  ```bash
  echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | \
       sudo tee /etc/apt/sources.list.d/pgdg.list
  wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
       sudo apt-key add -
  sudo apt-get update

  sudo apt-get install -y postgresql-server-dev-14 postgresql-14 \
                          autoconf flex git libcurl4-gnutls-dev libicu-dev \
                          libkrb5-dev liblz4-dev libpam0g-dev libreadline-dev \
                          libselinux1-dev libssl-dev libxslt1-dev libzstd-dev \
                          make uuid-dev
  ```

2. Get, build, and test the code

  ```bash
  git clone https://github.com/citusdata/citus.git
  cd citus
  ./configure
  # If you have already installed the project previously, you need to clean it first
  make clean
  make
  sudo make install
  # Optionally, you might instead want to use `sudo make install-all`
  # since `multi_extension` regression test would fail due to missing downgrade scripts.
  cd src/test/regress

  pip install pipenv
  pipenv --rm
  pipenv install
  pipenv shell

  make check
  ```

#### Red Hat-based Linux (RHEL, CentOS, Fedora)

1. Find the RPM URL for your repo at [yum.postgresql.org](http://yum.postgresql.org/repopackages.php)
2. Register its contents with Yum:

  ```bash
  sudo yum install -y <url>
  ```

3. Register EPEL and SCL repositories for your distro.

  On CentOS:

  ```bash
  yum install -y centos-release-scl-rh epel-release
  ```

  On RHEL, see [this RedHat blog post](https://developers.redhat.com/blog/2018/07/07/yum-install-gcc7-clang/) to install set-up SCL first. Then run:

  ```bash
  yum install -y epel-release
  ```

4. Install build dependencies

  ```bash
  sudo yum update -y
  sudo yum groupinstall -y 'Development Tools'
  sudo yum install -y postgresql14-devel postgresql14-server     \
                      git libcurl-devel libxml2-devel libxslt-devel \
                      libzstd-devel llvm-toolset-7-clang llvm5.0 lz4-devel \
                      openssl-devel pam-devel readline-devel

  git clone https://github.com/citusdata/citus.git
  cd citus
  PG_CONFIG=/usr/pgsql-14/bin/pg_config ./configure
  # If you have already installed the project previously, you need to clean it first
  make clean
  make
  sudo make install
  # Optionally, you might instead want to use `sudo make install-all`
  # since `multi_extension` regression test would fail due to missing downgrade scripts.
  cd src/test/regress

  pip install pipenv
  pipenv --rm
  pipenv install
  pipenv shell

  make check
  ```

### Following our coding conventions

Our coding conventions are documented in [STYLEGUIDE.md](STYLEGUIDE.md).

### Making SQL changes

Sometimes you need to make change to the SQL that the citus extension runs upon
creations. The way this is done is by changing the last file in
`src/backend/distributed/sql`, or creating it if the last file is from a
published release. If you needed to create a new file, also change the
`default_version` field in `src/backend/distributed/citus.control` to match your
new version. All the files in this directory are run in order based on
their name. See [this page in the Postgres
docs](https://www.postgresql.org/docs/current/extend-extensions.html) for more
information on how Postgres runs these files.

#### Changing or creating functions

If you need to change any functions defined by Citus. You should check inside
`src/backend/distributed/sql/udfs` to see if there is already a directory for
this function, if not create one. Then change or create the file called
`latest.sql` in that directory to match how it should create the function. This
should be including any DROP (IF EXISTS), COMMENT and REVOKE statements for this
function.

Then copy the `latest.sql` file to `{version}.sql`, where `{version}` is the
version for which this sql change is, e.g. `{9.0-1.sql}`. Now that you've
created this stable snapshot of the function definition for your version you
should use it in your actual sql file, e.g.
`src/backend/distributed/sql/citus--8.3-1--9.0-1.sql`. You do this by using C
style `#include` statements like this:
```
#include "udfs/myudf/9.0-1.sql"
```

#### Other SQL

Any other SQL you can put directly in the main sql file, e.g.
`src/backend/distributed/sql/citus--8.3-1--9.0-1.sql`.

### Backporting a commit to a release branch

1. Check out the release branch that you want to backport to `git checkout release-11.3`
2. Make sure you have the latest changes `git pull`
3. Create a new release branch with a unique name `git checkout -b release-11.3-<yourname>`
4. Cherry-pick the commit that you want to backport `git cherry-pick -x <sha>` (the `-x` is important)
5. Push the branch `git push`
6. Wait for tests to pass
7. If the cherry-pick required non-trivial merge conflicts, create a PR and ask
   for a review.
8. After the tests pass on CI, fast-forward the release branch `git push origin release-11.3-<yourname>:release-11.3`

### 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.

# Making a pull request ready for reviews

Asking for help and asking for reviews are two different things. When you're asking for help, you're asking for someone to help you with something that you're not expected to know.

But when you're asking for a review, you're asking for someone to review your work and provide feedback. So, when you're asking for a review, you're expected to make sure that:

* Your changes don't perform **unnecessar
Download .txt
gitextract_h2dbs482/

├── .codeclimate.yml
├── .codecov.yml
├── .devcontainer/
│   ├── .gdbinit
│   ├── .gitignore
│   ├── .psqlrc
│   ├── .vscode/
│   │   ├── Pipfile
│   │   ├── generate_c_cpp_properties-json.py
│   │   └── launch.json
│   ├── Dockerfile
│   ├── Makefile
│   ├── devcontainer.json
│   ├── pgenv/
│   │   └── config/
│   │       └── default.conf
│   ├── requirements.txt
│   └── src/
│       └── test/
│           └── regress/
│               └── Pipfile
├── .editorconfig
├── .flake8
├── .gitattributes
├── .github/
│   ├── actions/
│   │   ├── parallelization/
│   │   │   └── action.yml
│   │   ├── save_logs_and_results/
│   │   │   └── action.yml
│   │   ├── setup_extension/
│   │   │   └── action.yml
│   │   └── upload_coverage/
│   │       └── action.yml
│   ├── packaging/
│   │   ├── packaging_ignore.yml
│   │   └── validate_build_output.sh
│   ├── pull_request_template.md
│   └── workflows/
│       ├── build_and_test.yml
│       ├── codeql.yml
│       ├── devcontainer.yml
│       ├── flaky_test_debugging.yml
│       ├── packaging-test-pipelines.yml
│       └── run_tests.yml
├── .gitignore
├── .ignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVCONTAINER.md
├── EXTENSION_COMPATIBILITY.md
├── LICENSE
├── Makefile
├── Makefile.global.in
├── NOTICE
├── README.md
├── SECURITY.md
├── STYLEGUIDE.md
├── aclocal.m4
├── autogen.sh
├── cgmanifest.json
├── ci/
│   ├── README.md
│   ├── banned.h.sh
│   ├── build-citus.sh
│   ├── check_all_ci_scripts_are_run.sh
│   ├── check_all_tests_are_run.sh
│   ├── check_gucs_are_alphabetically_sorted.sh
│   ├── check_migration_files.sh
│   ├── check_sql_snapshots.sh
│   ├── ci_helpers.sh
│   ├── disallow_c_comments_in_migrations.sh
│   ├── disallow_hash_comments_in_spec_files.sh
│   ├── disallow_long_changelog_entries.sh
│   ├── editorconfig.sh
│   ├── fix_gitignore.sh
│   ├── fix_style.sh
│   ├── include_grouping.py
│   ├── normalize_expected.sh
│   ├── print_stack_trace.sh
│   ├── remove_useless_declarations.sh
│   └── sort_and_group_includes.sh
├── config/
│   ├── config.guess
│   └── general.m4
├── configure
├── configure.ac
├── prep_buildtree
├── pyproject.toml
├── src/
│   ├── backend/
│   │   ├── .gitignore
│   │   ├── columnar/
│   │   │   ├── .gitattributes
│   │   │   ├── .gitignore
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── citus_columnar.control
│   │   │   ├── columnar.c
│   │   │   ├── columnar_compression.c
│   │   │   ├── columnar_customscan.c
│   │   │   ├── columnar_debug.c
│   │   │   ├── columnar_metadata.c
│   │   │   ├── columnar_reader.c
│   │   │   ├── columnar_storage.c
│   │   │   ├── columnar_tableam.c
│   │   │   ├── columnar_writer.c
│   │   │   ├── mod.c
│   │   │   ├── sql/
│   │   │   │   ├── citus_columnar--11.1-0--11.1-1.sql
│   │   │   │   ├── citus_columnar--11.1-0.sql
│   │   │   │   ├── citus_columnar--11.1-1--11.2-1.sql
│   │   │   │   ├── citus_columnar--11.1-1.sql
│   │   │   │   ├── citus_columnar--11.2-1--11.3-1.sql
│   │   │   │   ├── citus_columnar--11.3-1--12.2-1.sql
│   │   │   │   ├── citus_columnar--12.2-1--13.2-1.sql
│   │   │   │   ├── citus_columnar--13.2-1--14.0-1.sql
│   │   │   │   ├── citus_columnar--14.0-1--15.0-1.sql
│   │   │   │   ├── columnar--10.0-1--10.0-2.sql
│   │   │   │   ├── columnar--10.0-3--10.1-1.sql
│   │   │   │   ├── columnar--10.1-1--10.2-1.sql
│   │   │   │   ├── columnar--10.2-1--10.2-2.sql
│   │   │   │   ├── columnar--10.2-2--10.2-3.sql
│   │   │   │   ├── columnar--10.2-3--10.2-4.sql
│   │   │   │   ├── columnar--11.0-2--11.0-3.sql
│   │   │   │   ├── columnar--11.0-3--11.1-1.sql
│   │   │   │   ├── columnar--9.5-1--10.0-1.sql
│   │   │   │   ├── downgrades/
│   │   │   │   │   ├── citus--11.0-3--11.0-2.sql
│   │   │   │   │   ├── citus_columnar--11.1-1--11.1-0.sql
│   │   │   │   │   ├── citus_columnar--11.2-1--11.1-1.sql
│   │   │   │   │   ├── citus_columnar--11.3-1--11.2-1.sql
│   │   │   │   │   ├── citus_columnar--12.2-1--11.3-1.sql
│   │   │   │   │   ├── citus_columnar--13.2-1--12.2-1.sql
│   │   │   │   │   ├── citus_columnar--14.0-1--13.2-1.sql
│   │   │   │   │   ├── citus_columnar--15.0-1--14.0-1.sql
│   │   │   │   │   ├── columnar--10.0-1--9.5-1.sql
│   │   │   │   │   ├── columnar--10.0-2--10.0-1.sql
│   │   │   │   │   ├── columnar--10.1-1--10.0-3.sql
│   │   │   │   │   ├── columnar--10.2-1--10.1-1.sql
│   │   │   │   │   ├── columnar--10.2-2--10.2-1.sql
│   │   │   │   │   ├── columnar--10.2-3--10.2-2.sql
│   │   │   │   │   ├── columnar--10.2-4--10.2-3.sql
│   │   │   │   │   └── columnar--11.1-1--11.0-3.sql
│   │   │   │   └── udfs/
│   │   │   │       ├── alter_columnar_table_reset/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   ├── 11.1-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── alter_columnar_table_set/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   ├── 11.1-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_ensure_am_depends_catalog/
│   │   │   │       │   ├── 10.2-4.sql
│   │   │   │       │   ├── 11.1-1.sql
│   │   │   │       │   ├── 11.2-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_ensure_objects_exist/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_finish_pg_upgrade/
│   │   │   │       │   ├── 13.2-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── columnar_handler/
│   │   │   │       │   ├── 10.0-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       ├── downgrade_columnar_storage/
│   │   │   │       │   ├── 10.2-1.sql
│   │   │   │       │   └── latest.sql
│   │   │   │       └── upgrade_columnar_storage/
│   │   │   │           ├── 10.2-1.sql
│   │   │   │           └── latest.sql
│   │   │   └── write_state_management.c
│   │   └── distributed/
│   │       ├── .gitignore
│   │       ├── Makefile
│   │       ├── README.md
│   │       ├── cdc/
│   │       │   ├── Makefile
│   │       │   ├── Makefile.decoder
│   │       │   ├── cdc_decoder.c
│   │       │   ├── cdc_decoder_utils.c
│   │       │   └── cdc_decoder_utils.h
│   │       ├── citus--11.1-1.control
│   │       ├── citus.control
│   │       ├── clock/
│   │       │   ├── README.md
│   │       │   └── causal_clock.c
│   │       ├── commands/
│   │       │   ├── README.md
│   │       │   ├── alter_table.c
│   │       │   ├── begin.c
│   │       │   ├── call.c
│   │       │   ├── cascade_table_operation_for_connected_relations.c
│   │       │   ├── citus_add_local_table_to_metadata.c
│   │       │   ├── citus_global_signal.c
│   │       │   ├── cluster.c
│   │       │   ├── collation.c
│   │       │   ├── comment.c
│   │       │   ├── common.c
│   │       │   ├── create_distributed_table.c
│   │       │   ├── database.c
│   │       │   ├── dependencies.c
│   │       │   ├── distribute_object_ops.c
│   │       │   ├── domain.c
│   │       │   ├── drop_distributed_table.c
│   │       │   ├── extension.c
│   │       │   ├── foreign_constraint.c
│   │       │   ├── foreign_data_wrapper.c
│   │       │   ├── foreign_server.c
│   │       │   ├── function.c
│   │       │   ├── grant.c
│   │       │   ├── index.c
│   │       │   ├── index_pg_source.c
│   │       │   ├── local_multi_copy.c
│   │       │   ├── multi_copy.c
│   │       │   ├── non_main_db_distribute_object_ops.c
│   │       │   ├── owned.c
│   │       │   ├── policy.c
│   │       │   ├── publication.c
│   │       │   ├── rename.c
│   │       │   ├── role.c
│   │       │   ├── schema.c
│   │       │   ├── schema_based_sharding.c
│   │       │   ├── seclabel.c
│   │       │   ├── sequence.c
│   │       │   ├── serialize_distributed_ddls.c
│   │       │   ├── statistics.c
│   │       │   ├── subscription.c
│   │       │   ├── table.c
│   │       │   ├── text_search.c
│   │       │   ├── trigger.c
│   │       │   ├── truncate.c
│   │       │   ├── type.c
│   │       │   ├── utility_hook.c
│   │       │   ├── vacuum.c
│   │       │   ├── variableset.c
│   │       │   └── view.c
│   │       ├── connection/
│   │       │   ├── connection_configuration.c
│   │       │   ├── connection_management.c
│   │       │   ├── locally_reserved_shared_connections.c
│   │       │   ├── placement_connection.c
│   │       │   ├── remote_commands.c
│   │       │   ├── shared_connection_stats.c
│   │       │   └── worker_log_messages.c
│   │       ├── deparser/
│   │       │   ├── citus_deparseutils.c
│   │       │   ├── citus_grantutils.c
│   │       │   ├── citus_ruleutils.c
│   │       │   ├── citus_setutils.c
│   │       │   ├── deparse.c
│   │       │   ├── deparse_attribute_stmts.c
│   │       │   ├── deparse_collation_stmts.c
│   │       │   ├── deparse_comment_stmts.c
│   │       │   ├── deparse_database_stmts.c
│   │       │   ├── deparse_domain_stmts.c
│   │       │   ├── deparse_extension_stmts.c
│   │       │   ├── deparse_foreign_data_wrapper_stmts.c
│   │       │   ├── deparse_foreign_server_stmts.c
│   │       │   ├── deparse_function_stmts.c
│   │       │   ├── deparse_owned_stmts.c
│   │       │   ├── deparse_publication_stmts.c
│   │       │   ├── deparse_role_stmts.c
│   │       │   ├── deparse_schema_stmts.c
│   │       │   ├── deparse_seclabel_stmts.c
│   │       │   ├── deparse_sequence_stmts.c
│   │       │   ├── deparse_statistics_stmts.c
│   │       │   ├── deparse_table_stmts.c
│   │       │   ├── deparse_text_search.c
│   │       │   ├── deparse_type_stmts.c
│   │       │   ├── deparse_view_stmts.c
│   │       │   ├── format_collate.c
│   │       │   ├── objectaddress.c
│   │       │   ├── qualify.c
│   │       │   ├── qualify_aggregate_stmts.c
│   │       │   ├── qualify_collation_stmt.c
│   │       │   ├── qualify_domain.c
│   │       │   ├── qualify_function_stmt.c
│   │       │   ├── qualify_publication_stmt.c
│   │       │   ├── qualify_role_stmt.c
│   │       │   ├── qualify_sequence_stmt.c
│   │       │   ├── qualify_statistics_stmt.c
│   │       │   ├── qualify_table_stmt.c
│   │       │   ├── qualify_text_search_stmts.c
│   │       │   ├── qualify_type_stmt.c
│   │       │   ├── qualify_view_stmt.c
│   │       │   ├── ruleutils_16.c
│   │       │   ├── ruleutils_17.c
│   │       │   └── ruleutils_18.c
│   │       ├── executor/
│   │       │   ├── adaptive_executor.c
│   │       │   ├── citus_custom_scan.c
│   │       │   ├── directed_acyclic_graph_execution.c
│   │       │   ├── distributed_execution_locks.c
│   │       │   ├── distributed_intermediate_results.c
│   │       │   ├── executor_util_params.c
│   │       │   ├── executor_util_tasks.c
│   │       │   ├── executor_util_tuples.c
│   │       │   ├── insert_select_executor.c
│   │       │   ├── intermediate_results.c
│   │       │   ├── local_executor.c
│   │       │   ├── merge_executor.c
│   │       │   ├── multi_executor.c
│   │       │   ├── multi_server_executor.c
│   │       │   ├── partitioned_intermediate_results.c
│   │       │   ├── placement_access.c
│   │       │   ├── repartition_executor.c
│   │       │   ├── repartition_join_execution.c
│   │       │   ├── subplan_execution.c
│   │       │   ├── transmit.c
│   │       │   └── tuple_destination.c
│   │       ├── metadata/
│   │       │   ├── dependency.c
│   │       │   ├── distobject.c
│   │       │   ├── metadata_cache.c
│   │       │   ├── metadata_sync.c
│   │       │   ├── metadata_utility.c
│   │       │   ├── node_metadata.c
│   │       │   └── pg_get_object_address_16_17_18.c
│   │       ├── operations/
│   │       │   ├── citus_create_restore_point.c
│   │       │   ├── citus_split_shard_by_split_points.c
│   │       │   ├── citus_tools.c
│   │       │   ├── create_shards.c
│   │       │   ├── delete_protocol.c
│   │       │   ├── health_check.c
│   │       │   ├── isolate_shards.c
│   │       │   ├── modify_multiple_shards.c
│   │       │   ├── node_promotion.c
│   │       │   ├── node_protocol.c
│   │       │   ├── partitioning.c
│   │       │   ├── replicate_none_dist_table_shard.c
│   │       │   ├── shard_cleaner.c
│   │       │   ├── shard_rebalancer.c
│   │       │   ├── shard_split.c
│   │       │   ├── shard_transfer.c
│   │       │   ├── stage_protocol.c
│   │       │   ├── worker_copy_table_to_node_udf.c
│   │       │   ├── worker_node_manager.c
│   │       │   ├── worker_shard_copy.c
│   │       │   ├── worker_split_copy_udf.c
│   │       │   ├── worker_split_shard_release_dsm_udf.c
│   │       │   └── worker_split_shard_replication_setup_udf.c
│   │       ├── planner/
│   │       │   ├── README.md
│   │       │   ├── combine_query_planner.c
│   │       │   ├── cte_inline.c
│   │       │   ├── deparse_shard_query.c
│   │       │   ├── distributed_planner.c
│   │       │   ├── extended_op_node_utils.c
│   │       │   ├── fast_path_router_planner.c
│   │       │   ├── function_call_delegation.c
│   │       │   ├── insert_select_planner.c
│   │       │   ├── intermediate_result_pruning.c
│   │       │   ├── local_distributed_join_planner.c
│   │       │   ├── local_plan_cache.c
│   │       │   ├── merge_planner.c
│   │       │   ├── multi_explain.c
│   │       │   ├── multi_join_order.c
│   │       │   ├── multi_logical_optimizer.c
│   │       │   ├── multi_logical_planner.c
│   │       │   ├── multi_physical_planner.c
│   │       │   ├── multi_router_planner.c
│   │       │   ├── query_colocation_checker.c
│   │       │   ├── query_pushdown_planning.c
│   │       │   ├── recursive_planning.c
│   │       │   ├── relation_restriction_equivalence.c
│   │       │   ├── shard_pruning.c
│   │       │   └── tdigest_extension.c
│   │       ├── progress/
│   │       │   └── multi_progress.c
│   │       ├── relay/
│   │       │   └── relay_event_utility.c
│   │       ├── replication/
│   │       │   └── multi_logical_replication.c
│   │       ├── shardsplit/
│   │       │   ├── shardsplit_decoder.c
│   │       │   ├── shardsplit_logical_replication.c
│   │       │   └── shardsplit_shared_memory.c
│   │       ├── shared_library_init.c
│   │       ├── sql/
│   │       │   ├── cat_upgrades/
│   │       │   │   ├── add_clone_info_to_pg_dist_node.sql
│   │       │   │   └── remove_clone_info_to_pg_dist_node.sql
│   │       │   ├── citus--10.0-1--10.0-2.sql
│   │       │   ├── citus--10.0-2--10.0-3.sql
│   │       │   ├── citus--10.0-3--10.0-4.sql
│   │       │   ├── citus--10.0-4--10.1-1.sql
│   │       │   ├── citus--10.1-1--10.2-1.sql
│   │       │   ├── citus--10.2-1--10.2-2.sql
│   │       │   ├── citus--10.2-2--10.2-3.sql
│   │       │   ├── citus--10.2-3--10.2-4.sql
│   │       │   ├── citus--10.2-4--10.2-5.sql
│   │       │   ├── citus--10.2-5--10.2-4.sql
│   │       │   ├── citus--10.2-5--11.0-1.sql
│   │       │   ├── citus--11.0-1--11.0-2.sql
│   │       │   ├── citus--11.0-2--11.0-3.sql
│   │       │   ├── citus--11.0-3--11.0-4.sql
│   │       │   ├── citus--11.0-4--11.0-3.sql
│   │       │   ├── citus--11.0-4--11.1-1.sql
│   │       │   ├── citus--11.1-1--11.2-1.sql
│   │       │   ├── citus--11.2-1--11.2-2.sql
│   │       │   ├── citus--11.2-2--11.3-1.sql
│   │       │   ├── citus--11.3-1--11.3-2.sql
│   │       │   ├── citus--11.3-2--12.0-1.sql
│   │       │   ├── citus--12.0-1--12.1-1.sql
│   │       │   ├── citus--12.1-1--13.0-1.sql
│   │       │   ├── citus--13.0-1--13.1-1.sql
│   │       │   ├── citus--13.1-1--13.2-1.sql
│   │       │   ├── citus--13.2-1--14.0-1.sql
│   │       │   ├── citus--14.0-1--15.0-1.sql
│   │       │   ├── citus--8.0-1--8.0-2.sql
│   │       │   ├── citus--8.0-1.sql
│   │       │   ├── citus--8.0-10--8.0-11.sql
│   │       │   ├── citus--8.0-11--8.0-12.sql
│   │       │   ├── citus--8.0-12--8.0-13.sql
│   │       │   ├── citus--8.0-13--8.1-1.sql
│   │       │   ├── citus--8.0-2--8.0-3.sql
│   │       │   ├── citus--8.0-3--8.0-4.sql
│   │       │   ├── citus--8.0-4--8.0-5.sql
│   │       │   ├── citus--8.0-5--8.0-6.sql
│   │       │   ├── citus--8.0-6--8.0-7.sql
│   │       │   ├── citus--8.0-7--8.0-8.sql
│   │       │   ├── citus--8.0-8--8.0-9.sql
│   │       │   ├── citus--8.0-9--8.0-10.sql
│   │       │   ├── citus--8.1-1--8.2-1.sql
│   │       │   ├── citus--8.2-1--8.2-2.sql
│   │       │   ├── citus--8.2-2--8.2-3.sql
│   │       │   ├── citus--8.2-3--8.2-4.sql
│   │       │   ├── citus--8.2-4--8.3-1.sql
│   │       │   ├── citus--8.3-1--9.0-1.sql
│   │       │   ├── citus--9.0-1--9.0-2.sql
│   │       │   ├── citus--9.0-2--9.1-1.sql
│   │       │   ├── citus--9.1-1--9.2-1.sql
│   │       │   ├── citus--9.2-1--9.2-2.sql
│   │       │   ├── citus--9.2-2--9.2-4.sql
│   │       │   ├── citus--9.2-4--9.3-2.sql
│   │       │   ├── citus--9.3-1--9.2-4.sql
│   │       │   ├── citus--9.3-2--9.4-1.sql
│   │       │   ├── citus--9.4-1--9.4-2.sql
│   │       │   ├── citus--9.4-1--9.5-1.sql
│   │       │   ├── citus--9.4-2--9.4-1.sql
│   │       │   ├── citus--9.4-2--9.4-3.sql
│   │       │   ├── citus--9.4-3--9.4-2.sql
│   │       │   ├── citus--9.5-1--10.0-4.sql
│   │       │   ├── citus--9.5-1--9.5-2.sql
│   │       │   ├── citus--9.5-2--9.5-1.sql
│   │       │   ├── citus--9.5-2--9.5-3.sql
│   │       │   ├── citus--9.5-3--9.5-2.sql
│   │       │   ├── datatypes/
│   │       │   │   └── citus_cluster_clock/
│   │       │   │       └── 11.2-1.sql
│   │       │   ├── downgrades/
│   │       │   │   ├── citus--10.0-4--9.5-1.sql
│   │       │   │   ├── citus--10.1-1--10.0-4.sql
│   │       │   │   ├── citus--10.2-1--10.1-1.sql
│   │       │   │   ├── citus--10.2-2--10.2-1.sql
│   │       │   │   ├── citus--10.2-3--10.2-2.sql
│   │       │   │   ├── citus--10.2-4--10.2-3.sql
│   │       │   │   ├── citus--11.0-1--10.2-4.sql
│   │       │   │   ├── citus--11.0-2--11.0-1.sql
│   │       │   │   ├── citus--11.0-3--11.0-2.sql
│   │       │   │   ├── citus--11.1-1--11.0-4.sql
│   │       │   │   ├── citus--11.2-1--11.1-1.sql
│   │       │   │   ├── citus--11.2-2--11.2-1.sql
│   │       │   │   ├── citus--11.3-1--11.2-2.sql
│   │       │   │   ├── citus--11.3-2--11.3-1.sql
│   │       │   │   ├── citus--12.0-1--11.3-2.sql
│   │       │   │   ├── citus--12.1-1--12.0-1.sql
│   │       │   │   ├── citus--13.0-1--12.1-1.sql
│   │       │   │   ├── citus--13.1-1--13.0-1.sql
│   │       │   │   ├── citus--13.2-1--13.1-1.sql
│   │       │   │   ├── citus--14.0-1--13.2-1.sql
│   │       │   │   ├── citus--15.0-1--14.0-1.sql
│   │       │   │   ├── citus--9.2-4--9.2-2.sql
│   │       │   │   ├── citus--9.3-2--9.2-4.sql
│   │       │   │   ├── citus--9.4-1--9.3-2.sql
│   │       │   │   └── citus--9.5-1--9.4-1.sql
│   │       │   └── udfs/
│   │       │       ├── alter_distributed_table/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── alter_old_partitions_set_access_method/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── alter_role_if_exists/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── alter_table_set_access_method/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── any_value/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_activate_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_clone_node/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_inactive_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_rebalance_strategy/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_add_secondary_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_backend_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_blocking_pids/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_calculate_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_check_cluster_node_health/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_check_connection_to_node/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_cleanup_orphaned_resources/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_cleanup_orphaned_shards/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_conninfo_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_coordinator_nodeid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_copy_shard_placement/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_disable_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_local_group_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_node_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_object_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_partition_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_placement_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_shard_cache_invalidate/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_dist_stat_activity/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_drain_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_drop_trigger/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_extradata_container/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_finalize_upgrade_to_citus11/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   ├── 11.0-3.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_finish_citus_upgrade/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_finish_pg_upgrade/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.0-4.sql
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   ├── 10.2-5.sql
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-4.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   ├── 9.4-2.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   ├── 9.5-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_get_node_clock/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_get_transaction_clock/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_acquire_citus_advisory_object_class_lock/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_colocation_metadata/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_object_metadata/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_partition_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_placement_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_shard_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_add_tenant_schema/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_adjust_local_clock_to_remote/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_copy_single_shard_placement/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_database_command/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_colocation_metadata/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_partition_metadata/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_placement_metadata/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_shard_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_delete_tenant_schema/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_global_blocked_processes/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_local_blocked_processes/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_mark_node_not_synced/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_unregister_tenant_schema_globally/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_update_none_dist_table_metadata/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_update_placement_metadata/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_internal_update_relation_colocation/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_is_clock_after/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_is_coordinator/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_is_primary_node/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_isolation_test_session_is_blocked/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   ├── 8.0-6.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_cancel/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_list/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_status/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_job_wait/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_local_disk_space_stats/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_lock_waits/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_locks/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_move_shard_placement/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_node_capacity_1/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodeid_for_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodename_for_nodeid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodeport_for_nodeid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_nodes/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_pause_node_within_txn/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_pid_for_gpid/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_prepare_pg_upgrade/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   ├── 13.0-1.sql
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   ├── 9.4-2.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   ├── 9.5-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_promote_clone_and_rebalance/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_start/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_status/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_stop/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_rebalance_wait/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_remote_connection_stats/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_remove_clone_node/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_remove_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_run_local_command/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schema_distribute/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schema_move/
│   │       │       │   ├── 12.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schema_undistribute/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_schemas/
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_set_coordinator_host/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_set_default_rebalance_strategy/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_set_node_property/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_allowed_on_node_true/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_cost_1/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_cost_by_disk_size/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_indexes_on_worker/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shard_sizes/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 11.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shards/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.3-2.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_shards_on_worker/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_split_shard_by_split_points/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_activity/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_counters/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_counters_reset/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants_local/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants_local_reset/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stat_tenants_reset/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_stats/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_tables/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.0-4.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.3-2.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_task_wait/
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_total_relation_size/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 7.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_unmark_object_distributed/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_update_node/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_update_shard_statistics/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_update_table_statistics/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 10.0-3.sql
│   │       │       │   └── latest.sql
│   │       │       ├── citus_validate_rebalance_strategy_functions/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── commit_management_command_2pc/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── coord_binary_combine_agg/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── coord_binary_combine_agg_ffunc/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── coord_binary_combine_agg_sfunc/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_citus_local_table/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_distributed_function/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_distributed_table/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_distributed_table_concurrently/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── create_time_partitions/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 13.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── distributed_tables_colocated/
│   │       │       │   ├── 9.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── drop_old_time_partitions/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fetch_intermediate_results/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_all_partition_shard_index_names/
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_partition_shard_index_names/
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_pre_citus10_partitioned_table_constraint_names/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── fix_pre_citus14_colocation_group_collation_mismatches/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_all_active_transactions/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_global_active_transactions/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_missing_time_partition_ranges/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   ├── 12.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_rebalance_progress/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 11.2-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_rebalance_table_shards_plan/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── get_snapshot_based_node_split_plan/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── isolate_tenant_to_new_shard/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 8.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_add_inactive_node/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_add_node/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_drain_node/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── master_set_node_property/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_cancel_backend/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_dist_rebalance_strategy_trigger_func/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_dist_shard_placement_trigger_func/
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── pg_terminate_backend/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── read_intermediate_results/
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── rebalance_table_shards/
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── remove_local_tables_from_metadata/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── repl_origin_helper/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── replicate_reference_tables/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── replicate_table_shards/
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── run_command_on_all_nodes/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── run_command_on_coordinator/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── shard_name/
│   │       │       │   ├── 13.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── start_metadata_sync_to_all_nodes/
│   │       │       │   ├── 11.0-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── stop_metadata_sync_to_node/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── time_partition_range/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── time_partitions/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── truncate_local_data_after_distributing_table/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── undistribute_table/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── update_distributed_table_colocation/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── upgrade_to_reference_table/
│   │       │       │   ├── 8.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_adjust_identity_column_seq_ranges/
│   │       │       │   ├── 11.2-2.sql
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_binary_partial_agg/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_binary_partial_agg_ffunc/
│   │       │       │   ├── 14.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_change_sequence_dependency/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_copy_table_to_node/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_create_or_alter_role/
│   │       │       │   ├── 9.3-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_create_or_replace_object/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 9.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_create_schema/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   ├── 9.2-2.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_drop_all_shell_tables/
│   │       │       │   ├── 11.3-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_drop_sequence_dependency/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_drop_shell_table/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_fix_partition_shard_index_names/
│   │       │       │   ├── 10.2-4.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_fix_pre_citus10_partitioned_table_constraint_names/
│   │       │       │   ├── 10.0-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_last_saved_explain_analyze/
│   │       │       │   ├── 13.2-1.sql
│   │       │       │   ├── 9.4-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_nextval/
│   │       │       │   ├── 10.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partition_query_result/
│   │       │       │   ├── 11.0-1.sql
│   │       │       │   ├── 9.2-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partitioned_relation_size/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partitioned_relation_total_size/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_partitioned_table_size/
│   │       │       │   ├── 10.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_record_sequence_dependency/
│   │       │       │   ├── 9.5-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_repartition_cleanup/
│   │       │       │   ├── 9.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_save_query_explain_analyze/
│   │       │       │   ├── 9.4-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_split_copy/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       ├── worker_split_shard_release_dsm/
│   │       │       │   ├── 11.1-1.sql
│   │       │       │   └── latest.sql
│   │       │       └── worker_split_shard_replication_setup/
│   │       │           ├── 11.1-1.sql
│   │       │           ├── 11.2-1.sql
│   │       │           └── latest.sql
│   │       ├── stats/
│   │       │   ├── query_stats.c
│   │       │   ├── stat_counters.c
│   │       │   └── stat_tenants.c
│   │       ├── test/
│   │       │   ├── backend_counter.c
│   │       │   ├── citus_depended_object.c
│   │       │   ├── citus_stat_tenants.c
│   │       │   ├── colocation_utils.c
│   │       │   ├── create_shards.c
│   │       │   ├── deparse_function_query.c
│   │       │   ├── deparse_shard_query.c
│   │       │   ├── dependency.c
│   │       │   ├── distributed_deadlock_detection.c
│   │       │   ├── distributed_intermediate_results.c
│   │       │   ├── distribution_metadata.c
│   │       │   ├── fake_am.c
│   │       │   ├── fake_fdw.c
│   │       │   ├── foreign_key_relationship_query.c
│   │       │   ├── global_pid.c
│   │       │   ├── hide_shards.c
│   │       │   ├── intermediate_results.c
│   │       │   ├── make_external_connection.c
│   │       │   ├── metadata_sync.c
│   │       │   ├── partitioning_utils.c
│   │       │   ├── progress_utils.c
│   │       │   ├── prune_shard_list.c
│   │       │   ├── relation_access_tracking.c
│   │       │   ├── run_from_same_connection.c
│   │       │   ├── sequential_execution.c
│   │       │   ├── shard_rebalancer.c
│   │       │   ├── shared_connection_counters.c
│   │       │   └── xact_stats.c
│   │       ├── transaction/
│   │       │   ├── backend_data.c
│   │       │   ├── citus_dist_stat_activity.c
│   │       │   ├── distributed_deadlock_detection.c
│   │       │   ├── lock_graph.c
│   │       │   ├── relation_access_tracking.c
│   │       │   ├── remote_transaction.c
│   │       │   ├── transaction_management.c
│   │       │   ├── transaction_recovery.c
│   │       │   └── worker_transaction.c
│   │       ├── utils/
│   │       │   ├── acquire_lock.c
│   │       │   ├── aggregate_utils.c
│   │       │   ├── array_type.c
│   │       │   ├── background_jobs.c
│   │       │   ├── background_worker_utils.c
│   │       │   ├── cancel_utils.c
│   │       │   ├── citus_clauses.c
│   │       │   ├── citus_copyfuncs.c
│   │       │   ├── citus_depended_object.c
│   │       │   ├── citus_nodefuncs.c
│   │       │   ├── citus_outfuncs.c
│   │       │   ├── citus_readfuncs.c
│   │       │   ├── citus_safe_lib.c
│   │       │   ├── citus_version.c
│   │       │   ├── clonenode_utils.c
│   │       │   ├── colocation_utils.c
│   │       │   ├── directory.c
│   │       │   ├── distribution_column.c
│   │       │   ├── distribution_column_map.c
│   │       │   ├── enable_ssl.c
│   │       │   ├── errormessage.c
│   │       │   ├── foreign_key_relationship.c
│   │       │   ├── function.c
│   │       │   ├── function_utils.c
│   │       │   ├── hash_helpers.c
│   │       │   ├── jsonbutils.c
│   │       │   ├── listutils.c
│   │       │   ├── log_utils.c
│   │       │   ├── maintenanced.c
│   │       │   ├── multi_partitioning_utils.c
│   │       │   ├── namespace_utils.c
│   │       │   ├── param_utils.c
│   │       │   ├── priority.c
│   │       │   ├── query_utils.c
│   │       │   ├── reference_table_utils.c
│   │       │   ├── relation_utils.c
│   │       │   ├── replication_origin_session_utils.c
│   │       │   ├── resource_lock.c
│   │       │   ├── role.c
│   │       │   ├── shard_utils.c
│   │       │   ├── shardinterval_utils.c
│   │       │   ├── string_utils.c
│   │       │   ├── task_execution_utils.c
│   │       │   ├── tenant_schema_metadata.c
│   │       │   ├── tuplestore.c
│   │       │   └── type_utils.c
│   │       └── worker/
│   │           ├── task_tracker_protocol.c
│   │           ├── worker_create_or_replace.c
│   │           ├── worker_data_fetch_protocol.c
│   │           ├── worker_drop_protocol.c
│   │           ├── worker_partition_protocol.c
│   │           ├── worker_shard_visibility.c
│   │           ├── worker_sql_task_protocol.c
│   │           └── worker_truncate_trigger_protocol.c
│   ├── include/
│   │   ├── .gitignore
│   │   ├── citus_config.h.in
│   │   ├── citus_version.h.in
│   │   ├── columnar/
│   │   │   ├── columnar.h
│   │   │   ├── columnar_compression.h
│   │   │   ├── columnar_customscan.h
│   │   │   ├── columnar_metadata.h
│   │   │   ├── columnar_storage.h
│   │   │   ├── columnar_tableam.h
│   │   │   └── columnar_version_compat.h
│   │   ├── distributed/
│   │   │   ├── adaptive_executor.h
│   │   │   ├── argutils.h
│   │   │   ├── backend_data.h
│   │   │   ├── background_jobs.h
│   │   │   ├── background_worker_utils.h
│   │   │   ├── cancel_utils.h
│   │   │   ├── causal_clock.h
│   │   │   ├── citus_acquire_lock.h
│   │   │   ├── citus_clauses.h
│   │   │   ├── citus_custom_scan.h
│   │   │   ├── citus_depended_object.h
│   │   │   ├── citus_nodefuncs.h
│   │   │   ├── citus_nodes.h
│   │   │   ├── citus_ruleutils.h
│   │   │   ├── citus_safe_lib.h
│   │   │   ├── clonenode_utils.h
│   │   │   ├── colocation_utils.h
│   │   │   ├── combine_query_planner.h
│   │   │   ├── commands/
│   │   │   │   ├── multi_copy.h
│   │   │   │   ├── sequence.h
│   │   │   │   ├── serialize_distributed_ddls.h
│   │   │   │   └── utility_hook.h
│   │   │   ├── commands.h
│   │   │   ├── comment.h
│   │   │   ├── connection_management.h
│   │   │   ├── coordinator_protocol.h
│   │   │   ├── cte_inline.h
│   │   │   ├── deparse_shard_query.h
│   │   │   ├── deparser.h
│   │   │   ├── directed_acyclic_graph_execution.h
│   │   │   ├── distributed_deadlock_detection.h
│   │   │   ├── distributed_execution_locks.h
│   │   │   ├── distributed_planner.h
│   │   │   ├── distribution_column.h
│   │   │   ├── enterprise.h
│   │   │   ├── error_codes.h
│   │   │   ├── errormessage.h
│   │   │   ├── executor_util.h
│   │   │   ├── extended_op_node_utils.h
│   │   │   ├── foreign_key_relationship.h
│   │   │   ├── function_call_delegation.h
│   │   │   ├── function_utils.h
│   │   │   ├── hash_helpers.h
│   │   │   ├── insert_select_executor.h
│   │   │   ├── insert_select_planner.h
│   │   │   ├── intermediate_result_pruning.h
│   │   │   ├── intermediate_results.h
│   │   │   ├── jsonbutils.h
│   │   │   ├── listutils.h
│   │   │   ├── local_distributed_join_planner.h
│   │   │   ├── local_executor.h
│   │   │   ├── local_multi_copy.h
│   │   │   ├── local_plan_cache.h
│   │   │   ├── locally_reserved_shared_connections.h
│   │   │   ├── lock_graph.h
│   │   │   ├── log_utils.h
│   │   │   ├── maintenanced.h
│   │   │   ├── memutils.h
│   │   │   ├── merge_executor.h
│   │   │   ├── merge_planner.h
│   │   │   ├── metadata/
│   │   │   │   ├── dependency.h
│   │   │   │   ├── distobject.h
│   │   │   │   └── pg_dist_object.h
│   │   │   ├── metadata_cache.h
│   │   │   ├── metadata_sync.h
│   │   │   ├── metadata_utility.h
│   │   │   ├── multi_executor.h
│   │   │   ├── multi_explain.h
│   │   │   ├── multi_join_order.h
│   │   │   ├── multi_logical_optimizer.h
│   │   │   ├── multi_logical_planner.h
│   │   │   ├── multi_logical_replication.h
│   │   │   ├── multi_partitioning_utils.h
│   │   │   ├── multi_physical_planner.h
│   │   │   ├── multi_progress.h
│   │   │   ├── multi_router_planner.h
│   │   │   ├── multi_server_executor.h
│   │   │   ├── namespace_utils.h
│   │   │   ├── param_utils.h
│   │   │   ├── pg_dist_background_job.h
│   │   │   ├── pg_dist_background_task.h
│   │   │   ├── pg_dist_backrgound_task_depend.h
│   │   │   ├── pg_dist_cleanup.h
│   │   │   ├── pg_dist_colocation.h
│   │   │   ├── pg_dist_local_group.h
│   │   │   ├── pg_dist_node.h
│   │   │   ├── pg_dist_node_metadata.h
│   │   │   ├── pg_dist_partition.h
│   │   │   ├── pg_dist_placement.h
│   │   │   ├── pg_dist_rebalance_strategy.h
│   │   │   ├── pg_dist_schema.h
│   │   │   ├── pg_dist_shard.h
│   │   │   ├── pg_dist_transaction.h
│   │   │   ├── placement_access.h
│   │   │   ├── placement_connection.h
│   │   │   ├── priority.h
│   │   │   ├── query_colocation_checker.h
│   │   │   ├── query_pushdown_planning.h
│   │   │   ├── query_utils.h
│   │   │   ├── recursive_planning.h
│   │   │   ├── reference_table_utils.h
│   │   │   ├── relation_access_tracking.h
│   │   │   ├── relation_restriction_equivalence.h
│   │   │   ├── relation_utils.h
│   │   │   ├── relay_utility.h
│   │   │   ├── remote_commands.h
│   │   │   ├── remote_transaction.h
│   │   │   ├── repartition_executor.h
│   │   │   ├── repartition_join_execution.h
│   │   │   ├── replicate_none_dist_table_shard.h
│   │   │   ├── replication_origin_session_utils.h
│   │   │   ├── resource_lock.h
│   │   │   ├── run_from_same_connection.h
│   │   │   ├── shard_cleaner.h
│   │   │   ├── shard_pruning.h
│   │   │   ├── shard_rebalancer.h
│   │   │   ├── shard_split.h
│   │   │   ├── shard_transfer.h
│   │   │   ├── shard_utils.h
│   │   │   ├── shardinterval_utils.h
│   │   │   ├── shardsplit_logical_replication.h
│   │   │   ├── shardsplit_shared_memory.h
│   │   │   ├── shared_connection_stats.h
│   │   │   ├── shared_library_init.h
│   │   │   ├── stats/
│   │   │   │   ├── query_stats.h
│   │   │   │   ├── stat_counters.h
│   │   │   │   └── stat_tenants.h
│   │   │   ├── string_utils.h
│   │   │   ├── subplan_execution.h
│   │   │   ├── task_execution_utils.h
│   │   │   ├── tdigest_extension.h
│   │   │   ├── tenant_schema_metadata.h
│   │   │   ├── time_constants.h
│   │   │   ├── transaction_identifier.h
│   │   │   ├── transaction_management.h
│   │   │   ├── transaction_recovery.h
│   │   │   ├── transmit.h
│   │   │   ├── tuple_destination.h
│   │   │   ├── tuplestore.h
│   │   │   ├── type_utils.h
│   │   │   ├── utils/
│   │   │   │   ├── array_type.h
│   │   │   │   ├── directory.h
│   │   │   │   ├── distribution_column_map.h
│   │   │   │   └── function.h
│   │   │   ├── version_compat.h
│   │   │   ├── worker_create_or_replace.h
│   │   │   ├── worker_log_messages.h
│   │   │   ├── worker_manager.h
│   │   │   ├── worker_protocol.h
│   │   │   ├── worker_shard_copy.h
│   │   │   ├── worker_shard_visibility.h
│   │   │   └── worker_transaction.h
│   │   ├── pg_version_compat.h
│   │   └── pg_version_constants.h
│   └── test/
│       ├── cdc/
│       │   ├── Makefile
│       │   ├── postgresql.conf
│       │   └── t/
│       │       ├── 001_cdc_create_distributed_table_test.pl
│       │       ├── 002_cdc_create_distributed_table_concurrently.pl
│       │       ├── 003_cdc_parallel_insert.pl
│       │       ├── 004_cdc_move_shard.pl
│       │       ├── 005_cdc_reference_table_test.pl
│       │       ├── 006_cdc_schema_change_and_move.pl
│       │       ├── 007_cdc_undistributed_table_test.pl
│       │       ├── 008_cdc_shard_split_test.pl
│       │       ├── 009_cdc_shard_split_test_non_blocking.pl
│       │       ├── 010_cdc_shard_split_parallel_insert.pl
│       │       ├── 011_cdc_alter_distributed_table.pl
│       │       ├── 012_cdc_restart_test.pl
│       │       ├── 013_cdc_drop_last_column_for_one_shard.pl
│       │       ├── 014_cdc_with_table_like_shard_name.pl
│       │       ├── 015_cdc_without_citus.pl
│       │       ├── 016_cdc_wal2json.pl
│       │       └── cdctestlib.pm
│       ├── hammerdb/
│       │   ├── README.md
│       │   └── run_hammerdb.sh
│       ├── regress/
│       │   ├── .gitignore
│       │   ├── Makefile
│       │   ├── Pipfile
│       │   ├── README.md
│       │   ├── after_citus_upgrade_coord_schedule
│       │   ├── after_pg_upgrade_with_columnar_schedule
│       │   ├── after_pg_upgrade_without_columnar_schedule
│       │   ├── base_isolation_schedule
│       │   ├── base_schedule
│       │   ├── before_citus_upgrade_coord_schedule
│       │   ├── before_pg_upgrade_with_columnar_schedule
│       │   ├── before_pg_upgrade_without_columnar_schedule
│       │   ├── bin/
│       │   │   ├── copy_modified
│       │   │   ├── copy_modified_wrapper
│       │   │   ├── create_test.py
│       │   │   ├── diff
│       │   │   ├── diff-filter
│       │   │   ├── normalize.sed
│       │   │   ├── test/
│       │   │   │   ├── expected/
│       │   │   │   │   ├── different.out
│       │   │   │   │   └── same.out
│       │   │   │   ├── file.out
│       │   │   │   ├── file_different.out
│       │   │   │   └── file_same.out
│       │   │   └── test_diff
│       │   ├── citus_tests/
│       │   │   ├── __init__.py
│       │   │   ├── arbitrary_configs/
│       │   │   │   ├── README.md
│       │   │   │   ├── __init__.py
│       │   │   │   └── citus_arbitrary_configs.py
│       │   │   ├── common.py
│       │   │   ├── config.py
│       │   │   ├── print_test_names.py
│       │   │   ├── query_generator/
│       │   │   │   ├── .gitignore
│       │   │   │   ├── README.md
│       │   │   │   ├── bin/
│       │   │   │   │   ├── citus_compare_dist_local_joins.sh
│       │   │   │   │   ├── diff-checker.py
│       │   │   │   │   └── run_query_compare_test.py
│       │   │   │   ├── config/
│       │   │   │   │   ├── config.py
│       │   │   │   │   ├── config.yaml
│       │   │   │   │   └── config_parser.py
│       │   │   │   ├── data_gen.py
│       │   │   │   ├── ddl_gen.py
│       │   │   │   ├── generate_queries.py
│       │   │   │   ├── node_defs.py
│       │   │   │   ├── out/
│       │   │   │   │   └── .gitignore
│       │   │   │   ├── query_gen.py
│       │   │   │   └── random_selections.py
│       │   │   ├── run_test.py
│       │   │   ├── test/
│       │   │   │   ├── README.md
│       │   │   │   ├── __init__.py
│       │   │   │   ├── conftest.py
│       │   │   │   ├── test_columnar.py
│       │   │   │   ├── test_extension.py
│       │   │   │   └── test_prepared_statements.py
│       │   │   ├── upgrade/
│       │   │   │   ├── README.md
│       │   │   │   ├── __init__.py
│       │   │   │   ├── citus_upgrade_test.py
│       │   │   │   ├── generate_citus_tarballs.sh
│       │   │   │   └── pg_upgrade_test.py
│       │   │   └── utils.py
│       │   ├── columnar_isolation_schedule
│       │   ├── columnar_schedule
│       │   ├── create_schedule
│       │   ├── data/
│       │   │   ├── ads.csv
│       │   │   ├── agg.data
│       │   │   ├── agg_type.data
│       │   │   ├── array_types.csv
│       │   │   ├── campaigns.csv
│       │   │   ├── clicks.csv
│       │   │   ├── companies.csv
│       │   │   ├── contestants.1.csv
│       │   │   ├── contestants.2.csv
│       │   │   ├── customer-1-10.data
│       │   │   ├── customer-1-15.data
│       │   │   ├── customer-1-20.data
│       │   │   ├── customer-1-30.data
│       │   │   ├── customer-11-20.data
│       │   │   ├── customer-21-30.data
│       │   │   ├── customer-subset-11-20.data
│       │   │   ├── customer-subset-21-30.data
│       │   │   ├── customer.1.data
│       │   │   ├── customer.2.data
│       │   │   ├── customer.3.data
│       │   │   ├── datetime_types.csv
│       │   │   ├── enum_and_composite_types.csv
│       │   │   ├── events_table.data
│       │   │   ├── impressions.csv
│       │   │   ├── large_records.data
│       │   │   ├── lineitem.1.data
│       │   │   ├── lineitem.2.data
│       │   │   ├── nation.data
│       │   │   ├── null_values.csv
│       │   │   ├── orders.1.data
│       │   │   ├── orders.2.data
│       │   │   ├── other_types.csv
│       │   │   ├── part.data
│       │   │   ├── part.more.data
│       │   │   ├── range_types.csv
│       │   │   ├── supplier.data
│       │   │   └── users_table.data
│       │   ├── enterprise_failure_schedule
│       │   ├── enterprise_isolation_logicalrep_1_schedule
│       │   ├── enterprise_isolation_logicalrep_2_schedule
│       │   ├── enterprise_isolation_logicalrep_3_schedule
│       │   ├── enterprise_isolation_schedule
│       │   ├── enterprise_minimal_schedule
│       │   ├── enterprise_schedule
│       │   ├── expected/
│       │   │   ├── adaptive_executor.out
│       │   │   ├── adaptive_executor_repartition.out
│       │   │   ├── add_coordinator.out
│       │   │   ├── adv_lock_permission.out
│       │   │   ├── aggregate_support.out
│       │   │   ├── alter_database_owner.out
│       │   │   ├── alter_database_propagation.out
│       │   │   ├── alter_distributed_table.out
│       │   │   ├── alter_index.out
│       │   │   ├── alter_role_propagation.out
│       │   │   ├── alter_table_add_column.out
│       │   │   ├── alter_table_set_access_method.out
│       │   │   ├── alter_table_single_shard_table.out
│       │   │   ├── anonymous_columns.out
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name.out
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name_create.out
│       │   │   ├── arbitrary_configs_recurring_outer_join.out
│       │   │   ├── arbitrary_configs_router.out
│       │   │   ├── arbitrary_configs_router_create.out
│       │   │   ├── arbitrary_configs_truncate.out
│       │   │   ├── arbitrary_configs_truncate_cascade.out
│       │   │   ├── arbitrary_configs_truncate_cascade_create.out
│       │   │   ├── arbitrary_configs_truncate_create.out
│       │   │   ├── arbitrary_configs_truncate_partition.out
│       │   │   ├── arbitrary_configs_truncate_partition_create.out
│       │   │   ├── auto_undist_citus_local.out
│       │   │   ├── background_rebalance.out
│       │   │   ├── background_rebalance_parallel.out
│       │   │   ├── background_rebalance_parallel_reference_tables.out
│       │   │   ├── background_task_queue_monitor.out
│       │   │   ├── base_enable_mx.out
│       │   │   ├── binary_protocol.out
│       │   │   ├── bool_agg.out
│       │   │   ├── cdc_library_path.out
│       │   │   ├── ch_bench_having.out
│       │   │   ├── ch_bench_having_mx.out
│       │   │   ├── ch_bench_subquery_repartition.out
│       │   │   ├── ch_benchmarks_1.out
│       │   │   ├── ch_benchmarks_2.out
│       │   │   ├── ch_benchmarks_3.out
│       │   │   ├── ch_benchmarks_4.out
│       │   │   ├── ch_benchmarks_5.out
│       │   │   ├── ch_benchmarks_6.out
│       │   │   ├── ch_benchmarks_create_load.out
│       │   │   ├── chbenchmark_all_queries.out
│       │   │   ├── check_cluster_state.out
│       │   │   ├── check_mx.out
│       │   │   ├── citus_aggregated_stats.out
│       │   │   ├── citus_copy_shard_placement.out
│       │   │   ├── citus_depended_object.out
│       │   │   ├── citus_drain_node.out
│       │   │   ├── citus_internal_access.out
│       │   │   ├── citus_local_dist_joins.out
│       │   │   ├── citus_local_table_triggers.out
│       │   │   ├── citus_local_tables.out
│       │   │   ├── citus_local_tables_ent.out
│       │   │   ├── citus_local_tables_mx.out
│       │   │   ├── citus_local_tables_queries.out
│       │   │   ├── citus_local_tables_queries_mx.out
│       │   │   ├── citus_locks.out
│       │   │   ├── citus_non_blocking_split_columnar.out
│       │   │   ├── citus_non_blocking_split_shard_cleanup.out
│       │   │   ├── citus_non_blocking_split_shards.out
│       │   │   ├── citus_run_command.out
│       │   │   ├── citus_schema_distribute_undistribute.out
│       │   │   ├── citus_schema_move.out
│       │   │   ├── citus_shards.out
│       │   │   ├── citus_split_shard_by_split_points.out
│       │   │   ├── citus_split_shard_by_split_points_deferred_drop.out
│       │   │   ├── citus_split_shard_by_split_points_failure.out
│       │   │   ├── citus_split_shard_by_split_points_negative.out
│       │   │   ├── citus_split_shard_columnar_partitioned.out
│       │   │   ├── citus_stat_tenants.out
│       │   │   ├── citus_table_triggers.out
│       │   │   ├── citus_update_table_statistics.out
│       │   │   ├── clock.out
│       │   │   ├── columnar_alter.out
│       │   │   ├── columnar_alter_set_type.out
│       │   │   ├── columnar_analyze.out
│       │   │   ├── columnar_chunk_filtering.out
│       │   │   ├── columnar_chunk_filtering_0.out
│       │   │   ├── columnar_citus_integration.out
│       │   │   ├── columnar_clean.out
│       │   │   ├── columnar_copyto.out
│       │   │   ├── columnar_create.out
│       │   │   ├── columnar_cursor.out
│       │   │   ├── columnar_data_types.out
│       │   │   ├── columnar_drop.out
│       │   │   ├── columnar_empty.out
│       │   │   ├── columnar_fallback_scan.out
│       │   │   ├── columnar_first_row_number.out
│       │   │   ├── columnar_index_concurrency.out
│       │   │   ├── columnar_indexes.out
│       │   │   ├── columnar_insert.out
│       │   │   ├── columnar_join.out
│       │   │   ├── columnar_load.out
│       │   │   ├── columnar_lz4.out
│       │   │   ├── columnar_lz4_0.out
│       │   │   ├── columnar_matview.out
│       │   │   ├── columnar_memory.out
│       │   │   ├── columnar_partitioning.out
│       │   │   ├── columnar_paths.out
│       │   │   ├── columnar_paths_0.out
│       │   │   ├── columnar_permissions.out
│       │   │   ├── columnar_pg15.out
│       │   │   ├── columnar_query.out
│       │   │   ├── columnar_recursive.out
│       │   │   ├── columnar_rollback.out
│       │   │   ├── columnar_tableoptions.out
│       │   │   ├── columnar_temp_tables.out
│       │   │   ├── columnar_test_helpers.out
│       │   │   ├── columnar_transactions.out
│       │   │   ├── columnar_trigger.out
│       │   │   ├── columnar_truncate.out
│       │   │   ├── columnar_types_without_comparison.out
│       │   │   ├── columnar_update_delete.out
│       │   │   ├── columnar_vacuum.out
│       │   │   ├── columnar_vacuum_vs_insert.out
│       │   │   ├── columnar_write_concurrency.out
│       │   │   ├── columnar_write_concurrency_index.out
│       │   │   ├── columnar_zstd.out
│       │   │   ├── columnar_zstd_0.out
│       │   │   ├── comment_on_database.out
│       │   │   ├── comment_on_role.out
│       │   │   ├── connectivity_checks.out
│       │   │   ├── coordinator_evaluation.out
│       │   │   ├── coordinator_evaluation_modify.out
│       │   │   ├── coordinator_evaluation_select.out
│       │   │   ├── coordinator_shouldhaveshards.out
│       │   │   ├── cpu_priority.out
│       │   │   ├── create_citus_local_table_cascade.out
│       │   │   ├── create_distributed_table_concurrently.out
│       │   │   ├── create_drop_database_propagation.out
│       │   │   ├── create_drop_database_propagation_pg15.out
│       │   │   ├── create_drop_database_propagation_pg16.out
│       │   │   ├── create_ref_dist_from_citus_local.out
│       │   │   ├── create_role_propagation.out
│       │   │   ├── create_single_shard_table.out
│       │   │   ├── cross_join.out
│       │   │   ├── cte_inline.out
│       │   │   ├── cte_nested_modification.out
│       │   │   ├── cte_prepared_modify.out
│       │   │   ├── cursors.out
│       │   │   ├── custom_aggregate_support.out
│       │   │   ├── custom_aggregate_support_0.out
│       │   │   ├── data_types.out
│       │   │   ├── detect_conn_close.out
│       │   │   ├── disable_object_propagation.out
│       │   │   ├── distributed_collations.out
│       │   │   ├── distributed_collations_conflict.out
│       │   │   ├── distributed_domain.out
│       │   │   ├── distributed_functions.out
│       │   │   ├── distributed_functions_conflict.out
│       │   │   ├── distributed_intermediate_results.out
│       │   │   ├── distributed_locks.out
│       │   │   ├── distributed_planning.out
│       │   │   ├── distributed_planning_create_load.out
│       │   │   ├── distributed_procedure.out
│       │   │   ├── distributed_triggers.out
│       │   │   ├── distributed_types.out
│       │   │   ├── distributed_types_conflict.out
│       │   │   ├── distributed_types_xact_add_enum_value.out
│       │   │   ├── dml_recursive.out
│       │   │   ├── drop_column_partitioned_table.out
│       │   │   ├── drop_database.out
│       │   │   ├── drop_partitioned_table.out
│       │   │   ├── dropped_columns_1.out
│       │   │   ├── dropped_columns_create_load.out
│       │   │   ├── ensure_citus_columnar_not_exists.out
│       │   │   ├── ensure_no_intermediate_data_leak.out
│       │   │   ├── ensure_no_shared_connection_leak.out
│       │   │   ├── escape_extension_name.out
│       │   │   ├── escape_extension_name_0.out
│       │   │   ├── executor_local_failure.out
│       │   │   ├── expression_reference_join.out
│       │   │   ├── failure_add_disable_node.out
│       │   │   ├── failure_connection_establishment.out
│       │   │   ├── failure_copy_on_hash.out
│       │   │   ├── failure_copy_to_reference.out
│       │   │   ├── failure_create_database.out
│       │   │   ├── failure_create_distributed_table_concurrently.out
│       │   │   ├── failure_create_distributed_table_non_empty.out
│       │   │   ├── failure_create_index_concurrently.out
│       │   │   ├── failure_create_reference_table.out
│       │   │   ├── failure_create_table.out
│       │   │   ├── failure_cte_subquery.out
│       │   │   ├── failure_ddl.out
│       │   │   ├── failure_distributed_results.out
│       │   │   ├── failure_failover_to_local_execution.out
│       │   │   ├── failure_insert_select_pushdown.out
│       │   │   ├── failure_insert_select_repartition.out
│       │   │   ├── failure_insert_select_via_coordinator.out
│       │   │   ├── failure_multi_dml.out
│       │   │   ├── failure_multi_row_insert.out
│       │   │   ├── failure_multi_shard_update_delete.out
│       │   │   ├── failure_mx_metadata_sync.out
│       │   │   ├── failure_mx_metadata_sync_multi_trans.out
│       │   │   ├── failure_non_main_db_2pc.out
│       │   │   ├── failure_offline_move_shard_placement.out
│       │   │   ├── failure_on_create_subscription.out
│       │   │   ├── failure_online_move_shard_placement.out
│       │   │   ├── failure_parallel_connection.out
│       │   │   ├── failure_ref_tables.out
│       │   │   ├── failure_replicated_partitions.out
│       │   │   ├── failure_savepoints.out
│       │   │   ├── failure_setup.out
│       │   │   ├── failure_single_mod.out
│       │   │   ├── failure_single_select.out
│       │   │   ├── failure_split_cleanup.out
│       │   │   ├── failure_tenant_isolation.out
│       │   │   ├── failure_tenant_isolation_nonblocking.out
│       │   │   ├── failure_test_helpers.out
│       │   │   ├── failure_truncate.out
│       │   │   ├── failure_vacuum.out
│       │   │   ├── fast_path_router_modify.out
│       │   │   ├── fkeys_between_local_ref.out
│       │   │   ├── follower_single_node.out
│       │   │   ├── forcedelegation_functions.out
│       │   │   ├── foreign_key_restriction_enforcement.out
│       │   │   ├── foreign_key_to_reference_shard_rebalance.out
│       │   │   ├── foreign_key_to_reference_table.out
│       │   │   ├── foreign_tables_mx.out
│       │   │   ├── function_create.out
│       │   │   ├── function_propagation.out
│       │   │   ├── function_with_case_when.out
│       │   │   ├── functions.out
│       │   │   ├── generated_identity.out
│       │   │   ├── geqo.out
│       │   │   ├── global_cancel.out
│       │   │   ├── grant_on_database_propagation.out
│       │   │   ├── grant_on_database_propagation_from_non_maindb.out
│       │   │   ├── grant_on_foreign_server_propagation.out
│       │   │   ├── grant_on_function_propagation.out
│       │   │   ├── grant_on_schema_propagation.out
│       │   │   ├── grant_on_sequence_propagation.out
│       │   │   ├── grant_on_table_propagation.out
│       │   │   ├── grant_on_table_propagation_0.out
│       │   │   ├── grant_role_from_non_maindb.out
│       │   │   ├── having_subquery.out
│       │   │   ├── hyperscale_tutorial.out
│       │   │   ├── index_create.out
│       │   │   ├── insert_select_connection_leak.out
│       │   │   ├── insert_select_into_local_table.out
│       │   │   ├── insert_select_repartition.out
│       │   │   ├── insert_select_single_shard_table.out
│       │   │   ├── intermediate_result_pruning.out
│       │   │   ├── intermediate_result_pruning_create.out
│       │   │   ├── intermediate_result_pruning_queries_1.out
│       │   │   ├── intermediate_result_pruning_queries_2.out
│       │   │   ├── intermediate_results.out
│       │   │   ├── isolation_acquire_distributed_locks.out
│       │   │   ├── isolation_add_coordinator.out
│       │   │   ├── isolation_add_node_vs_reference_table_operations.out
│       │   │   ├── isolation_add_remove_node.out
│       │   │   ├── isolation_append_copy_vs_all.out
│       │   │   ├── isolation_blocking_move_multi_shard_commands.out
│       │   │   ├── isolation_blocking_move_multi_shard_commands_on_mx.out
│       │   │   ├── isolation_blocking_move_single_shard_commands.out
│       │   │   ├── isolation_blocking_move_single_shard_commands_on_mx.out
│       │   │   ├── isolation_blocking_shard_split.out
│       │   │   ├── isolation_blocking_shard_split_with_fkey_to_reference.out
│       │   │   ├── isolation_cancellation.out
│       │   │   ├── isolation_check_mx.out
│       │   │   ├── isolation_citus_dist_activity.out
│       │   │   ├── isolation_citus_locks.out
│       │   │   ├── isolation_citus_pause_node.out
│       │   │   ├── isolation_citus_pause_node_1.out
│       │   │   ├── isolation_citus_schema_distribute_undistribute.out
│       │   │   ├── isolation_cluster_management.out
│       │   │   ├── isolation_concurrent_dml.out
│       │   │   ├── isolation_concurrent_move_create_table.out
│       │   │   ├── isolation_copy_placement_vs_copy_placement.out
│       │   │   ├── isolation_copy_placement_vs_modification.out
│       │   │   ├── isolation_copy_vs_all_on_mx.out
│       │   │   ├── isolation_create_citus_local_table.out
│       │   │   ├── isolation_create_distributed_concurrently_after_drop_column.out
│       │   │   ├── isolation_create_distributed_table.out
│       │   │   ├── isolation_create_distributed_table_concurrently.out
│       │   │   ├── isolation_create_restore_point.out
│       │   │   ├── isolation_create_table_vs_add_remove_node.out
│       │   │   ├── isolation_data_migration.out
│       │   │   ├── isolation_database_cmd_from_any_node.out
│       │   │   ├── isolation_ddl_vs_all.out
│       │   │   ├── isolation_delete_vs_all.out
│       │   │   ├── isolation_dis2ref_foreign_keys_on_mx.out
│       │   │   ├── isolation_distributed_deadlock_detection.out
│       │   │   ├── isolation_distributed_transaction_id.out
│       │   │   ├── isolation_drop_alter_index_select_for_update_on_mx.out
│       │   │   ├── isolation_drop_shards.out
│       │   │   ├── isolation_drop_vs_all.out
│       │   │   ├── isolation_dump_global_wait_edges.out
│       │   │   ├── isolation_dump_local_wait_edges.out
│       │   │   ├── isolation_ensure_dependency_activate_node.out
│       │   │   ├── isolation_extension_commands.out
│       │   │   ├── isolation_fix_partition_shard_index_names.out
│       │   │   ├── isolation_get_all_active_transactions.out
│       │   │   ├── isolation_get_distributed_wait_queries_mx.out
│       │   │   ├── isolation_global_pid.out
│       │   │   ├── isolation_hash_copy_vs_all.out
│       │   │   ├── isolation_insert_select_conflict.out
│       │   │   ├── isolation_insert_select_repartition.out
│       │   │   ├── isolation_insert_select_vs_all.out
│       │   │   ├── isolation_insert_select_vs_all_on_mx.out
│       │   │   ├── isolation_insert_vs_all.out
│       │   │   ├── isolation_insert_vs_all_on_mx.out
│       │   │   ├── isolation_insert_vs_vacuum.out
│       │   │   ├── isolation_logical_replication_binaryless.out
│       │   │   ├── isolation_logical_replication_multi_shard_commands.out
│       │   │   ├── isolation_logical_replication_multi_shard_commands_on_mx.out
│       │   │   ├── isolation_logical_replication_nonsu_nonbypassrls.out
│       │   │   ├── isolation_logical_replication_single_shard_commands.out
│       │   │   ├── isolation_logical_replication_single_shard_commands_on_mx.out
│       │   │   ├── isolation_logical_replication_skip_fk_validation.out
│       │   │   ├── isolation_logical_replication_with_partitioning.out
│       │   │   ├── isolation_master_update_node.out
│       │   │   ├── isolation_master_update_node_0.out
│       │   │   ├── isolation_master_update_node_1.out
│       │   │   ├── isolation_max_client_connections.out
│       │   │   ├── isolation_merge.out
│       │   │   ├── isolation_merge_replicated.out
│       │   │   ├── isolation_metadata_sync_deadlock.out
│       │   │   ├── isolation_metadata_sync_vs_all.out
│       │   │   ├── isolation_modify_with_subquery_vs_dml.out
│       │   │   ├── isolation_move_placement_vs_modification.out
│       │   │   ├── isolation_move_placement_vs_modification_fk.out
│       │   │   ├── isolation_move_placement_vs_move_placement.out
│       │   │   ├── isolation_multi_shard_modify_vs_all.out
│       │   │   ├── isolation_multiuser_locking.out
│       │   │   ├── isolation_multiuser_locking_0.out
│       │   │   ├── isolation_non_blocking_shard_split.out
│       │   │   ├── isolation_non_blocking_shard_split_fkey.out
│       │   │   ├── isolation_non_blocking_shard_split_with_index_as_replicaIdentity.out
│       │   │   ├── isolation_partitioned_copy_vs_all.out
│       │   │   ├── isolation_progress_monitoring.out
│       │   │   ├── isolation_range_copy_vs_all.out
│       │   │   ├── isolation_rebalancer_deferred_drop.out
│       │   │   ├── isolation_ref2ref_foreign_keys.out
│       │   │   ├── isolation_ref2ref_foreign_keys_enterprise.out
│       │   │   ├── isolation_ref2ref_foreign_keys_on_mx.out
│       │   │   ├── isolation_ref_select_for_update_vs_all_on_mx.out
│       │   │   ├── isolation_ref_update_delete_upsert_vs_all_on_mx.out
│       │   │   ├── isolation_reference_copy_vs_all.out
│       │   │   ├── isolation_reference_on_mx.out
│       │   │   ├── isolation_reference_table.out
│       │   │   ├── isolation_remove_coordinator.out
│       │   │   ├── isolation_replace_wait_function.out
│       │   │   ├── isolation_replicate_reference_tables_to_coordinator.out
│       │   │   ├── isolation_replicated_dist_on_mx.out
│       │   │   ├── isolation_schema_based_sharding.out
│       │   │   ├── isolation_select_for_update.out
│       │   │   ├── isolation_select_vs_all.out
│       │   │   ├── isolation_select_vs_all_on_mx.out
│       │   │   ├── isolation_setup.out
│       │   │   ├── isolation_shard_move_vs_start_metadata_sync.out
│       │   │   ├── isolation_shard_rebalancer.out
│       │   │   ├── isolation_shard_rebalancer_progress.out
│       │   │   ├── isolation_shouldhaveshards.out
│       │   │   ├── isolation_tenant_isolation.out
│       │   │   ├── isolation_tenant_isolation_nonblocking.out
│       │   │   ├── isolation_tenant_isolation_with_fkey_to_reference.out
│       │   │   ├── isolation_transaction_recovery.out
│       │   │   ├── isolation_truncate_vs_all.out
│       │   │   ├── isolation_truncate_vs_all_on_mx.out
│       │   │   ├── isolation_undistribute_table.out
│       │   │   ├── isolation_update_delete_upsert_vs_all_on_mx.out
│       │   │   ├── isolation_update_node.out
│       │   │   ├── isolation_update_node_lock_writes.out
│       │   │   ├── isolation_update_vs_all.out
│       │   │   ├── isolation_upsert_vs_all.out
│       │   │   ├── isolation_vacuum_skip_locked.out
│       │   │   ├── isolation_validate_vs_insert.out
│       │   │   ├── issue_5099.out
│       │   │   ├── issue_5248.out
│       │   │   ├── issue_5763.out
│       │   │   ├── issue_6543.out
│       │   │   ├── issue_6592.out
│       │   │   ├── issue_6758.out
│       │   │   ├── issue_7477.out
│       │   │   ├── issue_7891.out
│       │   │   ├── issue_8243.out
│       │   │   ├── join_pushdown.out
│       │   │   ├── limit_intermediate_size.out
│       │   │   ├── local_dist_join.out
│       │   │   ├── local_dist_join_load.out
│       │   │   ├── local_dist_join_mixed.out
│       │   │   ├── local_dist_join_modifications.out
│       │   │   ├── local_execution_local_plan.out
│       │   │   ├── local_shard_copy.out
│       │   │   ├── local_shard_execution.out
│       │   │   ├── local_shard_execution_dropped_column.out
│       │   │   ├── local_shard_execution_replicated.out
│       │   │   ├── local_shard_utility_command_execution.out
│       │   │   ├── local_table_join.out
│       │   │   ├── locally_execute_intermediate_results.out
│       │   │   ├── logical_rep_consistency.out
│       │   │   ├── logical_replication.out
│       │   │   ├── materialized_view.out
│       │   │   ├── merge.out
│       │   │   ├── merge_arbitrary.out
│       │   │   ├── merge_arbitrary_create.out
│       │   │   ├── merge_partition_tables.out
│       │   │   ├── merge_repartition1.out
│       │   │   ├── merge_repartition2.out
│       │   │   ├── merge_schema_sharding.out
│       │   │   ├── merge_unsupported.out
│       │   │   ├── merge_unsupported_0.out
│       │   │   ├── merge_vcore.out
│       │   │   ├── metadata_sync_from_non_maindb.out
│       │   │   ├── metadata_sync_helpers.out
│       │   │   ├── minimal_cluster_management.out
│       │   │   ├── mixed_relkind_tests.out
│       │   │   ├── modification_correctness.out
│       │   │   ├── multi_add_node_from_backup.out
│       │   │   ├── multi_add_node_from_backup_negative.out
│       │   │   ├── multi_add_node_from_backup_sync_replica.out
│       │   │   ├── multi_agg_approximate_distinct.out
│       │   │   ├── multi_agg_approximate_distinct_0.out
│       │   │   ├── multi_agg_distinct.out
│       │   │   ├── multi_agg_type_conversion.out
│       │   │   ├── multi_alias.out
│       │   │   ├── multi_alter_table_add_constraints.out
│       │   │   ├── multi_alter_table_add_constraints_without_name.out
│       │   │   ├── multi_alter_table_add_foreign_key_without_name.out
│       │   │   ├── multi_alter_table_row_level_security.out
│       │   │   ├── multi_alter_table_row_level_security_escape.out
│       │   │   ├── multi_alter_table_statements.out
│       │   │   ├── multi_array_agg.out
│       │   │   ├── multi_average_expression.out
│       │   │   ├── multi_basic_queries.out
│       │   │   ├── multi_behavioral_analytics_basics.out
│       │   │   ├── multi_behavioral_analytics_create_table.out
│       │   │   ├── multi_behavioral_analytics_create_table_superuser.out
│       │   │   ├── multi_behavioral_analytics_single_shard_queries.out
│       │   │   ├── multi_cache_invalidation.out
│       │   │   ├── multi_citus_tools.out
│       │   │   ├── multi_cluster_management.out
│       │   │   ├── multi_colocated_shard_rebalance.out
│       │   │   ├── multi_colocation_utils.out
│       │   │   ├── multi_complex_count_distinct.out
│       │   │   ├── multi_complex_expressions.out
│       │   │   ├── multi_copy.out
│       │   │   ├── multi_count_type_conversion.out
│       │   │   ├── multi_create_fdw.out
│       │   │   ├── multi_create_role_dependency.out
│       │   │   ├── multi_create_shards.out
│       │   │   ├── multi_create_table.out
│       │   │   ├── multi_create_table_constraints.out
│       │   │   ├── multi_create_table_superuser.out
│       │   │   ├── multi_create_users.out
│       │   │   ├── multi_cross_shard.out
│       │   │   ├── multi_data_types.out
│       │   │   ├── multi_deparse_function.out
│       │   │   ├── multi_deparse_procedure.out
│       │   │   ├── multi_deparse_shard_query.out
│       │   │   ├── multi_distributed_transaction_id.out
│       │   │   ├── multi_distribution_metadata.out
│       │   │   ├── multi_drop_extension.out
│       │   │   ├── multi_dropped_column_aliases.out
│       │   │   ├── multi_explain.out
│       │   │   ├── multi_explain_0.out
│       │   │   ├── multi_extension.out
│       │   │   ├── multi_fix_partition_shard_index_names.out
│       │   │   ├── multi_follower_configure_followers.out
│       │   │   ├── multi_follower_dml.out
│       │   │   ├── multi_follower_sanity_check.out
│       │   │   ├── multi_follower_select_statements.out
│       │   │   ├── multi_foreign_key.out
│       │   │   ├── multi_foreign_key_relation_graph.out
│       │   │   ├── multi_function_evaluation.out
│       │   │   ├── multi_function_in_join.out
│       │   │   ├── multi_generate_ddl_commands.out
│       │   │   ├── multi_hash_pruning.out
│       │   │   ├── multi_having_pushdown.out
│       │   │   ├── multi_index_statements.out
│       │   │   ├── multi_insert_select.out
│       │   │   ├── multi_insert_select_behavioral_analytics_create_table.out
│       │   │   ├── multi_insert_select_conflict.out
│       │   │   ├── multi_insert_select_non_pushable_queries.out
│       │   │   ├── multi_insert_select_window.out
│       │   │   ├── multi_join_order_additional.out
│       │   │   ├── multi_join_order_tpch_repartition.out
│       │   │   ├── multi_join_order_tpch_small.out
│       │   │   ├── multi_join_pruning.out
│       │   │   ├── multi_json_agg.out
│       │   │   ├── multi_json_object_agg.out
│       │   │   ├── multi_jsonb_agg.out
│       │   │   ├── multi_jsonb_object_agg.out
│       │   │   ├── multi_large_shardid.out
│       │   │   ├── multi_level_recursive_queries.out
│       │   │   ├── multi_limit_clause.out
│       │   │   ├── multi_limit_clause_approximate.out
│       │   │   ├── multi_load_data.out
│       │   │   ├── multi_load_data_superuser.out
│       │   │   ├── multi_load_more_data.out
│       │   │   ├── multi_master_protocol.out
│       │   │   ├── multi_metadata_access.out
│       │   │   ├── multi_metadata_attributes.out
│       │   │   ├── multi_metadata_sync.out
│       │   │   ├── multi_metadata_sync_domain.out
│       │   │   ├── multi_modifications.out
│       │   │   ├── multi_modifying_xacts.out
│       │   │   ├── multi_move_mx.out
│       │   │   ├── multi_multiuser.out
│       │   │   ├── multi_multiuser_auth.out
│       │   │   ├── multi_multiuser_basic_queries.out
│       │   │   ├── multi_multiuser_copy.out
│       │   │   ├── multi_multiuser_grant.out
│       │   │   ├── multi_multiuser_load_data.out
│       │   │   ├── multi_multiuser_master_protocol.out
│       │   │   ├── multi_multiuser_master_protocol_0.out
│       │   │   ├── multi_mx_add_coordinator.out
│       │   │   ├── multi_mx_alter_distributed_table.out
│       │   │   ├── multi_mx_call.out
│       │   │   ├── multi_mx_call_0.out
│       │   │   ├── multi_mx_copy_data.out
│       │   │   ├── multi_mx_create_table.out
│       │   │   ├── multi_mx_ddl.out
│       │   │   ├── multi_mx_explain.out
│       │   │   ├── multi_mx_explain_0.out
│       │   │   ├── multi_mx_function_call_delegation.out
│       │   │   ├── multi_mx_function_call_delegation_0.out
│       │   │   ├── multi_mx_function_table_reference.out
│       │   │   ├── multi_mx_hide_shard_names.out
│       │   │   ├── multi_mx_hide_shard_names_0.out
│       │   │   ├── multi_mx_insert_select_repartition.out
│       │   │   ├── multi_mx_metadata.out
│       │   │   ├── multi_mx_modifications.out
│       │   │   ├── multi_mx_modifications_to_reference_tables.out
│       │   │   ├── multi_mx_modifying_xacts.out
│       │   │   ├── multi_mx_node_metadata.out
│       │   │   ├── multi_mx_partitioning.out
│       │   │   ├── multi_mx_reference_table.out
│       │   │   ├── multi_mx_repartition_join_w1.out
│       │   │   ├── multi_mx_repartition_join_w2.out
│       │   │   ├── multi_mx_repartition_udt_prepare.out
│       │   │   ├── multi_mx_repartition_udt_w1.out
│       │   │   ├── multi_mx_repartition_udt_w2.out
│       │   │   ├── multi_mx_router_planner.out
│       │   │   ├── multi_mx_schema_support.out
│       │   │   ├── multi_mx_tpch_query1.out
│       │   │   ├── multi_mx_tpch_query10.out
│       │   │   ├── multi_mx_tpch_query12.out
│       │   │   ├── multi_mx_tpch_query14.out
│       │   │   ├── multi_mx_tpch_query19.out
│       │   │   ├── multi_mx_tpch_query3.out
│       │   │   ├── multi_mx_tpch_query6.out
│       │   │   ├── multi_mx_tpch_query7.out
│       │   │   ├── multi_mx_tpch_query7_nested.out
│       │   │   ├── multi_mx_transaction_recovery.out
│       │   │   ├── multi_mx_truncate_from_worker.out
│       │   │   ├── multi_name_lengths.out
│       │   │   ├── multi_name_resolution.out
│       │   │   ├── multi_null_minmax_value_pruning.out
│       │   │   ├── multi_orderby_limit_pushdown.out
│       │   │   ├── multi_outer_join.out
│       │   │   ├── multi_outer_join_columns.out
│       │   │   ├── multi_outer_join_reference.out
│       │   │   ├── multi_partition_pruning.out
│       │   │   ├── multi_partitioning.out
│       │   │   ├── multi_partitioning_utils.out
│       │   │   ├── multi_poolinfo_usage.out
│       │   │   ├── multi_prepare_plsql.out
│       │   │   ├── multi_prepare_sql.out
│       │   │   ├── multi_prune_shard_list.out
│       │   │   ├── multi_query_directory_cleanup.out
│       │   │   ├── multi_read_from_secondaries.out
│       │   │   ├── multi_real_time_transaction.out
│       │   │   ├── multi_reference_table.out
│       │   │   ├── multi_remove_node_reference_table.out
│       │   │   ├── multi_repartition_join_planning.out
│       │   │   ├── multi_repartition_join_pruning.out
│       │   │   ├── multi_repartition_join_ref.out
│       │   │   ├── multi_repartition_join_task_assignment.out
│       │   │   ├── multi_repartition_udt.out
│       │   │   ├── multi_repartitioned_subquery_udf.out
│       │   │   ├── multi_replicate_reference_table.out
│       │   │   ├── multi_rls_join_distribution_key.out
│       │   │   ├── multi_router_planner.out
│       │   │   ├── multi_router_planner_fast_path.out
│       │   │   ├── multi_row_insert.out
│       │   │   ├── multi_row_router_insert.out
│       │   │   ├── multi_schema_support.out
│       │   │   ├── multi_select_distinct.out
│       │   │   ├── multi_select_for_update.out
│       │   │   ├── multi_sequence_default.out
│       │   │   ├── multi_shard_update_delete.out
│       │   │   ├── multi_simple_queries.out
│       │   │   ├── multi_single_relation_subquery.out
│       │   │   ├── multi_size_queries.out
│       │   │   ├── multi_sql_function.out
│       │   │   ├── multi_sql_function_0.out
│       │   │   ├── multi_subquery.out
│       │   │   ├── multi_subquery_behavioral_analytics.out
│       │   │   ├── multi_subquery_complex_queries.out
│       │   │   ├── multi_subquery_complex_reference_clause.out
│       │   │   ├── multi_subquery_in_where_clause.out
│       │   │   ├── multi_subquery_in_where_reference_clause.out
│       │   │   ├── multi_subquery_misc.out
│       │   │   ├── multi_subquery_misc_0.out
│       │   │   ├── multi_subquery_union.out
│       │   │   ├── multi_subquery_window_functions.out
│       │   │   ├── multi_subtransactions.out
│       │   │   ├── multi_table_ddl.out
│       │   │   ├── multi_task_assignment_policy.out
│       │   │   ├── multi_task_string_size.out
│       │   │   ├── multi_tenant_isolation.out
│       │   │   ├── multi_tenant_isolation_nonblocking.out
│       │   │   ├── multi_test_catalog_views.out
│       │   │   ├── multi_test_helpers.out
│       │   │   ├── multi_test_helpers_superuser.out
│       │   │   ├── multi_tpch_query1.out
│       │   │   ├── multi_tpch_query10.out
│       │   │   ├── multi_tpch_query12.out
│       │   │   ├── multi_tpch_query14.out
│       │   │   ├── multi_tpch_query19.out
│       │   │   ├── multi_tpch_query3.out
│       │   │   ├── multi_tpch_query6.out
│       │   │   ├── multi_tpch_query7.out
│       │   │   ├── multi_tpch_query7_nested.out
│       │   │   ├── multi_transaction_recovery.out
│       │   │   ├── multi_transaction_recovery_multiple_databases.out
│       │   │   ├── multi_transactional_drop_shards.out
│       │   │   ├── multi_truncate.out
│       │   │   ├── multi_unsupported_worker_operations.out
│       │   │   ├── multi_update_select.out
│       │   │   ├── multi_upsert.out
│       │   │   ├── multi_utilities.out
│       │   │   ├── multi_utility_statements.out
│       │   │   ├── multi_utility_warnings.out
│       │   │   ├── multi_view.out
│       │   │   ├── multi_working_columns.out
│       │   │   ├── mx_coordinator_shouldhaveshards.out
│       │   │   ├── mx_foreign_key_to_reference_table.out
│       │   │   ├── mx_regular_user.out
│       │   │   ├── nested_execution.out
│       │   │   ├── nested_execution_create.out
│       │   │   ├── node_conninfo_reload.out
│       │   │   ├── non_colocated_leaf_subquery_joins.out
│       │   │   ├── non_colocated_subquery_joins.out
│       │   │   ├── non_super_user_cdc_library_path.out
│       │   │   ├── non_super_user_object_metadata.out
│       │   │   ├── null_parameters.out
│       │   │   ├── object_propagation_debug.out
│       │   │   ├── other_databases.out
│       │   │   ├── partition_wise_join.out
│       │   │   ├── partition_wise_join_0.out
│       │   │   ├── partitioned_indexes_create.out
│       │   │   ├── partitioned_intermediate_results.out
│       │   │   ├── partitioning_issue_3970.out
│       │   │   ├── pg12.out
│       │   │   ├── pg13.out
│       │   │   ├── pg13_propagate_statistics.out
│       │   │   ├── pg13_with_ties.out
│       │   │   ├── pg14.out
│       │   │   ├── pg15.out
│       │   │   ├── pg15_jsonpath.out
│       │   │   ├── pg16.out
│       │   │   ├── pg17.out
│       │   │   ├── pg17_0.out
│       │   │   ├── pg17_json.out
│       │   │   ├── pg17_json_0.out
│       │   │   ├── pg18.out
│       │   │   ├── pg18_0.out
│       │   │   ├── pg_dump.out
│       │   │   ├── pgmerge.out
│       │   │   ├── postgres.out
│       │   │   ├── prepared_statements_1.out
│       │   │   ├── prepared_statements_2.out
│       │   │   ├── prepared_statements_3.out
│       │   │   ├── prepared_statements_4.out
│       │   │   ├── prepared_statements_create_load.out
│       │   │   ├── propagate_extension_commands.out
│       │   │   ├── propagate_foreign_servers.out
│       │   │   ├── propagate_set_commands.out
│       │   │   ├── propagate_statistics.out
│       │   │   ├── publication.out
│       │   │   ├── query_single_shard_table.out
│       │   │   ├── reassign_owned.out
│       │   │   ├── recurring_join_pushdown.out
│       │   │   ├── recurring_outer_join.out
│       │   │   ├── recursive_dml_queries_mx.out
│       │   │   ├── recursive_dml_with_different_planners_executors.out
│       │   │   ├── recursive_relation_planning_restriction_pushdown.out
│       │   │   ├── recursive_view_local_table.out
│       │   │   ├── ref_citus_local_fkeys.out
│       │   │   ├── relation_access_tracking.out
│       │   │   ├── relation_access_tracking_single_node.out
│       │   │   ├── remove_coordinator.out
│       │   │   ├── remove_coordinator_from_metadata.out
│       │   │   ├── remove_non_default_nodes.out
│       │   │   ├── rename_public_to_citus_schema_and_recreate.out
│       │   │   ├── replicate_reference_tables_to_coordinator.out
│       │   │   ├── replicated_partitioned_table.out
│       │   │   ├── replicated_table_disable_node.out
│       │   │   ├── resync_metadata_with_sequences.out
│       │   │   ├── role_command_from_any_node.out
│       │   │   ├── role_operations_from_non_maindb.out
│       │   │   ├── row_types.out
│       │   │   ├── run_command_on_all_nodes.out
│       │   │   ├── schema_based_sharding.out
│       │   │   ├── schemas.out
│       │   │   ├── schemas_create.out
│       │   │   ├── seclabel.out
│       │   │   ├── seclabel_non_maindb.out
│       │   │   ├── sequences.out
│       │   │   ├── sequences_create.out
│       │   │   ├── sequences_owned_by.out
│       │   │   ├── sequences_with_different_types.out
│       │   │   ├── sequential_modifications.out
│       │   │   ├── set_operation_and_local_tables.out
│       │   │   ├── set_operations.out
│       │   │   ├── set_role_in_transaction.out
│       │   │   ├── shard_move_constraints.out
│       │   │   ├── shard_move_constraints_blocking.out
│       │   │   ├── shard_move_deferred_delete.out
│       │   │   ├── shard_rebalancer.out
│       │   │   ├── shard_rebalancer_unit.out
│       │   │   ├── shared_connection_stats.out
│       │   │   ├── shared_connection_waits.out
│       │   │   ├── single_hash_repartition_join.out
│       │   │   ├── single_node.out
│       │   │   ├── single_node_enterprise.out
│       │   │   ├── single_node_truncate.out
│       │   │   ├── single_shard_table_prep.out
│       │   │   ├── single_shard_table_udfs.out
│       │   │   ├── split_shard.out
│       │   │   ├── sql_procedure.out
│       │   │   ├── sqlancer_failures.out
│       │   │   ├── sqlsmith_failures.out
│       │   │   ├── ssl_by_default.out
│       │   │   ├── start_stop_metadata_sync.out
│       │   │   ├── stat_counters.out
│       │   │   ├── stat_statements.out
│       │   │   ├── statement_cancel_error_message.out
│       │   │   ├── subqueries_deep.out
│       │   │   ├── subqueries_not_supported.out
│       │   │   ├── subquery_and_cte.out
│       │   │   ├── subquery_append.out
│       │   │   ├── subquery_basics.out
│       │   │   ├── subquery_complex_target_list.out
│       │   │   ├── subquery_executors.out
│       │   │   ├── subquery_in_targetlist.out
│       │   │   ├── subquery_in_where.out
│       │   │   ├── subquery_local_tables.out
│       │   │   ├── subquery_partitioning.out
│       │   │   ├── subquery_prepared_statements.out
│       │   │   ├── subquery_view.out
│       │   │   ├── subscripting_op.out
│       │   │   ├── system_queries.out
│       │   │   ├── tableam.out
│       │   │   ├── tablespace.out
│       │   │   ├── task_tracker_assign_task.out
│       │   │   ├── task_tracker_cleanup_job.out
│       │   │   ├── task_tracker_create_table.out
│       │   │   ├── task_tracker_partition_task.out
│       │   │   ├── tdigest_aggregate_support.out
│       │   │   ├── tdigest_aggregate_support_0.out
│       │   │   ├── tdigest_aggregate_support_1.out
│       │   │   ├── text_search.out
│       │   │   ├── undistribute_table.out
│       │   │   ├── undistribute_table_cascade.out
│       │   │   ├── undistribute_table_cascade_mx.out
│       │   │   ├── union_pushdown.out
│       │   │   ├── unsupported_lateral_subqueries.out
│       │   │   ├── update_colocation_mx.out
│       │   │   ├── upgrade_autoconverted_after.out
│       │   │   ├── upgrade_autoconverted_before.out
│       │   │   ├── upgrade_basic_after.out
│       │   │   ├── upgrade_basic_after_non_mixed.out
│       │   │   ├── upgrade_basic_before.out
│       │   │   ├── upgrade_basic_before_non_mixed.out
│       │   │   ├── upgrade_citus_finish_citus_upgrade.out
│       │   │   ├── upgrade_citus_locks.out
│       │   │   ├── upgrade_citus_stat_activity.out
│       │   │   ├── upgrade_columnar_after.out
│       │   │   ├── upgrade_columnar_before.out
│       │   │   ├── upgrade_distributed_function_after.out
│       │   │   ├── upgrade_distributed_function_before.out
│       │   │   ├── upgrade_distributed_triggers_after.out
│       │   │   ├── upgrade_distributed_triggers_after_0.out
│       │   │   ├── upgrade_distributed_triggers_before.out
│       │   │   ├── upgrade_distributed_triggers_before_0.out
│       │   │   ├── upgrade_list_citus_objects.out
│       │   │   ├── upgrade_pg_dist_cleanup_after.out
│       │   │   ├── upgrade_pg_dist_cleanup_after_0.out
│       │   │   ├── upgrade_pg_dist_cleanup_before.out
│       │   │   ├── upgrade_pg_dist_cleanup_before_0.out
│       │   │   ├── upgrade_post_11_after.out
│       │   │   ├── upgrade_post_11_after_0.out
│       │   │   ├── upgrade_post_11_before.out
│       │   │   ├── upgrade_post_11_before_0.out
│       │   │   ├── upgrade_post_14_after.out
│       │   │   ├── upgrade_post_14_after_0.out
│       │   │   ├── upgrade_post_14_before.out
│       │   │   ├── upgrade_post_14_before_0.out
│       │   │   ├── upgrade_rebalance_strategy_after.out
│       │   │   ├── upgrade_rebalance_strategy_before.out
│       │   │   ├── upgrade_ref2ref_after.out
│       │   │   ├── upgrade_ref2ref_before.out
│       │   │   ├── upgrade_schema_based_sharding_after.out
│       │   │   ├── upgrade_schema_based_sharding_before.out
│       │   │   ├── upgrade_single_shard_table_after.out
│       │   │   ├── upgrade_single_shard_table_before.out
│       │   │   ├── upgrade_type_after.out
│       │   │   ├── upgrade_type_before.out
│       │   │   ├── validate_constraint.out
│       │   │   ├── values.out
│       │   │   ├── view_propagation.out
│       │   │   ├── views.out
│       │   │   ├── views_create.out
│       │   │   ├── window_functions.out
│       │   │   ├── with_basics.out
│       │   │   ├── with_dml.out
│       │   │   ├── with_executors.out
│       │   │   ├── with_join.out
│       │   │   ├── with_modifying.out
│       │   │   ├── with_nested.out
│       │   │   ├── with_partitioning.out
│       │   │   ├── with_prepare.out
│       │   │   ├── with_set_operations.out
│       │   │   ├── with_transactions.out
│       │   │   ├── with_where.out
│       │   │   ├── worker_copy_table_to_node.out
│       │   │   ├── worker_split_binary_copy_test.out
│       │   │   ├── worker_split_copy_test.out
│       │   │   └── worker_split_text_copy_test.out
│       │   ├── failure_base_schedule
│       │   ├── failure_schedule
│       │   ├── flaky_tests.md
│       │   ├── isolation_schedule
│       │   ├── log_test_times
│       │   ├── minimal_columnar_schedule
│       │   ├── minimal_pg_upgrade_schedule
│       │   ├── minimal_schedule
│       │   ├── mitmscripts/
│       │   │   ├── .gitignore
│       │   │   ├── CONTRIBUTING.md
│       │   │   ├── README.md
│       │   │   ├── fluent.py
│       │   │   └── structs.py
│       │   ├── mixed_after_citus_upgrade_schedule
│       │   ├── mixed_before_citus_upgrade_schedule
│       │   ├── multi_1_create_citus_schedule
│       │   ├── multi_1_schedule
│       │   ├── multi_add_backup_node_schedule
│       │   ├── multi_follower_schedule
│       │   ├── multi_mx_schedule
│       │   ├── multi_schedule
│       │   ├── multi_schedule_hyperscale
│       │   ├── multi_schedule_hyperscale_superuser
│       │   ├── mx_base_schedule
│       │   ├── mx_minimal_schedule
│       │   ├── operations_schedule
│       │   ├── pg_regress_multi.pl
│       │   ├── postgres_schedule
│       │   ├── single_shard_table_prep_schedule
│       │   ├── spec/
│       │   │   ├── README.md
│       │   │   ├── columnar_index_concurrency.spec
│       │   │   ├── columnar_temp_tables.spec
│       │   │   ├── columnar_vacuum_vs_insert.spec
│       │   │   ├── columnar_write_concurrency.spec
│       │   │   ├── columnar_write_concurrency_index.spec
│       │   │   ├── isolation_acquire_distributed_locks.spec
│       │   │   ├── isolation_add_coordinator.spec
│       │   │   ├── isolation_add_node_vs_reference_table_operations.spec
│       │   │   ├── isolation_add_remove_node.spec
│       │   │   ├── isolation_blocking_move_multi_shard_commands.spec
│       │   │   ├── isolation_blocking_move_multi_shard_commands_on_mx.spec
│       │   │   ├── isolation_blocking_move_single_shard_commands.spec
│       │   │   ├── isolation_blocking_move_single_shard_commands_on_mx.spec
│       │   │   ├── isolation_blocking_shard_split.spec
│       │   │   ├── isolation_blocking_shard_split_with_fkey_to_reference.spec
│       │   │   ├── isolation_cancellation.spec
│       │   │   ├── isolation_check_mx.spec
│       │   │   ├── isolation_citus_dist_activity.spec
│       │   │   ├── isolation_citus_locks.spec
│       │   │   ├── isolation_citus_pause_node.spec
│       │   │   ├── isolation_citus_schema_distribute_undistribute.spec
│       │   │   ├── isolation_cluster_management.spec
│       │   │   ├── isolation_concurrent_dml.spec
│       │   │   ├── isolation_concurrent_move_create_table.spec
│       │   │   ├── isolation_copy_placement_vs_copy_placement.spec
│       │   │   ├── isolation_copy_placement_vs_modification.spec
│       │   │   ├── isolation_copy_vs_all_on_mx.spec
│       │   │   ├── isolation_create_citus_local_table.spec
│       │   │   ├── isolation_create_distributed_concurrently_after_drop_column.spec
│       │   │   ├── isolation_create_distributed_table.spec
│       │   │   ├── isolation_create_distributed_table_concurrently.spec
│       │   │   ├── isolation_create_restore_point.spec
│       │   │   ├── isolation_create_table_vs_add_remove_node.spec
│       │   │   ├── isolation_data_migration.spec
│       │   │   ├── isolation_database_cmd_from_any_node.spec
│       │   │   ├── isolation_ddl_vs_all.spec
│       │   │   ├── isolation_delete_vs_all.spec
│       │   │   ├── isolation_dis2ref_foreign_keys_on_mx.spec
│       │   │   ├── isolation_distributed_deadlock_detection.spec
│       │   │   ├── isolation_distributed_transaction_id.spec
│       │   │   ├── isolation_drop_alter_index_select_for_update_on_mx.spec
│       │   │   ├── isolation_drop_shards.spec
│       │   │   ├── isolation_drop_vs_all.spec
│       │   │   ├── isolation_dump_global_wait_edges.spec
│       │   │   ├── isolation_dump_local_wait_edges.spec
│       │   │   ├── isolation_ensure_dependency_activate_node.spec
│       │   │   ├── isolation_extension_commands.spec
│       │   │   ├── isolation_fix_partition_shard_index_names.spec
│       │   │   ├── isolation_get_all_active_transactions.spec
│       │   │   ├── isolation_get_distributed_wait_queries_mx.spec
│       │   │   ├── isolation_global_pid.spec
│       │   │   ├── isolation_hash_copy_vs_all.spec
│       │   │   ├── isolation_insert_select_conflict.spec
│       │   │   ├── isolation_insert_select_repartition.spec
│       │   │   ├── isolation_insert_select_vs_all.spec
│       │   │   ├── isolation_insert_select_vs_all_on_mx.spec
│       │   │   ├── isolation_insert_vs_all.spec
│       │   │   ├── isolation_insert_vs_all_on_mx.spec
│       │   │   ├── isolation_insert_vs_vacuum.spec
│       │   │   ├── isolation_logical_replication_binaryless.spec
│       │   │   ├── isolation_logical_replication_multi_shard_commands.spec
│       │   │   ├── isolation_logical_replication_multi_shard_commands_on_mx.spec
│       │   │   ├── isolation_logical_replication_nonsu_nonbypassrls.spec
│       │   │   ├── isolation_logical_replication_single_shard_commands.spec
│       │   │   ├── isolation_logical_replication_single_shard_commands_on_mx.spec
│       │   │   ├── isolation_logical_replication_skip_fk_validation.spec
│       │   │   ├── isolation_logical_replication_with_partitioning.spec
│       │   │   ├── isolation_master_update_node.spec
│       │   │   ├── isolation_max_client_connections.spec
│       │   │   ├── isolation_merge.spec
│       │   │   ├── isolation_merge_replicated.spec
│       │   │   ├── isolation_metadata_sync_deadlock.spec
│       │   │   ├── isolation_metadata_sync_vs_all.spec
│       │   │   ├── isolation_modify_with_subquery_vs_dml.spec
│       │   │   ├── isolation_move_placement_vs_modification.spec
│       │   │   ├── isolation_move_placement_vs_modification_fk.spec
│       │   │   ├── isolation_move_placement_vs_move_placement.spec
│       │   │   ├── isolation_multi_shard_modify_vs_all.spec
│       │   │   ├── isolation_multiuser_locking.spec
│       │   │   ├── isolation_mx_common.include.spec
│       │   │   ├── isolation_non_blocking_shard_split.spec
│       │   │   ├── isolation_non_blocking_shard_split_fkey.spec
│       │   │   ├── isolation_non_blocking_shard_split_with_index_as_replicaIdentity.spec
│       │   │   ├── isolation_partitioned_copy_vs_all.spec
│       │   │   ├── isolation_progress_monitoring.spec
│       │   │   ├── isolation_range_copy_vs_all.spec
│       │   │   ├── isolation_rebalancer_deferred_drop.spec
│       │   │   ├── isolation_ref2ref_foreign_keys.spec
│       │   │   ├── isolation_ref2ref_foreign_keys_enterprise.spec
│       │   │   ├── isolation_ref2ref_foreign_keys_on_mx.spec
│       │   │   ├── isolation_ref_select_for_update_vs_all_on_mx.spec
│       │   │   ├── isolation_ref_update_delete_upsert_vs_all_on_mx.spec
│       │   │   ├── isolation_reference_copy_vs_all.spec
│       │   │   ├── isolation_reference_on_mx.spec
│       │   │   ├── isolation_reference_table.spec
│       │   │   ├── isolation_remove_coordinator.spec
│       │   │   ├── isolation_replace_wait_function.spec
│       │   │   ├── isolation_replicate_reference_tables_to_coordinator.spec
│       │   │   ├── isolation_replicated_dist_on_mx.spec
│       │   │   ├── isolation_schema_based_sharding.spec
│       │   │   ├── isolation_select_for_update.spec
│       │   │   ├── isolation_select_vs_all.spec
│       │   │   ├── isolation_select_vs_all_on_mx.spec
│       │   │   ├── isolation_setup.spec
│       │   │   ├── isolation_shard_move_vs_start_metadata_sync.spec
│       │   │   ├── isolation_shard_rebalancer.spec
│       │   │   ├── isolation_shard_rebalancer_progress.spec
│       │   │   ├── isolation_shouldhaveshards.spec
│       │   │   ├── isolation_tenant_isolation.spec
│       │   │   ├── isolation_tenant_isolation_nonblocking.spec
│       │   │   ├── isolation_tenant_isolation_with_fkey_to_reference.spec
│       │   │   ├── isolation_transaction_recovery.spec
│       │   │   ├── isolation_truncate_vs_all.spec
│       │   │   ├── isolation_truncate_vs_all_on_mx.spec
│       │   │   ├── isolation_undistribute_table.spec
│       │   │   ├── isolation_update_delete_upsert_vs_all_on_mx.spec
│       │   │   ├── isolation_update_node.spec
│       │   │   ├── isolation_update_node_lock_writes.spec
│       │   │   ├── isolation_update_vs_all.spec
│       │   │   ├── isolation_upsert_vs_all.spec
│       │   │   ├── isolation_vacuum_skip_locked.spec
│       │   │   ├── isolation_validate_vs_insert.spec
│       │   │   └── shared_connection_waits.spec
│       │   ├── split_schedule
│       │   ├── sql/
│       │   │   ├── adaptive_executor.sql
│       │   │   ├── adaptive_executor_repartition.sql
│       │   │   ├── add_coordinator.sql
│       │   │   ├── adv_lock_permission.sql
│       │   │   ├── aggregate_support.sql
│       │   │   ├── alter_database_owner.sql
│       │   │   ├── alter_database_propagation.sql
│       │   │   ├── alter_distributed_table.sql
│       │   │   ├── alter_index.sql
│       │   │   ├── alter_role_propagation.sql
│       │   │   ├── alter_table_add_column.sql
│       │   │   ├── alter_table_set_access_method.sql
│       │   │   ├── alter_table_single_shard_table.sql
│       │   │   ├── anonymous_columns.sql
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name.sql
│       │   │   ├── arbitrary_configs_alter_table_add_constraint_without_name_create.sql
│       │   │   ├── arbitrary_configs_recurring_outer_join.sql
│       │   │   ├── arbitrary_configs_router.sql
│       │   │   ├── arbitrary_configs_router_create.sql
│       │   │   ├── arbitrary_configs_truncate.sql
│       │   │   ├── arbitrary_configs_truncate_cascade.sql
│       │   │   ├── arbitrary_configs_truncate_cascade_create.sql
│       │   │   ├── arbitrary_configs_truncate_create.sql
│       │   │   ├── arbitrary_configs_truncate_partition.sql
│       │   │   ├── arbitrary_configs_truncate_partition_create.sql
│       │   │   ├── auto_undist_citus_local.sql
│       │   │   ├── background_rebalance.sql
│       │   │   ├── background_rebalance_parallel.sql
│       │   │   ├── background_rebalance_parallel_reference_tables.sql
│       │   │   ├── background_task_queue_monitor.sql
│       │   │   ├── base_enable_mx.sql
│       │   │   ├── binary_protocol.sql
│       │   │   ├── bool_agg.sql
│       │   │   ├── cdc_library_path.sql
│       │   │   ├── ch_bench_having.sql
│       │   │   ├── ch_bench_having_mx.sql
│       │   │   ├── ch_bench_subquery_repartition.sql
│       │   │   ├── ch_benchmarks_1.sql
│       │   │   ├── ch_benchmarks_2.sql
│       │   │   ├── ch_benchmarks_3.sql
│       │   │   ├── ch_benchmarks_4.sql
│       │   │   ├── ch_benchmarks_5.sql
│       │   │   ├── ch_benchmarks_6.sql
│       │   │   ├── ch_benchmarks_create_load.sql
│       │   │   ├── chbenchmark_all_queries.sql
│       │   │   ├── check_cluster_state.sql
│       │   │   ├── check_mx.sql
│       │   │   ├── citus_aggregated_stats.sql
│       │   │   ├── citus_copy_shard_placement.sql
│       │   │   ├── citus_depended_object.sql
│       │   │   ├── citus_drain_node.sql
│       │   │   ├── citus_internal_access.sql
│       │   │   ├── citus_local_dist_joins.sql
│       │   │   ├── citus_local_table_triggers.sql
│       │   │   ├── citus_local_tables.sql
│       │   │   ├── citus_local_tables_ent.sql
│       │   │   ├── citus_local_tables_mx.sql
│       │   │   ├── citus_local_tables_queries.sql
│       │   │   ├── citus_local_tables_queries_mx.sql
│       │   │   ├── citus_locks.sql
│       │   │   ├── citus_non_blocking_split_columnar.sql
│       │   │   ├── citus_non_blocking_split_shard_cleanup.sql
│       │   │   ├── citus_non_blocking_split_shards.sql
│       │   │   ├── citus_run_command.sql
│       │   │   ├── citus_schema_distribute_undistribute.sql
│       │   │   ├── citus_schema_move.sql
│       │   │   ├── citus_shards.sql
│       │   │   ├── citus_split_shard_by_split_points.sql
│       │   │   ├── citus_split_shard_by_split_points_deferred_drop.sql
│       │   │   ├── citus_split_shard_by_split_points_failure.sql
│       │   │   ├── citus_split_shard_by_split_points_negative.sql
│       │   │   ├── citus_split_shard_columnar_partitioned.sql
│       │   │   ├── citus_stat_tenants.sql
│       │   │   ├── citus_table_triggers.sql
│       │   │   ├── citus_update_table_statistics.sql
│       │   │   ├── clock.sql
│       │   │   ├── columnar_alter.sql
│       │   │   ├── columnar_alter_set_type.sql
│       │   │   ├── columnar_analyze.sql
│       │   │   ├── columnar_chunk_filtering.sql
│       │   │   ├── columnar_citus_integration.sql
│       │   │   ├── columnar_clean.sql
│       │   │   ├── columnar_copyto.sql
│       │   │   ├── columnar_create.sql
│       │   │   ├── columnar_cursor.sql
│       │   │   ├── columnar_data_types.sql
│       │   │   ├── columnar_drop.sql
│       │   │   ├── columnar_empty.sql
│       │   │   ├── columnar_fallback_scan.sql
│       │   │   ├── columnar_first_row_number.sql
│       │   │   ├── columnar_indexes.sql
│       │   │   ├── columnar_insert.sql
│       │   │   ├── columnar_join.sql
│       │   │   ├── columnar_load.sql
│       │   │   ├── columnar_lz4.sql
│       │   │   ├── columnar_matview.sql
│       │   │   ├── columnar_memory.sql
│       │   │   ├── columnar_partitioning.sql
│       │   │   ├── columnar_paths.sql
│       │   │   ├── columnar_permissions.sql
│       │   │   ├── columnar_pg15.sql
│       │   │   ├── columnar_query.sql
│       │   │   ├── columnar_recursive.sql
│       │   │   ├── columnar_rollback.sql
│       │   │   ├── columnar_tableoptions.sql
│       │   │   ├── columnar_test_helpers.sql
│       │   │   ├── columnar_transactions.sql
│       │   │   ├── columnar_trigger.sql
│       │   │   ├── columnar_truncate.sql
│       │   │   ├── columnar_types_without_comparison.sql
│       │   │   ├── columnar_update_delete.sql
│       │   │   ├── columnar_vacuum.sql
│       │   │   ├── columnar_zstd.sql
│       │   │   ├── comment_on_database.sql
│       │   │   ├── comment_on_role.sql
│       │   │   ├── connectivity_checks.sql
│       │   │   ├── coordinator_evaluation.sql
│       │   │   ├── coordinator_evaluation_modify.sql
│       │   │   ├── coordinator_evaluation_select.sql
│       │   │   ├── coordinator_shouldhaveshards.sql
│       │   │   ├── cpu_priority.sql
│       │   │   ├── create_citus_local_table_cascade.sql
│       │   │   ├── create_distributed_table_concurrently.sql
│       │   │   ├── create_drop_database_propagation.sql
│       │   │   ├── create_drop_database_propagation_pg15.sql
│       │   │   ├── create_drop_database_propagation_pg16.sql
│       │   │   ├── create_ref_dist_from_citus_local.sql
│       │   │   ├── create_role_propagation.sql
│       │   │   ├── create_single_shard_table.sql
│       │   │   ├── cross_join.sql
│       │   │   ├── cte_inline.sql
│       │   │   ├── cte_nested_modification.sql
│       │   │   ├── cte_prepared_modify.sql
│       │   │   ├── cursors.sql
│       │   │   ├── custom_aggregate_support.sql
│       │   │   ├── data_types.sql
│       │   │   ├── detect_conn_close.sql
│       │   │   ├── disable_object_propagation.sql
│       │   │   ├── distributed_collations.sql
│       │   │   ├── distributed_collations_conflict.sql
│       │   │   ├── distributed_domain.sql
│       │   │   ├── distributed_functions.sql
│       │   │   ├── distributed_functions_conflict.sql
│       │   │   ├── distributed_intermediate_results.sql
│       │   │   ├── distributed_locks.sql
│       │   │   ├── distributed_planning.sql
│       │   │   ├── distributed_planning_create_load.sql
│       │   │   ├── distributed_procedure.sql
│       │   │   ├── distributed_triggers.sql
│       │   │   ├── distributed_types.sql
│       │   │   ├── distributed_types_conflict.sql
│       │   │   ├── distributed_types_xact_add_enum_value.sql
│       │   │   ├── dml_recursive.sql
│       │   │   ├── drop_column_partitioned_table.sql
│       │   │   ├── drop_database.sql
│       │   │   ├── drop_partitioned_table.sql
│       │   │   ├── dropped_columns_1.sql
│       │   │   ├── dropped_columns_create_load.sql
│       │   │   ├── ensure_citus_columnar_not_exists.sql
│       │   │   ├── ensure_no_intermediate_data_leak.sql
│       │   │   ├── ensure_no_shared_connection_leak.sql
│       │   │   ├── escape_extension_name.sql
│       │   │   ├── executor_local_failure.sql
│       │   │   ├── expression_reference_join.sql
│       │   │   ├── failure_add_disable_node.sql
│       │   │   ├── failure_connection_establishment.sql
│       │   │   ├── failure_copy_on_hash.sql
│       │   │   ├── failure_copy_to_reference.sql
│       │   │   ├── failure_create_database.sql
│       │   │   ├── failure_create_distributed_table_concurrently.sql
│       │   │   ├── failure_create_distributed_table_non_empty.sql
│       │   │   ├── failure_create_index_concurrently.sql
│       │   │   ├── failure_create_reference_table.sql
│       │   │   ├── failure_create_table.sql
│       │   │   ├── failure_cte_subquery.sql
│       │   │   ├── failure_ddl.sql
│       │   │   ├── failure_distributed_results.sql
│       │   │   ├── failure_failover_to_local_execution.sql
│       │   │   ├── failure_insert_select_pushdown.sql
│       │   │   ├── failure_insert_select_repartition.sql
│       │   │   ├── failure_insert_select_via_coordinator.sql
│       │   │   ├── failure_multi_dml.sql
│       │   │   ├── failure_multi_row_insert.sql
│       │   │   ├── failure_multi_shard_update_delete.sql
│       │   │   ├── failure_mx_metadata_sync.sql
│       │   │   ├── failure_mx_metadata_sync_multi_trans.sql
│       │   │   ├── failure_offline_move_shard_placement.sql
│       │   │   ├── failure_on_create_subscription.sql
│       │   │   ├── failure_online_move_shard_placement.sql
│       │   │   ├── failure_parallel_connection.sql
│       │   │   ├── failure_ref_tables.sql
│       │   │   ├── failure_replicated_partitions.sql
│       │   │   ├── failure_savepoints.sql
│       │   │   ├── failure_setup.sql
│       │   │   ├── failure_single_mod.sql
│       │   │   ├── failure_single_select.sql
│       │   │   ├── failure_split_cleanup.sql
│       │   │   ├── failure_tenant_isolation.sql
│       │   │   ├── failure_tenant_isolation_nonblocking.sql
│       │   │   ├── failure_test_helpers.sql
│       │   │   ├── failure_truncate.sql
│       │   │   ├── failure_vacuum.sql
│       │   │   ├── fast_path_router_modify.sql
│       │   │   ├── fkeys_between_local_ref.sql
│       │   │   ├── follower_single_node.sql
│       │   │   ├── forcedelegation_functions.sql
│       │   │   ├── foreign_key_restriction_enforcement.sql
│       │   │   ├── foreign_key_to_reference_shard_rebalance.sql
│       │   │   ├── foreign_key_to_reference_table.sql
│       │   │   ├── foreign_tables_mx.sql
│       │   │   ├── function_create.sql
│       │   │   ├── function_propagation.sql
│       │   │   ├── function_with_case_when.sql
│       │   │   ├── functions.sql
│       │   │   ├── generated_identity.sql
│       │   │   ├── geqo.sql
│       │   │   ├── global_cancel.sql
│       │   │   ├── grant_on_database_propagation.sql
│       │   │   ├── grant_on_foreign_server_propagation.sql
│       │   │   ├── grant_on_function_propagation.sql
│       │   │   ├── grant_on_schema_propagation.sql
│       │   │   ├── grant_on_sequence_propagation.sql
│       │   │   ├── grant_on_table_propagation.sql
│       │   │   ├── having_subquery.sql
│       │   │   ├── hyperscale_tutorial.sql
│       │   │   ├── index_create.sql
│       │   │   ├── insert_select_connection_leak.sql
│       │   │   ├── insert_select_into_local_table.sql
│       │   │   ├── insert_select_repartition.sql
│       │   │   ├── insert_select_single_shard_table.sql
│       │   │   ├── intermediate_result_pruning.sql
│       │   │   ├── intermediate_result_pruning_create.sql
│       │   │   ├── intermediate_result_pruning_queries_1.sql
│       │   │   ├── intermediate_result_pruning_queries_2.sql
│       │   │   ├── intermediate_results.sql
│       │   │   ├── issue_5099.sql
│       │   │   ├── issue_5248.sql
│       │   │   ├── issue_5763.sql
│       │   │   ├── issue_6543.sql
│       │   │   ├── issue_6592.sql
│       │   │   ├── issue_6758.sql
│       │   │   ├── issue_7477.sql
│       │   │   ├── issue_7891.sql
│       │   │   ├── issue_8243.sql
│       │   │   ├── join_pushdown.sql
│       │   │   ├── limit_intermediate_size.sql
│       │   │   ├── local_dist_join.sql
│       │   │   ├── local_dist_join_load.sql
│       │   │   ├── local_dist_join_mixed.sql
│       │   │   ├── local_dist_join_modifications.sql
│       │   │   ├── local_execution_local_plan.sql
│       │   │   ├── local_shard_copy.sql
│       │   │   ├── local_shard_execution.sql
│       │   │   ├── local_shard_execution_dropped_column.sql
│       │   │   ├── local_shard_execution_replicated.sql
│       │   │   ├── local_shard_utility_command_execution.sql
│       │   │   ├── local_table_join.sql
│       │   │   ├── locally_execute_intermediate_results.sql
│       │   │   ├── logical_rep_consistency.sql
│       │   │   ├── logical_replication.sql
│       │   │   ├── materialized_view.sql
│       │   │   ├── merge.sql
│       │   │   ├── merge_arbitrary.sql
│       │   │   ├── merge_arbitrary_create.sql
│       │   │   ├── merge_partition_tables.sql
│       │   │   ├── merge_repartition1.sql
│       │   │   ├── merge_repartition2.sql
│       │   │   ├── merge_schema_sharding.sql
│       │   │   ├── merge_unsupported.sql
│       │   │   ├── merge_vcore.sql
│       │   │   ├── metadata_sync_helpers.sql
│       │   │   ├── minimal_cluster_management.sql
│       │   │   ├── mixed_relkind_tests.sql
│       │   │   ├── modification_correctness.sql
│       │   │   ├── multi_add_node_from_backup.sql
│       │   │   ├── multi_add_node_from_backup_negative.sql
│       │   │   ├── multi_add_node_from_backup_sync_replica.sql
│       │   │   ├── multi_agg_approximate_distinct.sql
│       │   │   ├── multi_agg_distinct.sql
│       │   │   ├── multi_agg_type_conversion.sql
│       │   │   ├── multi_alias.sql
│       │   │   ├── multi_alter_table_add_constraints.sql
│       │   │   ├── multi_alter_table_add_constraints_without_name.sql
│       │   │   ├── multi_alter_table_add_foreign_key_without_name.sql
│       │   │   ├── multi_alter_table_row_level_security.sql
│       │   │   ├── multi_alter_table_row_level_security_escape.sql
│       │   │   ├── multi_alter_table_statements.sql
│       │   │   ├── multi_array_agg.sql
│       │   │   ├── multi_average_expression.sql
│       │   │   ├── multi_basic_queries.sql
│       │   │   ├── multi_behavioral_analytics_basics.sql
│       │   │   ├── multi_behavioral_analytics_create_table.sql
│       │   │   ├── multi_behavioral_analytics_create_table_superuser.sql
│       │   │   ├── multi_behavioral_analytics_single_shard_queries.sql
│       │   │   ├── multi_cache_invalidation.sql
│       │   │   ├── multi_citus_tools.sql
│       │   │   ├── multi_cluster_management.sql
│       │   │   ├── multi_colocated_shard_rebalance.sql
│       │   │   ├── multi_colocation_utils.sql
│       │   │   ├── multi_complex_count_distinct.sql
│       │   │   ├── multi_complex_expressions.sql
│       │   │   ├── multi_copy.sql
│       │   │   ├── multi_count_type_conversion.sql
│       │   │   ├── multi_create_fdw.sql
│       │   │   ├── multi_create_role_dependency.sql
│       │   │   ├── multi_create_shards.sql
│       │   │   ├── multi_create_table.sql
│       │   │   ├── multi_create_table_constraints.sql
│       │   │   ├── multi_create_table_superuser.sql
│       │   │   ├── multi_create_users.sql
│       │   │   ├── multi_cross_shard.sql
│       │   │   ├── multi_data_types.sql
│       │   │   ├── multi_deparse_function.sql
│       │   │   ├── multi_deparse_procedure.sql
│       │   │   ├── multi_deparse_shard_query.sql
│       │   │   ├── multi_distributed_transaction_id.sql
│       │   │   ├── multi_distribution_metadata.sql
│       │   │   ├── multi_drop_extension.sql
│       │   │   ├── multi_dropped_column_aliases.sql
│       │   │   ├── multi_explain.sql
│       │   │   ├── multi_extension.sql
│       │   │   ├── multi_fix_partition_shard_index_names.sql
│       │   │   ├── multi_follower_configure_followers.sql
│       │   │   ├── multi_follower_dml.sql
│       │   │   ├── multi_follower_sanity_check.sql
│       │   │   ├── multi_follower_select_statements.sql
│       │   │   ├── multi_foreign_key.sql
│       │   │   ├── multi_foreign_key_relation_graph.sql
│       │   │   ├── multi_function_evaluation.sql
│       │   │   ├── multi_function_in_join.sql
│       │   │   ├── multi_generate_ddl_commands.sql
│       │   │   ├── multi_hash_pruning.sql
│       │   │   ├── multi_having_pushdown.sql
│       │   │   ├── multi_index_statements.sql
│       │   │   ├── multi_insert_select.sql
│       │   │   ├── multi_insert_select_conflict.sql
│       │   │   ├── multi_insert_select_non_pushable_queries.sql
│       │   │   ├── multi_insert_select_window.sql
│       │   │   ├── multi_join_order_additional.sql
│       │   │   ├── multi_join_order_tpch_repartition.sql
│       │   │   ├── multi_join_order_tpch_small.sql
│       │   │   ├── multi_join_pruning.sql
│       │   │   ├── multi_json_agg.sql
│       │   │   ├── multi_json_object_agg.sql
│       │   │   ├── multi_jsonb_agg.sql
│       │   │   ├── multi_jsonb_object_agg.sql
│       │   │   ├── multi_large_shardid.sql
│       │   │   ├── multi_level_recursive_queries.sql
│       │   │   ├── multi_limit_clause.sql
│       │   │   ├── multi_limit_clause_approximate.sql
│       │   │   ├── multi_load_data.sql
│       │   │   ├── multi_load_data_superuser.sql
│       │   │   ├── multi_load_more_data.sql
│       │   │   ├── multi_master_protocol.sql
│       │   │   ├── multi_metadata_access.sql
│       │   │   ├── multi_metadata_attributes.sql
│       │   │   ├── multi_metadata_sync.sql
│       │   │   ├── multi_metadata_sync_domain.sql
│       │   │   ├── multi_modifications.sql
│       │   │   ├── multi_modifying_xacts.sql
│       │   │   ├── multi_move_mx.sql
│       │   │   ├── multi_multiuser.sql
│       │   │   ├── multi_multiuser_auth.sql
│       │   │   ├── multi_multiuser_basic_queries.sql
│       │   │   ├── multi_multiuser_copy.sql
│       │   │   ├── multi_multiuser_grant.sql
│       │   │   ├── multi_multiuser_load_data.sql
│       │   │   ├── multi_multiuser_master_protocol.sql
│       │   │   ├── multi_mx_add_coordinator.sql
│       │   │   ├── multi_mx_alter_distributed_table.sql
│       │   │   ├── multi_mx_call.sql
│       │   │   ├── multi_mx_copy_data.sql
│       │   │   ├── multi_mx_create_table.sql
│       │   │   ├── multi_mx_ddl.sql
│       │   │   ├── multi_mx_explain.sql
│       │   │   ├── multi_mx_function_call_delegation.sql
│       │   │   ├── multi_mx_function_table_reference.sql
│       │   │   ├── multi_mx_hide_shard_names.sql
│       │   │   ├── multi_mx_insert_select_repartition.sql
│       │   │   ├── multi_mx_metadata.sql
│       │   │   ├── multi_mx_modifications.sql
│       │   │   ├── multi_mx_modifications_to_reference_tables.sql
│       │   │   ├── multi_mx_modifying_xacts.sql
│       │   │   ├── multi_mx_node_metadata.sql
│       │   │   ├── multi_mx_partitioning.sql
│       │   │   ├── multi_mx_reference_table.sql
│       │   │   ├── multi_mx_repartition_join_w1.sql
│       │   │   ├── multi_mx_repartition_join_w2.sql
│       │   │   ├── multi_mx_repartition_udt_prepare.sql
│       │   │   ├── multi_mx_repartition_udt_w1.sql
│       │   │   ├── multi_mx_repartition_udt_w2.sql
│       │   │   ├── multi_mx_router_planner.sql
│       │   │   ├── multi_mx_schema_support.sql
│       │   │   ├── multi_mx_tpch_query1.sql
│       │   │   ├── multi_mx_tpch_query10.sql
│       │   │   ├── multi_mx_tpch_query12.sql
│       │   │   ├── multi_mx_tpch_query14.sql
│       │   │   ├── multi_mx_tpch_query19.sql
│       │   │   ├── multi_mx_tpch_query3.sql
│       │   │   ├── multi_mx_tpch_query6.sql
│       │   │   ├── multi_mx_tpch_query7.sql
│       │   │   ├── multi_mx_tpch_query7_nested.sql
│       │   │   ├── multi_mx_transaction_recovery.sql
│       │   │   ├── multi_mx_truncate_from_worker.sql
│       │   │   ├── multi_name_lengths.sql
│       │   │   ├── multi_name_resolution.sql
│       │   │   ├── multi_null_minmax_value_pruning.sql
│       │   │   ├── multi_orderby_limit_pushdown.sql
│       │   │   ├── multi_outer_join.sql
│       │   │   ├── multi_outer_join_columns.sql
│       │   │   ├── multi_outer_join_reference.sql
│       │   │   ├── multi_partition_pruning.sql
│       │   │   ├── multi_partitioning.sql
│       │   │   ├── multi_partitioning_utils.sql
│       │   │   ├── multi_poolinfo_usage.sql
│       │   │   ├── multi_prepare_plsql.sql
│       │   │   ├── multi_prepare_sql.sql
│       │   │   ├── multi_prune_shard_list.sql
│       │   │   ├── multi_query_directory_cleanup.sql
│       │   │   ├── multi_read_from_secondaries.sql
│       │   │   ├── multi_real_time_transaction.sql
│       │   │   ├── multi_reference_table.sql
│       │   │   ├── multi_remove_node_reference_table.sql
│       │   │   ├── multi_repartition_join_planning.sql
│       │   │   ├── multi_repartition_join_pruning.sql
│       │   │   ├── multi_repartition_join_ref.sql
│       │   │   ├── multi_repartition_join_task_assignment.sql
│       │   │   ├── multi_repartition_udt.sql
│       │   │   ├── multi_repartitioned_subquery_udf.sql
│       │   │   ├── multi_replicate_reference_table.sql
│       │   │   ├── multi_rls_join_distribution_key.sql
│       │   │   ├── multi_router_planner.sql
│       │   │   ├── multi_router_planner_fast_path.sql
│       │   │   ├── multi_row_insert.sql
│       │   │   ├── multi_row_router_insert.sql
│       │   │   ├── multi_schema_support.sql
│       │   │   ├── multi_select_distinct.sql
│       │   │   ├── multi_select_for_update.sql
│       │   │   ├── multi_sequence_default.sql
│       │   │   ├── multi_shard_update_delete.sql
│       │   │   ├── multi_simple_queries.sql
│       │   │   ├── multi_single_relation_subquery.sql
│       │   │   ├── multi_size_queries.sql
│       │   │   ├── multi_sql_function.sql
│       │   │   ├── multi_subquery.sql
│       │   │   ├── multi_subquery_behavioral_analytics.sql
│       │   │   ├── multi_subquery_complex_queries.sql
│       │   │   ├── multi_subquery_complex_reference_clause.sql
│       │   │   ├── multi_subquery_in_where_clause.sql
│       │   │   ├── multi_subquery_in_where_reference_clause.sql
│       │   │   ├── multi_subquery_misc.sql
│       │   │   ├── multi_subquery_union.sql
│       │   │   ├── multi_subquery_window_functions.sql
│       │   │   ├── multi_subtransactions.sql
│       │   │   ├── multi_table_ddl.sql
│       │   │   ├── multi_task_assignment_policy.sql
│       │   │   ├── multi_task_string_size.sql
│       │   │   ├── multi_tenant_isolation.sql
│       │   │   ├── multi_tenant_isolation_nonblocking.sql
│       │   │   ├── multi_test_catalog_views.sql
│       │   │   ├── multi_test_helpers.sql
│       │   │   ├── multi_test_helpers_superuser.sql
│       │   │   ├── multi_tpch_query1.sql
│       │   │   ├── multi_tpch_query10.sql
│       │   │   ├── multi_tpch_query12.sql
│       │   │   ├── multi_tpch_query14.sql
│       │   │   ├── multi_tpch_query19.sql
│       │   │   ├── multi_tpch_query3.sql
│       │   │   ├── multi_tpch_query6.sql
│       │   │   ├── multi_tpch_query7.sql
│       │   │   ├── multi_tpch_query7_nested.sql
│       │   │   ├── multi_transaction_recovery.sql
│       │   │   ├── multi_transaction_recovery_multiple_databases.sql
│       │   │   ├── multi_transactional_drop_shards.sql
│       │   │   ├── multi_truncate.sql
│       │   │   ├── multi_unsupported_worker_operations.sql
│       │   │   ├── multi_update_select.sql
│       │   │   ├── multi_upsert.sql
│       │   │   ├── multi_utilities.sql
│       │   │   ├── multi_utility_statements.sql
│       │   │   ├── multi_utility_warnings.sql
│       │   │   ├── multi_view.sql
│       │   │   ├── multi_working_columns.sql
│       │   │   ├── mx_coordinator_shouldhaveshards.sql
│       │   │   ├── mx_foreign_key_to_reference_table.sql
│       │   │   ├── mx_regular_user.sql
│       │   │   ├── nested_execution.sql
│       │   │   ├── nested_execution_create.sql
│       │   │   ├── node_conninfo_reload.sql
│       │   │   ├── non_colocated_leaf_subquery_joins.sql
│       │   │   ├── non_colocated_subquery_joins.sql
│       │   │   ├── non_super_user_cdc_library_path.sql
│       │   │   ├── non_super_user_object_metadata.sql
│       │   │   ├── null_parameters.sql
│       │   │   ├── object_propagation_debug.sql
│       │   │   ├── partition_wise_join.sql
│       │   │   ├── partitioned_indexes_create.sql
│       │   │   ├── partitioned_intermediate_results.sql
│       │   │   ├── partitioning_issue_3970.sql
│       │   │   ├── pg12.sql
│       │   │   ├── pg13.sql
│       │   │   ├── pg13_propagate_statistics.sql
│       │   │   ├── pg13_with_ties.sql
│       │   │   ├── pg14.sql
│       │   │   ├── pg15.sql
│       │   │   ├── pg15_jsonpath.sql
│       │   │   ├── pg16.sql
│       │   │   ├── pg17.sql
│       │   │   ├── pg17_json.sql
│       │   │   ├── pg18.sql
│       │   │   ├── pg_dump.sql
│       │   │   ├── pgmerge.sql
│       │   │   ├── postgres.sql
│       │   │   ├── prepared_statements_1.sql
│       │   │   ├── prepared_statements_2.sql
│       │   │   ├── prepared_statements_3.sql
│       │   │   ├── prepared_statements_4.sql
│       │   │   ├── prepared_statements_create_load.sql
│       │   │   ├── propagate_extension_commands.sql
│       │   │   ├── propagate_foreign_servers.sql
│       │   │   ├── propagate_set_commands.sql
│       │   │   ├── propagate_statistics.sql
│       │   │   ├── publication.sql
│       │   │   ├── query_single_shard_table.sql
│       │   │   ├── reassign_owned.sql
│       │   │   ├── recurring_join_pushdown.sql
│       │   │   ├── recurring_outer_join.sql
│       │   │   ├── recursive_dml_queries_mx.sql
│       │   │   ├── recursive_dml_with_different_planners_executors.sql
│       │   │   ├── recursive_relation_planning_restriction_pushdown.sql
│       │   │   ├── recursive_view_local_table.sql
│       │   │   ├── ref_citus_local_fkeys.sql
│       │   │   ├── relation_access_tracking.sql
│       │   │   ├── relation_access_tracking_single_node.sql
│       │   │   ├── remove_coordinator.sql
│       │   │   ├── remove_coordinator_from_metadata.sql
│       │   │   ├── remove_non_default_nodes.sql
│       │   │   ├── rename_public_to_citus_schema_and_recreate.sql
│       │   │   ├── replicate_reference_tables_to_coordinator.sql
│       │   │   ├── replicated_partitioned_table.sql
│       │   │   ├── replicated_table_disable_node.sql
│       │   │   ├── resync_metadata_with_sequences.sql
│       │   │   ├── role_command_from_any_node.sql
│       │   │   ├── row_types.sql
│       │   │   ├── run_command_on_all_nodes.sql
│       │   │   ├── schema_based_sharding.sql
│       │   │   ├── schemas.sql
│       │   │   ├── schemas_create.sql
│       │   │   ├── seclabel.sql
│       │   │   ├── sequences.sql
│       │   │   ├── sequences_create.sql
│       │   │   ├── sequences_owned_by.sql
│       │   │   ├── sequences_with_different_types.sql
│       │   │   ├── sequential_modifications.sql
│       │   │   ├── set_operation_and_local_tables.sql
│       │   │   ├── set_operations.sql
│       │   │   ├── set_role_in_transaction.sql
│       │   │   ├── shard_move_constraints.sql
│       │   │   ├── shard_move_constraints_blocking.sql
│       │   │   ├── shard_move_deferred_delete.sql
│       │   │   ├── shard_rebalancer.sql
│       │   │   ├── shard_rebalancer_unit.sql
│       │   │   ├── shared_connection_stats.sql
│       │   │   ├── single_hash_repartition_join.sql
│       │   │   ├── single_node.sql
│       │   │   ├── single_node_enterprise.sql
│       │   │   ├── single_node_truncate.sql
│       │   │   ├── single_shard_table_prep.sql
│       │   │   ├── single_shard_table_udfs.sql
│       │   │   ├── split_shard.sql
│       │   │   ├── sql_procedure.sql
│       │   │   ├── sqlancer_failures.sql
│       │   │   ├── sqlsmith_failures.sql
│       │   │   ├── ssl_by_default.sql
│       │   │   ├── start_stop_metadata_sync.sql
│       │   │   ├── stat_counters.sql
│       │   │   ├── stat_statements.sql
│       │   │   ├── statement_cancel_error_message.sql
│       │   │   ├── subqueries_deep.sql
│       │   │   ├── subqueries_not_supported.sql
│       │   │   ├── subquery_and_cte.sql
│       │   │   ├── subquery_append.sql
│       │   │   ├── subquery_basics.sql
│       │   │   ├── subquery_complex_target_list.sql
│       │   │   ├── subquery_executors.sql
│       │   │   ├── subquery_in_targetlist.sql
│       │   │   ├── subquery_in_where.sql
│       │   │   ├── subquery_local_tables.sql
│       │   │   ├── subquery_partitioning.sql
│       │   │   ├── subquery_prepared_statements.sql
│       │   │   ├── subquery_view.sql
│       │   │   ├── subscripting_op.sql
│       │   │   ├── system_queries.sql
│       │   │   ├── tableam.sql
│       │   │   ├── tablespace.sql
│       │   │   ├── tdigest_aggregate_support.sql
│       │   │   ├── text_search.sql
│       │   │   ├── undistribute_table.sql
│       │   │   ├── undistribute_table_cascade.sql
│       │   │   ├── undistribute_table_cascade_mx.sql
│       │   │   ├── union_pushdown.sql
│       │   │   ├── unsupported_lateral_subqueries.sql
│       │   │   ├── update_colocation_mx.sql
│       │   │   ├── upgrade_autoconverted_after.sql
│       │   │   ├── upgrade_autoconverted_before.sql
│       │   │   ├── upgrade_basic_after.sql
│       │   │   ├── upgrade_basic_after_non_mixed.sql
│       │   │   ├── upgrade_basic_before.sql
│       │   │   ├── upgrade_basic_before_non_mixed.sql
│       │   │   ├── upgrade_citus_finish_citus_upgrade.sql
│       │   │   ├── upgrade_citus_locks.sql
│       │   │   ├── upgrade_citus_stat_activity.sql
│       │   │   ├── upgrade_columnar_after.sql
│       │   │   ├── upgrade_columnar_before.sql
│       │   │   ├── upgrade_distributed_function_after.sql
│       │   │   ├── upgrade_distributed_function_before.sql
│       │   │   ├── upgrade_distributed_triggers_after.sql
│       │   │   ├── upgrade_distributed_triggers_before.sql
│       │   │   ├── upgrade_list_citus_objects.sql
│       │   │   ├── upgrade_pg_dist_cleanup_after.sql
│       │   │   ├── upgrade_pg_dist_cleanup_before.sql
│       │   │   ├── upgrade_post_11_after.sql
│       │   │   ├── upgrade_post_11_before.sql
│       │   │   ├── upgrade_post_14_after.sql
│       │   │   ├── upgrade_post_14_before.sql
│       │   │   ├── upgrade_rebalance_strategy_after.sql
│       │   │   ├── upgrade_rebalance_strategy_before.sql
│       │   │   ├── upgrade_ref2ref_after.sql
│       │   │   ├── upgrade_ref2ref_before.sql
│       │   │   ├── upgrade_schema_based_sharding_after.sql
│       │   │   ├── upgrade_schema_based_sharding_before.sql
│       │   │   ├── upgrade_single_shard_table_after.sql
│       │   │   ├── upgrade_single_shard_table_before.sql
│       │   │   ├── upgrade_type_after.sql
│       │   │   ├── upgrade_type_before.sql
│       │   │   ├── validate_constraint.sql
│       │   │   ├── values.sql
│       │   │   ├── view_propagation.sql
│       │   │   ├── views.sql
│       │   │   ├── views_create.sql
│       │   │   ├── window_functions.sql
│       │   │   ├── with_basics.sql
│       │   │   ├── with_dml.sql
│       │   │   ├── with_executors.sql
│       │   │   ├── with_join.sql
│       │   │   ├── with_modifying.sql
│       │   │   ├── with_nested.sql
│       │   │   ├── with_partitioning.sql
│       │   │   ├── with_prepare.sql
│       │   │   ├── with_set_operations.sql
│       │   │   ├── with_transactions.sql
│       │   │   ├── with_where.sql
│       │   │   ├── worker_copy_table_to_node.sql
│       │   │   ├── worker_split_binary_copy_test.sql
│       │   │   ├── worker_split_copy_test.sql
│       │   │   └── worker_split_text_copy_test.sql
│       │   ├── sql_base_schedule
│       │   └── sql_schedule
│       └── tap/
│           ├── Makefile
│           ├── citus_helpers.pm
│           ├── postgresql.conf
│           └── t/
│               └── restore_point_mx.pl
└── vendor/
    ├── README.md
    └── safestringlib/
        ├── .gitattributes
        ├── .gitignore
        ├── CMakeLists.txt
        ├── CODE_OF_CONDUCT.md
        ├── LICENSE
        ├── LICENSE&COPYING.txt
        ├── README.md
        ├── include/
        │   ├── safe_lib.h
        │   ├── safe_lib_errno.h
        │   ├── safe_lib_errno.h.in
        │   ├── safe_mem_lib.h
        │   ├── safe_str_lib.h
        │   ├── safe_types.h
        │   ├── safe_types.h.in
        │   └── snprintf_s.h
        ├── makefile
        └── safeclib/
            ├── abort_handler_s.c
            ├── ignore_handler_s.c
            ├── mem_primitives_lib.c
            ├── mem_primitives_lib.h
            ├── memcmp16_s.c
            ├── memcmp32_s.c
            ├── memcmp_s.c
            ├── memcpy16_s.c
            ├── memcpy32_s.c
            ├── memcpy_s.c
            ├── memmove16_s.c
            ├── memmove32_s.c
            ├── memmove_s.c
            ├── memset16_s.c
            ├── memset32_s.c
            ├── memset_s.c
            ├── memzero16_s.c
            ├── memzero32_s.c
            ├── memzero_s.c
            ├── safe_mem_constraint.c
            ├── safe_mem_constraint.h
            ├── safe_str_constraint.c
            ├── safe_str_constraint.h
            ├── safeclib_private.h
            ├── snprintf_support.c
            ├── stpcpy_s.c
            ├── stpncpy_s.c
            ├── strcasecmp_s.c
            ├── strcasestr_s.c
            ├── strcat_s.c
            ├── strcmp_s.c
            ├── strcmpfld_s.c
            ├── strcpy_s.c
            ├── strcpyfld_s.c
            ├── strcpyfldin_s.c
            ├── strcpyfldout_s.c
            ├── strcspn_s.c
            ├── strfirstchar_s.c
            ├── strfirstdiff_s.c
            ├── strfirstsame_s.c
            ├── strisalphanumeric_s.c
            ├── strisascii_s.c
            ├── strisdigit_s.c
            ├── strishex_s.c
            ├── strislowercase_s.c
            ├── strismixedcase_s.c
            ├── strispassword_s.c
            ├── strisuppercase_s.c
            ├── strlastchar_s.c
            ├── strlastdiff_s.c
            ├── strlastsame_s.c
            ├── strljustify_s.c
            ├── strncat_s.c
            ├── strncpy_s.c
            ├── strnlen_s.c
            ├── strnterminate_s.c
            ├── strpbrk_s.c
            ├── strprefix_s.c
            ├── strremovews_s.c
            ├── strspn_s.c
            ├── strstr_s.c
            ├── strtok_s.c
            ├── strtolowercase_s.c
            ├── strtouppercase_s.c
            ├── strzero_s.c
            ├── wcpcpy_s.c
            ├── wcscat_s.c
            ├── wcscpy_s.c
            ├── wcsncat_s.c
            ├── wcsncpy_s.c
            ├── wcsnlen_s.c
            ├── wmemcmp_s.c
            ├── wmemcpy_s.c
            ├── wmemmove_s.c
            └── wmemset_s.c
Download .txt
Showing preview only (470K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6506 symbols across 920 files)

FILE: .devcontainer/.vscode/generate_c_cpp_properties-json.py
  function main (line 24) | def main(args):
  function generate_configuration (line 55) | def generate_configuration(version):

FILE: ci/include_grouping.py
  function main (line 18) | def main(args):
  function print_sorted_includes (line 69) | def print_sorted_includes(includes, file=sys.stdout):

FILE: src/backend/columnar/columnar.c
  type config_enum_entry (line 46) | struct config_enum_entry
  function columnar_init (line 59) | void
  function columnar_init_gucs (line 67) | void
  function CompressionType (line 128) | CompressionType

FILE: src/backend/columnar/columnar_compression.c
  type ColumnarCompressHeader (line 38) | typedef struct ColumnarCompressHeader
  function CompressBuffer (line 62) | bool
  function StringInfo (line 165) | StringInfo

FILE: src/backend/columnar/columnar_customscan.c
  type ColumnarScanState (line 65) | typedef struct ColumnarScanState
  type CustomPath (line 115) | struct CustomPath
  type CustomPathMethods (line 155) | struct CustomPathMethods
  type CustomScanMethods (line 161) | struct CustomScanMethods
  type CustomExecMethods (line 166) | struct CustomExecMethods
  type config_enum_entry (line 177) | struct config_enum_entry
  function columnar_customscan_init (line 196) | void
  function ColumnarSetRelPathlistHook (line 269) | static void
  function ColumnarGetRelationInfoHook (line 354) | static void
  function RemovePathsByPredicate (line 382) | static void
  function IsNotIndexPath (line 403) | static bool
  function Path (line 414) | static Path *
  function CostColumnarPaths (line 431) | static void
  function CostColumnarIndexPath (line 460) | static void
  function Cost (line 496) | static Cost
  function CostColumnarSeqPath (line 590) | static void
  function RelationIdGetNumberOfAttributes (line 616) | static int
  function CheckVarStats (line 637) | static bool
  function ExprReferencesRelid (line 691) | static bool
  function Expr (line 759) | static Expr *
  function List (line 959) | static List *
  function PushdownJoinClauseMatches (line 1000) | static bool
  function List (line 1013) | static List *
  function Relids (line 1043) | static Relids
  function Combinations (line 1079) | static double
  function ChooseDepthLimit (line 1123) | static int
  function AddColumnarScanPaths (line 1154) | static void
  function AddColumnarScanPathsRec (line 1200) | static void
  function ContainsExecParams (line 1288) | static bool
  function AddColumnarScanPath (line 1313) | static void
  function Bitmapset (line 1455) | static Bitmapset *
  function CostColumnarScan (line 1506) | static void
  function Cost (line 1536) | static Cost
  function uint64 (line 1593) | static uint64
  function Plan (line 1610) | static Plan *
  function Node (line 1675) | static Node *
  function List (line 1722) | static List *
  function Node (line 1731) | static Node *
  function Node (line 1748) | static Node *
  function ColumnarScan_BeginCustomScan (line 1783) | static void
  function Bitmapset (line 1813) | static Bitmapset *
  function TupleTableSlot (line 1854) | static TupleTableSlot *
  function ColumnarScanRecheck (line 1900) | static bool
  function TupleTableSlot (line 1907) | static TupleTableSlot *
  function ColumnarScan_EndCustomScan (line 1916) | static void
  function ColumnarScan_ReScanCustomScan (line 1943) | static void
  function ColumnarScan_ExplainCustomScan (line 1966) | static void
  function List (line 2053) | static List *
  function List (line 2116) | static List *

FILE: src/backend/columnar/columnar_debug.c
  function Datum (line 44) | Datum
  function Datum (line 95) | Datum
  function MemoryContextTotals (line 150) | static void

FILE: src/backend/columnar/columnar_metadata.c
  type ModifyState (line 74) | typedef struct
  type RowNumberLookupMode (line 82) | typedef enum RowNumberLookupMode
  type FormData_columnar_options (line 157) | typedef struct FormData_columnar_options
  type FormData_columnar_options (line 168) | typedef FormData_columnar_options *Form_columnar_options;
  function InitColumnarOptions (line 214) | void
  function ParseColumnarRelOptions (line 241) | static void
  function List (line 325) | List *
  function SetColumnarRelOptions (line 358) | void
  function SetColumnarOptions (line 390) | void
  function WriteColumnarOptions (line 405) | static bool
  function DeleteColumnarTableOptions (line 490) | bool
  function ReadColumnarOptions (line 540) | bool
  function SaveStripeSkipList (line 603) | void
  function SaveChunkGroups (line 681) | void
  function StripeSkipList (line 717) | StripeSkipList *
  function StripeMetadata (line 840) | StripeMetadata *
  function StripeMetadata (line 851) | StripeMetadata *
  function StripeMetadata (line 884) | StripeMetadata *
  function StripeWriteStateEnum (line 896) | StripeWriteStateEnum
  function uint64 (line 918) | uint64
  function StripeMetadata (line 931) | static StripeMetadata *
  function CheckStripeMetadataConsistency (line 1042) | static void
  function StripeMetadata (line 1102) | StripeMetadata *
  function uint32 (line 1163) | static uint32 *
  function InsertEmptyStripeMetadataRow (line 1222) | static void
  function List (line 1271) | List *
  function uint64 (line 1303) | uint64
  function Oid (line 1325) | Oid
  function GetHighestUsedAddressAndId (line 1337) | static void
  function EmptyStripeReservation (line 1369) | EmptyStripeReservation *
  function StripeMetadata (line 1399) | StripeMetadata *
  function StripeMetadata (line 1417) | static StripeMetadata *
  function List (line 1507) | static List *
  function StripeMetadata (line 1552) | static StripeMetadata *
  function DeleteMetadataRows (line 1607) | void
  function DeleteStorageFromColumnarMetadataTable (line 1641) | static void
  function ModifyState (line 1688) | static ModifyState *
  function InsertTupleAndEnforceConstraints (line 1712) | static void
  function DeleteTupleAndEnforceConstraints (line 1732) | static void
  function FinishModifyRelation (line 1749) | static void
  function EState (line 1773) | static EState *
  function bytea (line 1823) | static bytea *
  function Datum (line 1858) | static Datum
  function Oid (line 1881) | static Oid
  function Oid (line 1892) | static Oid
  function Oid (line 1903) | static Oid
  function Oid (line 1915) | static Oid
  function Oid (line 1925) | static Oid
  function Oid (line 1935) | static Oid
  function Oid (line 1946) | static Oid
  function Oid (line 1957) | static Oid
  function Oid (line 1968) | static Oid
  function Oid (line 1979) | static Oid
  function Oid (line 1990) | static Oid
  function uint64 (line 2009) | static uint64
  function uint64 (line 2026) | uint64
  function Datum (line 2037) | Datum
  function ColumnarStorageUpdateIfNeeded (line 2067) | void
  function uint64 (line 2104) | static uint64
  function GetFirstRowNumberAttrIndexInColumnarStripe (line 2133) | static int

FILE: src/backend/columnar/columnar_reader.c
  type ChunkGroupReadState (line 47) | typedef struct ChunkGroupReadState
  type StripeReadState (line 56) | typedef struct StripeReadState
  type ColumnarReadState (line 71) | struct ColumnarReadState
  function ColumnarReadState (line 179) | ColumnarReadState *
  function ColumnarReadFlushPendingWrites (line 253) | void
  function MemoryContext (line 309) | static MemoryContext
  function ColumnarReadNextRow (line 322) | bool
  function ColumnarReadRowByRowNumberOrError (line 369) | void
  function ColumnarReadRowByRowNumber (line 390) | bool
  function ColumnarReadIsCurrentStripe (line 448) | static bool
  function StripeMetadata (line 471) | static StripeMetadata *
  function ReadStripeRowByRowNumber (line 483) | static void
  function StripeReadIsCurrentChunkGroup (line 526) | static bool
  function ReadChunkGroupRowByRowOffset (line 543) | static void
  function StripeReadInProgress (line 563) | static bool
  function HasUnreadStripe (line 574) | static bool
  function ColumnarRescan (line 585) | void
  function ColumnarEndRead (line 605) | void
  function ColumnarResetRead (line 631) | void
  function StripeReadState (line 648) | static StripeReadState *
  function AdvanceStripeRead (line 687) | static void
  function SnapshotMightSeeUnflushedStripes (line 742) | static bool
  function ReadStripeNextRow (line 775) | static bool
  function ChunkGroupReadState (line 823) | static ChunkGroupReadState *
  function EndChunkGroupRead (line 852) | static void
  function ReadChunkGroupNextRow (line 868) | static bool
  function int64 (line 909) | int64
  function ChunkData (line 920) | ChunkData *
  function FreeChunkData (line 955) | void
  function uint64 (line 985) | uint64
  function StripeBuffers (line 1007) | static StripeBuffers *
  function ColumnBuffers (line 1068) | static ColumnBuffers *
  function FmgrInfo (line 1196) | FmgrInfo *
  function Node (line 1234) | static Node *
  function List (line 1251) | static List *
  function OpExpr (line 1303) | static OpExpr *
  function Oid (line 1340) | static Oid
  function UpdateConstraint (line 1358) | static void
  function StripeSkipList (line 1389) | static StripeSkipList *
  function uint32 (line 1464) | static uint32
  function DeserializeBoolArray (line 1506) | static void
  function DeserializeDatumArray (line 1542) | static void
  function ChunkData (line 1583) | static ChunkData *
  function Datum (line 1661) | static Datum

FILE: src/backend/columnar/columnar_storage.c
  type ColumnarMetapage (line 57) | typedef struct ColumnarMetapage
  type PhysicalAddr (line 93) | typedef struct PhysicalAddr
  function PhysicalAddr (line 117) | static inline PhysicalAddr
  function uint64 (line 132) | static inline uint64
  function ColumnarStorageInit (line 159) | void
  function ColumnarStorageUpdateCurrent (line 222) | void
  function uint64 (line 266) | uint64
  function uint64 (line 281) | uint64
  function uint64 (line 296) | uint64
  function uint64 (line 312) | uint64
  function uint64 (line 328) | uint64
  function uint64 (line 343) | uint64
  function ColumnarStorageIsCurrent (line 356) | bool
  function uint64 (line 375) | uint64
  function uint64 (line 399) | uint64
  function uint64 (line 420) | uint64
  function ColumnarStorageRead (line 463) | void
  function ColumnarStorageWrite (line 499) | void
  function ColumnarStorageTruncate (line 540) | bool
  function ColumnarOverwriteMetapage (line 606) | static void
  function ColumnarMetapage (line 627) | static ColumnarMetapage
  function ReadFromBlock (line 669) | static void
  function WriteToBlock (line 697) | static void
  function uint64 (line 755) | static uint64
  function ColumnarMetapageIsCurrent (line 778) | static bool
  function ColumnarMetapageIsOlder (line 789) | static bool
  function ColumnarMetapageIsNewer (line 801) | static bool
  function ColumnarMetapageCheckVersion (line 814) | static void
  function Datum (line 839) | Datum

FILE: src/backend/columnar/columnar_tableam.c
  type ColumnarScanDescData (line 73) | typedef struct ColumnarScanDescData
  type IndexFetchColumnarData (line 92) | typedef struct IndexFetchColumnarData
  type QueryEnvironment (line 123) | struct QueryEnvironment
  function TupleTableSlotOps (line 176) | static const TupleTableSlotOps *
  function TableScanDesc (line 183) | static TableScanDesc
  function TableScanDesc (line 206) | TableScanDesc
  function MemoryContext (line 259) | static MemoryContext
  function ColumnarReadState (line 271) | static ColumnarReadState *
  function columnar_endscan (line 289) | static void
  function columnar_rescan (line 306) | static void
  function columnar_getnextslot (line 322) | static bool
  function ItemPointerData (line 362) | static ItemPointerData
  function uint64 (line 378) | static uint64
  function ErrorIfInvalidRowNumber (line 393) | static void
  function Size (line 413) | static Size
  function Size (line 420) | static Size
  function columnar_parallelscan_reinitialize (line 427) | static void
  function IndexFetchTableData (line 434) | static IndexFetchTableData *
  function columnar_index_fetch_reset (line 461) | static void
  function columnar_index_fetch_end (line 468) | static void
  function columnar_index_fetch_tuple (line 482) | static bool
  function columnar_fetch_row_version (line 633) | static bool
  function columnar_get_latest_tid (line 643) | static void
  function columnar_tuple_tid_valid (line 651) | static bool
  function columnar_tuple_satisfies_snapshot (line 658) | static bool
  function TransactionId (line 670) | static TransactionId
  function columnar_tuple_insert (line 718) | static void
  function columnar_tuple_insert_speculative (line 751) | static void
  function columnar_tuple_complete_speculative (line 760) | static void
  function columnar_multi_insert (line 768) | static void
  function TM_Result (line 809) | static TM_Result
  function TM_Result (line 818) | static TM_Result
  function TM_Result (line 828) | static TM_Result
  function columnar_finish_bulk_insert (line 838) | static void
  function columnar_relation_set_new_filelocator (line 847) | static void
  function columnar_relation_nontransactional_truncate (line 889) | static void
  function columnar_relation_copy_data (line 914) | static void
  function columnar_relation_copy_for_cluster (line 928) | static void
  function List (line 1005) | static List *
  function uint64 (line 1033) | static uint64
  function columnar_vacuum_rel (line 1053) | static void
  function LogRelationStats (line 1160) | static void
  function TruncateColumnar (line 1279) | static void
  function ConditionalLockRelationWithTimeout (line 1357) | static bool
  function columnar_scan_analyze_next_block (line 1387) | static bool
  function columnar_scan_analyze_next_tuple (line 1418) | static bool
  function columnar_index_build_range_scan (line 1444) | static double
  function ColumnarReportTotalVirtualBlocks (line 1561) | static void
  function BlockNumber (line 1585) | static BlockNumber
  function ItemPointerData (line 1609) | static ItemPointerData
  function ColumnarReadRowsIntoIndex (line 1633) | static double
  function columnar_index_validate_scan (line 1691) | static void
  function ColumnarReadMissingRowsIntoIndex (line 1740) | static void
  function ItemPointerData (line 1831) | static ItemPointerData
  function uint64 (line 1868) | static uint64
  function columnar_relation_needs_toast_table (line 1892) | static bool
  function columnar_estimate_rel_size (line 1901) | static void
  function columnar_scan_sample_next_block (line 1920) | static bool
  function columnar_scan_sample_next_tuple (line 1927) | static bool
  function ColumnarXactCallback (line 1935) | static void
  function ColumnarSubXactCallback (line 1966) | static void
  function columnar_tableam_init (line 1994) | void
  function int64 (line 2027) | int64
  function HeapTuple (line 2047) | static HeapTuple
  function ColumnarTableDropHook (line 2068) | static void
  function ColumnarTriggerCreateHook (line 2103) | static void
  function ColumnarTableAMObjectAccessHook (line 2150) | static void
  function RangeVar (line 2175) | static RangeVar *
  function ColumnarProcessUtility (line 2239) | static void
  function ColumnarSupportsIndexAM (line 2384) | bool
  function IsColumnarTableAmTable (line 2396) | bool
  function CheckCitusColumnarCreateExtensionStmt (line 2420) | void
  function CheckCitusColumnarAlterExtensionStmt (line 2453) | void
  function TableAmRoutine (line 2537) | const TableAmRoutine *
  function Datum (line 2545) | Datum
  function Datum (line 2559) | static Datum *
  function ColumnarCheckLogicalReplication (line 2603) | static void
  function Datum (line 2639) | Datum
  function Datum (line 2656) | Datum
  function Datum (line 2674) | Datum
  function Datum (line 2710) | Datum
  function CitusColumnarHasBeenLoaded (line 2744) | bool
  function CitusColumnarHasBeenLoadedInternal (line 2767) | static bool
  function CheckCitusColumnarVersion (line 2805) | bool
  function CheckAvailableVersionColumnar (line 2833) | bool
  function CheckInstalledVersionColumnar (line 2866) | static bool
  function MajorVersionsCompatibleColumnar (line 2895) | bool
  function ParseVersionComponent (line 2937) | static int
  function MinorVersionsCompatibleRelaxedColumnar (line 2959) | bool
  function DefElem (line 3104) | DefElem *

FILE: src/backend/columnar/columnar_writer.c
  type ColumnarWriteState (line 40) | struct ColumnarWriteState
  function ColumnarWriteState (line 96) | ColumnarWriteState *
  function uint64 (line 168) | uint64
  function ColumnarEndWrite (line 273) | void
  function ColumnarFlushPendingWrites (line 285) | void
  function MemoryContext (line 310) | MemoryContext
  function StripeBuffers (line 321) | static StripeBuffers *
  function StripeSkipList (line 361) | static StripeSkipList *
  function FlushStripe (line 391) | static void
  function StringInfo (line 523) | static StringInfo
  function SerializeSingleDatum (line 555) | static void
  function SerializeChunkData (line 592) | static void
  function UpdateChunkSkipNodeMinMax (line 663) | static void
  function Datum (line 722) | static Datum
  function StringInfo (line 753) | static StringInfo
  function ContainsPendingWrites (line 775) | bool

FILE: src/backend/columnar/mod.c
  function _PG_init (line 32) | void

FILE: src/backend/columnar/sql/citus_columnar--11.1-1.sql
  type options (line 12) | CREATE TABLE IF NOT EXISTS options (
  type stripe (line 22) | CREATE TABLE IF NOT EXISTS stripe (
  type chunk_group (line 38) | CREATE TABLE IF NOT EXISTS chunk_group (
  type chunk (line 48) | CREATE TABLE IF NOT EXISTS chunk (
  function columnar (line 77) | CREATE OR REPLACE FUNCTION columnar.columnar_handler(internal)
  function pg_catalog (line 95) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(
  function pg_catalog (line 115) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(
  function pg_catalog (line 200) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(
  function columnar_internal (line 310) | CREATE OR REPLACE FUNCTION columnar_internal.upgrade_columnar_storage(re...
  function columnar_internal (line 321) | CREATE OR REPLACE FUNCTION columnar_internal.downgrade_columnar_storage(...
  function columnar_internal (line 330) | CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_...
  function columnar (line 383) | CREATE FUNCTION columnar.get_storage_id(regclass) RETURNS bigint
  type columnar (line 389) | CREATE VIEW columnar.storage WITH (security_barrier) AS
  type columnar (line 398) | CREATE VIEW columnar.options WITH (security_barrier) AS
  type columnar (line 408) | CREATE VIEW columnar.stripe WITH (security_barrier) AS
  type columnar (line 417) | CREATE VIEW columnar.chunk_group WITH (security_barrier) AS
  type columnar (line 425) | CREATE VIEW columnar.chunk WITH (security_barrier) AS

FILE: src/backend/columnar/sql/columnar--10.1-1--10.2-1.sql
  type stripe_first_row_number_idx (line 7) | CREATE INDEX stripe_first_row_number_idx ON columnar.stripe USING BTREE(...

FILE: src/backend/columnar/sql/columnar--11.0-3--11.1-1.sql
  function columnar (line 20) | CREATE FUNCTION columnar.get_storage_id(regclass) RETURNS bigint
  type columnar (line 26) | CREATE VIEW columnar.storage WITH (security_barrier) AS
  type columnar (line 35) | CREATE VIEW columnar.options WITH (security_barrier) AS
  type columnar (line 45) | CREATE VIEW columnar.stripe WITH (security_barrier) AS
  type columnar (line 54) | CREATE VIEW columnar.chunk_group WITH (security_barrier) AS
  type columnar (line 62) | CREATE VIEW columnar.chunk WITH (security_barrier) AS

FILE: src/backend/columnar/sql/columnar--9.5-1--10.0-1.sql
  type options (line 8) | CREATE TABLE options (
  type stripe (line 18) | CREATE TABLE stripe (
  type chunk_group (line 32) | CREATE TABLE chunk_group (
  type chunk (line 43) | CREATE TABLE chunk (

FILE: src/backend/columnar/sql/downgrades/citus_columnar--11.1-1--11.1-0.sql
  function pg_catalog (line 1) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(
  function pg_catalog (line 18) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(
  function columnar_internal (line 36) | CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_...

FILE: src/backend/columnar/sql/downgrades/columnar--10.2-3--10.2-2.sql
  type stripe_first_row_number_idx (line 14) | CREATE INDEX stripe_first_row_number_idx ON columnar.stripe USING BTREE(...

FILE: src/backend/columnar/sql/udfs/alter_columnar_table_reset/10.0-1.sql
  function pg_catalog (line 1) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(

FILE: src/backend/columnar/sql/udfs/alter_columnar_table_set/10.0-1.sql
  function pg_catalog (line 1) | CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(

FILE: src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/10.2-4.sql
  function citus_internal (line 1) | CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_am_depends_cat...

FILE: src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/11.1-1.sql
  function citus_internal (line 1) | CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_am_depends_cat...

FILE: src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/11.2-1.sql
  function columnar_internal (line 1) | CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_...

FILE: src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/latest.sql
  function columnar_internal (line 1) | CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_...

FILE: src/backend/columnar/sql/udfs/columnar_handler/10.0-1.sql
  function columnar (line 1) | CREATE OR REPLACE FUNCTION columnar.columnar_handler(internal)

FILE: src/backend/columnar/sql/udfs/columnar_handler/latest.sql
  function columnar (line 1) | CREATE OR REPLACE FUNCTION columnar.columnar_handler(internal)

FILE: src/backend/columnar/sql/udfs/downgrade_columnar_storage/10.2-1.sql
  function citus_internal (line 1) | CREATE OR REPLACE FUNCTION citus_internal.downgrade_columnar_storage(rel...

FILE: src/backend/columnar/sql/udfs/downgrade_columnar_storage/latest.sql
  function citus_internal (line 1) | CREATE OR REPLACE FUNCTION citus_internal.downgrade_columnar_storage(rel...

FILE: src/backend/columnar/sql/udfs/upgrade_columnar_storage/10.2-1.sql
  function citus_internal (line 1) | CREATE OR REPLACE FUNCTION citus_internal.upgrade_columnar_storage(rel r...

FILE: src/backend/columnar/sql/udfs/upgrade_columnar_storage/latest.sql
  function citus_internal (line 1) | CREATE OR REPLACE FUNCTION citus_internal.upgrade_columnar_storage(rel r...

FILE: src/backend/columnar/write_state_management.c
  type SubXidWriteState (line 64) | typedef struct SubXidWriteState
  type WriteStateMapEntry (line 76) | typedef struct WriteStateMapEntry
  function CleanupWriteStateMap (line 105) | static void
  function ColumnarWriteState (line 113) | ColumnarWriteState *
  function FlushWriteStateForRelfilenumber (line 208) | void
  function PopWriteStateForAllRels (line 240) | static void
  function FlushWriteStateForAllRels (line 304) | void
  function DiscardWriteStateForAllRels (line 314) | void
  function MarkRelfilenumberDropped (line 324) | void
  function NonTransactionDropWriteState (line 347) | void
  function PendingWritesInUpperTransactions (line 360) | bool
  function MemoryContext (line 396) | extern MemoryContext

FILE: src/backend/distributed/cdc/cdc_decoder.c
  type ShardIdHashEntry (line 52) | typedef struct
  function _PG_output_plugin_init (line 82) | void
  function IsShardTransferSlot (line 129) | inline static
  function cdc_change_cb (line 142) | static void
  function InitShardToDistributedTableMap (line 185) | static void
  function Oid (line 204) | static Oid
  function Oid (line 214) | static Oid
  function replication_origin_filter_cb (line 243) | static bool
  function TranslateAndPublishRelationForCDC (line 256) | static void
  function PublishDistributedTableChanges (line 285) | static void
  function HeapTuple (line 334) | static HeapTuple
  function HasSchemaChanged (line 400) | static bool
  function TranslateChangesIfSchemaChanged (line 427) | static void

FILE: src/backend/distributed/cdc/cdc_decoder_utils.c
  function Oid (line 51) | static Oid
  function Oid (line 66) | static Oid
  function Oid (line 80) | static Oid
  function Oid (line 95) | static Oid
  function Oid (line 107) | static Oid
  function CdcIsCoordinator (line 123) | bool
  function CdcCitusHasBeenLoaded (line 133) | bool
  function uint64 (line 150) | uint64
  function int32 (line 194) | static int32
  function Oid (line 259) | Oid
  function HeapTuple (line 305) | static HeapTuple
  function CdcIsReferenceTableViaCatalog (line 340) | char

FILE: src/backend/distributed/clock/causal_clock.c
  type ClockState (line 67) | typedef enum ClockState
  type LogicalClockShmemData (line 76) | typedef struct LogicalClockShmemData
  function ClusterClock (line 107) | ClusterClock *
  function LogicalClockShmemSize (line 129) | size_t
  function InitializeClusterClockMem (line 145) | void
  function LogicalClockShmemInit (line 157) | void
  function IncrementClusterClock (line 196) | static void
  function ClusterClock (line 218) | static ClusterClock *
  function GetNextNodeClockValue (line 242) | static void
  function AdjustLocalClock (line 284) | void
  function ClusterClock (line 315) | static ClusterClock *
  function AdjustClocksToTransactionHighest (line 381) | static void
  function ClusterClock (line 403) | static ClusterClock *
  function InitClockAtFirstUse (line 464) | static void
  function Datum (line 554) | Datum
  function Datum (line 571) | Datum
  function Datum (line 588) | Datum
  function Datum (line 614) | Datum

FILE: src/backend/distributed/commands/alter_table.c
  type TableConversionReturn (line 85) | typedef TableConversionReturn *(*TableConversionFunction)(struct
  type TableConversionState (line 99) | typedef struct TableConversionState
  function Datum (line 242) | Datum
  function Datum (line 267) | Datum
  function Datum (line 328) | Datum
  function Datum (line 353) | Datum
  function Oid (line 374) | Oid
  function UndistributeTables (line 408) | void
  function EnsureUndistributeTenantTableSafe (line 437) | void
  function TableConversionReturn (line 491) | TableConversionReturn *
  function TableConversionReturn (line 555) | TableConversionReturn *
  function TableConversionReturn (line 599) | TableConversionReturn *
  function TableConversionReturn (line 680) | TableConversionReturn *
  function TableConversionReturn (line 1049) | static TableConversionReturn *
  function TableConversionReturn (line 1076) | static TableConversionReturn *
  function DropIndexesNotSupportedByColumnar (line 1115) | static void
  function DropConstraintRestrict (line 1196) | static void
  function DropIndexRestrict (line 1212) | static void
  function EnsureTableNotReferencing (line 1226) | void
  function EnsureTableNotReferenced (line 1255) | void
  function EnsureTableNotForeign (line 1284) | void
  function EnsureTableNotPartition (line 1299) | void
  function ErrorIfColocateWithTenantTable (line 1318) | void
  function TableConversionState (line 1333) | TableConversionState *
  function CreateDistributedTableLike (line 1440) | void
  function CreateCitusTableLike (line 1517) | void
  function ErrorIfUnsupportedCascadeObjects (line 1561) | static void
  function DoesCascadeDropUnsupportedObject (line 1586) | static bool
  function List (line 1642) | List *
  function List (line 1682) | static List *
  function ErrorIfMatViewSizeExceedsTheLimit (line 1702) | static void
  function ReplaceTable (line 1794) | void
  function HasAnyGeneratedStoredColumns (line 1911) | static bool
  function List (line 1922) | static List *
  function CheckAlterDistributedTableConversionParameters (line 1954) | void
  function WillRecreateFKeyToReferenceTable (line 2219) | bool
  function WarningsForDroppingForeignKeysWithDistributedTables (line 2249) | void
  function ExecuteQueryViaSPI (line 2272) | void
  function ExecuteAndLogQueryViaSPI (line 2299) | void
  function SwitchToSequentialAndLocalExecutionIfRelationNameTooLong (line 2316) | void
  function SwitchToSequentialAndLocalExecutionIfShardNameTooLong (line 2384) | static bool
  function SwitchToSequentialAndLocalExecutionIfPartitionNameTooLong (line 2428) | void

FILE: src/backend/distributed/commands/begin.c
  function SaveBeginCommandProperties (line 26) | void

FILE: src/backend/distributed/commands/call.c
  function CallDistributedProcedureRemotely (line 60) | bool

FILE: src/backend/distributed/commands/cascade_table_operation_for_connected_relations.c
  function CascadeOperationForFkeyConnectedRelations (line 56) | void
  function CascadeOperationForRelationIdList (line 86) | void
  function List (line 165) | static List *
  function LockRelationsWithLockMode (line 187) | static void
  function ErrorIfConvertingMultiLevelPartitionedTable (line 206) | static void
  function ErrorIfAnyPartitionRelationInvolvedInNonInheritedFKey (line 235) | void
  function EnsureSequentialModeForCitusTableCascadeFunction (line 267) | static void
  function RelationIdListHasReferenceTable (line 299) | bool
  function List (line 319) | List *
  function DropRelationIdListForeignKeys (line 341) | static void
  function DropRelationForeignKeys (line 356) | void
  function SetLocalEnableLocalReferenceForeignKeys (line 380) | void
  function List (line 394) | static List *
  function ExecuteCascadeOperationForRelationIdList (line 447) | static void
  function ExecuteAndLogUtilityCommandListInTableTypeConversionViaSPI (line 524) | void
  function ExecuteAndLogUtilityCommandList (line 568) | void
  function ExecuteAndLogUtilityCommand (line 583) | void
  function ExecuteForeignKeyCreateCommandList (line 596) | void
  function ExecuteForeignKeyCreateCommand (line 614) | static void

FILE: src/backend/distributed/commands/citus_add_local_table_to_metadata.c
  function Datum (line 117) | Datum
  function citus_add_local_table_to_metadata_internal (line 133) | static void
  function Datum (line 154) | Datum
  function Datum (line 178) | Datum
  function CreateCitusLocalTable (line 201) | void
  function CreateCitusLocalTablePartitionOf (line 414) | void
  function ErrorIfAddingPartitionTableToMetadata (line 475) | static void
  function ErrorIfUnsupportedCreateCitusLocalTable (line 501) | static void
  function ServerUsesPostgresFdw (line 548) | bool
  function EnsureIfPostgresFdwHasTableName (line 567) | static void
  function ErrorIfOptionListHasNoTableName (line 586) | static void
  function ForeignTableDropsTableNameOption (line 611) | bool
  function ErrorIfUnsupportedCitusLocalTableKind (line 635) | static void
  function NoticeIfAutoConvertingLocalTables (line 681) | static void
  function CascadeOperationType (line 709) | static CascadeOperationType
  function UpdateAutoConvertedForConnectedRelations (line 728) | void
  function List (line 754) | static List *
  function uint64 (line 799) | static uint64
  function RenameRelationToShardRelation (line 836) | static void
  function RenameShardRelationConstraints (line 860) | static void
  function List (line 886) | static List *
  function RenameShardRelationIndexes (line 955) | static void
  function RenameShardRelationStatistics (line 996) | static void
  function RenameShardRelationNonTruncateTriggers (line 1041) | static void
  function DropRelationTruncateTriggers (line 1094) | static void
  function DropIdentitiesOnTable (line 1148) | static void
  function DropTableFromPublications (line 1194) | static void
  function DropViewsOnTable (line 1209) | static void
  function List (line 1239) | static List *
  function List (line 1262) | List *
  function AppendExplicitIndexIdsToList (line 1276) | static void
  function List (line 1291) | static List *
  function DropNextValExprsAndMoveOwnedSeqOwnerships (line 1332) | static void
  function DropDefaultColumnDefinition (line 1379) | static void
  function TransferSequenceOwnership (line 1406) | static void
  function InsertMetadataForCitusLocalTable (line 1436) | static void
  function FinalizeCitusLocalTableCreation (line 1476) | static void
  function ShouldAddNewTableToMetadata (line 1510) | bool

FILE: src/backend/distributed/commands/citus_global_signal.c
  function Datum (line 38) | Datum
  function Datum (line 61) | Datum
  function CitusSignalBackend (line 81) | static bool

FILE: src/backend/distributed/commands/cluster.c
  function List (line 34) | List *
  function IsClusterStmtVerbose_compat (line 114) | static bool

FILE: src/backend/distributed/commands/collation.c
  function List (line 198) | List *
  function List (line 218) | List *
  function List (line 240) | List *
  function List (line 263) | List *
  function List (line 345) | List *

FILE: src/backend/distributed/commands/comment.c
  function List (line 28) | List *
  function List (line 118) | List *

FILE: src/backend/distributed/commands/common.c
  function List (line 44) | List *
  function List (line 125) | List *
  function List (line 175) | List *
  function List (line 224) | List *
  function List (line 306) | List *
  function List (line 331) | List *

FILE: src/backend/distributed/commands/create_distributed_table.c
  type CitusTableParams (line 103) | typedef struct
  type DistributedTableParams (line 114) | typedef struct
  function Datum (line 207) | Datum
  function Datum (line 219) | Datum
  function Datum (line 318) | Datum
  function CreateDistributedTableConcurrently (line 381) | static void
  function EnsureForeignKeysForDistributedTableConcurrently (line 669) | static void
  function EnsureColocateWithTableIsValid (line 690) | static void
  function AcquireCreateDistributedTableConcurrentlyLock (line 712) | void
  function SendAddLocalTableToMetadataCommandOutsideTransaction (line 737) | static void
  function WarnIfTableHaveNoReplicaIdentity (line 769) | void
  function List (line 823) | static List *
  function List (line 849) | static List *
  function List (line 879) | static List *
  function List (line 899) | static List *
  function Datum (line 922) | Datum
  function EnsureCitusTableCanBeCreated (line 940) | static void
  function EnsureRelationExists (line 970) | void
  function CreateDistributedTable (line 986) | void
  function CreateReferenceTable (line 1037) | void
  function CreateSingleShardTable (line 1059) | void
  function CreateCitusTable (line 1099) | static void
  function ConvertCitusLocalTableToTableType (line 1376) | static void
  function CitusTableParams (line 1574) | static
  function PropagatePrerequisiteObjectsForDistributedTable (line 1651) | static void
  function EnsureSequenceTypeSupported (line 1683) | void
  function AlterSequenceType (line 1727) | void
  function EnsureRelationHasCompatibleSequenceTypes (line 1752) | void
  function EnsureDistributedSequencesHaveOneType (line 1767) | static void
  function DecideDistTableReplicationModel (line 1819) | static char
  function CreateHashDistributedTableShards (line 1853) | static void
  function CreateSingleShardTableShard (line 1903) | static void
  function uint32 (line 1950) | static uint32
  function EnsureRelationCanBeDistributed (line 2064) | static void
  function ErrorIfTemporaryTable (line 2217) | static void
  function ErrorIfTableIsACatalogTable (line 2232) | void
  function EnsureLocalTableEmptyIfNecessary (line 2249) | static void
  function ShouldLocalTableBeEmpty (line 2267) | static bool
  function EnsureLocalTableEmpty (line 2296) | static void
  function EnsureDistributableTable (line 2316) | static void
  function EnsureTableNotDistributed (line 2336) | void
  function EnsureRelationHasNoTriggers (line 2357) | static void
  function LookupDistributionMethod (line 2381) | char
  function Oid (line 2426) | static Oid
  function TableEmpty (line 2458) | bool
  function CanUseExclusiveConnections (line 2502) | static bool
  function CreateTruncateTrigger (line 2566) | void
  function RegularTable (line 2596) | bool
  function CopyLocalDataIntoShards (line 2618) | static void
  function uint64 (line 2660) | uint64
  function uint64 (line 2751) | static uint64
  function List (line 2806) | static List *
  function is_valid_numeric_typmod (line 2835) | static bool
  function numeric_typmod_scale (line 2848) | static int
  function DistributionColumnUsesNumericColumnNegativeScale (line 2859) | static bool
  function DistributionColumnIsGeneratedCheck (line 2881) | static void
  function ErrorIfForeignTable (line 2922) | static void

FILE: src/backend/distributed/commands/database.c
  type DatabaseCollationInfo (line 78) | typedef struct DatabaseCollationInfo
  function List (line 108) | List *
  function List (line 127) | List *
  function AlterOwnerStmt (line 139) | static AlterOwnerStmt *
  function Oid (line 159) | static Oid
  function List (line 184) | List *
  function List (line 225) | static List *
  function IsSetTablespaceStatement (line 249) | static bool
  function List (line 274) | List *
  function List (line 325) | List *
  function List (line 364) | List *
  function List (line 399) | List *
  function List (line 434) | List *
  function List (line 477) | List *
  function List (line 537) | List *
  function List (line 628) | List *
  function List (line 682) | List *
  function List (line 696) | List *
  function EnsureSupportedCreateDatabaseCommand (line 719) | void
  function ObjectAddress (line 755) | static ObjectAddress *
  function List (line 791) | List *
  function DatabaseCollationInfo (line 815) | static DatabaseCollationInfo

FILE: src/backend/distributed/commands/dependencies.c
  type RequiredObjectSet (line 34) | typedef enum RequiredObjectSet
  function EnsureObjectAndDependenciesExistOnAllNodes (line 80) | void
  function EnsureDependenciesExistOnAllNodes (line 99) | static void
  function EnsureRequiredObjectSetExistOnAllNodes (line 127) | static void
  function EnsureAllObjectDependenciesExistOnAllNodes (line 278) | void
  function EnsureDependenciesCanBeDistributed (line 293) | static void
  function ErrorIfCircularDependencyExists (line 317) | static void
  function DeferredErrorMessage (line 333) | DeferredErrorMessage *
  function ObjectAddressComparator (line 365) | static int
  function List (line 416) | List *
  function List (line 467) | static List *
  function List (line 680) | List *
  function ShouldPropagate (line 698) | bool
  function ShouldPropagateCreateInCoordinatedTransction (line 732) | bool
  function ShouldPropagateObject (line 808) | static bool
  function ShouldPropagateAnyObject (line 830) | bool
  function List (line 850) | List *

FILE: src/backend/distributed/commands/distribute_object_ops.c
  function DistributeObjectOps (line 1431) | const DistributeObjectOps *

FILE: src/backend/distributed/commands/domain.c
  function List (line 48) | static List *
  function CreateDomainStmt (line 63) | CreateDomainStmt *
  function CollateClause (line 199) | static CollateClause *
  function List (line 229) | List *
  function List (line 248) | List *
  function List (line 293) | List *
  function List (line 308) | List *
  function List (line 324) | List *
  function Oid (line 340) | Oid

FILE: src/backend/distributed/commands/drop_distributed_table.c
  function Datum (line 51) | Datum
  function Datum (line 64) | Datum
  function Datum (line 126) | Datum
  function MasterRemoveDistributedTableMetadataFromWorkers (line 160) | static void
  function Datum (line 204) | Datum

FILE: src/backend/distributed/commands/extension.c
  function ErrorIfUnstableCreateOrAlterExtensionStmt (line 75) | void
  function List (line 153) | List *
  function AddSchemaFieldIfMissing (line 225) | static void
  function List (line 264) | List *
  function List (line 332) | static List *
  function List (line 370) | static List *
  function List (line 401) | List *
  function List (line 438) | List *
  function List (line 461) | List *
  function PostprocessAlterExtensionCitusUpdateStmt (line 506) | void
  function MarkExistingObjectDependenciesDistributedIfSupported (line 542) | static void
  function List (line 664) | static List *
  function List (line 698) | List *
  function ShouldPropagateExtensionCommand (line 715) | static bool
  function IsCreateAlterExtensionUpdateCitusStmt (line 750) | bool
  function PreprocessCreateExtensionStmtForCitusColumnar (line 785) | void
  function IsDropCitusExtensionStmt (line 839) | bool
  function IsAlterExtensionSetSchemaCitus (line 876) | static bool
  function PreprocessAlterExtensionCitusStmtForCitusColumnar (line 907) | void
  function HasAnyRelationsUsingOldColumnar (line 953) | static bool
  function Oid (line 973) | static Oid
  function AccessMethodDependsOnAnyExtensions (line 990) | static bool
  function HasAnyRelationsUsingAccessMethod (line 1039) | static bool
  function PostprocessAlterExtensionCitusStmtForCitusColumnar (line 1065) | void
  function List (line 1114) | List *
  function Node (line 1139) | static Node *
  function List (line 1193) | static List *
  function List (line 1228) | List *
  function List (line 1268) | List *
  function List (line 1296) | List *
  function CreateExtensionWithVersion (line 1322) | void
  function GetExtensionVersionNumber (line 1355) | int
  function AlterExtensionUpdateStmt (line 1369) | void

FILE: src/backend/distributed/commands/foreign_constraint.c
  function ConstraintIsAForeignKeyToReferenceTable (line 95) | bool
  function EnsureNoFKeyFromTableType (line 111) | void
  function EnsureNoFKeyToTableType (line 141) | void
  function ErrorIfUnsupportedForeignConstraintExists (line 193) | void
  function ForeignKeySetsNextValColumnToDefault (line 409) | static bool
  function List (line 437) | static List *
  function EnsureSupportedFKeyBetweenCitusLocalAndRefTable (line 507) | static void
  function EnsureSupportedFKeyOnDistKey (line 549) | static void
  function EnsureReferencingTableNotReplicated (line 591) | static void
  function ErrorOutForFKeyBetweenPostgresAndCitusLocalTable (line 627) | void
  function ForeignConstraintFindDistKeys (line 646) | static void
  function ColumnAppearsInForeignKey (line 704) | bool
  function ColumnAppearsInForeignKeyToReferenceTable (line 719) | bool
  function List (line 747) | static List *
  function List (line 821) | List *
  function List (line 835) | List *
  function List (line 849) | List *
  function List (line 865) | List *
  function List (line 879) | List *
  function List (line 892) | List *
  function List (line 921) | List *
  function DropFKeysRelationInvolvedWithTableType (line 943) | void
  function HasForeignKeyWithLocalTable (line 962) | bool
  function List (line 974) | static List *
  function List (line 994) | List *
  function HasForeignKeyToReferenceTable (line 1010) | bool
  function TableReferenced (line 1024) | bool
  function HeapTupleOfForeignConstraintIncludesColumn (line 1038) | static bool
  function TableReferencing (line 1070) | bool
  function ConstraintIsAUniquenessConstraint (line 1086) | bool
  function ConstraintIsAForeignKey (line 1101) | bool
  function ConstraintWithNameIsOfType (line 1113) | bool
  function ConstraintWithIdIsOfType (line 1128) | bool
  function Oid (line 1154) | static Oid
  function TableHasExternalForeignKeys (line 1178) | bool
  function ForeignConstraintMatchesFlags (line 1205) | static bool
  function List (line 1255) | static List *
  function List (line 1315) | List *
  function Oid (line 1377) | Oid
  function Oid (line 1401) | Oid
  function IsTableTypeIncluded (line 1424) | static bool
  function RelationInvolvedInAnyNonInheritedForeignKeys (line 1455) | bool

FILE: src/backend/distributed/commands/foreign_data_wrapper.c
  function List (line 37) | List *
  function NameListHasFDWOwnedByDistributedExtension (line 85) | static bool
  function ObjectAddress (line 114) | static ObjectAddress
  function Acl (line 130) | Acl *

FILE: src/backend/distributed/commands/foreign_server.c
  function List (line 46) | List *
  function List (line 63) | List *
  function List (line 79) | List *
  function List (line 128) | List *
  function List (line 146) | List *
  function List (line 160) | List *
  function Node (line 202) | static Node *
  function NameListHasDistributedServer (line 246) | static bool
  function List (line 270) | static List *

FILE: src/backend/distributed/commands/function.c
  function Datum (line 128) | Datum
  function RecreateSameNonColocatedFunction (line 318) | static bool
  function ErrorIfAnyNodeDoesNotHaveMetadata (line 366) | static void
  function DistributeFunctionWithDistributionArgument (line 395) | static void
  function DistributeFunctionColocatedWithDistributedTable (line 424) | static void
  function DistributeFunctionColocatedWithSingleShardTable (line 455) | static void
  function DistributeFunctionColocatedWithReferenceTable (line 474) | static void
  function List (line 492) | List *
  function GetDistributionArgIndex (line 512) | static int
  function GetFunctionColocationId (line 615) | static int
  function EnsureFunctionCanBeColocatedWithTable (line 669) | static void
  function UpdateFunctionDistributionInfo (line 763) | void
  function ShouldPropagateCreateFunction (line 1315) | static bool
  function ShouldPropagateAlterFunction (line 1336) | static bool
  function List (line 1376) | List *
  function List (line 1411) | List *
  function List (line 1465) | List *
  function List (line 1510) | List *
  function List (line 1557) | List *
  function List (line 1602) | List *
  function List (line 1659) | List *
  function List (line 1675) | List *
  function List (line 1687) | List *
  function List (line 1700) | List *
  function List (line 1718) | List *
  function ObjectWithArgs (line 1838) | ObjectWithArgs *
  function ShouldAddFunctionSignature (line 1879) | static bool
  function List (line 1912) | static List *
  function ErrorIfUnsupportedAlterFunctionStmt (line 1935) | static void
  function EnsureExtensionFunctionCanBeDistributed (line 1973) | static void
  function List (line 2028) | List *
  function List (line 2076) | List *
  function List (line 2101) | static List *

FILE: src/backend/distributed/commands/grant.c
  function List (line 37) | List *
  function List (line 225) | static List *

FILE: src/backend/distributed/commands/index.c
  type DropRelationCallbackState (line 88) | struct DropRelationCallbackState
  type ReindexIndexCallbackState (line 99) | struct ReindexIndexCallbackState
  function IsIndexRenameStmt (line 112) | bool
  function List (line 134) | List *
  function ErrorIfCreateIndexHasTooManyColumns (line 249) | static void
  function GetNumberOfIndexParameters (line 268) | static int
  function IndexAlreadyExists (line 281) | static bool
  function Oid (line 294) | static Oid
  function Oid (line 308) | static Oid
  function List (line 324) | List *
  function SwitchToSequentialAndLocalExecutionIfIndexNameTooLong (line 362) | static void
  function List (line 470) | static List *
  function DDLJob (line 484) | static DDLJob *
  function Oid (line 504) | static Oid
  function LOCKMODE (line 519) | LOCKMODE
  function Oid (line 539) | static Oid
  function List (line 584) | List *
  function List (line 669) | List *
  function List (line 696) | List *
  function List (line 798) | List *
  function ErrorIfUnsupportedAlterIndexStmt (line 878) | void
  function List (line 920) | static List *
  function List (line 966) | static List *
  function RangeVarCallbackForDropIndex (line 1018) | static void
  function RangeVarCallbackForReindexIndex (line 1111) | static void
  function ErrorIfUnsupportedIndexStmt (line 1194) | static void
  function ErrorIfUnsupportedDropIndexStmt (line 1273) | static void
  function List (line 1293) | static List *
  function MarkIndexValid (line 1351) | void

FILE: src/backend/distributed/commands/index_pg_source.c
  function List (line 137) | List *

FILE: src/backend/distributed/commands/local_multi_copy.c
  function WriteTupleToLocalShard (line 69) | void
  function WriteTupleToLocalFile (line 111) | void
  function FinishLocalCopyToShard (line 129) | void
  function FinishLocalCopyToFile (line 147) | void
  function AddSlotToBuffer (line 168) | static void
  function ShouldSendCopyNow (line 187) | static bool
  function DoLocalCopy (line 202) | static void
  function ShouldAddBinaryHeaders (line 242) | static bool
  function ReadFromLocalBufferCallback (line 257) | static int

FILE: src/backend/distributed/commands/multi_copy.c
  type CopyShardState (line 136) | typedef struct CopyShardState CopyShardState;
  type CopyPlacementState (line 137) | typedef struct CopyPlacementState CopyPlacementState;
  type CopyConnectionState (line 157) | typedef struct CopyConnectionState
  type CopyPlacementState (line 182) | struct CopyPlacementState
  type CopyShardState (line 204) | struct CopyShardState
  type LocalCopyStatus (line 227) | typedef enum LocalCopyStatus
  function CitusCopyFrom (line 359) | static void
  function EnsureCopyCanRunOnRelation (line 415) | static void
  function CopyToExistingShards (line 442) | static void
  function IsCopyInBinaryFormat (line 682) | static bool
  function List (line 706) | static List *
  function CompleteCopyQueryTagCompat (line 754) | static void
  function List (line 765) | static List *
  function CanUseBinaryCopyFormat (line 791) | bool
  function CanUseBinaryCopyFormatForTargetList (line 822) | bool
  function CanUseBinaryCopyFormatForType (line 847) | bool
  function BinaryOutputFunctionDefined (line 926) | static bool
  function BinaryInputFunctionDefined (line 947) | static bool
  function SendCopyBinaryHeaders (line 965) | static void
  function SendCopyBinaryFooters (line 975) | static void
  function StringInfo (line 988) | static StringInfo
  function SendCopyDataToAll (line 1090) | static void
  function SendCopyDataToPlacement (line 1106) | static void
  function EndRemoteCopy (line 1124) | void
  function ReportCopyError (line 1160) | void
  function ConversionPathForTypes (line 1192) | void
  function Oid (line 1285) | static Oid
  function Oid (line 1304) | static Oid *
  function CopyCoercionData (line 1332) | static CopyCoercionData *
  function FmgrInfo (line 1377) | static FmgrInfo *
  function FmgrInfo (line 1415) | FmgrInfo *
  function Datum (line 1431) | Datum
  function AppendCopyRowData (line 1454) | void
  function Datum (line 1543) | Datum
  function uint32 (line 1591) | static uint32
  function AppendCopyBinaryHeaders (line 1614) | void
  function AppendCopyBinaryFooters (line 1637) | void
  function SendCopyBegin (line 1656) | static void
  function SendCopyEnd (line 1675) | static void
  function CopySendData (line 1686) | static void
  function CopySendString (line 1694) | static void
  function CopySendChar (line 1702) | static void
  function CopySendInt32 (line 1710) | static void
  function CopySendInt16 (line 1719) | static void
  function CopySendEndOfRow (line 1728) | static void
  function CopyAttributeOutText (line 1759) | static void
  function CopyFlushOutput (line 1851) | static inline void
  function CitusCopyDestReceiver (line 1877) | CitusCopyDestReceiver *
  function LocalCopyStatus (line 1913) | static LocalCopyStatus
  function ShardIntervalListHasLocalPlacements (line 1955) | static bool
  function CitusCopyDestReceiverStartup (line 1977) | static void
  function CitusCopyDestReceiverReceive (line 2226) | static bool
  function CitusSendTupleToPlacements (line 2257) | static bool
  function AddPlacementStateToCopyConnectionStateBuffer (line 2420) | static void
  function RemovePlacementStateFromCopyConnectionStateBuffer (line 2435) | static void
  function uint64 (line 2448) | static uint64
  function ContainsLocalPlacement (line 2500) | static bool
  function uint64 (line 2523) | static uint64
  function CitusCopyDestReceiverShutdown (line 2592) | static void
  function FinishLocalCopy (line 2655) | static void
  function CreateLocalColocatedIntermediateFile (line 2679) | static void
  function FinishLocalColocatedIntermediateFiles (line 2709) | static void
  function ShutdownCopyConnectionState (line 2733) | static void
  function CitusCopyDestReceiverDestroy (line 2774) | static void
  function IsCopyResultStmt (line 2813) | bool
  function CopyStatementHasFormat (line 2824) | static bool
  function ErrorIfCopyHasOnErrorLogVerbosity (line 2851) | static void
  function ErrorIfMergeInCopy (line 2890) | static void
  function Node (line 2917) | Node *
  function SelectStmt (line 3028) | static SelectStmt *
  function CitusCopyTo (line 3073) | static void
  function int64 (line 3185) | static int64
  function CheckCopyPermissions (line 3234) | void
  function List (line 3285) | List *
  function HTAB (line 3301) | static HTAB *
  function HTAB (line 3324) | static HTAB *
  function CopyConnectionState (line 3345) | static CopyConnectionState *
  function List (line 3374) | static List *
  function List (line 3399) | static List *
  function CopyShardState (line 3430) | static CopyShardState *
  function InitializeCopyShardState (line 3455) | static void
  function CloneCopyOutStateForLocalCopy (line 3578) | static void
  function LogLocalCopyToRelationExecution (line 3598) | static void
  function LogLocalCopyToFileExecution (line 3613) | static void
  function MultiConnection (line 3630) | static MultiConnection *
  function HasReachedAdaptiveExecutorPoolSize (line 3841) | static bool
  function MultiConnection (line 3864) | static MultiConnection *
  function StartPlacementStateCopyCommand (line 3907) | static void
  function EndPlacementStateCopyCommand (line 3942) | static void
  function UnclaimCopyConnections (line 3963) | static void
  function IsDroppedOrGenerated (line 3980) | inline bool

FILE: src/backend/distributed/commands/non_main_db_distribute_object_ops.c
  type NonMainDbDistributeObjectOps (line 62) | typedef struct NonMainDbDistributeObjectOps
  function RunPreprocessNonMainDBCommand (line 132) | bool
  function RunPostprocessNonMainDBCommand (line 188) | void
  function NonMainDbDistributeObjectOps (line 208) | const NonMainDbDistributeObjectOps *
  function CreateRoleStmtMarkDistGloballyOnMainDbs (line 238) | static void
  function DropRoleStmtUnmarkDistOnLocalMainDb (line 254) | static void
  function MarkObjectDistributedGloballyOnMainDbs (line 276) | static void
  function UnmarkObjectDistributedOnLocalMainDb (line 294) | static void
  function CreateDbStmtCheckSupportedObjectType (line 312) | static bool
  function DropDbStmtCheckSupportedObjectType (line 325) | static bool
  function GrantStmtCheckSupportedObjectType (line 338) | static bool
  function SecLabelStmtCheckSupportedObjectType (line 346) | static bool

FILE: src/backend/distributed/commands/owned.c
  function List (line 59) | List *
  function List (line 107) | List *
  function ObjectAddress (line 165) | static ObjectAddress *

FILE: src/backend/distributed/commands/policy.c
  function List (line 43) | List *
  function List (line 67) | static List *
  function List (line 218) | List *
  function AddRangeTableEntryToQueryCompat (line 291) | void
  function RowSecurityPolicy (line 307) | static RowSecurityPolicy *
  function List (line 331) | List *
  function ErrorIfUnsupportedPolicy (line 427) | void
  function ErrorIfUnsupportedPolicyExpr (line 463) | void
  function List (line 487) | List *
  function IsPolicyRenameStmt (line 535) | bool
  function CreatePolicyEventExtendNames (line 546) | void
  function AlterPolicyEventExtendNames (line 565) | void
  function RenamePolicyEventExtendNames (line 583) | void
  function DropPolicyEventExtendNames (line 601) | void

FILE: src/backend/distributed/commands/publication.c
  function List (line 49) | List *
  function List (line 89) | List *
  function CreatePublicationStmt (line 131) | static CreatePublicationStmt *
  function AppendPublishOptionList (line 262) | static void
  function PublicationObjSpec (line 284) | static PublicationObjSpec *
  function List (line 366) | List *
  function List (line 411) | List *
  function ShouldPropagateCreatePublication (line 522) | static bool
  function List (line 543) | List *
  function List (line 556) | List *
  function List (line 569) | List *
  function List (line 582) | List *
  function List (line 595) | static List *

FILE: src/backend/distributed/commands/rename.c
  function List (line 30) | List *
  function ErrorIfUnsupportedRenameStmt (line 197) | void
  function List (line 215) | List *

FILE: src/backend/distributed/commands/role.c
  function List (line 98) | List *
  function List (line 111) | List *
  function List (line 124) | static List *
  function List (line 145) | List *
  function List (line 200) | List *
  function List (line 386) | static List *
  function VariableSetStmt (line 443) | static VariableSetStmt *
  function List (line 465) | static List *
  function List (line 516) | List *
  function List (line 609) | List *
  function DefElem (line 651) | static DefElem *
  function DefElem (line 661) | static DefElem *
  function List (line 722) | List *
  function List (line 822) | static List *
  function List (line 868) | static List *
  function List (line 955) | static List *
  function List (line 1005) | List *
  function Node (line 1061) | static Node *
  function Node (line 1082) | static Node *
  function Node (line 1100) | static Node *
  function List (line 1118) | List *
  function UnmarkRolesDistributed (line 1156) | void
  function List (line 1185) | List *
  function List (line 1217) | List *
  function List (line 1255) | List *
  function ConfigGenericNameCompare (line 1290) | static int
  function List (line 1313) | List *
  function EnsureSequentialModeForRoleDDL (line 1336) | static void
  function List (line 1373) | List *
  function List (line 1403) | List *

FILE: src/backend/distributed/commands/schema.c
  function List (line 57) | List *
  function List (line 141) | List *
  function List (line 204) | List *
  function List (line 245) | List *
  function List (line 275) | List *
  function List (line 289) | List *
  function List (line 303) | List *
  function List (line 319) | static List *
  function SchemaHasDistributedTableWithFKey (line 354) | static bool
  function ShouldPropagateCreateSchemaStmt (line 416) | static bool
  function List (line 439) | static List *
  function CreateSchemaStmtCreatesTable (line 479) | static bool

FILE: src/backend/distributed/commands/schema_based_sharding.c
  type CitusMoveSchemaParams (line 36) | typedef struct
  function ShouldUseSchemaBasedSharding (line 79) | bool
  function ShouldCreateTenantSchemaTable (line 131) | bool
  function EnsureTableKindSupportedForTenantSchema (line 157) | static void
  function EnsureFKeysForTenantTable (line 195) | static void
  function CreateTenantSchemaTable (line 265) | void
  function ErrorIfIllegalPartitioningInTenantSchema (line 316) | void
  function uint32 (line 331) | uint32
  function List (line 349) | static List *
  function EnsureSchemaCanBeDistributed (line 406) | static void
  function EnsureTenantTable (line 447) | void
  function EnsureTenantSchemaNameAllowed (line 491) | static void
  function EnsureSchemaExist (line 532) | static void
  function UnregisterTenantSchemaGlobally (line 548) | static void
  function Datum (line 571) | Datum
  function Datum (line 608) | Datum
  function Datum (line 711) | Datum
  function Datum (line 783) | Datum
  function Datum (line 808) | Datum
  function CitusMoveSchemaParams (line 832) | static CitusMoveSchemaParams *
  function uint64 (line 875) | static uint64
  function ErrorIfTenantTable (line 916) | void

FILE: src/backend/distributed/commands/seclabel.c
  function List (line 28) | List *
  function List (line 61) | List *
  function List (line 113) | List *
  function List (line 139) | List *
  function citus_test_object_relabel (line 163) | void

FILE: src/backend/distributed/commands/sequence.c
  function ErrorIfUnsupportedSeqStmt (line 47) | void
  function ErrorIfDistributedAlterSeqOwnedBy (line 72) | void
  function OptionsSpecifyOwnedBy (line 122) | static bool
  function ExtractDefaultColumnsAndOwnedSequences (line 166) | void
  function ColumnDefaultsToNextVal (line 223) | bool
  function List (line 251) | List *
  function List (line 349) | List *
  function List (line 381) | List *
  function List (line 415) | List *
  function List (line 446) | List *
  function Oid (line 507) | static Oid
  function List (line 529) | List *
  function List (line 549) | List *
  function List (line 583) | List *
  function List (line 629) | List *
  function List (line 659) | List *
  function List (line 693) | List *
  function List (line 713) | List *
  function List (line 744) | List *
  function List (line 778) | List *
  function List (line 800) | List *
  function List (line 854) | List *
  function List (line 911) | List *
  function List (line 989) | static List *
  function RenameExistingSequenceWithDifferentTypeIfExists (line 1073) | void

FILE: src/backend/distributed/commands/serialize_distributed_ddls.c
  function Datum (line 53) | Datum
  function SerializeDistributedDDLsOnObjectClass (line 76) | void
  function SerializeDistributedDDLsOnObjectClassObject (line 90) | void
  function SerializeDistributedDDLsOnObjectClassInternal (line 130) | static void
  function AcquireCitusAdvisoryObjectClassLock (line 199) | static void
  function Oid (line 221) | static Oid
  function AcquireCitusAdvisoryObjectClassLockCheckPrivileges (line 251) | static void

FILE: src/backend/distributed/commands/statistics.c
  function List (line 66) | List *
  function List (line 126) | List *
  function List (line 161) | List *
  function List (line 178) | List *
  function List (line 236) | List *
  function List (line 263) | List *
  function List (line 301) | List *
  function List (line 339) | List *
  function List (line 376) | List *
  function List (line 411) | List *
  function List (line 459) | List *
  function List (line 501) | List *
  function List (line 528) | List *
  function List (line 602) | List *
  function List (line 647) | List *
  function Oid (line 711) | static Oid

FILE: src/backend/distributed/commands/subscription.c
  function Node (line 36) | Node *

FILE: src/backend/distributed/commands/table.c
  function List (line 148) | List *
  function PostprocessCreateTableStmt (line 232) | void
  function PostprocessCreateTableStmtForeignKeys (line 299) | static void
  function ShouldEnableLocalReferenceForeignKeys (line 362) | bool
  function PostprocessCreateTableStmtPartitionOf (line 381) | static void
  function List (line 477) | List *
  function PreprocessAttachPartitionToCitusTable (line 552) | static void
  function PreprocessAttachCitusPartitionToCitusTable (line 595) | static void
  function DistributePartitionUsingParent (line 645) | static void
  function ErrorIfMultiLevelPartitioning (line 693) | static void
  function ErrorIfAttachCitusTableToPgLocalTable (line 716) | static void
  function List (line 737) | List *
  function EnsureSequentialModeForAlterTableOperation (line 917) | static void
  function SwitchToSequentialAndLocalExecutionIfConstraintNameTooLong (line 952) | static void
  function List (line 1030) | static List *
  function PrepareAlterTableStmtForConstraint (line 1083) | void
  function List (line 1128) | List *
  function DeparserSupportsAlterTableAddColumn (line 1677) | static bool
  function ATDefinesFKeyBetweenPostgresAndCitusLocalOrRef (line 1720) | static bool
  function ShouldMarkConnectedRelationsNotAutoConverted (line 1758) | static bool
  function RelationIdListContainsCitusTableType (line 1782) | static bool
  function RelationIdListContainsPostgresTable (line 1802) | static bool
  function ConvertPostgresLocalTablesToCitusLocalTables (line 1823) | static void
  function RangeVarListHasLocalRelationConvertedByUser (line 1968) | static bool
  function CompareRangeVarsByOid (line 2002) | static int
  function List (line 2030) | static List *
  function List (line 2049) | static List *
  function List (line 2063) | static List *
  function List (line 2090) | static List *
  function List (line 2127) | static List *
  function List (line 2148) | static List *
  function AlterTableCommandTypeIsTrigger (line 2168) | static bool
  function ConstrTypeUsesIndex (line 2196) | bool
  function ConstrTypeCitusCanDefaultName (line 2208) | bool
  function AlterTableDropsForeignKey (line 2223) | static bool
  function AnyForeignKeyDependsOnIndex (line 2283) | bool
  function List (line 2318) | List *
  function List (line 2341) | List *
  function SkipForeignKeyValidationIfConstraintIsFkey (line 2451) | void
  function IsAlterTableRenameStmt (line 2506) | bool
  function ErrorIfAlterDropsPartitionColumn (line 2536) | void
  function PostprocessAlterTableStmt (line 2583) | void
  function FixAlterTableStmtIndexNames (line 2785) | void
  function Oid (line 2849) | Oid
  function Oid (line 2891) | static Oid
  function ErrorUnsupportedAlterTableAddColumn (line 3021) | void
  function ErrorIfUnsupportedConstraint (line 3126) | void
  function ErrorIfAlterTableDropTableNameFromPostgresFdw (line 3251) | static void
  function ErrorIfUnsupportedAlterTableStmt (line 3298) | static void
  function SetupExecutionModeForAlterTable (line 3776) | static bool
  function List (line 3888) | List *
  function List (line 3950) | static List *
  function SetInterShardDDLTaskPlacementList (line 3982) | static void
  function SetInterShardDDLTaskRelationShardList (line 4016) | static void
  function AlterColumnInvolvesIdentityColumn (line 4036) | static bool
  function AlterInvolvesPartitionColumn (line 4071) | static bool
  function ErrorIfUnsupportedAlterAddConstraintStmt (line 4110) | static void
  function List (line 4137) | List *
  function List (line 4184) | List *
  function ErrorIfTableHasIdentityColumn (line 4212) | void
  function ConvertNewTableIfNecessary (line 4241) | void
  function ConvertToTenantTableIfNecessary (line 4332) | void

FILE: src/backend/distributed/commands/text_search.c
  function List (line 61) | List *
  function List (line 84) | List *
  function List (line 107) | List *
  function List (line 120) | List *
  function DefineStmt (line 136) | static DefineStmt *
  function DefineStmt (line 167) | static DefineStmt *
  function List (line 195) | static List *
  function List (line 229) | static List *
  function List (line 256) | static List *
  function List (line 281) | static List *
  function List (line 366) | static List *
  function List (line 394) | static List *
  function List (line 420) | List *
  function List (line 445) | static List *
  function List (line 469) | static List *
  function Oid (line 492) | static Oid
  function List (line 548) | static List *
  function List (line 573) | List *
  function List (line 593) | List *
  function List (line 612) | List *
  function List (line 632) | List *
  function List (line 652) | List *
  function List (line 671) | List *
  function List (line 694) | List *
  function List (line 748) | List *
  function List (line 798) | List *
  function List (line 823) | List *

FILE: src/backend/distributed/commands/trigger.c
  function List (line 71) | List *
  function HeapTuple (line 195) | HeapTuple
  function List (line 240) | List *
  function List (line 297) | List *
  function List (line 339) | List *
  function IsCreateCitusTruncateTriggerStmt (line 368) | static bool
  function CreateTriggerEventExtendNames (line 387) | void
  function List (line 410) | List *
  function AlterTriggerRenameEventExtendNames (line 440) | void
  function List (line 473) | List *
  function List (line 536) | List *
  function AlterTriggerDependsEventExtendNames (line 567) | void
  function String (line 591) | static String *
  function List (line 619) | List *
  function ErrorIfUnsupportedDropTriggerCommand (line 655) | static void
  function ErrorOutForTriggerIfNotSupported (line 677) | void
  function ErrorIfRelationHasUnsupportedTrigger (line 702) | void
  function RangeVar (line 729) | static RangeVar *
  function DropTriggerEventExtendNames (line 759) | void
  function ExtractDropStmtTriggerAndRelationName (line 786) | static void
  function ErrorIfDropStmtDropsMultipleTriggers (line 816) | static void
  function List (line 834) | List *
  function int16 (line 897) | static int16
  function Oid (line 915) | Oid

FILE: src/backend/distributed/commands/truncate.c
  function Datum (line 63) | Datum
  function List (line 119) | static List *
  function Datum (line 174) | Datum
  function EnsureLocalTableCanBeTruncated (line 208) | void
  function PreprocessTruncateStatement (line 242) | void
  function ErrorIfUnsupportedTruncateStmt (line 262) | static void
  function EnsurePartitionTableNotReplicatedForTruncate (line 293) | static void
  function ExecuteTruncateStmtSequentialIfNecessary (line 318) | static void

FILE: src/backend/distributed/commands/type.c
  function List (line 114) | List *
  function Node (line 151) | Node *
  function CompositeTypeStmt (line 186) | static CompositeTypeStmt *
  function ColumnDef (line 204) | static ColumnDef *
  function List (line 218) | static List *
  function CreateEnumStmt (line 251) | static CreateEnumStmt *
  function List (line 268) | static List *
  function List (line 309) | List *
  function List (line 330) | List *
  function List (line 351) | List *
  function List (line 370) | List *
  function List (line 387) | List *
  function List (line 411) | List *
  function List (line 471) | List *
  function List (line 491) | List *
  function List (line 510) | List *
  function Oid (line 613) | static Oid
  function TypeName (line 634) | static TypeName *
  function Oid (line 652) | static Oid

FILE: src/backend/distributed/commands/utility_hook.c
  type QueryEnvironment (line 107) | struct QueryEnvironment
  function ProcessUtilityParseTree (line 123) | void
  function citus_ProcessUtility (line 147) | void
  function citus_ProcessUtilityInternal (line 434) | static void
  function UndistributeDisconnectedCitusLocalTables (line 958) | void
  function ShouldCheckUndistributeCitusLocalTables (line 1025) | static bool
  function NotifyUtilityHookConstraintDropped (line 1084) | void
  function ResetConstraintDropped (line 1094) | void
  function IsDropSchemaOrDB (line 1105) | static bool
  function ExecuteDistributedDDLJob (line 1132) | void
  function set_indexsafe_procflags (line 1320) | static void
  function IncrementUtilityHookCountersIfNecessary (line 1383) | static void
  function PostStandardProcessUtility (line 1403) | static void
  function DecrementUtilityHookCountersIfNecessary (line 1425) | static void
  function MarkInvalidateForeignKeyGraph (line 1444) | void
  function InvalidateForeignKeyGraphForDDL (line 1455) | void
  function List (line 1471) | List *
  function List (line 1523) | List *
  function List (line 1547) | List *
  function AlterTableInProgress (line 1589) | bool
  function DropSchemaOrDBInProgress (line 1600) | bool

FILE: src/backend/distributed/commands/vacuum.c
  type CitusVacuumParams (line 40) | typedef struct CitusVacuumParams
  type CitusVacuumRelation (line 52) | typedef struct CitusVacuumRelation
  function List (line 81) | List *
  function List (line 130) | static List *
  function IsDistributedVacuumStmt (line 186) | static bool
  function ExecuteVacuumOnDistributedTables (line 207) | static void
  function List (line 241) | static List *
  function CitusVacuumParams (line 518) | static CitusVacuumParams
  function ExecuteUnqualifiedVacuumTasks (line 675) | static void

FILE: src/backend/distributed/commands/variableset.c
  function ShouldPropagateSetCommand (line 40) | bool
  function PostprocessVariableSetStmt (line 86) | void

FILE: src/backend/distributed/commands/view.c
  function ViewHasDistributedRelationDependency (line 66) | static bool
  function List (line 89) | List *
  function List (line 122) | List *
  function List (line 231) | List *
  function List (line 254) | List *
  function List (line 299) | List *
  function List (line 329) | static List *
  function AppendQualifiedViewNameToCreateViewCommand (line 392) | static void
  function AppendAliasesToCreateViewCommand (line 405) | static void
  function AppendOptionsToCreateViewCommand (line 459) | static void
  function AppendViewDefinitionToCreateViewCommand (line 475) | static void
  function IsViewDistributed (line 537) | bool
  function List (line 552) | List *
  function List (line 594) | List *
  function List (line 631) | List *
  function List (line 648) | List *
  function List (line 690) | List *
  function List (line 708) | List *
  function List (line 751) | List *
  function List (line 777) | List *
  function IsViewRenameStmt (line 819) | bool

FILE: src/backend/distributed/connection/connection_configuration.c
  type ConnParamsInfo (line 43) | typedef struct ConnParamsInfo
  function InitConnParams (line 71) | void
  function ResetConnParams (line 95) | void
  function AddConnParam (line 116) | void
  function CheckConninfo (line 154) | bool
  function GetConnParams (line 245) | void
  function ConnectionHashKey (line 455) | ConnectionHashKey *
  function Size (line 586) | static Size
  function uri_prefix_length (line 618) | static int

FILE: src/backend/distributed/connection/connection_management.c
  type MultiConnectionPhase (line 72) | enum MultiConnectionPhase
  type MultiConnectionPollState (line 78) | typedef struct MultiConnectionPollState
  function InitializeConnectionManagement (line 98) | void
  function InvalidateConnParamsHashEntries (line 138) | void
  function AfterXactConnectionHandling (line 161) | void
  function MultiConnection (line 193) | MultiConnection *
  function MultiConnection (line 206) | MultiConnection *
  function MultiConnection (line 227) | MultiConnection *
  function MultiConnection (line 252) | MultiConnection *
  function MultiConnection (line 275) | MultiConnection *
  function MultiConnection (line 464) | static MultiConnection *
  function ErrorIfMultipleMetadataConnectionExists (line 568) | static void
  function CloseAllConnectionsAfterTransaction (line 595) | void
  function MultiConnection (line 633) | MultiConnection *
  function CloseNodeConnectionsAfterTransaction (line 666) | void
  function CloseConnection (line 703) | void
  function ShutdownAllConnections (line 748) | void
  function ShutdownConnection (line 785) | void
  function MultiConnectionStatePoll (line 806) | static bool
  function EventSetSizeForConnectionList (line 860) | inline static int
  function WaitEventSet (line 877) | static WaitEventSet *
  function uint32 (line 950) | static uint32
  function FinishConnectionListEstablishment (line 971) | void
  function MillisecondsPassedSince (line 1177) | double
  function MillisecondsToTimeout (line 1192) | long
  function CloseNotReadyMultiConnectionStates (line 1207) | static void
  function CitusPQFinish (line 1232) | static void
  function FinishConnectionEstablishment (line 1255) | void
  function ForceConnectionCloseAtTransactionEnd (line 1266) | void
  function ClaimConnectionExclusively (line 1279) | void
  function UnclaimConnection (line 1292) | void
  function uint32 (line 1299) | static uint32
  function ConnectionHashCompare (line 1314) | static int
  function StartConnectionEstablishment (line 1339) | static void
  function ConnParamsHashEntry (line 1378) | static ConnParamsHashEntry *
  function FreeConnParamsHashEntryFields (line 1419) | static void
  function AfterXactHostConnectionHandling (line 1464) | static void
  function ShouldShutdownConnection (line 1532) | static bool
  function RestartConnection (line 1569) | void
  function RemoteTransactionIdle (line 1612) | static bool
  function MarkConnectionConnected (line 1635) | void
  function CitusAddWaitEventSetToSet (line 1666) | int
  function CitusModifyWaitEvent (line 1713) | bool

FILE: src/backend/distributed/connection/locally_reserved_shared_connections.c
  type ReservedConnectionHashKey (line 65) | typedef struct ReservedConnectionHashKey
  type ReservedConnectionHashEntry (line 79) | typedef struct ReservedConnectionHashEntry
  function Datum (line 108) | Datum
  function StoreAllReservedConnections (line 129) | static void
  function InitializeLocallyReservedSharedConnections (line 167) | void
  function CanUseReservedConnection (line 197) | bool
  function DeallocateReservedConnections (line 228) | void
  function MarkReservedConnectionUsed (line 263) | void
  function EnsureConnectionPossibilityForRemotePrimaryNodes (line 297) | void
  function TryConnectionPossibilityForLocalPrimaryNode (line 316) | bool
  function EnsureConnectionPossibilityForNodeList (line 346) | static void
  function EnsureConnectionPossibilityForNode (line 384) | static bool
  function IsReservationPossible (line 477) | bool
  function ReservedConnectionHashEntry (line 513) | static ReservedConnectionHashEntry *
  function uint32 (line 551) | static uint32
  function LocalConnectionReserveHashCompare (line 569) | static int

FILE: src/backend/distributed/connection/placement_connection.c
  type ConnectionReference (line 40) | typedef struct ConnectionReference
  type ColocatedPlacementsHashEntry (line 73) | struct ColocatedPlacementsHashEntry
  type ConnectionPlacementHashKey (line 90) | typedef struct ConnectionPlacementHashKey
  type ConnectionPlacementHashEntry (line 96) | typedef struct ConnectionPlacementHashEntry
  type ColocatedPlacementsHashKey (line 140) | typedef struct ColocatedPlacementsHashKey
  type ColocatedPlacementsHashEntry (line 153) | typedef struct ColocatedPlacementsHashEntry
  type ConnectionShardHashKey (line 176) | typedef struct ConnectionShardHashKey
  type ConnectionShardHashEntry (line 182) | typedef struct ConnectionShardHashEntry
  function MultiConnection (line 212) | MultiConnection *
  function MultiConnection (line 249) | MultiConnection *
  function MultiConnection (line 280) | MultiConnection *
  function AssignPlacementListToConnection (line 367) | void
  function MultiConnection (line 478) | MultiConnection *
  function MultiConnection (line 516) | static MultiConnection *
  function ConnectionPlacementHashEntry (line 674) | static ConnectionPlacementHashEntry *
  function CanUseExistingConnection (line 757) | static bool
  function ConnectionAccessedDifferentPlacement (line 795) | static bool
  function ConnectionModifiedPlacement (line 831) | bool
  function AssociatePlacementWithShard (line 882) | static void
  function CloseShardPlacementAssociation (line 925) | void
  function ResetShardPlacementAssociation (line 954) | void
  function ResetPlacementConnectionManagement (line 966) | void
  function ErrorIfPostCommitFailedShardPlacements (line 993) | void
  function HasModificationFailedForShard (line 1020) | static bool
  function InitPlacementConnectionManagement (line 1054) | void
  function UseConnectionPerPlacement (line 1100) | bool
  function uint32 (line 1108) | static uint32
  function ColocatedPlacementsHashCompare (line 1121) | static int

FILE: src/backend/distributed/connection/remote_commands.c
  function IsResponseOK (line 57) | bool
  function ForgetResults (line 80) | void
  function ClearResults (line 96) | bool
  function ClearResultsDiscardWarnings (line 107) | bool
  function ClearResultsInternal (line 117) | static bool
  function ClearResultsIfReady (line 171) | bool
  function ReportConnectionError (line 247) | void
  function ReportResultError (line 285) | void
  function LogRemoteCommand (line 342) | void
  function CommandMatchesLogGrepPattern (line 369) | bool
  function ExecuteCriticalRemoteCommandList (line 393) | void
  function ExecuteCriticalRemoteCommand (line 408) | void
  function ExecuteRemoteCommandInConnectionList (line 435) | void
  function ExecuteOptionalRemoteCommand (line 474) | int
  function SendRemoteCommandParams (line 521) | int
  function SendRemoteCommand (line 555) | int
  function ExecuteRemoteCommandAndCheckResult (line 584) | bool
  function List (line 624) | List *
  function PGresult (line 667) | PGresult *
  function PutRemoteCopyData (line 708) | bool
  function PutRemoteCopyEnd (line 756) | bool
  function FinishConnectionIO (line 792) | static bool
  function WaitForAllConnections (line 877) | void
  function WaitEventSet (line 1118) | static WaitEventSet *
  function SendCancelationRequest (line 1178) | bool
  function EvaluateSingleQueryResult (line 1210) | bool
  function StoreErrorMessage (line 1265) | void
  function IsSettingSafeToPropagate (line 1299) | bool

FILE: src/backend/distributed/connection/shared_connection_stats.c
  type ConnectionStatsSharedData (line 52) | typedef struct ConnectionStatsSharedData
  type SharedConnStatsHashKey (line 62) | typedef struct SharedConnStatsHashKey
  type SharedConnStatsHashEntry (line 80) | typedef struct SharedConnStatsHashEntry
  function Datum (line 132) | Datum
  function StoreAllRemoteConnectionStats (line 153) | static void
  function GetMaxClientConnections (line 198) | int
  function GetMaxSharedPoolSize (line 217) | int
  function GetLocalSharedPoolSize (line 236) | int
  function WaitLoopForSharedConnection (line 255) | void
  function TryToIncrementSharedConnectionCounter (line 278) | bool
  function IncrementSharedConnectionCounter (line 418) | void
  function DecrementSharedConnectionCounter (line 482) | void
  function LockConnectionSharedMemory (line 555) | static void
  function UnLockConnectionSharedMemory (line 566) | static void
  function WakeupWaiterBackendsForSharedConnection (line 589) | void
  function WaitForSharedConnection (line 602) | void
  function InitializeSharedConnectionStats (line 614) | void
  function SharedConnectionStatsShmemSize (line 626) | size_t
  function SharedConnectionStatsShmemInit (line 646) | void
  function AdaptiveConnectionManagementFlag (line 713) | int
  function ShouldWaitForConnection (line 764) | static bool
  function uint32 (line 794) | static uint32
  function SharedConnectionHashCompare (line 807) | static int

FILE: src/backend/distributed/connection/worker_log_messages.c
  function SetCitusNoticeReceiver (line 80) | void
  function EnableWorkerMessagePropagation (line 92) | void
  function DisableWorkerMessagePropagation (line 103) | void
  function DefaultCitusNoticeReceiver (line 114) | static void
  function LogLevelNameToLogLevel (line 214) | static int
  function ErrorIfWorkerErrorIndicationReceived (line 241) | void
  function ResetWorkerErrorIndication (line 254) | void

FILE: src/backend/distributed/deparser/citus_deparseutils.c
  function DefElemOptionToStatement (line 37) | void

FILE: src/backend/distributed/deparser/citus_grantutils.c
  function AppendWithGrantOption (line 13) | void
  function AppendGrantOptionFor (line 27) | void
  function AppendGrantRestrictAndCascadeForRoleSpec (line 41) | void
  function AppendGrantRestrictAndCascade (line 63) | void
  function AppendGrantedByInGrantForRoleSpec (line 74) | void
  function AppendGrantedByInGrant (line 88) | void
  function AppendGrantSharedPrefix (line 95) | void
  function AppendGrantSharedSuffix (line 104) | void

FILE: src/backend/distributed/deparser/citus_ruleutils.c
  function Oid (line 177) | Oid
  function Form_pg_sequence (line 281) | Form_pg_sequence
  function else (line 475) | else if (attributeForm->attgenerated == ATTRIBUTE_GENERATED_VIRTUAL)
  function EnsureRelationKindSupported (line 634) | void
  function deparse_shard_index_statement (line 829) | void
  function deparse_shard_reindex_statement (line 904) | void
  function IsReindexWithParam_compat (line 972) | bool
  function AddVacuumParams (line 990) | static void
  function deparse_index_columns (line 1030) | static void
  function List (line 1133) | List *
  function process_acl_items (line 1243) | static void
  function AppendOptionListToString (line 1347) | void
  function AppendStorageParametersToString (line 1382) | static void
  function contain_nextval_expression_walker (line 1454) | bool
  function List (line 1529) | List *
  function simple_quote_literal (line 1660) | static void
  function GetParamId (line 1740) | static int
  function target_list_cmp (line 1780) | static int
  function ensure_update_targetlist_in_param_order (line 1823) | void
  function isSubsRef (line 1858) | static
  function checkTlistForSubsRef (line 1889) | static
  function List (line 1915) | List *
  function SubscriptingRef (line 1997) | static SubscriptingRef *

FILE: src/backend/distributed/deparser/citus_setutils.c
  function AppendVarSetValue (line 25) | void
  function AppendVariableSet (line 130) | void

FILE: src/backend/distributed/deparser/deparse.c
  function List (line 45) | List *

FILE: src/backend/distributed/deparser/deparse_collation_stmts.c
  function AppendDropCollationStmt (line 51) | static void
  function AppendRenameCollationStmt (line 88) | static void
  function AppendAlterCollationSchemaStmt (line 120) | static void
  function AppendAlterCollationOwnerStmt (line 153) | static void
  function AppendNameList (line 165) | static void

FILE: src/backend/distributed/deparser/deparse_database_stmts.c
  function AppendAlterDatabaseOwnerStmt (line 81) | static void
  function AppendGrantDatabases (line 93) | static void
  function AppendGrantOnDatabaseStmt (line 111) | static void
  function AppendAlterDatabaseStmt (line 124) | static void
  function AppendAlterDatabaseSetTablespace (line 154) | static void
  function AppendBasicAlterDatabaseOptions (line 173) | static void
  function AppendAlterDatabaseSetStmt (line 230) | static void
  function AppendCreateDatabaseStmt (line 271) | static void
  function AppendDropDatabaseStmt (line 311) | static void

FILE: src/backend/distributed/deparser/deparse_domain_stmts.c
  function Oid (line 304) | static Oid
  function AppendAlterDomainStmtSetDefault (line 329) | static void
  function AppendAlterDomainStmtAddConstraint (line 360) | static void
  function AppendAlterDomainStmtDropConstraint (line 390) | static void
  function AppendConstraint (line 417) | static void
  function Node (line 508) | static Node *
  function Node (line 537) | static Node *
  function CoerceToDomainValue (line 578) | static CoerceToDomainValue *
  function Node (line 601) | static Node *

FILE: src/backend/distributed/deparser/deparse_extension_stmts.c
  function DefElem (line 40) | DefElem *
  function AppendCreateExtensionStmt (line 77) | static void
  function AppendCreateExtensionStmtOptions (line 105) | static void
  function AppendAlterExtensionStmt (line 169) | static void
  function AppendDropExtensionStmt (line 222) | static void
  function AppendExtensionNameList (line 250) | static void
  function AppendAlterExtensionSchemaStmt (line 293) | static void

FILE: src/backend/distributed/deparser/deparse_foreign_data_wrapper_stmts.c
  function AppendGrantOnFDWStmt (line 40) | static void
  function AppendGrantOnFDWNames (line 50) | static void

FILE: src/backend/distributed/deparser/deparse_foreign_server_stmts.c
  function AppendCreateForeignServerStmt (line 125) | static void
  function AppendAlterForeignServerStmt (line 153) | static void
  function AppendAlterForeignServerOptions (line 167) | static void
  function AppendAlterForeignServerRenameStmt (line 206) | static void
  function AppendAlterForeignServerOwnerStmt (line 215) | static void
  function AppendDropForeignServerStmt (line 225) | static void
  function AppendServerNames (line 241) | static void
  function AppendBehavior (line 258) | static void
  function AppendGrantOnForeignServerStmt (line 300) | static void
  function AppendGrantOnForeignServerServers (line 310) | static void

FILE: src/backend/distributed/deparser/deparse_function_stmts.c
  function AppendAlterFunctionStmt (line 132) | static void
  function AppendDefElem (line 153) | static void
  function AppendDefElemStrict (line 198) | static void
  function AppendDefElemVolatility (line 215) | static void
  function AppendDefElemLeakproof (line 225) | static void
  function AppendDefElemSecurity (line 239) | static void
  function AppendDefElemParallel (line 256) | static void
  function AppendDefElemCost (line 266) | static void
  function AppendDefElemRows (line 276) | static void
  function AppendDefElemSet (line 286) | static void
  function AppendDefElemSupport (line 298) | static void
  function AppendRenameFunctionStmt (line 326) | static void
  function AppendAlterFunctionSchemaStmt (line 358) | static void
  function AppendAlterFunctionOwnerStmt (line 390) | static void
  function AppendAlterFunctionDependsStmt (line 422) | static void
  function AppendDropFunctionStmt (line 454) | static void
  function AppendFunctionNameList (line 478) | static void
  function AppendFunctionName (line 501) | static void
  function AppendGrantOnFunctionStmt (line 585) | static void
  function AppendGrantOnFunctionFunctions (line 608) | static void
  function isFunction (line 649) | bool

FILE: src/backend/distributed/deparser/deparse_owned_stmts.c
  function AppendDropOwnedStmt (line 48) | static void
  function AppendRoleList (line 66) | static void
  function AppendReassignOwnedStmt (line 88) | static void

FILE: src/backend/distributed/deparser/deparse_publication_stmts.c
  function AppendCreatePublicationStmt (line 94) | static void
  function AppendPublicationObjects (line 159) | static bool
  function AppendWhereClauseExpression (line 251) | static void
  function AppendAlterPublicationStmt (line 339) | static bool
  function AppendAlterPublicationAction (line 367) | static void
  function AppendDropPublicationStmt (line 419) | static void
  function AppendRenamePublicationStmt (line 456) | static void
  function AppendAlterPublicationOwnerStmt (line 486) | static void
  function AppendPublicationOptions (line 500) | static void
  function AppendIdentifierList (line 539) | static void

FILE: src/backend/distributed/deparser/deparse_role_stmts.c
  function AppendAlterRoleStmt (line 76) | static void
  function AppendRoleOption (line 103) | static void
  function AppendSysIdStatement (line 205) | static void
  function AppendInlinePriviliges (line 220) | static void
  function AppendStatementType (line 247) | static void
  function AppendCreateRoleStmt (line 277) | static void
  function AppendDropRoleStmt (line 319) | static void
  function AppendRoleList (line 333) | static void
  function AppendRevokeAdminOptionFor (line 400) | static void
  function AppendGrantWithAdminOption (line 428) | static void
  function AppendGrantRoleStmt (line 466) | static void
  function AppendAlterRoleSetStmt (line 485) | static void

FILE: src/backend/distributed/deparser/deparse_schema_stmts.c
  function AppendAlterSchemaOwnerStmt (line 87) | static void
  function AppendCreateSchemaStmt (line 112) | static void
  function AppendDropSchemaStmt (line 142) | static void
  function AppendGrantOnSchemaStmt (line 177) | static void
  function AppendGrantPrivileges (line 190) | void
  function AppendGrantOnSchemaSchemas (line 213) | static void
  function AppendGrantGrantees (line 231) | void
  function AppendAlterSchemaRenameStmt (line 249) | static void

FILE: src/backend/distributed/deparser/deparse_seclabel_stmts.c
  function BeginSecLabel (line 19) | static void
  function EndSecLabel (line 34) | static void

FILE: src/backend/distributed/deparser/deparse_sequence_stmts.c
  function AppendDropSequenceStmt (line 56) | static void
  function AppendSequenceNameList (line 80) | static void
  function AppendRenameSequenceStmt (line 121) | static void
  function AppendAlterSequenceSchemaStmt (line 163) | static void
  function AppendAlterSequenceOwnerStmt (line 207) | static void
  function AppendAlterSequencePersistenceStmt (line 286) | static void
  function AppendGrantOnSequenceStmt (line 370) | static void
  function AppendGrantOnSequenceSequences (line 398) | static void

FILE: src/backend/distributed/deparser/deparse_statistics_stmts.c
  function AppendCreateStatisticsStmt (line 125) | static void
  function AppendDropStatisticsStmt (line 149) | static void
  function AppendAlterStatisticsRenameStmt (line 163) | static void
  function AppendAlterStatisticsSchemaStmt (line 172) | static void
  function AppendAlterStatisticsStmt (line 181) | static void
  function AppendAlterStatisticsOwnerStmt (line 190) | static void
  function AppendStatisticsName (line 200) | static void
  function AppendStatTypes (line 213) | static void
  function looks_like_function (line 239) | static bool
  function AppendColumnNames (line 274) | static void
  function AppendTableName (line 340) | static void

FILE: src/backend/distributed/deparser/deparse_table_stmts.c
  function AppendAlterTableSchemaStmt (line 54) | static void
  function AppendAlterTableStmt (line 95) | static void
  function AppendColumnNameList (line 124) | void
  function AppendAlterTableCmdConstraint (line 152) | static void
  function AppendAlterTableCmd (line 470) | static void
  function AppendAlterTableCmdAddColumn (line 573) | static void
  function AppendAlterTableCmdDropConstraint (line 699) | static void

FILE: src/backend/distributed/deparser/deparse_text_search.c
  function AppendDefElemList (line 84) | static void
  function AppendStringInfoTokentypeList (line 402) | static void
  function AppendStringInfoDictnames (line 430) | static void

FILE: src/backend/distributed/deparser/deparse_type_stmts.c
  function AppendAlterTypeStmt (line 133) | static void
  function AppendAlterTypeCmd (line 158) | static void
  function AppendAlterTypeCmdAddColumn (line 190) | static void
  function AppendAlterTypeCmdDropColumn (line 200) | static void
  function AppendAlterTypeCmdAlterColumnType (line 213) | static void
  function AppendAlterEnumStmt (line 228) | static void
  function AppendDropTypeStmt (line 262) | static void
  function AppendTypeNameList (line 285) | static void
  function AppendCompositeTypeStmt (line 309) | static void
  function AppendCreateEnumStmt (line 320) | static void
  function AppendStringList (line 335) | static void
  function AppendColumnDefList (line 357) | static void
  function AppendColumnDef (line 379) | static void
  function AppendRenameTypeStmt (line 421) | static void
  function AppendRenameTypeAttributeStmt (line 447) | static void
  function AppendAlterTypeSchemaStmt (line 480) | static void
  function AppendAlterTypeOwnerStmt (line 506) | static void

FILE: src/backend/distributed/deparser/deparse_view_stmts.c
  function AppendDropViewStmt (line 58) | static void
  function AppendViewNameList (line 86) | static void
  function AppendAlterViewStmt (line 121) | static void
  function AppendAlterViewCmd (line 136) | static void
  function AppendAlterViewOwnerStmt (line 179) | static void
  function AppendAlterViewSetOptionsStmt (line 186) | static void
  function AppendAlterViewResetOptionsStmt (line 217) | static void
  function AppendRenameViewStmt (line 256) | static void
  function AppendAlterViewSchemaStmt (line 304) | static void

FILE: src/backend/distributed/deparser/objectaddress.c
  function List (line 27) | List *
  function List (line 41) | List *
  function List (line 71) | List *

FILE: src/backend/distributed/deparser/qualify.c
  function QualifyTreeNode (line 33) | void
  function QualifyRenameAttributeStmt (line 49) | void

FILE: src/backend/distributed/deparser/qualify_aggregate_stmts.c
  function QualifyDefineAggregateStmt (line 23) | void

FILE: src/backend/distributed/deparser/qualify_collation_stmt.c
  function QualifyRenameCollationStmt (line 34) | void
  function QualifyAlterCollationSchemaStmt (line 49) | void
  function QualifyAlterCollationOwnerStmt (line 64) | void
  function QualifyDropCollationStmt (line 79) | void
  function Node (line 98) | Node *

FILE: src/backend/distributed/deparser/qualify_domain.c
  function QualifyCreateDomainStmt (line 36) | void
  function QualifyDropDomainStmt (line 64) | void
  function QualifyAlterDomainStmt (line 80) | void
  function QualifyDomainRenameConstraintStmt (line 98) | void
  function QualifyAlterDomainOwnerStmt (line 118) | void
  function QualifyRenameDomainStmt (line 138) | void
  function QualifyAlterDomainSchemaStmt (line 158) | void
  function QualifyTypeName (line 180) | static void
  function QualifyCollate (line 226) | static void

FILE: src/backend/distributed/deparser/qualify_function_stmt.c
  function AssertObjectTypeIsFunctional (line 37) | void
  function QualifyAlterFunctionStmt (line 55) | void
  function QualifyRenameFunctionStmt (line 70) | void
  function QualifyAlterFunctionSchemaStmt (line 85) | void
  function QualifyAlterFunctionOwnerStmt (line 100) | void
  function QualifyAlterFunctionDependsStmt (line 115) | void
  function QualifyFunction (line 128) | void
  function QualifyFunctionSchemaName (line 148) | void

FILE: src/backend/distributed/deparser/qualify_publication_stmt.c
  function QualifyCreatePublicationStmt (line 30) | void
  function QualifyPublicationObjects (line 43) | static void
  function QualifyAlterPublicationStmt (line 65) | void
  function QualifyPublicationRangeVar (line 77) | static void

FILE: src/backend/distributed/deparser/qualify_role_stmt.c
  function QualifyAlterRoleSetStmt (line 33) | void
  function QualifyVarSetCurrent (line 53) | static void

FILE: src/backend/distributed/deparser/qualify_sequence_stmt.c
  function QualifyAlterSequenceOwnerStmt (line 34) | void
  function QualifyAlterSequencePersistenceStmt (line 60) | void
  function QualifyAlterSequenceSchemaStmt (line 86) | void
  function QualifyRenameSequenceStmt (line 112) | void
  function QualifyDropSequenceStmt (line 137) | void
  function QualifyGrantOnSequenceStmt (line 174) | void

FILE: src/backend/distributed/deparser/qualify_statistics_stmt.c
  function QualifyCreateStatisticsStmt (line 32) | void
  function QualifyDropStatisticsStmt (line 75) | void
  function QualifyAlterStatisticsRenameStmt (line 111) | void
  function QualifyAlterStatisticsSchemaStmt (line 139) | void
  function QualifyAlterStatisticsStmt (line 167) | void
  function QualifyAlterStatisticsOwnerStmt (line 193) | void
  function Oid (line 222) | static Oid

FILE: src/backend/distributed/deparser/qualify_table_stmt.c
  function QualifyAlterTableSchemaStmt (line 29) | void

FILE: src/backend/distributed/deparser/qualify_text_search_stmts.c
  function QualifyDropTextSearchConfigurationStmt (line 40) | void
  function QualifyDropTextSearchDictionaryStmt (line 81) | void
  function QualifyAlterTextSearchConfigurationStmt (line 120) | void
  function QualifyAlterTextSearchDictionaryStmt (line 179) | void
  function QualifyRenameTextSearchConfigurationStmt (line 206) | void
  function QualifyRenameTextSearchDictionaryStmt (line 234) | void
  function QualifyAlterTextSearchConfigurationSchemaStmt (line 261) | void
  function QualifyAlterTextSearchDictionarySchemaStmt (line 287) | void
  function QualifyTextSearchConfigurationCommentStmt (line 313) | void
  function QualifyTextSearchDictionaryCommentStmt (line 339) | void
  function QualifyAlterTextSearchConfigurationOwnerStmt (line 365) | void
  function QualifyAlterTextSearchDictionaryOwnerStmt (line 391) | void
  function Oid (line 417) | static Oid
  function Oid (line 439) | static Oid

FILE: src/backend/distributed/deparser/qualify_type_stmt.c
  function Oid (line 52) | Oid
  function QualifyRenameTypeStmt (line 71) | void
  function QualifyRenameTypeAttributeStmt (line 90) | void
  function QualifyAlterEnumStmt (line 106) | void
  function QualifyAlterTypeStmt (line 123) | void
  function QualifyCompositeTypeStmt (line 138) | void
  function QualifyCreateEnumStmt (line 151) | void
  function QualifyAlterTypeSchemaStmt (line 166) | void
  function QualifyAlterTypeOwnerStmt (line 183) | void

FILE: src/backend/distributed/deparser/qualify_view_stmt.c
  function QualifyDropViewStmt (line 27) | void
  function QualifyAlterViewStmt (line 72) | void
  function QualifyRenameViewStmt (line 84) | void
  function QualifyAlterViewSchemaStmt (line 96) | void
  function QualifyViewRangeVar (line 108) | static void

FILE: src/backend/distributed/deparser/ruleutils_16.c
  type deparse_context (line 121) | typedef struct
  type deparse_namespace (line 168) | typedef struct
  type deparse_columns (line 238) | typedef struct
  type NameHashEntry (line 312) | typedef struct
  function pg_get_query_def (line 486) | void
  function get_merged_argument_list (line 499) | bool
  function set_rtable_names (line 683) | static void
  function set_deparse_for_query (line 828) | static void
  function has_dangerous_join_using (line 904) | static bool
  function set_using_names (line 970) | static void
  function set_relation_column_names (line 1135) | static void
  function set_join_column_names (line 1341) | static void
  function colname_is_unique (line 1606) | static bool
  function expand_colnames_array_to (line 1699) | static void
  function identify_join_columns (line 1720) | static void
  function set_deparse_plan (line 1807) | static void
  function Plan (line 1885) | static Plan *
  function push_child_plan (line 1915) | static void
  function pop_child_plan (line 1932) | static void
  function push_ancestor_plan (line 1962) | static void
  function pop_ancestor_plan (line 1983) | static void
  function deparse_shard_query (line 2000) | void
  function get_query_def (line 2026) | static void
  function get_query_def_extended (line 2045) | static void
  function get_values_def (line 2141) | static void
  function get_with_clause (line 2184) | static void
  function get_select_query_def (line 2323) | static void
  function RangeTblEntry (line 2446) | static RangeTblEntry *
  function get_basic_select_query (line 2513) | static void
  function get_target_list (line 2644) | static void
  function get_setop_query (line 2780) | static void
  function Node (line 2920) | static Node *
  function get_rule_groupingset (line 2988) | static void
  function get_rule_orderby (line 3048) | static void
  function get_rule_windowclause (line 3106) | static void
  function get_rule_windowspec (line 3138) | static void
  function get_insert_query_def (line 3247) | static void
  function get_update_query_def (line 3437) | static void
  function get_update_query_targetlist_def (line 3515) | static void
  function get_delete_query_def (line 3670) | static void
  function get_merge_query_def (line 3744) | static void
  function get_utility_query_def (line 3891) | static void
  function get_special_variable (line 4259) | static void
  function resolve_special_varno (line 4280) | static void
  function Node (line 4778) | static Node *
  function get_parameter (line 4889) | static void
  function isSimpleNode (line 5038) | static bool
  function appendContextKeyword (line 5263) | static void
  function removeStringInfoSpaces (line 5317) | static void
  function get_rule_expr_paren (line 5335) | static void
  function get_rule_expr (line 5366) | static void
  function get_rule_expr_toplevel (line 6600) | static void
  function get_rule_list_toplevel (line 6618) | static void
  function get_rule_expr_funccall (line 6648) | static void
  function looks_like_function (line 6671) | static bool
  function get_oper_expr (line 6698) | static void
  function get_func_expr (line 6738) | static void
  function get_proc_expr (line 6836) | static void
  function get_agg_expr (line 6880) | static void
  function get_agg_expr_helper (line 6892) | static void
  function get_agg_combine_expr (line 7019) | static void
  function get_windowfunc_expr (line 7035) | static void
  function get_windowfunc_expr_helper (line 7046) | static void
  function get_func_sql_syntax (line 7139) | static bool
  function get_coercion_expr (line 7381) | static void
  function get_const_expr (line 7437) | static void
  function get_const_collation (line 7572) | static void
  function get_json_format (line 7592) | static void
  function get_json_returning (line 7617) | static void
  function get_json_constructor (line 7637) | static void
  function get_json_constructor_options (line 7694) | static void
  function get_json_agg_constructor (line 7719) | static void
  function simple_quote_literal (line 7744) | static void
  function get_sublink_expr (line 7770) | static void
  function get_tablefunc (line 7894) | static void
  function get_from_clause (line 7999) | static void
  function get_from_clause_item (line 8093) | static void
  function get_rte_alias (line 8413) | static void
  function get_column_alias_list (line 8484) | static void
  function get_from_clause_coldeflist (line 8524) | static void
  function get_tablesample_def (line 8575) | static void
  function get_opclass_name (line 8619) | static void
  function Node (line 8662) | static Node *
  function printSubscripts (line 8739) | static void
  function List (line 9130) | List *
  function List (line 9189) | static List *

FILE: src/backend/distributed/deparser/ruleutils_17.c
  type deparse_context (line 120) | typedef struct
  type deparse_namespace (line 167) | typedef struct
  type deparse_columns (line 237) | typedef struct
  type NameHashEntry (line 311) | typedef struct
  function pg_get_query_def (line 500) | void
  function get_merged_argument_list (line 513) | bool
  function set_rtable_names (line 697) | static void
  function set_deparse_for_query (line 842) | static void
  function has_dangerous_join_using (line 918) | static bool
  function set_using_names (line 984) | static void
  function set_relation_column_names (line 1149) | static void
  function set_join_column_names (line 1355) | static void
  function colname_is_unique (line 1620) | static bool
  function expand_colnames_array_to (line 1713) | static void
  function identify_join_columns (line 1734) | static void
  function set_deparse_plan (line 1821) | static void
  function Plan (line 1902) | static Plan *
  function push_child_plan (line 1932) | static void
  function pop_child_plan (line 1949) | static void
  function push_ancestor_plan (line 1979) | static void
  function pop_ancestor_plan (line 2000) | static void
  function deparse_shard_query (line 2017) | void
  function get_query_def (line 2043) | static void
  function get_query_def_extended (line 2062) | static void
  function get_values_def (line 2158) | static void
  function get_with_clause (line 2201) | static void
  function get_select_query_def (line 2340) | static void
  function RangeTblEntry (line 2463) | static RangeTblEntry *
  function get_basic_select_query (line 2530) | static void
  function get_target_list (line 2661) | static void
  function get_setop_query (line 2797) | static void
  function Node (line 2937) | static Node *
  function get_rule_groupingset (line 3005) | static void
  function get_rule_orderby (line 3065) | static void
  function get_rule_windowclause (line 3123) | static void
  function get_rule_windowspec (line 3155) | static void
  function get_insert_query_def (line 3264) | static void
  function get_update_query_def (line 3454) | static void
  function get_update_query_targetlist_def (line 3532) | static void
  function get_delete_query_def (line 3687) | static void
  function get_merge_query_def (line 3761) | static void
  function get_utility_query_def (line 3950) | static void
  function get_special_variable (line 4316) | static void
  function resolve_special_varno (line 4337) | static void
  function Node (line 4865) | static Node *
  function SubPlan (line 4980) | static SubPlan *
  function SubPlan (line 5077) | static SubPlan *
  function get_parameter (line 5098) | static void
  function isSimpleNode (line 5271) | static bool
  function appendContextKeyword (line 5499) | static void
  function removeStringInfoSpaces (line 5553) | static void
  function get_rule_expr_paren (line 5571) | static void
  function get_json_behavior (line 5589) | static void
  function get_json_expr_options (line 5627) | static void
  function get_rule_expr (line 5668) | static void
  function get_rule_expr_toplevel (line 7034) | static void
  function get_rule_list_toplevel (line 7052) | static void
  function get_rule_expr_funccall (line 7082) | static void
  function looks_like_function (line 7105) | static bool
  function get_oper_expr (line 7133) | static void
  function get_func_expr (line 7173) | static void
  function get_proc_expr (line 7271) | static void
  function get_agg_expr (line 7315) | static void
  function get_agg_expr_helper (line 7327) | static void
  function get_agg_combine_expr (line 7454) | static void
  function get_windowfunc_expr (line 7470) | static void
  function get_windowfunc_expr_helper (line 7481) | static void
  function get_func_sql_syntax (line 7574) | static bool
  function get_coercion_expr (line 7826) | static void
  function get_const_expr (line 7882) | static void
  function get_const_collation (line 8017) | static void
  function get_json_path_spec (line 8037) | static void
  function get_json_format (line 8049) | static void
  function get_json_returning (line 8074) | static void
  function get_json_constructor (line 8094) | static void
  function get_json_constructor_options (line 8160) | static void
  function get_json_agg_constructor (line 8190) | static void
  function simple_quote_literal (line 8215) | static void
  function get_sublink_expr (line 8241) | static void
  function get_xmltable (line 8365) | static void
  function get_json_table_nested_columns (line 8463) | static void
  function get_json_table_columns (line 8495) | static void
  function get_json_table (line 8601) | static void
  function get_tablefunc (line 8670) | static void
  function get_from_clause (line 8689) | static void
  function get_from_clause_item (line 8783) | static void
  function get_rte_alias (line 9103) | static void
  function get_column_alias_list (line 9174) | static void
  function get_from_clause_coldeflist (line 9214) | static void
  function get_tablesample_def (line 9265) | static void
  function get_opclass_name (line 9309) | static void
  function Node (line 9352) | static Node *
  function printSubscripts (line 9429) | static void
  function List (line 9820) | List *
  function List (line 9879) | static List *

FILE: src/backend/distributed/deparser/ruleutils_18.c
  type deparse_context (line 120) | typedef struct
  type deparse_namespace (line 167) | typedef struct
  type deparse_columns (line 243) | typedef struct
  type NameHashEntry (line 326) | typedef struct
  function pg_get_query_def (line 528) | void
  function get_merged_argument_list (line 541) | bool
  function set_rtable_names (line 725) | static void
  function set_deparse_for_query (line 875) | static void
  function has_dangerous_join_using (line 953) | static bool
  function set_using_names (line 1023) | static void
  function set_relation_column_names (line 1188) | static void
  function set_join_column_names (line 1424) | static void
  function colname_is_unique (line 1699) | static bool
  function expand_colnames_array_to (line 1813) | static void
  function build_colinfo_names_hash (line 1831) | static void
  function add_to_names_hash (line 1889) | static void
  function destroy_colinfo_names_hash (line 1902) | static void
  function identify_join_columns (line 1918) | static void
  function set_deparse_plan (line 2005) | static void
  function Plan (line 2086) | static Plan *
  function push_child_plan (line 2116) | static void
  function pop_child_plan (line 2133) | static void
  function push_ancestor_plan (line 2163) | static void
  function pop_ancestor_plan (line 2184) | static void
  function deparse_shard_query (line 2201) | void
  function get_query_def (line 2227) | static void
  function get_query_def_extended (line 2246) | static void
  function get_values_def (line 2359) | static void
  function get_with_clause (line 2402) | static void
  function get_select_query_def (line 2541) | static void
  function RangeTblEntry (line 2674) | static RangeTblEntry *
  function get_basic_select_query (line 2741) | static void
  function get_target_list (line 2872) | static void
  function get_returning_clause (line 3008) | static void
  function get_setop_query (line 3047) | static void
  function Node (line 3192) | static Node *
  function get_rule_groupingset (line 3260) | static void
  function get_rule_orderby (line 3320) | static void
  function get_rule_windowclause (line 3378) | static void
  function get_rule_windowspec (line 3410) | static void
  function get_window_frame_options (line 3467) | static void
  function get_insert_query_def (line 3537) | static void
  function get_update_query_def (line 3725) | static void
  function get_update_query_targetlist_def (line 3801) | static void
  function get_delete_query_def (line 3956) | static void
  function get_merge_query_def (line 4028) | static void
  function get_utility_query_def (line 4217) | static void
  function dpns_has_named_join (line 4587) | static inline bool
  function Var (line 4606) | static Var *
  function var_matches_base (line 4628) | static inline bool
  function map_var_through_join_alias (line 4645) | static void
  function get_special_variable (line 4689) | static void
  function resolve_special_varno (line 4710) | static void
  function Node (line 5239) | static Node *
  function SubPlan (line 5354) | static SubPlan *
  function SubPlan (line 5451) | static SubPlan *
  function get_parameter (line 5472) | static void
  function isSimpleNode (line 5645) | static bool
  function appendContextKeyword (line 5876) | static void
  function removeStringInfoSpaces (line 5930) | static void
  function get_rule_expr_paren (line 5948) | static void
  function get_json_behavior (line 5966) | static void
  function get_json_expr_options (line 6004) | static void
  function get_rule_expr (line 6045) | static void
  function get_rule_expr_toplevel (line 7448) | static void
  function get_rule_list_toplevel (line 7466) | static void
  function get_rule_expr_funccall (line 7496) | static void
  function looks_like_function (line 7519) | static bool
  function get_oper_expr (line 7547) | static void
  function get_func_expr (line 7587) | static void
  function get_proc_expr (line 7685) | static void
  function get_agg_expr (line 7729) | static void
  function get_agg_expr_helper (line 7741) | static void
  function get_agg_combine_expr (line 7868) | static void
  function get_windowfunc_expr (line 7884) | static void
  function get_windowfunc_expr_helper (line 7895) | static void
  function get_func_sql_syntax (line 8008) | static bool
  function get_coercion_expr (line 8260) | static void
  function get_const_expr (line 8316) | static void
  function get_const_collation (line 8451) | static void
  function get_json_path_spec (line 8471) | static void
  function get_json_format (line 8483) | static void
  function get_json_returning (line 8508) | static void
  function get_json_constructor (line 8528) | static void
  function get_json_constructor_options (line 8594) | static void
  function get_json_agg_constructor (line 8624) | static void
  function simple_quote_literal (line 8649) | static void
  function get_sublink_expr (line 8675) | static void
  function get_xmltable (line 8799) | static void
  function get_json_table_nested_columns (line 8897) | static void
  function get_json_table_columns (line 8929) | static void
  function get_json_table (line 9035) | static void
  function get_tablefunc (line 9104) | static void
  function get_from_clause (line 9123) | static void
  function get_from_clause_item (line 9217) | static void
  function get_rte_alias (line 9537) | static void
  function get_column_alias_list (line 9608) | static void
  function get_from_clause_coldeflist (line 9648) | static void
  function get_tablesample_def (line 9699) | static void
  function get_opclass_name (line 9743) | static void
  function Node (line 9786) | static Node *
  function printSubscripts (line 9863) | static void
  function List (line 10254) | List *
  function List (line 10313) | static List *

FILE: src/backend/distributed/executor/adaptive_executor.c
  type DistributedExecution (line 189) | typedef struct DistributedExecution
  type WorkerPoolFailureState (line 325) | typedef enum WorkerPoolFailureState
  type WorkerPool (line 368) | typedef struct WorkerPool
  type TaskPlacementExecution (line 442) | struct TaskPlacementExecution
  type WorkerSession (line 456) | typedef struct WorkerSession
  type TaskExecutionState (line 511) | typedef enum TaskExecutionState
  type PlacementExecutionOrder (line 526) | typedef enum PlacementExecutionOrder
  type ShardCommandExecution (line 538) | typedef struct ShardCommandExecution
  type TaskPlacementExecutionState (line 576) | typedef enum TaskPlacementExecutionState
  type TaskPlacementExecution (line 590) | typedef struct TaskPlacementExecution
  function AdaptiveExecutorPreExecutorRun (line 741) | void
  function TupleTableSlot (line 774) | TupleTableSlot *
  function RunLocalExecution (line 917) | static void
  function uint64 (line 936) | uint64
  function uint64 (line 955) | uint64
  function uint64 (line 978) | uint64
  function uint64 (line 998) | uint64
  function ExecutionParams (line 1023) | static ExecutionParams *
  function uint64 (line 1049) | uint64
  function uint64 (line 1067) | uint64
  function uint64 (line 1085) | uint64
  function ExecutionParams (line 1142) | ExecutionParams *
  function DistributedExecution (line 1168) | static DistributedExecution *
  function TransactionProperties (line 1262) | static TransactionProperties
  function StartDistributedExecution (line 1334) | void
  function DistributedExecutionModifiesDatabase (line 1396) | static bool
  function FinishDistributedExecution (line 1408) | static void
  function AssignTasksToConnectionsOrWorkerPool (line 1425) | static void
  function WorkerPoolCompare (line 1613) | static int
  function SetAttributeInputMetadata (line 1630) | static void
  function PlacementExecutionOrder (line 1668) | static PlacementExecutionOrder
  function WorkerPool (line 1719) | static WorkerPool *
  function WorkerSession (line 1763) | static WorkerSession *
  function RemoteSocketClosedForAnySession (line 1831) | static void
  function SequentialRunDistributedExecution (line 1854) | static void
  function RunDistributedExecution (line 1897) | void
  function ProcessSessionsWithFailedWaitEventSetOperations (line 2018) | static bool
  function HasIncompleteConnectionEstablishment (line 2059) | static bool
  function RebuildWaitEventSet (line 2087) | static void
  function AddLatchWaitEventToExecution (line 2102) | static void
  function RebuildWaitEventSetForSessions (line 2117) | static void
  function ProcessWaitEvents (line 2138) | static void
  function ProcessWaitEventsForSocketClosed (line 2189) | static void
  function ManageWorkerPool (line 2220) | static void
  function HasAnyConnectionFailure (line 2300) | static bool
  function ShouldWaitForSlowStart (line 2330) | static bool
  function CalculateNewConnectionCount (line 2373) | static int
  function UsingExistingSessionsCheaperThanEstablishingNewConnections (line 2478) | static bool
  function AvgTaskExecutionTimeApproximation (line 2531) | static double
  function AvgConnectionEstablishmentTime (line 2572) | static double
  function OpenNewConnections (line 2608) | static void
  function CheckConnectionTimeout (line 2724) | static void
  function MarkEstablishingSessionsTimedOut (line 2817) | static void
  function UsableConnectionCount (line 2840) | static int
  function NextEventTimeout (line 2866) | static long
  function MillisecondsBetweenTimestamps (line 2933) | static long
  function uint64 (line 2945) | static uint64
  function ConnectionStateMachine (line 2957) | static void
  function HasUnfinishedTaskForSession (line 3262) | static bool
  function HandleMultiConnectionSuccess (line 3297) | static void
  function Activate2PCIfModifyingTransactionExpandsToNewNode (line 3352) | static void
  function TransactionModifiedDistributedTable (line 3375) | static bool
  function TransactionStateMachine (line 3393) | static void
  function UpdateConnectionWaitFlags (line 3647) | static void
  function CheckConnectionReady (line 3671) | static bool
  function TaskPlacementExecution (line 3731) | static TaskPlacementExecution *
  function TaskPlacementExecution (line 3759) | static TaskPlacementExecution *
  function TaskPlacementExecution (line 3781) | static TaskPlacementExecution *
  function StartPlacementExecutionOnSession (line 3813) | static bool
  function SendNextQuery (line 3883) | static bool
  function ReceiveResults (line 3963) | static bool
  function WorkerPoolFailed (line 4196) | static void
  function WorkerSessionFailed (line 4278) | static void
  function PlacementExecutionDone (line 4315) | static void
  function CanFailoverPlacementExecutionToLocalExecution (line 4449) | static bool
  function ScheduleNextPlacementExecution (line 4510) | static void
  function PlacementExecutionReady (line 4559) | static void
  function TaskExecutionState (line 4635) | static TaskExecutionState
  function WaitEventSet (line 4722) | static WaitEventSet *
  function FreeExecutionWaitEvents (line 4745) | static void
  function AddSessionToWaitEventSet (line 4767) | static void
  function GetEventSetSize (line 4814) | static int
  function RebuildWaitEventSetFlags (line 4826) | static void
  function CleanUpSessions (line 4876) | static void
  function UnclaimAllSessionConnections (line 4963) | static void
  function SetLocalForceMaxQueryParallelization (line 4981) | void

FILE: src/backend/distributed/executor/citus_custom_scan.c
  function IsCitusCustomState (line 140) | bool
  function RegisterCitusCustomScanMethods (line 163) | void
  function CitusBeginScan (line 179) | static void
  function CitusPreExecScan (line 249) | static void
  function TupleTableSlot (line 262) | TupleTableSlot *
  function CitusBeginReadOnlyScan (line 292) | static void
  function CitusBeginModifyScan (line 374) | static void
  function TryToRerouteFastPathModifyQuery (line 509) | static void
  function EnsureAnchorShardsInJobExist (line 528) | static void
  function AnchorShardsInTaskListExist (line 546) | static bool
  function ModifyJobNeedsEvaluation (line 566) | static bool
  function DistributedPlan (line 597) | static DistributedPlan *
  function RegenerateTaskListForInsert (line 618) | static void
  function RegenerateTaskForFasthPathQuery (line 653) | static void
  function Node (line 709) | static Node *
  function Node (line 732) | static Node *
  function Node (line 760) | static Node *
  function Node (line 776) | static Node *
  function CitusEndScan (line 795) | static void
  function CitusReScan (line 847) | static void
  function TupleDesc (line 868) | TupleDesc
  function EState (line 879) | EState *
  function CustomScan (line 890) | CustomScan *
  function IsCitusPlan (line 918) | bool
  function IsCitusCustomScan (line 938) | bool
  function SetJobColocationId (line 972) | void
  function EnsureForceDelegationDistributionKey (line 1013) | static void
  function CheckDeparseWalker (line 1064) | static bool
  function CheckQueryDeparseSafety (line 1121) | static

FILE: src/backend/distributed/executor/directed_acyclic_graph_execution.c
  type TaskHashKey (line 26) | typedef struct TaskHashKey
  type TaskHashEntry (line 38) | typedef struct TaskHashEntry
  function ExecuteTasksInDependencyOrder (line 56) | void
  function List (line 91) | static List *
  function List (line 115) | static List *
  function AddCompletedTasks (line 136) | static void
  function IsTaskAlreadyCompleted (line 154) | static bool
  function IsAllDependencyCompleted (line 169) | static bool

FILE: src/backend/distributed/executor/distributed_execution_locks.c
  function AcquireExecutorShardLocksForExecution (line 47) | void
  function RequiresConsistentSnapshot (line 281) | bool
  function AcquireMetadataLocks (line 336) | void
  function AcquireExecutorShardLocksForRelationRowLockList (line 354) | void
  function LockPartitionsInRelationList (line 411) | void
  function LockPartitionRelations (line 430) | void
  function LockPartitionsForDistributedPlan (line 452) | void

FILE: src/backend/distributed/executor/distributed_intermediate_results.c
  type PartitioningTupleDest (line 47) | typedef struct PartitioningTupleDest
  function List (line 110) | List **
  function List (line 145) | List *
  function List (line 179) | static List *
  function PartitioningTupleDest (line 245) | static PartitioningTupleDest *
  function PartitioningTupleDestPutTuple (line 276) | static void
  function TupleDesc (line 306) | static TupleDesc
  function ShardMinMaxValueArrays (line 336) | void
  function ArrayType (line 375) | ArrayType *
  function List (line 399) | static List *
  function DistributedResultFragment (line 416) | static DistributedResultFragment *
  function ExecuteSelectTasksIntoTupleDest (line 448) | static void
  function List (line 481) | static List **
  function List (line 511) | static List *
  function List (line 573) | static List *
  function ExecuteFetchTaskList (line 666) | static void

FILE: src/backend/distributed/executor/executor_util_params.c
  function ExtractParametersForRemoteExecution (line 26) | void
  function ExtractParametersFromParamList (line 40) | void

FILE: src/backend/distributed/executor/executor_util_tasks.c
  function TaskListModifiesDatabase (line 24) | bool
  function TaskListRequiresRollback (line 54) | bool
  function TaskListRequires2PC (line 123) | bool
  function TaskListCannotBeExecutedInTransaction (line 162) | bool
  function SelectForUpdateOnReferenceTable (line 182) | bool
  function ReadOnlyTask (line 211) | bool
  function ModifiedTableReplicated (line 238) | bool
  function ShouldRunTasksSequentially (line 280) | bool

FILE: src/backend/distributed/executor/executor_util_tuples.c
  function AttInMetadata (line 29) | AttInMetadata *
  function HeapTuple (line 78) | HeapTuple

FILE: src/backend/distributed/executor/insert_select_executor.c
  function TupleTableSlot (line 80) | TupleTableSlot *
  function HTAB (line 338) | static HTAB *
  function ExecutePlanIntoRelation (line 384) | static void
  function List (line 423) | List *
  function PartitionColumnIndexFromColumnList (line 444) | static int
  function DistributionColumnIndex (line 472) | int
  function WrapTaskListForProjection (line 495) | static void

FILE: src/backend/distributed/executor/intermediate_results.c
  type RemoteFileDestReceiver (line 55) | typedef struct RemoteFileDestReceiver
  type CopyStatus (line 89) | typedef enum CopyStatus
  function Datum (line 131) | Datum
  function Datum (line 172) | Datum
  function DestReceiver (line 215) | DestReceiver *
  function uint64 (line 243) | uint64
  function RemoteFileDestReceiverStartup (line 256) | static void
  function PrepareIntermediateResultBroadcast (line 287) | static void
  function StringInfo (line 374) | static StringInfo
  function RemoteFileDestReceiverReceive (line 391) | static bool
  function WriteToLocalFile (line 451) | void
  function RemoteFileDestReceiverShutdown (line 470) | static void
  function BroadcastCopyData (line 515) | static void
  function SendCopyDataOverConnection (line 530) | static void
  function RemoteFileDestReceiverDestroy (line 544) | static void
  function SendQueryResultViaCopy (line 568) | void
  function ReceiveQueryResultViaCopy (line 586) | void
  function RemoveIntermediateResultsDirectories (line 711) | void
  function int64 (line 757) | int64
  function Datum (line 788) | Datum
  function Datum (line 811) | Datum
  function ReadIntermediateResultsIntoFuncOutput (line 838) | static void
  function Datum (line 889) | Datum
  function uint64 (line 957) | static uint64
  function CopyStatus (line 1044) | static CopyStatus

FILE: src/backend/distributed/executor/local_executor.c
  function LocalExecutionStatus (line 146) | LocalExecutionStatus
  function uint64 (line 161) | uint64
  function uint64 (line 181) | uint64
  function uint64 (line 207) | uint64
  function SetColocationIdAndPartitionKeyValueForTasks (line 400) | static void
  function uint64 (line 419) | static uint64
  function ExtractParametersForLocalExecution (line 448) | void
  function LocallyExecuteUtilityTask (line 460) | static void
  function ExecuteUtilityCommand (line 497) | void
  function ExecuteUdfTaskQuery (line 540) | static void
  function LogLocalCommand (line 554) | static void
  function ExtractLocalAndRemoteTasks (line 585) | void
  function SplitLocalAndRemotePlacements (line 648) | static void
  function uint64 (line 678) | static uint64
  function uint64 (line 729) | static uint64
  function RecordNonDistTableAccessesForTask (line 816) | static void
  function SetLocalExecutionStatus (line 870) | void
  function EnsureTransitionPossible (line 883) | static void
  function ShouldExecuteTasksLocally (line 911) | bool
  function AnyTaskAccessesLocalNode (line 991) | bool
  function TaskAccessesLocalNode (line 1012) | bool
  function EnsureCompatibleLocalExecutionState (line 1034) | void
  function ErrorIfTransactionAccessedPlacementsLocally (line 1058) | void
  function DisableLocalExecution (line 1078) | void

FILE: src/backend/distributed/executor/merge_executor.c
  function TupleTableSlot (line 56) | TupleTableSlot *
  function ExecuteSourceAtWorkerAndRepartition (line 101) | static void
  function ExecuteSourceAtCoordAndRedistribution (line 236) | void
  function HTAB (line 363) | static HTAB *

FILE: src/backend/distributed/executor/multi_executor.c
  function CitusExecutorStart (line 113) | void
  function CitusExecutorRun (line 156) | void
  function List (line 313) | static List *
  function CitusCustomScanStateWalker (line 326) | static bool
  function TupleTableSlot (line 347) | TupleTableSlot *
  function ReadFileIntoTupleStore (line 446) | void
  function SortTupleStore (line 505) | void
  function Relation (line 601) | static Relation
  function ExecuteQueryStringIntoDestReceiver (line 617) | void
  function Query (line 630) | Query *
  function Query (line 646) | Query *
  function ExecuteQueryIntoDestReceiver (line 669) | void
  function uint64 (line 691) | uint64
  function SetLocalMultiShardModifyModeToSequential (line 750) | void
  function EnsureSequentialMode (line 767) | void
  function AlterTableConstraintCheck (line 893) | static bool
  function ParamListInfo (line 929) | ParamListInfo
  function EnsureTaskExecutionAllowed (line 943) | void
  function IsTaskExecutionAllowed (line 970) | static bool
  function InLocalTaskExecutionOnShard (line 1021) | static bool
  function MaybeInRemoteTaskExecution (line 1054) | static bool
  function InTrigger (line 1076) | static bool

FILE: src/backend/distributed/executor/multi_server_executor.c
  function MultiExecutorType (line 48) | MultiExecutorType

FILE: src/backend/distributed/executor/partitioned_intermediate_results.c
  type PartitionedResultDestReceiver (line 47) | typedef struct PartitionedResultDestReceiver
  function Datum (line 115) | Datum
  function Portal (line 305) | static Portal
  function CitusTableCacheEntry (line 339) | CitusTableCacheEntry *
  function DestReceiver (line 428) | DestReceiver *
  function PartitionedResultDestReceiverStartup (line 463) | static void
  function PartitionedResultDestReceiverReceive (line 493) | static bool
  function PartitionedResultDestReceiverShutdown (line 561) | static void
  function PartitionedResultDestReceiverDestroy (line 583) | static void

FILE: src/backend/distributed/executor/placement_access.c
  function List (line 25) | List *
  function List (line 101) | static List *
  function List (line 111) | static List *
  function List (line 122) | static List *
  function ShardPlacementAccess (line 151) | ShardPlacementAccess *

FILE: src/backend/distributed/executor/repartition_executor.c
  function IsSupportedRedistributionTarget (line 34) | bool
  function IsRedistributablePlan (line 52) | bool
  function HasMergeNotMatchedBySource (line 111) | bool
  function List (line 144) | List *
  function AdjustTaskQueryForEmptySource (line 245) | void
  function List (line 300) | List *

FILE: src/backend/distributed/executor/repartition_join_execution.c
  function List (line 58) | List *
  function List (line 74) | static List *
  function TraverseJobTree (line 87) | static void

FILE: src/backend/distributed/executor/subplan_execution.c
  function ExecuteSubPlans (line 47) | void

FILE: src/backend/distributed/executor/transmit.c
  function RedirectCopyDataToRegularFile (line 47) | void
  function SendRegularFile (line 87) | void
  function FreeStringInfo (line 128) | static void
  function File (line 142) | File
  function File (line 154) | File
  function SendCopyInStart (line 184) | static void
  function SendCopyOutStart (line 208) | static void
  function SendCopyDone (line 222) | static void
  function SendCopyData (line 240) | static void
  function ReceiveCopyData (line 259) | static bool

FILE: src/backend/distributed/executor/tuple_destination.c
  type TupleStoreTupleDestination (line 22) | typedef struct TupleStoreTupleDestination
  type TupleDestDestReceiver (line 37) | typedef struct TupleDestDestReceiver
  function TupleDestination (line 72) | TupleDestination *
  function TupleStoreTupleDestPutTuple (line 96) | static void
  function EnsureIntermediateSizeLimitNotExceeded (line 138) | static void
  function TupleDesc (line 183) | static TupleDesc
  function TupleDestination (line 197) | TupleDestination *
  function TupleDestNonePutTuple (line 213) | static void
  function TupleDesc (line 226) | static TupleDesc
  function DestReceiver (line 237) | DestReceiver *
  function TupleDestDestReceiverStartup (line 258) | static void
  function TupleDestDestReceiverReceive (line 270) | static bool
  function TupleDestDestReceiverShutdown (line 300) | static void
  function TupleDestDestReceiverDestroy (line 311) | static void

FILE: src/backend/distributed/metadata/dependency.c
  type ObjectAddressCollector (line 65) | typedef struct ObjectAddressCollector
  type DependencyMode (line 77) | typedef enum DependencyMode
  type DependencyDefinition (line 84) | typedef struct DependencyDefinition
  type ViewDependencyNode (line 125) | typedef struct ViewDependencyNode
  type List (line 161) | typedef List *(*expandFn)(ObjectAddressCollector *collector, ObjectAddre...
  function List (line 204) | List *
  function List (line 231) | List *
  function List (line 257) | List *
  function List (line 283) | List *
  function List (line 303) | List *
  function List (line 331) | List *
  function RecurseObjectDependencies (line 380) | static void
  function List (line 435) | static List *
  function List (line 477) | static List *
  function InitObjectAddressCollector (line 538) | static void
  function TargetObjectVisited (line 555) | static bool
  function MarkObjectVisited (line 571) | static void
  function CollectObjectAddress (line 592) | static void
  function IsObjectAddressCollected (line 617) | static bool
  function SupportedDependencyByCitus (line 634) | bool
  function ErrorOrWarnIfObjectHasUnsupportedDependency (line 815) | static bool
  function ErrorOrWarnIfAnyObjectHasUnsupportedDependency (line 869) | bool
  function DeferredErrorMessage (line 889) | static DeferredErrorMessage *
  function DeferredErrorMessage (line 961) | DeferredErrorMessage *
  function ObjectAddress (line 983) | static ObjectAddress *
  function IsTableOwnedByExtension (line 1075) | bool
  function ObjectAddressDependsOnExtension (line 1090) | bool
  function IsObjectAddressOwnedByExtension (line 1106) | static bool
  function ObjectAddressHasExtensionDependency (line 1123) | static bool
  function IsAnyObjectAddressOwnedByExtension (line 1171) | bool
  function ObjectAddress (line 1194) | ObjectAddress *
  function IsObjectAddressOwnedByCitus (line 1233) | bool
  function FollowNewSupportedDependencies (line 1265) | static bool
  function FollowAllSupportedDependencies (line 1337) | static bool
  function FollowAllDependencies (line 1398) | static bool
  function FollowExtAndInternalDependencies (line 1447) | static bool
  function ApplyAddToDependencyList (line 1483) | static void
  function ApplyAddCitusDependedObjectsToDependencyList (line 1513) | static void
  function List (line 1537) | static List *
  function List (line 1745) | static List *
  function List (line 1777) | static List *
  function List (line 1805) | static List *
  function List (line 1844) | static List *
  function List (line 1902) | static List *
  function List (line 1926) | static List *
  function List (line 1941) | static List *
  function CollectIndexOids (line 1953) | static void
  function List (line 1964) | static List *
  function List (line 1976) | static List *
  function List (line 2000) | static List *
  function List (line 2026) | static List *
  function DependencyDefinition (line 2070) | static DependencyDefinition *
  function List (line 2085) | static List *
  function ObjectAddress (line 2105) | static ObjectAddress
  function ViewDependencyNode (line 2142) | static ViewDependencyNode *
  function List (line 2187) | List *
  function List (line 2229) | List *
  function Oid (line 2279) | Oid

FILE: src/backend/distributed/metadata/distobject.c
  function Datum (line 73) | Datum
  function Datum (line 106) | Datum
  function Datum (line 157) | Datum
  function ObjectExists (line 172) | bool
  function MarkObjectDistributed (line 209) | void
  function MarkObjectDistributedWithName (line 223) | void
  function MarkObjectDistributedViaSuperUser (line 270) | void
  function MarkObjectDistributedLocally (line 291) | void
  function ShouldMarkRelationDistributed (line 321) | bool
  function CitusExtensionObject (line 396) | bool
  function ExecuteCommandAsSuperuser (line 421) | static int
  function UnmarkNodeWideObjectsDistributed (line 459) | void
  function UnmarkObjectDistributed (line 493) | void
  function IsObjectDistributed (line 524) | static bool
  function IsAnyObjectDistributed (line 560) | bool
  function IsAnyParentObjectDistributed (line 585) | bool
  function List (line 612) | List *
  function RoleSpec (line 644) | RoleSpec *
  function UpdateDistributedObjectColocationId (line 661) | void
  function List (line 715) | List *
  function List (line 753) | List *
  function GetForceDelegationAttrIndexInPgDistObject (line 801) | int

FILE: src/backend/distributed/metadata/metadata_cache.c
  type CitusTableCacheEntrySlot (line 100) | typedef struct CitusTableCacheEntrySlot
  type ShardIdCacheEntry (line 121) | typedef struct ShardIdCacheEntry
  type ExtensionCreatedState (line 140) | typedef enum ExtensionCreatedState
  type MetadataCacheData (line 151) | typedef struct MetadataCacheData
  function EnsureModificationsCanRun (line 364) | void
  function EnsureModificationsCanRunOnRelation (line 388) | void
  function IsCitusTableType (line 450) | bool
  function CitusTableType (line 473) | CitusTableType
  function IsCitusTableTypeCacheEntry (line 514) | bool
  function IsFirstShard (line 526) | bool
  function HasDistributionKey (line 552) | bool
  function HasDistributionKeyCacheEntry (line 569) | bool
  function IsCitusTableTypeInternal (line 580) | static bool
  function IsCitusTable (line 686) | bool
  function IsCitusTableRangeVar (line 709) | bool
  function IsCitusTableViaCatalog (line 729) | bool
  function PartitionMethodViaCatalog (line 748) | char
  function Var (line 792) | Var *
  function uint32 (line 841) | uint32
  function HeapTuple (line 887) | static HeapTuple
  function IsReferenceTableByDistParams (line 922) | bool
  function IsCitusLocalTableByDistParams (line 934) | bool
  function IsSingleShardTableByDistParams (line 949) | bool
  function List (line 963) | List *
  function ShardInterval (line 991) | ShardInterval *
  function ShardExists (line 1016) | bool
  function Oid (line 1034) | Oid
  function ReferenceTableShardId (line 1048) | bool
  function DistributedTableShardId (line 1062) | bool
  function GroupShardPlacement (line 1083) | GroupShardPlacement *
  function ShardPlacement (line 1119) | ShardPlacement *
  function ShardPlacement (line 1141) | ShardPlacement *
  function ShardPlacement (line 1175) | ShardPlacement *
  function ShardPlacement (line 1192) | static ShardPlacement *
  function HasAnyNodes (line 1240) | bool
  function WorkerNode (line 1253) | WorkerNode *
  function WorkerNode (line 1278) | WorkerNode *
  function WorkerNode (line 1296) | WorkerNode *
  function List (line 1357) | List *
  function InitializeTableCacheEntry (line 1406) | static bool
  function RefreshTableCacheEntryIfInvalid (line 1429) | static bool
  function ShardIdCacheEntry (line 1462) | static ShardIdCacheEntry *
  function CitusTableCacheEntry (line 1516) | CitusTableCacheEntry *
  function CitusTableCacheEntry (line 1548) | CitusTableCacheEntry *
  function DistObjectCacheEntry (line 1662) | DistObjectCacheEntry *
  function CitusTableCacheEntry (line 1774) | static CitusTableCacheEntry *
  function BuildCachedShardList (line 1914) | static void
  function ErrorIfInconsistentShardIntervals (line 2116) | void
  function HasUniformHashDistribution (line 2142) | bool
  function HasUninitializedShardInterval (line 2183) | bool
  function HasOverlappingShardInterval (line 2213) | bool
  function CitusHasBeenLoaded (line 2260) | bool
  function CitusHasBeenLoadedInternal (line 2322) | static bool
  function GetCitusCreationLevel (line 2346) | int
  function SetCreateCitusTransactionLevel (line 2357) | void
  function CheckCitusVersion (line 2372) | bool
  function CheckAvailableVersion (line 2400) | bool
  function CheckInstalledVersion (line 2432) | static bool
  function InstalledAndAvailableVersionsSame (line 2460) | bool
  function MajorVersionsCompatible (line 2480) | bool
  function ParseVersionComponent (line 2522) | static int
  function MinorVersionsCompatibleRelaxed (line 2544) | bool
  function Oid (line 2700) | Oid
  function Oid (line 2711) | Oid
  function Oid (line 2722) | Oid
  function Oid (line 2733) | Oid
  function Oid (line 2744) | Oid
  function Oid (line 2754) | Oid
  function Oid (line 2764) | Oid
  function Oid (line 2774) | Oid
  function Oid (line 2784) | Oid
  function Oid (line 2794) | Oid
  function Oid (line 2804) | Oid
  function Oid (line 2814) | Oid
  function Oid (line 2824) | Oid
  function Oid (line 2834) | Oid
  function Oid (line 2844) | Oid
  function Oid (line 2854) | Oid
  function Oid (line 2864) | Oid
  function Oid (line 2875) | Oid
  function Oid (line 2886) | Oid
  function Oid (line 2895) | Oid
  function Oid (line 2935) | Oid
  function Oid (line 2976) | Oid
  function Oid (line 2987) | Oid
  function Oid (line 2998) | Oid
  function Oid (line 3009) | Oid
  function Oid (line 3020) | Oid
  function Oid (line 3031) | Oid
  function Oid (line 3042) | Oid
  function Oid (line 3053) | Oid
  function Oid (line 3064) | Oid
  function Oid (line 3075) | Oid
  function Oid (line 3086) | Oid
  function Oid (line 3097) | Oid
  function Oid (line 3108) | Oid
  function Oid (line 3119) | Oid
  function Oid (line 3130) | Oid
  function Oid (line 3141) | Oid
  function Oid (line 3152) | Oid
  function Oid (line 3163) | Oid
  function Oid (line 3174) | static Oid
  function Oid (line 3185) | static Oid
  function Oid (line 3196) | static Oid
  function Oid (line 3207) | static Oid
  function Oid (line 3218) | Oid
  function Oid (line 3238) | Oid
  function Oid (line 3258) | Oid
  function Oid (line 3275) | Oid
  function Oid (line 3289) | Oid
  function Oid (line 3303) | Oid
  function Oid (line 3322) | Oid
  function Oid (line 3337) | Oid
  function Oid (line 3355) | Oid
  function Oid (line 3375) | Oid
  function Oid (line 3393) | Oid
  function Oid (line 3411) | Oid
  function Oid (line 3429) | Oid
  function Oid (line 3482) | extern Oid
  function Oid (line 3565) | Oid
  function Oid (line 3592) | static Oid
  function Oid (line 3612) | static Oid
  function Oid (line 3625) | Oid
  function Oid (line 3638) | Oid
  function Oid (line 3652) | Oid
  function Oid (line 3665) | Oid
  function Oid (line 3678) | Oid
  function Oid (line 3691) | Oid
  function Oid (line 3704) | Oid
  function Oid (line 3717) | Oid
  function Oid (line 3730) | Oid
  function Oid (line 3743) | Oid
  function Oid (line 3756) | Oid
  function Oid (line 3769) | Oid
  function Oid (line 3782) | Oid
  function Oid (line 3795) | Oid
  function Oid (line 3808) | Oid
  function Oid (line 3821) | Oid
  function Oid (line 3834) | Oid
  function Oid (line 3847) | Oid
  function Datum (line 3868) | Datum
  function Datum (line 3930) | Datum
  function Datum (line 3945) | Datum
  function Datum (line 4007) | Datum
  function Datum (line 4022) | Datum
  function Datum (line 4096) | Datum
  function Datum (line 4111) | Datum
  function Datum (line 4131) | Datum
  function Datum (line 4146) | Datum
  function Datum (line 4166) | Datum
  function Datum (line 4181) | Datum
  function Datum (line 4201) | Datum
  function Datum (line 4216) | Datum
  function Datum (line 4236) | Datum
  function InitializeCaches (line 4247) | static void
  function InitializeDistCache (line 4310) | static void
  function InitializeDistObjectCache (line 4341) | static void
  function HTAB (line 4382) | HTAB *
  function PrepareWorkerNodeCache (line 4395) | static void
  function InitializeWorkerNodeCache (line 4426) | static void
  function RegisterForeignKeyGraphCacheCallbacks (line 4517) | static void
  function RegisterWorkerNodeCacheCallbacks (line 4531) | static void
  function RegisterCitusTableCacheEntryReleaseCallbacks (line 4544) | static void
  function int32 (line 4556) | int32
  function int32 (line 4620) | int32
  function RegisterLocalGroupIdCacheCallbacks (line 4680) | static void
  function RegisterAuthinfoCacheCallbacks (line 4693) | static void
  function ResetCitusTableCacheEntry (line 4705) | static void
  function RemoveStaleShardIdCacheEntries (line 4813) | static void
  function InvalidateForeignRelationGraphCacheCallback (line 4841) | static void
  function InvalidateForeignKeyGraph (line 4866) | void
  function InvalidateDistRelationCacheCallback (line 4889) | void
  function InvalidateCitusTableCacheEntrySlot (line 4943) | static void
  function InvalidateDistTableCache (line 4963) | static void
  function InvalidateDistObjectCache (line 4986) | static void
  function FlushDistTableCache (line 5010) | void
  function CreateDistTableCache (line 5031) | static void
  function CreateShardIdCache (line 5047) | static void
  function CreateDistObjectCache (line 5063) | static void
  function InvalidateMetadataSystemCache (line 5082) | void
  function List (line 5097) | List *
  function List (line 5112) | List *
  function InvalidateNodeRelationCacheCallback (line 5174) | static void
  function InvalidateLocalGroupIdRelationCacheCallback (line 5189) | static void
  function InvalidateConnParamsCacheCallback (line 5204) | static void
  function CitusTableCacheFlushInvalidatedEntries (line 5229) | void
  function CitusTableCacheEntryReleaseCallback (line 5248) | static void
  function HeapTuple (line 5263) | static HeapTuple
  function List (line 5295) | List *
  function Oid (line 5335) | Oid
  function GetPartitionTypeInputInfo (line 5379) | static void
  function GetIntervalTypeInfo (line 5427) | void
  function ShardInterval (line 5469) | ShardInterval *
  function ShardInterval (line 5495) | ShardInterval *
  function CachedNamespaceLookup (line 5561) | static void
  function CachedRelationLookup (line 5585) | static void
  function CachedRelationLookupExtended (line 5597) | static void
  function CachedRelationNamespaceLookup (line 5605) | static void
  function CachedRelationNamespaceLookupExtended (line 5613) | static void
  function RelationExists (line 5637) | bool
  function CitusInvalidateRelcacheByRelid (line 5661) | void
  function CitusInvalidateRelcacheByShardId (line 5678) | void
  function Datum (line 5738) | Datum
  function Datum (line 5789) | Datum
  function Datum (line 5933) | Datum
  function Datum (line 5950) | Datum

FILE: src/backend/distributed/metadata/metadata_sync.c
  function Datum (line 202) | Datum
  function Datum (line 239) | Datum
  function SyncCitusTableMetadata (line 275) | void
  function CreateDependingViewsOnWorkers (line 298) | static void
  function AddTableToPublications (line 339) | static void
  function EnsureSequentialModeMetadataOperations (line 391) | void
  function Datum (line 428) | Datum
  function ClusterHasKnownMetadataWorkers (line 494) | bool
  function ShouldSyncUserCommandForObject (line 505) | bool
  function ShouldSyncTableMetadata (line 525) | bool
  function ShouldSyncTableMetadataViaCatalog (line 554) | bool
  function Oid (line 573) | Oid
  function ShouldSyncTableMetadataInternal (line 601) | static bool
  function ShouldSyncSequenceMetadata (line 612) | bool
  function SyncNodeMetadataSnapshotToNode (line 635) | static bool
  function DropMetadataSnapshotOnNode (line 685) | static void
  function List (line 732) | List *
  function List (line 755) | List *
  function List (line 782) | List *
  function Datum (line 1013) | Datum
  function EnsureObjectMetadataIsSane (line 1084) | static void
  function List (line 1211) | List *
  function List (line 1349) | List *
  function List (line 1471) | List *
  function Oid (line 1507) | Oid
  function GetDependentSequencesWithRelation (line 1555) | void
  function List (line 1667) | List *
  function List (line 1723) | List *
  function List (line 1768) | List *
  function List (line 1810) | List *
  function List (line 1876) | static List *
  function List (line 1926) | List *
  function List (line 1965) | List *
  function Datum (line 2035) | Datum
  function List (line 2106) | List *
  function List (line 2141) | List *
  function List (line 2182) | List *
  function List (line 2216) | List *
  function GrantStmt (line 2271) | static GrantStmt *
  function List (line 2297) | static List *
  function List (line 2356) | List *
  function List (line 2393) | List *
  function List (line 2430) | List *
  function List (line 2470) | List *
  function List (line 2525) | List *
  function AccessPriv (line 2565) | static AccessPriv *
  function List (line 2580) | static List *
  function List (line 2616) | static List *
  function SetLocalEnableMetadataSync (line 2666) | void
  function TableDDLCommand (line 2689) | TableDDLCommand *
  function HasMetadataWorkers (line 2737) | static bool
  function CreateInterTableRelationshipOfRelationOnWorkers (line 2759) | void
  function List (line 2787) | List *
  function CreateShellTableOnWorkers (line 2809) | static void
  function CreateTableMetadataOnWorkers (line 2850) | static void
  function List (line 2876) | List *
  function NodeMetadataSyncResult (line 2926) | static NodeMetadataSyncResult
  function SyncNodeMetadataToNodes (line 2995) | void
  function SyncNodeMetadataToNodesMain (line 3031) | void
  function MetadataSyncSigTermHandler (line 3125) | static void
  function MetadataSyncSigAlrmHandler (line 3144) | static void
  function BackgroundWorkerHandle (line 3163) | BackgroundWorkerHandle *
  function SignalMetadataSyncDaemon (line 3193) | void
  function ShouldInitiateMetadataSync (line 3220) | bool
  function Datum (line 3260) | Datum
  function EnsurePartitionMetadataIsSane (line 3340) | static void
  function Datum (line 3404) | Datum
  function Datum (line 3433) | Datum
  function EnsureCitusInitiatedOperation (line 3489) | static void
  function EnsureShardMetadataIsSane (line 3505) | static void
  function Datum (line 3643) | Datum
  function Datum (line 3664) | Datum
  function Datum (line 3685) | Datum
  function citus_internal_add_placement_metadata_internal (line 3705) | void
  function EnsureShardPlacementMetadataIsSane (line 3740) | static void
  function ShouldSkipMetadataChecks (line 3770) | static bool
  function Datum (line 3803) | Datum
  function Datum (line 3870) | Datum
  function Datum (line 3910) | Datum
  function Datum (line 3974) | Datum
  function Datum (line 4003) | Datum
  function Datum (line 4030) | Datum
  function Datum (line 4055) | Datum
  function Datum (line 4074) | Datum
  function Datum (line 4108) | Datum
  function SyncNewColocationGroupToNodes (line 4170) | void
  function SyncDeleteColocationGroupToNodes (line 4351) | void
  function SetMetadataSyncNodesFromNodeList (line 4515) | void
  function EstablishAndSetMetadataSyncBareConnections (line 4552) | void
  function MetadataSyncContext (line 4589) | MetadataSyncContext *
  function ResetMetadataSyncMemoryContext (line 4633) | void
  function MetadataSyncCollectsCommands (line 4647) | bool
  function SendOrCollectCommandListToActivatedNodes (line 4660) | void
  function SendOrCollectCommandListToMetadataNodes (line 4708) | void
  function SendOrCollectCommandListToSingleNode (line 4750) | void
  function List (line 4831) | static List *
  function SyncDistributedObjects (line 4866) | void
  function SendNodeWideObjectsSyncCommands (line 4926) | void
  function SendShellTableDeletionCommands (line 4948) | void
  function SendMetadataDeletionCommands (line 4967) | void
  function SendColocationMetadataCommands (line 4996) | void
  function SendTenantSchemaMetadataCommands (line 5137) | void
  function SendDependencyCreationCommands (line 5184) | void
  function SendDistTableMetadataCommands (line 5253) | void
  function SendDistObjectCommands (line 5302) | void
  function SendInterTableRelationshipCommands (line 5394) | void

FILE: src/backend/distributed/metadata/metadata_utility.c
  function HeapTuple (line 145) | static HeapTuple
  function Datum (line 168) | Datum
  function GetLocalDiskSpaceStats (line 199) | static bool
  function GetNodeDiskSpaceStatsForConnection (line 224) | bool
  function Datum (line 263) | Datum
  function Datum (line 289) | Datum
  function Datum (line 314) | Datum
  function Datum (line 341) | Datum
  function List (line 366) | List *
  function List (line 415) | static List *
  function List (line 439) | static List *
  function ReceiveShardIdAndSizeResults (line 460) | static void
  function DistributedRelationSize (line 520) | static bool
  function DistributedRelationSizeOnWorker (line 586) | static bool
  function List (line 686) | List *
  function List (line 721) | static List *
  function StringInfo (line 768) | StringInfo
  function AppendShardIdNameValues (line 1025) | static void
  function ErrorIfNotSuitableToGetSize (line 1046) | static void
  function CompareShardPlacementsByWorker (line 1085) | int
  function CompareShardPlacementsByGroupId (line 1114) | int
  function uint32 (line 1141) | uint32
  function List (line 1198) | List *
  function List (line 1223) | List *
  function ShardInterval (line 1258) | ShardInterval *
  function ShardIntervalCount (line 1286) | int
  function List (line 1302) | List *
  function uint64 (line 1321) | static uint64 *
  function ShardInterval (line 1336) | ShardInterval *
  function uint64 (line 1377) | uint64
  function NodeGroupHasShardPlacements (line 1401) | bool
  function IsActiveShardPlacement (line 1435) | bool
  function IsRemoteShardPlacement (line 1456) | bool
  function IsPlacementOnWorkerNode (line 1467) | bool
  function List (line 1482) | List *
  function List (line 1504) | List *
  function List (line 1529) | List *
  function List (line 1554) | List *
  function List (line 1569) | List *
  function ShardPlacement (line 1584) | ShardPlacement *
  function WorkerNode (line 1612) | WorkerNode *
  function List (line 1637) | List *
  function List (line 1680) | List *
  function GroupShardPlacement (line 1723) | static GroupShardPlacement *
  function LookupTaskPlacementHostAndPort (line 1759) | void
  function IsDummyPlacement (line 1790) | bool
  function InsertShardRow (line 1802) | void
  function ShardPlacement (line 1852) | ShardPlacement *
  function uint64 (line 1872) | uint64
  function InsertIntoPgDistPartition (line 1913) | void
  function RecordDistributedRelationDependencies (line 1982) | static void
  function DeletePartitionRow (line 2006) | void
  function DeleteShardRow (line 2046) | void
  function DeleteShardPlacementRowGlobally (line 2088) | void
  function DeleteShardPlacementRow (line 2103) | void
  function UpdatePlacementGroupId (line 2151) | void
  function UpdatePgDistPartitionAutoConverted (line 2209) | void
  function UpdateDistributionColumnGlobally (line 2263) | void
  function UpdateDistributionColumn (line 2288) | void
  function UpdateNoneDistTableMetadataGlobally (line 2357) | void
  function UpdateNoneDistTableMetadata (line 2380) | void
  function EnsureTablePermissions (line 2454) | void
  function EnsureTableOwner (line 2482) | void
  function EnsureSchemaOwner (line 2497) | void
  function EnsureFunctionOwner (line 2513) | void
  function EnsureHashDistributedTable (line 2528) | void
  function EnsureHashOrSingleShardDistributedTable (line 2544) | void
  function EnsureSuperUser (line 2561) | void
  function Oid (line 2572) | Oid
  function IsForeignTable (line 2603) | bool
  function HasRunnableBackgroundTask (line 2620) | bool
  function BackgroundJobStatus (line 2679) | BackgroundJobStatus
  function BackgroundTaskStatus (line 2718) | BackgroundTaskStatus
  function IsBackgroundJobStatusTerminal (line 2764) | bool
  function IsBackgroundTaskStatusTerminal (line 2794) | bool
  function Oid (line 2825) | Oid
  function Oid (line 2874) | Oid
  function int64 (line 2932) | static int64
  function int64 (line 2946) | static int64
  function HasNonTerminalJobOfType (line 2962) | bool
  function int64 (line 3032) | int64
  function BackgroundTask (line 3087) | BackgroundTask *
  function ResetRunningBackgroundTasks (line 3262) | void
  function BackgroundJob (line 3397) | static BackgroundJob *
  function BackgroundTask (line 3445) | static BackgroundTask *
  function BackgroundTaskHasUmnetDependencies (line 3509) | static bool
  function BackgroundTaskReadyToRun (line 3570) | static bool
  function BackgroundTask (line 3599) | BackgroundTask *
  function BackgroundJob (line 3654) | BackgroundJob *
  function BackgroundTask (line 3690) | BackgroundTask *
  type JobTaskStatusCounts (line 3723) | typedef struct JobTaskStatusCounts
  function JobTaskStatusCounts (line 3741) | static JobTaskStatusCounts
  function SetFieldValue (line 3853) | static bool
  function SetFieldText (line 3889) | static bool
  function SetFieldNull (line 3930) | static bool
  function UpdateBackgroundJob (line 3963) | void
  function UpdateBackgroundTask (line 4086) | void
  function List (line 4197) | static List *
  function List (line 4252) | List *
  function UnscheduleDependentTasks (line 4348) | void
  function UnblockDependingBackgroundTasks (line 4420) | void
  function GetAutoConvertedAttrIndexInPgDistPartition (line 4482) | int
  function GetNodesInvolvedAttrIndexInPgDistBackgroundTask (line 4502) | int

FILE: src/backend/distributed/metadata/node_metadata.c
  type NodeMetadata (line 79) | typedef struct NodeMetadata
  function NodeMetadata (line 188) | static NodeMetadata
  function Datum (line 209) | Datum
  function EnsureTransactionalMetadataSyncMode (line 276) | static void
  function Datum (line 292) | Datum
  function Datum (line 365) | Datum
  function Datum (line 377) | Datum
  function Datum (line 419) | Datum
  function Datum (line 430) | Datum
  function Datum (line 470) | Datum
  function Datum (line 486) | Datum
  function Datum (line 504) | Datum
  function Datum (line 523) | Datum
  function BlockDistributedQueriesOnMetadataNodes (line 665) | static void
  function Datum (line 691) | Datum
  function Datum (line 701) | Datum
  function Datum (line 740) | Datum
  function WorkerNode (line 751) | WorkerNode *
  function Datum (line 774) | Datum
  function Datum (line 813) | Datum
  function uint32 (line 825) | uint32
  function NodeIsPrimaryAndRemote (line 843) | bool
  function NodeIsPrimary (line 853) | bool
  function NodeIsLocal (line 871) | static bool
  function NodeIsSecondary (line 881) | bool
  function NodeIsReadable (line 900) | bool
  function WorkerNode (line 925) | WorkerNode *
  function MarkNodesNotSyncedInLoopBackConnection (line 962) | static void
  function SetNodeMetadata (line 1032) | static void
  function ActivateNodeList (line 1082) | void
  function ActivateCloneNodeAsPrimary (line 1198) | void
  function LockShardsInWorkerPlacementList (line 1237) | void
  function BackgroundWorkerHandle (line 1249) | BackgroundWorkerHandle *
  function BackgroundWorkerHandle (line 1307) | BackgroundWorkerHandle *
  function Datum (line 1330) | Datum
  function Datum (line 1444) | Datum
  function Datum (line 1469) | Datum
  function Datum (line 1479) | Datum
  function Datum (line 1517) | Datum
  function int32 (line 1550) | static int32
  function Datum (line 1684) | Datum
  function Datum (line 1713) | Datum
  function RemoveCloneNode (line 1735) | static void
  function SetLockTimeoutLocally (line 1779) | static void
  function UpdateNodeLocation (line 1788) | static void
  function Datum (line 1859) | Datum
  function Datum (line 1940) | Datum
  function Datum (line 1961) | Datum
  function Datum (line 1982) | Datum
  function Datum (line 2004) | Datum
  function Datum (line 2026) | Datum
  function EnsureParentSessionHasExclusiveLockOnPgDistNode (line 2055) | static void
  function Datum (line 2097) | Datum
  function WorkerNode (line 2154) | WorkerNode *
  function WorkerNode (line 2188) | WorkerNode *
  function WorkerNode (line 2206) | WorkerNode *
  function WorkerNode (line 2229) | WorkerNode *
  function WorkerNode (line 2252) | WorkerNode *
  function FindCoordinatorNodeId (line 2279) | int
  function List (line 2306) | List *
  function RemoveNodeFromCluster (line 2354) | static void
  function ErrorIfNodeContainsNonRemovablePlacements (line 2407) | static void
  function PlacementHasActivePlacementOnAnotherGroup (line 2445) | static bool
  function uint32 (line 2467) | uint32
  function AddNodeMetadata (line 2499) | static int
  function AddNodeMetadataViaMetadataContext (line 2656) | static int
  function WorkerNode (line 2745) | WorkerNode *
  function SetNodeStateViaMetadataContext (line 2766) | static void
  function WorkerNode (line 2792) | WorkerNode *
  function WorkerNode (line 2843) | WorkerNode *
  function ErrorIfCoordinatorMetadataSetFalse (line 2976) | static void
  function WorkerNode (line 2994) | static WorkerNode *
  function HeapTuple (line 3008) | static HeapTuple
  function HeapTuple (line 3041) | static HeapTuple
  function int32 (line 3082) | int32
  function GetNextNodeId (line 3114) | int
  function EnsureCoordinator (line 3141) | void
  function EnsurePropagationToCoordinator (line 3163) | void
  function EnsureCoordinatorIsInMetadata (line 3177) | void
  function InsertCoordinatorIfClusterEmpty (line 3207) | void
  function InsertPlaceholderCoordinatorRecord (line 3234) | static void
  function InsertNodeRow (line 3260) | static void
  function DeleteNodeRow (line 3311) | static void
  function WorkerNode (line 3380) | static WorkerNode *
  function GetNodePrimaryNodeIdAttrIndexInPgDistNode (line 3464) | static int
  function GetNodeIsCloneAttrIndexInPgDistNode (line 3485) | static int
  function Datum (line 3497) | Datum
  function UnsetMetadataSyncedForAllWorkers (line 3533) | static bool
  function ErrorIfAnyNodeNotExist (line 3612) | static void
  function UpdateLocalGroupIdsViaMetadataContext (line 3638) | static void
  function SendDeletionCommandsForReplicatedTablePlacements (line 3661) | static void
  function SyncNodeMetadata (line 3683) | static void

FILE: src/backend/distributed/metadata/pg_get_object_address_16_17_18.c
  function ObjectAddress (line 54) | ObjectAddress
  function ErrorIfCurrentUserCanNotDistributeObject (line 397) | static void
  function List (line 450) | static List *

FILE: src/backend/distributed/operations/citus_create_restore_point.c
  function Datum (line 83) | Datum
  function List (line 182) | static List *
  function BlockDistributedTransactions (line 212) | static void
  function BlockDistributedTransactionsOnAllMetadataNodes (line 234) | static void
  function CreateRemoteRestorePoints (line 308) | static void

FILE: src/backend/distributed/operations/citus_split_shard_by_split_points.c
  function Datum (line 41) | Datum
  function SplitMode (line 77) | SplitMode

FILE: src/backend/distributed/operations/citus_tools.c
  function Datum (line 71) | Datum
  function ParseCommandParameters (line 156) | static int
  function ExecuteCommandsInParallelAndStoreResults (line 215) | static void
  function GetConnectionStatusAndResult (line 382) | static bool
  function ExecuteCommandsAndStoreResults (line 430) | static void
  function ExecuteOptionalSingleResultCommand (line 483) | static bool
  function Tuplestorestate (line 518) | static Tuplestorestate *

FILE: src/backend/distributed/operations/create_shards.c
  function Datum (line 66) | Datum
  function CreateShardsWithRoundRobinPolicy (line 82) | void
  function CreateColocatedShards (line 219) | void
  function CreateReferenceTableShard (line 324) | void
  function CreateSingleShardTableShardWithRoundRobinPolicy (line 400) | void
  function EmptySingleShardTableColocationDecideNodeId (line 459) | int
  function CheckHashPartitionedTable (line 480) | void
  function text (line 493) | text *

FILE: src/backend/distributed/operations/delete_protocol.c
  function Datum (line 97) | Datum
  function Datum (line 111) | Datum
  function Datum (line 155) | Datum
  function Datum (line 187) | Datum
  function CheckTableSchemaNameForDrop (line 200) | void
  function DropShards (line 228) | static int
  function List (line 343) | static List *
  function ExecuteDropShardPlacementCommandRemotely (line 391) | static void

FILE: src/backend/distributed/operations/health_check.c
  function Datum (line 44) | Datum
  function CheckConnectionToNode (line 60) | static bool
  function Datum (line 76) | Datum
  function StoreAllConnectivityChecks (line 105) | static void

FILE: src/backend/distributed/operations/isolate_shards.c
  function Datum (line 56) | Datum
  function Datum (line 193) | Datum

FILE: src/backend/distributed/operations/modify_multiple_shards.c
  function Datum (line 67) | Datum

FILE: src/backend/distributed/operations/node_promotion.c
  function Datum (line 43) | Datum
  function PromoteCloneNode (line 245) | static void
  function BlockAllWritesToWorkerNode (line 288) | static void
  function GetNodeIsInRecoveryStatus (line 321) | static bool
  function EnsureSingleNodePromotion (line 396) | static void

FILE: src/backend/distributed/operations/node_protocol.c
  function Datum (line 106) | Datum
  function Datum (line 120) | Datum
  function Datum (line 199) | Datum
  function uint64 (line 220) | uint64
  function Datum (line 269) | Datum
  function uint64 (line 292) | uint64
  function Datum (line 337) | Datum
  function Datum (line 350) | Datum
  function Datum (line 363) | Datum
  function Datum (line 376) | Datum
  function Datum (line 438) | Datum
  function Oid (line 446) | Oid
  function List (line 471) | List *
  function List (line 526) | List *
  function List (line 579) | List *
  function List (line 612) | List *
  function List (line 686) | List *
  function List (line 699) | List *
  function GatherIndexAndConstraintDefinitionListExcludingReplicaIdentity (line 713) | static void
  function Oid (line 743) | Oid
  function GatherIndexAndConstraintDefinitionList (line 765) | void
  function List (line 829) | List *
  function List (line 853) | static List *
  function IndexImpliedByAConstraint (line 957) | bool
  function ShardStorageType (line 988) | char
  function IsCoordinator (line 1016) | bool
  function Datum (line 1029) | static Datum
  function DistributedTableReplicationIsEnabled (line 1052) | bool
  function TableDDLCommand (line 1065) | TableDDLCommand *
  function TableDDLCommand (line 1081) | TableDDLCommand *
  function TableDDLCommand (line 1278) | TableDDLCommand *
  function TableDDLCommand (line 1303) | static TableDDLCommand *

FILE: src/backend/distributed/operations/partitioning.c
  function Datum (line 37) | Datum

FILE: src/backend/distributed/operations/replicate_none_dist_table_shard.c
  function NoneDistTableReplicateCoordinatorPlacement (line 41) | void
  function NoneDistTableDeleteCoordinatorPlacement (line 121) | void
  function NoneDistTableDropCoordinatorPlacementTable (line 142) | void
  function CreateForeignKeysFromReferenceTablesOnShards (line 198) | static void
  function Oid (line 241) | static Oid
  function EnsureNoneDistTableWithCoordinatorPlacement (line 276) | static void
  function SetLocalEnableManualChangesToShard (line 296) | static void

FILE: src/backend/distributed/operations/shard_cleaner.c
  type CleanupRecord (line 50) | typedef struct CleanupRecord
  function Datum (line 122) | Datum
  function Datum (line 142) | Datum
  function Datum (line 164) | Datum
  function DropOrphanedResourcesInSeparateTransaction (line 180) | void
  function TryDropOrphanedResources (line 198) | int
  function DropOrphanedResourcesForCleanup (line 246) | static int
  function OperationId (line 337) | OperationId
  function FinalizeOperationNeedingCleanupOnSuccess (line 352) | void
  function CompareCleanupRecordsByObjectType (line 429) | static int
  function InsertCleanupOnSuccessRecordInCurrentTransaction (line 455) | void
  function InsertCleanupRecordOutsideTransaction (line 505) | void
  function DeleteCleanupRecordByRecordIdOutsideTransaction (line 548) | static void
  function TryDropResourceByCleanupRecordOutsideTransaction (line 570) | static bool
  function TryDropShardOutsideTransaction (line 629) | static bool
  function TryDropSubscriptionOutsideTransaction (line 678) | static bool
  function TryDropPublicationOutsideTransaction (line 768) | static bool
  function TryDropReplicationSlotOutsideTransaction (line 797) | static bool
  function TryDropUserOutsideTransaction (line 866) | static bool
  function TryDropDatabaseOutsideTransaction (line 896) | static bool
  function ErrorIfCleanupRecordForShardExists (line 959) | void
  function OperationId (line 981) | static OperationId
  function List (line 1035) | static List *
  function List (line 1066) | static List *
  function CleanupRecord (line 1107) | static CleanupRecord *
  function CleanupRecord (line 1147) | static CleanupRecord *
  function CleanupRecordExists (line 1182) | static bool
  function DeleteCleanupRecordByRecordId (line 1215) | static void
  function uint64 (line 1254) | static uint64
  function LockOperationId (line 1289) | static void
  function TryLockOperationId (line 1304) | static bool

FILE: src/backend/distributed/operations/shard_rebalancer.c
  type RebalanceOptions (line 73) | typedef struct RebalanceOptions
  type SplitPrimaryCloneShards (line 87) | typedef struct SplitPrimaryCloneShards
  type RebalanceState (line 112) | typedef struct RebalanceState
  type RebalanceContext (line 166) | typedef struct RebalanceContext
  type WorkerHashKey (line 174) | typedef struct WorkerHashKey
  type WorkerShardIds (line 181) | typedef struct WorkerShardIds
  type ShardStatistics (line 190) | typedef struct ShardStatistics
  type WorkerShardStatistics (line 203) | typedef struct WorkerShardStatistics
  type ShardMoveDependencyInfo (line 221) | typedef struct ShardMoveDependencyInfo
  type ShardMoveSourceNodeHashEntry (line 231) | typedef struct ShardMoveSourceNodeHashEntry
  type ShardMoveDependencies (line 242) | typedef struct ShardMoveDependencies
  function CheckRebalanceStateInvariants (line 378) | static void
  function BigIntArrayDatumContains (line 449) | static bool
  function List (line 467) | static List *
  function List (line 515) | static List *
  function List (line 527) | static List *
  function ShardAllowedOnNode (line 644) | static bool
  function float4 (line 665) | static float4
  function ShardCost (line 685) | static ShardCost
  function Datum (line 706) | Datum
  function List (line 743) | static List *
  function AcquireRebalanceColocationLock (line 780) | static void
  function AcquirePlacementColocationLock (line 814) | void
  function List (line 848) | static List *
  function ExecutePlacementUpdates (line 883) | static void
  function SetupRebalanceMonitor (line 933) | void
  function Datum (line 986) | Datum
  function Datum (line 1041) | Datum
  function Datum (line 1086) | Datum
  function Datum (line 1107) | Datum
  function Form_pg_dist_rebalance_strategy (line 1130) | static Form_pg_dist_rebalance_strategy
  function Datum (line 1186) | Datum
  function Datum (line 1230) | Datum
  function Datum (line 1269) | Datum
  function Datum (line 1292) | Datum
  function Datum (line 1372) | Datum
  function HTAB (line 1468) | static HTAB *
  function uint64 (line 1559) | static uint64
  function XLogRecPtr (line 1589) | static XLogRecPtr
  function XLogRecPtr (line 1619) | static XLogRecPtr
  function HTAB (line 1641) | static HTAB *
  function HTAB (line 1687) | static HTAB *
  function HTAB (line 1804) | static HTAB *
  function AddToWorkerShardIdSet (line 1845) | static void
  function List (line 1878) | static List *
  function RebalanceTableShards (line 1931) | static void
  function ErrorOnConcurrentRebalance (line 1993) | static void
  function int64 (line 2018) | static int64
  function ShardMoveDependencies (line 2036) | static ShardMoveDependencies
  function int64 (line 2059) | static int64 *
  function UpdateShardMoveDependencies (line 2146) | static void
  function int64 (line 2180) | static int64
  function UpdateShardPlacement (line 2353) | static void
  function ExecuteRebalancerCommandInSeparateTransaction (line 2438) | void
  function List (line 2473) | static List *
  function List (line 2511) | List *
  function RebalanceState (line 2620) | static RebalanceState *
  function float4 (line 2695) | static float4
  function NodeFillState (line 2710) | static NodeFillState *
  function CompareNodeFillStateAsc (line 2730) | static int
  function CompareNodeFillStateDesc (line 2769) | static int
  function CompareShardCostAsc (line 2780) | static int
  function CompareShardCostDesc (line 2807) | static int
  function MoveShardsAwayFromDisallowedNodes (line 2819) | static void
  function CompareDisallowedPlacementAsc (line 2855) | static int
  function CompareDisallowedPlacementDesc (line 2868) | static int
  function NodeFillState (line 2879) | static NodeFillState *
  function MoveShardCost (line 2917) | static void
  function FindAndMoveShardCost (line 2996) | static bool
  function List (line 3179) | List *
  function ShardActivePlacementCount (line 3321) | static int
  function HTAB (line 3347) | static HTAB *
  function PlacementsHashFind (line 3381) | static bool
  function PlacementsHashEnter (line 3404) | static void
  function PlacementsHashRemove (line 3423) | static void
  function PlacementsHashCompare (line 3442) | static int
  function uint32 (line 3483) | static uint32
  function WorkerNodeListContains (line 3502) | static bool
  function UpdateColocatedShardPlacementProgress (line 3528) | static void
  function Datum (line 3573) | Datum
  function Datum (line 3592) | Datum
  function EnsureShardCostUDF (line 3609) | static void
  function SplitShardsBetweenPrimaryAndClone (line 3646) | void
  function SplitPrimaryCloneShards (line 3681) | static SplitPrimaryCloneShards *
  function Datum (line 3873) | Datum
  function EnsureNodeCapacityUDF (line 3994) | static void
  function EnsureShardAllowedOnNodeUDF (line 4033) | static void

FILE: src/backend/distributed/operations/shard_split.c
  type ShardCreatedByWorkflowEntry (line 55) | typedef struct ShardCreatedByWorkflowEntry
  type GroupedDummyShards (line 66) | typedef struct GroupedDummyShards
  function ErrorIfCannotSplitShard (line 190) | static void
  function ErrorIfCannotSplitShardExtended (line 227) | static void
  function ErrorIfModificationAndSplitInTheSameTransaction (line 364) | static void
  function ErrorIfMultipleNonblockingMoveSplitInTheSameTransaction (line 382) | void
  function List (line 399) | static List *
  function SplitShard (line 440) | void
  function BlockingShardSplit (line 553) | static void
  function CheckIfRelationWithSameNameExists (line 645) | static bool
  function CreateSplitShardsForShardGroup (line 691) | static void
  function Task (line 753) | static Task *
  function CreateAuxiliaryStructuresForShardGroup (line 772) | static void
  function DoSplitCopy (line 832) | static void
  function StringInfo (line 914) | static StringInfo
  function Task (line 962) | static Task *
  function CreateObjectOnPlacement (line 1002) | static void
  function List (line 1027) | static List *
  function CreateSplitIntervalsForShard (line 1053) | static void
  function UpdateDistributionColumnsForShardGroup (line 1118) | static void
  function InsertSplitChildrenShardMetadata (line 1157) | static void
  function CreatePartitioningHierarchyForBlockingSplit (line 1211) | static void
  function CreateForeignKeyConstraints (line 1250) | static void
  function DropShardListMetadata (line 1302) | static void
  function AcquireNonblockingSplitLock (line 1346) | static void
  function NonBlockingShardSplit (line 1384) | void
  function CreateDummyShardsForShardGroup (line 1666) | static void
  function HTAB (line 1809) | static HTAB *
  function List (line 1841) | static List *
  function ExecuteSplitShardReleaseSharedMemory (line 1907) | static void
  function StringInfo (line 1936) | StringInfo
  function List (line 2009) | static List *
  function AddDummyShardEntryInMap (line 2047) | static void
  function CreateReplicaIdentitiesForDummyShards (line 2074) | static void
  function uint64 (line 2102) | static uint64

FILE: src/backend/distributed/operations/shard_transfer.c
  type ShardCommandList (line 68) | typedef struct ShardCommandList
  function Datum (line 189) | Datum
  function Datum (line 219) | Datum
  function Datum (line 247) | Datum
  function Datum (line 299) | Datum
  function Datum (line 350) | Datum
  function Datum (line 387) | Datum
  function AcquireShardPlacementLock (line 416) | static void
  function TransferShards (line 471) | void
  function AdjustShardsForPrimaryCloneNodeSplit (line 787) | void
  function InsertDeferredDropCleanupRecordsForShards (line 965) | void
  function InsertCleanupRecordsForShardPlacementsOnNode (line 1005) | void
  function IsShardListOnNode (line 1032) | static bool
  function LockColocatedRelationsForMove (line 1065) | static void
  function ErrorIfForeignTableForShardTransfer (line 1080) | static void
  function EnsureAllShardsCanBeCopied (line 1105) | static void
  function EnsureEnoughDiskSpaceForShardMove (line 1130) | static void
  function TransferAlreadyCompleted (line 1155) | static bool
  function uint64 (line 1182) | uint64
  function SetupRebalanceMonitorForShardTransfer (line 1236) | static void
  function CheckSpaceConstraints (line 1277) | static void
  function ErrorIfTargetNodeIsNotSafeForTransfer (line 1323) | static void
  function ErrorIfSameNode (line 1372) | static void
  function Datum (line 1390) | Datum
  function ErrorIfMoveUnsupportedTableType (line 1402) | void
  function VerifyTablesHaveReplicaIdentity (line 1440) | void
  function RelationCanPublishAllModifications (line 1472) | bool
  function BlockWritesToShardList (line 1507) | void
  function CanUseLogicalReplication (line 1551) | static bool
  function ErrorIfTableCannotBeReplicated (line 1599) | static void
  function LookupShardTransferMode (line 1645) | char
  function EnsureTableListOwner (line 1678) | static void
  function ErrorIfReplicatingDistributedTableWithFKeys (line 1693) | static void
  function CopyShardTables (line 1717) | static void
  function CopyShardTablesViaLogicalReplication (line 1759) | static void
  function ShardCommandList (line 1814) | static ShardCommandList *
  function CopyShardTablesViaBlockWrites (line 1831) | static void
  function CopyShardsToNode (line 1996) | void
  function EnsureShardCanBeCopied (line 2094) | static void
  function ShardPlacement (line 2131) | ShardPlacement *
  function ShardPlacement (line 2156) | ShardPlacement *
  function List (line 2177) | static List *
  function List (line 2194) | static List *
  function List (line 2211) | List *
  function CopyShardForeignConstraintCommandListGrouped (line 2233) | void
  function uint64 (line 2340) | uint64
  function List (line 2374) | static List *
  function DropShardPlacementsFromMetadata (line 2417) | static void
  function UpdateColocatedShardPlacementMetadataOnWorkers (line 2441) | static void
  function List (line 2481) | List *
  function UpdatePlacementUpdateStatusForShardIntervalList (line 2502) | void

FILE: src/backend/distributed/operations/stage_protocol.c
  function Datum (line 93) | Datum
  function Datum (line 209) | Datum
  function Datum (line 220) | Datum
  function Datum (line 237) | Datum
  function Datum (line 278) | Datum
  function CheckDistributedTable (line 289) | void
  function CreateAppendDistributedShardPlacements (line 310) | void
  function InsertShardPlacementRows (line 390) | void
  function CreateShardsOnWorkers (line 416) | void
  function List (line 489) | static List *
  function List (line 584) | List *
  function uint64 (line 627) | uint64
  function UpdateTableStatistics (line 683) | static void
  function ReceiveAndUpdateShardsSizes (line 704) | static void
  function ProcessShardStatisticsRow (line 783) | static bool
  function UpdateShardSize (line 805) | static void
  function WorkerShardStats (line 827) | static bool
  function Oid (line 888) | Oid

FILE: src/backend/distributed/operations/worker_copy_table_to_node_udf.c
  function Datum (line 38) | Datum

FILE: src/backend/distributed/operations/worker_node_manager.c
  function WorkerNode (line 67) | WorkerNode *
  function uint32 (line 88) | uint32
  function uint32 (line 101) | uint32
  function NodeIsCoordinator (line 112) | bool
  function List (line 125) | static List *
  function List (line 163) | List *
  function List (line 175) | List *
  function List (line 187) | List *
  function NodeIsPrimaryWorker (line 198) | static bool
  function CoordinatorAddedAsWorkerNode (line 209) | bool
  function List (line 225) | List *
  function WorkerNode (line 241) | WorkerNode *
  function ErrorIfCoordinatorNotAddedAsWorkerNode (line 259) | void
  function List (line 279) | List *
  function NodeCanHaveDistTablePlacements (line 291) | bool
  function List (line 307) | List *
  function List (line 319) | List *
  function NodeIsReadableWorker (line 329) | static bool
  function CompareWorkerNodes (line 340) | int
  function WorkerNodeCompare (line 358) | int
  function uint32 (line 374) | uint32
  function NodeNamePortCompare (line 397) | int
  function WorkerNode (line 418) | WorkerNode *

FILE: src/backend/distributed/operations/worker_shard_copy.c
  type ShardCopyDestReceiver (line 39) | typedef struct ShardCopyDestReceiver
  function CanUseLocalCopy (line 88) | static bool
  function ConnectToRemoteAndStartCopy (line 97) | static void
  function DestReceiver (line 142) | DestReceiver *
  function ShardCopyDestReceiverReceive (line 173) | static bool
  function ShardCopyDestReceiverStartup (line 253) | static void
  function ShardCopyDestReceiverShutdown (line 289) | static void
  function ShardCopyDestReceiverDestroy (line 350) | static void
  function StringInfo (line 431) | static StringInfo
  function WriteLocalTuple (line 462) | static void
  function LocalCopyToShard (line 494) | static void
  function ReadFromLocalBufferCallback (line 553) | static int

FILE: src/backend/distributed/operations/worker_split_copy_udf.c
  type SplitCopyInfo (line 28) | typedef struct SplitCopyInfo
  function Datum (line 60) | Datum
  function ParseSplitCopyInfoDatum (line 177) | static void
  function BuildMinMaxRangeArrays (line 226) | static void
  function DestReceiver (line 262) | static DestReceiver **
  function DestReceiver (line 294) | static DestReceiver *

FILE: src/backend/distributed/operations/worker_split_shard_release_dsm_udf.c
  function Datum (line 20) | Datum

FILE: src/backend/distributed/operations/worker_split_shard_replication_setup_udf.c
  function Datum (line 99) | Datum
  function ShardSplitInfo (line 178) | ShardSplitInfo *
  function AddShardSplitInfoEntryForNodeInMap (line 252) | static void
  function PopulateShardSplitInfoInSM (line 280) | static void
  function ParseShardSplitInfoFromDatum (line 317) | static void
  function ReturnReplicationSlotInfo (line 384) | static void

FILE: src/backend/distributed/planner/combine_query_planner.c
  type CustomPath (line 36) | struct CustomPath
  function PlannedStmt (line 60) | PlannedStmt *
  function List (line 77) | static List *
  function Path (line 127) | Path *
  function Plan (line 173) | static Plan *
  function PlannedStmt (line 244) | static PlannedStmt *
  function FindCitusExtradataContainerRTE (line 323) | bool

FILE: src/backend/distributed/planner/cte_inline.c
  type inline_cte_walker_context (line 25) | typedef struct inline_cte_walker_context
  function RecursivelyInlineCtesInQueryTree (line 58) | void
  function RecursivelyInlineCteWalker (line 71) | static bool
  function InlineCTEsInQueryTree (line 102) | void
  function QueryTreeContainsInlinableCTE (line 137) | bool
  function QueryTreeContainsInlinableCteWalker (line 148) | static bool
  function PostgreSQLCTEInlineCondition (line 186) | static bool
  function inline_cte (line 233) | static void
  function inline_cte_walker (line 255) | static bool
  function contain_dml (line 348) | static bool
  function contain_dml_walker (line 355) | static bool

FILE: src/backend/distributed/planner/deparse_shard_query.c
  function RebuildQueryStrings (line 61) | void
  function AddInsertAliasIfNeeded (line 174) | void
  function UpdateTaskQueryString (line 204) | static void
  function Node (line 215) | Node *
  function UpdateWhereClauseToPushdownRecurringOuterJoinWalker (line 328) | bool
  function UpdateWhereClauseToPushdownRecurringOuterJoin (line 390) | void
  function UpdateRelationToShardNames (line 466) | bool
  function RelationShard (line 541) | static RelationShard *
  function ConvertRteToSubqueryWithEmptyResult (line 567) | static void
  function ShouldLazyDeparseQuery (line 627) | static bool
  function SetTaskQueryIfShouldLazyDeparse (line 640) | void
  function SetTaskQueryString (line 661) | void
  function SetTaskQueryStringList (line 681) | void
  function SetTaskQueryPlan (line 691) | void
  function PlannedStmt (line 704) | PlannedStmt *
  function GetTaskQueryType (line 744) | int

FILE: src/backend/distributed/planner/distributed_planner.c
  function PlannedStmt (line 154) | PlannedStmt *
  function List (line 348) | List *
  function NeedsDistributedPlanning (line 367) | bool
  function ListContainsDistributedTableRTE (line 395) | static bool
  function PlanContainsDistributedSubPlanRTE (line 447) | static bool
  function AssignRTEIdentities (line 491) | static int
  function AdjustPartitioningForDistributedPlanning (line 531) | static void
  function RTEWentThroughAdjustPartitioning (line 570) | static bool
  function AssignRTEIdentity (line 590) | static void
  function GetRTEIdentity (line 600) | int
  function GetOriginalInh (line 634) | bool
  function LOCKMODE (line 645) | LOCKMODE
  function IsModifyCommand (line 667) | bool
  function IsMultiTaskPlan (line 685) | bool
  function PlannedStmt (line 703) | static PlannedStmt *
  function PlannedStmt (line 728) | static PlannedStmt *
  function DissuadePlannerFromUsingPlan (line 751) | void
  function PlannedStmt (line 767) | static PlannedStmt *
  function PlannedStmt (line 882) | static PlannedStmt *
  function PlannedStmt (line 916) | static PlannedStmt *
  function RouterPlanType (line 971) | static RouterPlanType
  function DistributedPlan (line 1026) | DistributedPlan *
  function EnsurePartitionTableNotReplicated (line 1282) | void
  function DeferredErrorMessage (line 1299) | static DeferredErrorMessage *
  function Node (line 1328) | Node *
  function DistributedPlan (line 1418) | DistributedPlan *
  function PlannedStmt (line 1438) | PlannedStmt *
  function PlannedStmt (line 1536) | static PlannedStmt *
  function ConcatenateRTablesAndPerminfos (line 1551) | static void
  function PlannedStmt (line 1585) | static PlannedStmt *
  function List (line 1628) | static List *
  function List (line 1682) | static List *
  function int32 (line 1713) | int32
  function int32 (line 1880) | static int32
  function RangeTblEntry (line 1911) | RangeTblEntry *
  function CheckNodeIsDumpable (line 1931) | static void
  function Node (line 1952) | static Node *
  function multi_join_restriction_hook (line 1975) | void
  function multi_relation_restriction_hook (line 2044) | void
  function multi_get_relation_info_hook (line 2167) | void
  function List (line 2209) | static List *
  function AppendRelInfo (line 2237) | static AppendRelInfo *
  function AdjustReadIntermediateResultCost (line 2264) | static void
  function AdjustReadIntermediateResultArrayCost (line 2314) | static void
  function AdjustReadIntermediateResultsCostInternal (line 2371) | static void
  function List (line 2467) | static List *
  function List (line 2497) | static List *
  function CreateAndPushPlannerRestrictionContext (line 2526) | static void
  function List (line 2579) | List *
  function PlannerRestrictionContext (line 2605) | static PlannerRestrictionContext *
  function PopPlannerRestrictionContext (line 2628) | static void
  function ResetPlannerRestrictionContext (line 2651) | static void
  function HasUnresolvedExternParamsWalker (line 2674) | bool
  function ContainsSingleShardTable (line 2740) | bool
  function RTEListProperties (line 2752) | RTEListProperties *
  function RTEListProperties (line 2764) | static RTEListProperties *
  function WarnIfListHasForeignDistributedTable (line 2857) | static void
  function CheckPostPlanDistribution (line 2886) | static bool
  function DisableSelfJoinElimination (line 2966) | static int

FILE: src/backend/distributed/planner/extended_op_node_utils.c
  function ExtendedOpNodeProperties (line 48) | ExtendedOpNodeProperties
  function GroupedByPartitionColumn (line 109) | static bool
  function ExtendedOpNodeContainsRepartitionSubquery (line 186) | static bool
  function HasNonPartitionColumnDistinctAgg (line 210) | static bool
  function PartitionColumnInTableList (line 283) | static bool
  function ShouldPullDistinctColumn (line 318) | static bool
  function CanPushDownGroupingAndHaving (line 347) | static bool

FILE: src/backend/distributed/planner/fast_path_router_planner.c
  function FastPathPreprocessParseTree (line 72) | void
  function PlannedStmt (line 94) | PlannedStmt *
  function PlannedStmt (line 115) | PlannedStmt *
  function InitializeFastPathContext (line 158) | static void
  function FastPathRouterQuery (line 228) | bool
  function ColumnAppearsMultipleTimes (line 368) | static bool
  function ConjunctionContainsColumnFilter (line 401) | static bool
  function DistKeyInSimpleOpExpression (line 463) | static bool

FILE: src/backend/distributed/planner/function_call_delegation.c
  type ParamWalkerContext (line 56) | struct ParamWalkerContext
  function contain_param_walker (line 91) | static bool
  function PlannedStmt (line 122) | PlannedStmt *
  function ShardPlacement (line 510) | ShardPlacement *
  function ShardPlacement (line 589) | ShardPlacement *
  function ShardPlacement (line 620) | ShardPlacement *
  function CheckDelegatedFunctionExecution (line 649) | void
  function IsQuerySimple (line 692) | static bool
  function FuncExpr (line 720) | static FuncExpr *
  function EnableInForceDelegatedFuncExecution (line 764) | static void
  function CheckAndResetAllowedShardKeyValueIfNeeded (line 801) | void
  function IsShardKeyValueAllowed (line 825) | bool

FILE: src/backend/distributed/planner/insert_select_planner.c
  function InsertSelectIntoCitusTable (line 125) | bool
  function InsertSelectIntoLocalTable (line 148) | bool
  function CheckInsertSelectQuery (line 173) | bool
  function DistributedPlan (line 218) | DistributedPlan *
  function DistributedPlan (line 249) | static DistributedPlan *
  function DistributedPlan (line 286) | static DistributedPlan *
  function InsertSelectHasRouterSelect (line 402) | static bool
  function DistributedPlan (line 427) | DistributedPlan *
  function PrepareInsertSelectForCitusPlanner (line 507) | static void
  function Query (line 568) | static Query *
  function List (line 649) | static List *
  function DeferredErrorMessage (line 685) | static DeferredErrorMessage *
  function Task (line 864) | static Task *
  function Query (line 1057) | Query *
  function DeferredErrorMessage (line 1207) | static DeferredErrorMessage *
  function DistributedPlan (line 1435) | static DistributedPlan *
  function DeferredErrorMessage (line 1512) | static DeferredErrorMessage *
  function expr_is_volatile (line 1555) | static inline bool
  function Query (line 1580) | Query *
  function RelabelTargetEntryList (line 1698) | static void
  function List (line 1717) | static List *
  function ProcessEntryPair (line 1777) | static void
  function ResetTargetEntryResno (line 1824) | static void
  function Oid (line 1841) | static Oid
  function AppendCastedEntry (line 1873) | static void
  function Expr (line 1917) | static Expr *
  function SetTargetEntryName (line 1995) | static void
  function PlanningInsertSelect (line 2005) | bool

FILE: src/backend/distributed/planner/intermediate_result_pruning.c
  function List (line 51) | List *
  function List (line 98) | static List *
  function RecordSubplanExecutionsOnNodes (line 151) | void
  function AppendAllAccessedWorkerNodes (line 232) | static void
  function AppendAllWorkerNodes (line 273) | static void
  function HTAB (line 291) | HTAB *
  function List (line 316) | List *
  function List (line 347) | static List *
  function List (line 371) | static List *
  function LogIntermediateResultMulticastSummary (line 396) | static void
  function IntermediateResultsHashEntry (line 438) | IntermediateResultsHashEntry *

FILE: src/backend/distributed/planner/local_distributed_join_planner.c
  type RangeTableEntryDetails (line 133) | typedef struct RangeTableEntryDetails
  type ConversionCandidates (line 146) | typedef struct ConversionCandidates
  type IndexColumns (line 158) | typedef struct IndexColumns
  type ConversionChoice (line 168) | typedef enum ConversionChoice
  function RecursivelyPlanLocalTableJoins (line 201) | void
  function ResultRTEIdentity (line 228) | static int
  function List (line 245) | static List *
  function ConversionChoice (line 267) | static ConversionChoice
  function ConvertRTEsToSubquery (line 319) | static void
  function AllRangeTableEntriesHaveUniqueIndex (line 338) | static bool
  function ShouldConvertLocalTableJoinsToSubqueries (line 357) | bool
  function HasConstantFilterOnUniqueColumn (line 378) | static bool
  function FirstIsSuperSetOfSecond (line 428) | static bool
  function AppendUniqueIndexColumnsToList (line 447) | static void
  function List (line 477) | List *
  function List (line 509) | List *
  function ConversionCandidates (line 534) | static ConversionCandidates *

FILE: src/backend/distributed/planner/local_plan_cache.c
  function CacheLocalPlanForShardQuery (line 40) | void
  function Query (line 120) | static Query *
  function ExtractParameterTypesForParamListInfo (line 209) | static int
  function PlannedStmt (line 235) | PlannedStmt *
  function IsLocalPlanCachingSupported (line 273) | bool

FILE: src/backend/distributed/planner/merge_planner.c
  function DistributedPlan (line 114) | DistributedPlan *
  function FromExpr (line 153) | FromExpr *
  function Node (line 179) | static Node *
  function DistributedPlan (line 197) | static DistributedPlan *
  function DistributedPlan (line 259) | static DistributedPlan *
  function ContainsUnsupportedCTEs (line 344) | static void
  function MergeQueryCTEWalker (line 364) | static bool
  function ErrorIfUnsupportedCTEs (line 391) | static void
  function ErrorIfMergeHasUnsupportedTables (line 405) | static void
  function IsDistributionColumnInMergeSource (line 560) | bool
  function DeferredErrorMessage (line 593) | static DeferredErrorMessage *
  function ErrorIfRepartitionMergeNotSupported (line 747) | static void
  function ConvertCteRTEIntoSubquery (line 806) | static void
  function ConvertRelationRTEIntoSubquery (line 869) | static void
  function ConvertSubqueryRTEIntoSubquery (line 941) | static void
  function ConvertSourceRTEIntoSubquery (line 960) | static void
  function ErrorIfMergeHasReturningList (line 1001) | static void
  function ErrorIfMergeNotSupported (line 1020) | static void
  function DeferredErrorMessage (line 1037) | static DeferredErrorMessage *
  function DeferredErrorMessage (line 1074) | static DeferredErrorMessage *
  function MergeSourceHasRouterSelect (line 1226) | static bool
  function ErrorIfMergeQueryQualAndTargetListNotSupported (line 1258) | static void
  function Var (line 1329) | static Var *
  function SourceResultPartitionColumnIndex (line 1353) | static int
  function RangeTblEntry (line 1452) | RangeTblEntry *
  function Var (line 1506) | Var *
  function FindTargetListEntryWithVarExprAttno (line 1588) | static int
  function IsLocalTableModification (line 1614) | bool

FILE: src/backend/distributed/planner/multi_explain.c
  type ExplainOptions (line 103) | typedef struct
  type RemoteExplainPlan (line 131) | typedef struct RemoteExplainPlan
  type ExplainAnalyzeDestination (line 142) | typedef struct ExplainAnalyzeDestination
  type SerializeMetrics (line 154) | typedef struct SerializeMetrics
  type SerializeDestReceiver (line 176) | typedef struct SerializeDestReceiver
  function CitusExplainScan (line 287) | void
  function NonPushableInsertSelectExplainScan (line 335) | void
  function NonPushableMergeCommandExplainScan (line 394) | void
  function ExtractAnalyzeStats (line 453) | static void
  function ExplainSubPlans (line 533) | static void
  function ExplainPropertyBytes (line 674) | static void
  function ShowReceivedTupleData (line 687) | static bool
  function ExplainJob (line 700) | static void
  function uint64 (line 783) | static uint64
  function ExplainMapMergeJob (line 800) | static void
  function CompareTasksByFetchedExplainAnalyzeDuration (line 849) | static int
  function ExplainTaskList (line 876) | static void
  function RemoteExplainPlan (line 918) | static RemoteExplainPlan *
  function RemoteExplainPlan (line 940) | static RemoteExplainPlan *
  function RemoteExplainPlan (line 976) | static RemoteExplainPlan *
  function ExplainTask (line 1074) | static void
  function ExplainTaskPlacement (line 1127) | static void
  function StringInfo (line 1207) | static StringInfo
  function Datum (line 1314) | Datum
  function Datum (line 1350) | Datum
  function FreeSavedExplainPlan (line 1511) | void
  function ExplainFormat (line 1526) | static ExplainFormat
  function ExplainSerializeOption (line 1566) | static ExplainSerializeOption
  function CitusExplainOneQuery (line 1608) | void
  function TupleDestination (line 1722) | static TupleDestination *
  function EnsureExplainOutputCapacity (line 1751) | static void
  function ExplainAnalyzeDestPutTuple (line 1796) | static void
  function ResetExplainAnalyzeData (line 1896) | void
  function TupleDesc (line 1918) | static TupleDesc
  function RequestedForExplainAnalyze (line 1943) | bool
  function List (line 1961) | List *
  function List (line 2155) | static List *
  function ExplainOneQuery (line 2197) | static void
  function Pla
Copy disabled (too large) Download .json
Condensed preview — 3056 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,085K chars).
[
  {
    "path": ".codeclimate.yml",
    "chars": 260,
    "preview": "exclude_patterns:\n  - \"src/backend/distributed/utils/citus_outfuncs.c\"\n  - \"src/backend/distributed/deparser/ruleutils_*"
  },
  {
    "path": ".codecov.yml",
    "chars": 665,
    "preview": "codecov:\n  notify:\n    require_ci_to_pass: yes\n\ncoverage:\n  precision: 2\n  round: down\n  range: \"70...100\"\n\n  ignore:\n  "
  },
  {
    "path": ".devcontainer/.gdbinit",
    "chars": 1915,
    "preview": "# gdbpg.py contains scripts to nicely print the postgres datastructures\n# while in a gdb session. Since the vscode debug"
  },
  {
    "path": ".devcontainer/.gitignore",
    "chars": 21,
    "preview": "postgresql-*.tar.bz2\n"
  },
  {
    "path": ".devcontainer/.psqlrc",
    "chars": 219,
    "preview": "\\timing on\n\\pset linestyle unicode\n\\pset border 2\n\\setenv PAGER 'pspg --no-mouse -bX --no-commandbar --no-topbar'\n\\set H"
  },
  {
    "path": ".devcontainer/.vscode/Pipfile",
    "chars": 152,
    "preview": "[[source]]\nurl = \"https://pypi.org/simple\"\nverify_ssl = true\nname = \"pypi\"\n\n[packages]\ndocopt = \"*\"\n\n[dev-packages]\n\n[re"
  },
  {
    "path": ".devcontainer/.vscode/generate_c_cpp_properties-json.py",
    "chars": 2522,
    "preview": "#! /usr/bin/env pipenv-shebang\n\"\"\"Generate C/C++ properties file for VSCode.\n\nUses pgenv to iterate postgres versions an"
  },
  {
    "path": ".devcontainer/.vscode/launch.json",
    "chars": 1262,
    "preview": "{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Attach Citus (devcontainer)\",\n         "
  },
  {
    "path": ".devcontainer/Dockerfile",
    "chars": 7610,
    "preview": "FROM ubuntu:22.04 AS base\n\n# environment is to make python pass an interactive shell, probably not the best timezone giv"
  },
  {
    "path": ".devcontainer/Makefile",
    "chars": 324,
    "preview": "\ninit: ../.vscode/c_cpp_properties.json ../.vscode/launch.json\n\n../.vscode:\n\tmkdir -p ../.vscode\n\n../.vscode/launch.json"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 1197,
    "preview": "{\n    \"image\": \"ghcr.io/citusdata/citus-devcontainer:main\",\n    \"runArgs\": [\n        \"--cap-add=SYS_PTRACE\",\n        \"--"
  },
  {
    "path": ".devcontainer/pgenv/config/default.conf",
    "chars": 309,
    "preview": "PGENV_MAKE_OPTIONS=(-s)\n\nPGENV_CONFIGURE_OPTIONS=(\n    --enable-debug\n    --enable-depend\n    --enable-cassert\n    --ena"
  },
  {
    "path": ".devcontainer/requirements.txt",
    "chars": 155,
    "preview": "black==24.3.0\nclick==8.1.7\nisort==5.12.0\nmypy-extensions==1.0.0\npackaging==23.2\npathspec==0.11.2\nplatformdirs==4.0.0\ntom"
  },
  {
    "path": ".devcontainer/src/test/regress/Pipfile",
    "chars": 777,
    "preview": "[[source]]\nname = \"pypi\"\nurl = \"https://pypi.python.org/simple\"\nverify_ssl = true\n\n[packages]\nmitmproxy = {git = \"https:"
  },
  {
    "path": ".editorconfig",
    "chars": 516,
    "preview": "# top-most EditorConfig file\nroot = true\n\n# rules for all files\n# we use tabs with indent size 4\n[*]\nindent_style = tab\n"
  },
  {
    "path": ".flake8",
    "chars": 269,
    "preview": "[flake8]\n# E203 is ignored for black\nextend-ignore = E203\n# black will truncate to 88 characters usually, but long strin"
  },
  {
    "path": ".gitattributes",
    "chars": 1528,
    "preview": "*\t\twhitespace=space-before-tab,trailing-space\n*.[chly]\twhitespace=space-before-tab,trailing-space,indent-with-non-tab,ta"
  },
  {
    "path": ".github/actions/parallelization/action.yml",
    "chars": 587,
    "preview": "name: 'Parallelization matrix'\ninputs:\n  count:\n    required: false\n    default: 32\noutputs:\n  json:\n    value: ${{ step"
  },
  {
    "path": ".github/actions/save_logs_and_results/action.yml",
    "chars": 1070,
    "preview": "name: save_logs_and_results\ninputs:\n  folder:\n    required: false\n    default: \"log\"\nruns:\n  using: composite\n  steps:\n "
  },
  {
    "path": ".github/actions/setup_extension/action.yml",
    "chars": 947,
    "preview": "name: setup_extension\ninputs:\n  pg_major:\n    required: false\n  skip_installation:\n    required: false\n    default: fals"
  },
  {
    "path": ".github/actions/upload_coverage/action.yml",
    "chars": 279,
    "preview": "name: coverage\ninputs:\n  flags:\n    required: false\n  codecov_token:\n    required: true\nruns:\n  using: composite\n  steps"
  },
  {
    "path": ".github/packaging/packaging_ignore.yml",
    "chars": 124,
    "preview": "base:\n  - \".* warning: ignoring old recipe for target [`']check'\"\n  - \".* warning: overriding recipe for target [`']chec"
  },
  {
    "path": ".github/packaging/validate_build_output.sh",
    "chars": 1720,
    "preview": "#!/bin/bash\n\nset -ex\n\n# Function to get the OS version\nget_rpm_os_version() {\n    if [[ -f /etc/centos-release ]]; then\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 82,
    "preview": "DESCRIPTION: PR description that will go into the change log, up to 78 characters\n"
  },
  {
    "path": ".github/workflows/build_and_test.yml",
    "chars": 18258,
    "preview": "name: Build & Test\nrun-name: Build & Test - ${{ github.event.pull_request.title || github.ref_name }}\nconcurrency:\n  gro"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 1961,
    "preview": "name: \"CodeQL\"\n\non:\n  schedule:\n    - cron: '59 23 * * 6'\n  workflow_dispatch:\n\njobs:\n  analyze:\n    name: Analyze\n    r"
  },
  {
    "path": ".github/workflows/devcontainer.yml",
    "chars": 1512,
    "preview": "name: \"Build devcontainer\"\n\n# Since building of containers can be quite time consuming, and take up some storage,\n# ther"
  },
  {
    "path": ".github/workflows/flaky_test_debugging.yml",
    "chars": 2601,
    "preview": "name: Flaky test debugging\nrun-name: Flaky test debugging - ${{ inputs.flaky_test }} (${{ inputs.flaky_test_runs_per_job"
  },
  {
    "path": ".github/workflows/packaging-test-pipelines.yml",
    "chars": 6306,
    "preview": "name: Build tests in packaging images\n\non:\n  pull_request:\n    types: [opened, reopened,synchronize]\n  merge_group:\n\n  w"
  },
  {
    "path": ".github/workflows/run_tests.yml",
    "chars": 2803,
    "preview": "name: Run Tests\non:\n  workflow_call:\n    inputs:\n      pg_versions:\n        required: true\n        type: string\n      ma"
  },
  {
    "path": ".gitignore",
    "chars": 854,
    "preview": "# Global excludes across all subdirectories\n*.o\n*.so\n*.so.[0-9]\n*.so.[0-9].[0-9]\n*.sl\n*.sl.[0-9]\n*.sl.[0-9].[0-9]\n*.dyli"
  },
  {
    "path": ".ignore",
    "chars": 8,
    "preview": "/vendor\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 124919,
    "preview": "### citus v14.0.0 (February 9, 2026) ###\n\n* Drops PG15 support (#8372)\n\n* Adds support for PostgreSQL 18 (#8065)\n\n* Adds"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 444,
    "preview": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://op"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 13000,
    "preview": "# Contributing to Citus\n\nWe're happy you want to contribute! You can help us in different ways:\n\n* Open an [issue](https"
  },
  {
    "path": "DEVCONTAINER.md",
    "chars": 3193,
    "preview": "# Devcontainer\n\n## Coredumps\nWhen postgres/citus crashes, there is the option to create a coredump. This is useful for d"
  },
  {
    "path": "EXTENSION_COMPATIBILITY.md",
    "chars": 6523,
    "preview": "Below table is created with Citus 12.1.7 on PG16\n| Extension Name               | Works as Expected   | Notes   |\n|:----"
  },
  {
    "path": "LICENSE",
    "chars": 34520,
    "preview": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C)"
  },
  {
    "path": "Makefile",
    "chars": 2057,
    "preview": "# Citus toplevel Makefile\n\ncitus_subdir = .\ncitus_top_builddir = .\nextension_dir = $(shell $(PG_CONFIG) --sharedir)/exte"
  },
  {
    "path": "Makefile.global.in",
    "chars": 4007,
    "preview": "# -*-makefile-*-\n# @configure_input@\n# Makefile.global.in - Makefile to be included by all submakes\n#\n# This file is con"
  },
  {
    "path": "NOTICE",
    "chars": 4417,
    "preview": "NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis software incorporates material from third parties.\nMicrosoft "
  },
  {
    "path": "README.md",
    "chars": 31616,
    "preview": "| **<br/>The Citus database is 100% open source.<br/><img width=1000/><br/>Learn what's new in the [Citus 13.0 release b"
  },
  {
    "path": "SECURITY.md",
    "chars": 2756,
    "preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
  },
  {
    "path": "STYLEGUIDE.md",
    "chars": 4572,
    "preview": "# Coding style\n\nThe existing code-style in our code-base is not super consistent. There are multiple reasons for that. O"
  },
  {
    "path": "aclocal.m4",
    "chars": 47,
    "preview": "dnl aclocal.m4\nm4_include([config/general.m4])\n"
  },
  {
    "path": "autogen.sh",
    "chars": 213,
    "preview": "#!/bin/bash\n#\n# autogen.sh converts configure.ac to configure and creates\n# citus_config.h.in. The resuting resulting fi"
  },
  {
    "path": "cgmanifest.json",
    "chars": 2241,
    "preview": "{\n    \"Registrations\": [\n        {\n            \"Component\": {\n                \"Type\": \"git\",\n                \"git\": {\n  "
  },
  {
    "path": "ci/README.md",
    "chars": 15561,
    "preview": "# CI scripts\n\nWe have a few scripts that we run in CI to confirm that code confirms to our\nstandards. Be sure you have f"
  },
  {
    "path": "ci/banned.h.sh",
    "chars": 4429,
    "preview": "#!/bin/bash\n\n# Checks for the APIs that are banned by microsoft. Since we compile for Linux\n# we use the replacements fr"
  },
  {
    "path": "ci/build-citus.sh",
    "chars": 1281,
    "preview": "#!/bin/bash\n\n# make bash behave\nset -euo pipefail\nIFS=$'\\n\\t'\n\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# re"
  },
  {
    "path": "ci/check_all_ci_scripts_are_run.sh",
    "chars": 911,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n\n# 1. Find all *.sh files in the ci "
  },
  {
    "path": "ci/check_all_tests_are_run.sh",
    "chars": 707,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n\ncd src/test/regress\n\n# 1. Find all "
  },
  {
    "path": "ci/check_gucs_are_alphabetically_sorted.sh",
    "chars": 1354,
    "preview": "#!/bin/bash\n\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# Find the line that exactly matches"
  },
  {
    "path": "ci/check_migration_files.sh",
    "chars": 1210,
    "preview": "#! /bin/bash\n\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# This file checks for the existenc"
  },
  {
    "path": "ci/check_sql_snapshots.sh",
    "chars": 789,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\nfor udf_dir in src/backend/distribut"
  },
  {
    "path": "ci/ci_helpers.sh",
    "chars": 1182,
    "preview": "#!/bin/bash\n\n# For echo commands \"set -x\" would show the message effectively twice. Once as\n# part of the echo command s"
  },
  {
    "path": "ci/disallow_c_comments_in_migrations.sh",
    "chars": 1129,
    "preview": "#! /bin/bash\n\nset -euo pipefail\n\n# make ** match all directories and subdirectories\nshopt -s globstar\n\n# shellcheck disa"
  },
  {
    "path": "ci/disallow_hash_comments_in_spec_files.sh",
    "chars": 325,
    "preview": "#! /bin/bash\n\nset -euo pipefail\n\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# We do not use comments starting "
  },
  {
    "path": "ci/disallow_long_changelog_entries.sh",
    "chars": 527,
    "preview": "#! /bin/bash\n\nset -eu\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# Having changelog items with entries that ar"
  },
  {
    "path": "ci/editorconfig.sh",
    "chars": 595,
    "preview": "#!/bin/bash\n\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\nfor f in $(git ls-tree -r HEAD --nam"
  },
  {
    "path": "ci/fix_gitignore.sh",
    "chars": 726,
    "preview": "#! /bin/bash\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# Remove all the ignored files from "
  },
  {
    "path": "ci/fix_style.sh",
    "chars": 499,
    "preview": "#!/bin/sh\n\n# fail if trying to reference a variable that is not set.\nset -u / set -o nounset\n# exit immediately if a com"
  },
  {
    "path": "ci/include_grouping.py",
    "chars": 5564,
    "preview": "#!/usr/bin/env python3\n\"\"\"\neasy command line to run against all citus-style checked files:\n\n$ git ls-files \\\n  | git che"
  },
  {
    "path": "ci/normalize_expected.sh",
    "chars": 259,
    "preview": "#!/bin/bash\n\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\nfor f in $(git ls-tree -r HEAD --nam"
  },
  {
    "path": "ci/print_stack_trace.sh",
    "chars": 843,
    "preview": "#!/bin/bash\n\nset -euo pipefail\n\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\n# find all core files\ncore_files=( "
  },
  {
    "path": "ci/remove_useless_declarations.sh",
    "chars": 3308,
    "preview": "#!/bin/bash\n\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\nfiles=$(find src -iname '*.c' -type "
  },
  {
    "path": "ci/sort_and_group_includes.sh",
    "chars": 252,
    "preview": "#!/bin/bash\n\nset -euo pipefail\n# shellcheck disable=SC1091\nsource ci/ci_helpers.sh\n\ngit ls-files \\\n  | git check-attr --"
  },
  {
    "path": "config/config.guess",
    "chars": 43752,
    "preview": "#! /bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright 1992-2017 Free Software Foundation, Inc.\n\ntimestamp"
  },
  {
    "path": "config/general.m4",
    "chars": 5428,
    "preview": "# config/general.m4\n# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group\n# Portions Copyright (c) 199"
  },
  {
    "path": "configure",
    "chars": 175455,
    "preview": "#! /bin/sh\n# Guess values for system-dependent variables and create Makefiles.\n# Generated by GNU Autoconf 2.69 for Citu"
  },
  {
    "path": "configure.ac",
    "chars": 11520,
    "preview": "# Citus autoconf input script.\n#\n# Converted into an actual configure script by autogen.sh. This\n# conversion only has t"
  },
  {
    "path": "prep_buildtree",
    "chars": 1363,
    "preview": "#! /bin/sh\n#\n# Citus copy of PostgreSQL's config/prep_buildtree\n#\n# This script prepares a Citus build tree for an out-o"
  },
  {
    "path": "pyproject.toml",
    "chars": 790,
    "preview": "[tool.isort]\nprofile = 'black'\n\n[tool.black]\ninclude = '(src/test/regress/bin/diff-filter|\\.pyi?|\\.ipynb)$'\n\n[tool.pytes"
  },
  {
    "path": "src/backend/.gitignore",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/backend/columnar/.gitattributes",
    "chars": 990,
    "preview": "*\t\twhitespace=space-before-tab,trailing-space\n*.[chly]\twhitespace=space-before-tab,trailing-space,indent-with-non-tab,ta"
  },
  {
    "path": "src/backend/columnar/.gitignore",
    "chars": 146,
    "preview": "# The directory used to store columnar sql files after pre-processing them\n# with 'cpp' in build-time, see src/backend/c"
  },
  {
    "path": "src/backend/columnar/Makefile",
    "chars": 2818,
    "preview": "citus_subdir = src/backend/columnar\ncitus_top_builddir = ../../..\nsafestringlib_srcdir = $(citus_abs_top_srcdir)/vendor/"
  },
  {
    "path": "src/backend/columnar/README.md",
    "chars": 10574,
    "preview": "# Introduction\n\nCitus Columnar offers a per-table option for columnar storage to\nreduce IO requirements though compressi"
  },
  {
    "path": "src/backend/columnar/citus_columnar.control",
    "chars": 168,
    "preview": "# Columnar extension\ncomment = 'Citus Columnar extension'\ndefault_version = '15.0-1'\nmodule_pathname = '$libdir/citus_co"
  },
  {
    "path": "src/backend/columnar/columnar.c",
    "chars": 3924,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar.c\n *\n * This file contains..."
  },
  {
    "path": "src/backend/columnar/columnar_compression.c",
    "chars": 7167,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_compression.c\n *\n * This file"
  },
  {
    "path": "src/backend/columnar/columnar_customscan.c",
    "chars": 62550,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_customscan.c\n *\n * This file "
  },
  {
    "path": "src/backend/columnar/columnar_debug.c",
    "chars": 4663,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_debug.c\n *\n * Helper function"
  },
  {
    "path": "src/backend/columnar/columnar_metadata.c",
    "chars": 64711,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_metadata.c\n *\n * Copyright (c"
  },
  {
    "path": "src/backend/columnar/columnar_reader.c",
    "chars": 51109,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_reader.c\n *\n * This file cont"
  },
  {
    "path": "src/backend/columnar/columnar_storage.c",
    "chars": 24266,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_storage.c\n *\n * Copyright (c)"
  },
  {
    "path": "src/backend/columnar/columnar_tableam.c",
    "chars": 87648,
    "preview": "#include <math.h>\n\n#include \"postgres.h\"\n\n#include \"miscadmin.h\"\n#include \"pgstat.h\"\n#include \"safe_lib.h\"\n\n#include \"ac"
  },
  {
    "path": "src/backend/columnar/columnar_writer.c",
    "chars": 25184,
    "preview": "/*-------------------------------------------------------------------------\n *\n * columnar_writer.c\n *\n * This file cont"
  },
  {
    "path": "src/backend/columnar/mod.c",
    "chars": 621,
    "preview": "/*-------------------------------------------------------------------------\n *\n * mod.c\n *\n * This file contains module-"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql",
    "chars": 1772,
    "preview": "-- add columnar objects back\nALTER EXTENSION citus_columnar ADD SCHEMA columnar;\nALTER EXTENSION citus_columnar ADD SCHE"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--11.1-0.sql",
    "chars": 21,
    "preview": "-- fake sql file 'Y'\n"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--11.1-1--11.2-1.sql",
    "chars": 741,
    "preview": "-- citus_columnar--11.1-1--11.2-1\n\n#include \"udfs/columnar_ensure_am_depends_catalog/11.2-1.sql\"\n\nDELETE FROM pg_depend\n"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--11.1-1.sql",
    "chars": 15868,
    "preview": "-- complain if script is sourced in psql, rather than via CREATE EXTENSION\n\\echo Use \"CREATE EXTENSION citus_columnar\" t"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--11.2-1--11.3-1.sql",
    "chars": 34,
    "preview": "-- citus_columnar--11.2-1--11.3-1\n"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--11.3-1--12.2-1.sql",
    "chars": 34,
    "preview": "-- citus_columnar--11.3-1--12.2-1\n"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--12.2-1--13.2-1.sql",
    "chars": 93,
    "preview": "-- citus_columnar--12.2-1--13.2-1.sql\n\n#include \"udfs/columnar_finish_pg_upgrade/13.2-1.sql\"\n"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--13.2-1--14.0-1.sql",
    "chars": 60,
    "preview": "-- citus_columnar--13.2-1--14.0-1\n-- bump version to 14.0-1\n"
  },
  {
    "path": "src/backend/columnar/sql/citus_columnar--14.0-1--15.0-1.sql",
    "chars": 60,
    "preview": "-- citus_columnar--14.0-1--15.0-1\n-- bump version to 15.0-1\n"
  },
  {
    "path": "src/backend/columnar/sql/columnar--10.0-1--10.0-2.sql",
    "chars": 204,
    "preview": "-- columnar--10.0-1--10.0-2.sql\n\n-- grant read access for columnar metadata tables to unprivileged user\nGRANT USAGE ON S"
  },
  {
    "path": "src/backend/columnar/sql/columnar--10.0-3--10.1-1.sql",
    "chars": 828,
    "preview": "-- columnar--10.0-3--10.1-1.sql\n\n-- Drop foreign keys between columnar metadata tables.\n-- Postgres assigns different na"
  },
  {
    "path": "src/backend/columnar/sql/columnar--10.1-1--10.2-1.sql",
    "chars": 1427,
    "preview": "-- columnar--10.1-1--10.2-1.sql\n\n-- For a proper mapping between tid & (stripe, row_num), add a new column to\n-- columna"
  },
  {
    "path": "src/backend/columnar/sql/columnar--10.2-1--10.2-2.sql",
    "chars": 181,
    "preview": "-- columnar--10.2-1--10.2-2.sql\n\n-- revoke read access for columnar.chunk from unprivileged\n-- user as it contains chunk"
  },
  {
    "path": "src/backend/columnar/sql/columnar--10.2-2--10.2-3.sql",
    "chars": 1200,
    "preview": "-- columnar--10.2-2--10.2-3.sql\n\n-- Since stripe_first_row_number_idx is required to scan a columnar table, we\n-- need t"
  },
  {
    "path": "src/backend/columnar/sql/columnar--10.2-3--10.2-4.sql",
    "chars": 157,
    "preview": "-- columnar--10.2-3--10.2-4.sql\n\n#include \"udfs/columnar_ensure_am_depends_catalog/10.2-4.sql\"\n\nPERFORM citus_internal.c"
  },
  {
    "path": "src/backend/columnar/sql/columnar--11.0-2--11.0-3.sql",
    "chars": 21,
    "preview": "-- no changes needed\n"
  },
  {
    "path": "src/backend/columnar/sql/columnar--11.0-3--11.1-1.sql",
    "chars": 3279,
    "preview": "#include \"udfs/alter_columnar_table_set/11.1-1.sql\"\n#include \"udfs/alter_columnar_table_reset/11.1-1.sql\"\n\n-- rename col"
  },
  {
    "path": "src/backend/columnar/sql/columnar--9.5-1--10.0-1.sql",
    "chars": 2708,
    "preview": "-- columnar--9.5-1--10.0-1.sql\n\nCREATE SCHEMA columnar;\nSET search_path TO columnar;\n\nCREATE SEQUENCE storageid_seq MINV"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus--11.0-3--11.0-2.sql",
    "chars": 21,
    "preview": "-- no changes needed\n"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--11.1-1--11.1-0.sql",
    "chars": 4814,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(\n    table_name regclass,\n    chunk_group_row_limit int D"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--11.2-1--11.1-1.sql",
    "chars": 163,
    "preview": "-- citus_columnar--11.2-1--11.1-1\n\n-- Note that we intentionally do not re-insert the pg_depend records that we\n-- delet"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--11.3-1--11.2-1.sql",
    "chars": 34,
    "preview": "-- citus_columnar--11.3-1--11.2-1\n"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--12.2-1--11.3-1.sql",
    "chars": 34,
    "preview": "-- citus_columnar--12.2-1--11.3-1\n"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--13.2-1--12.2-1.sql",
    "chars": 104,
    "preview": "-- citus_columnar--13.2-1--12.2-1.sql\n\nDROP FUNCTION IF EXISTS pg_catalog.columnar_finish_pg_upgrade();\n"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--14.0-1--13.2-1.sql",
    "chars": 65,
    "preview": "-- citus_columnar--14.0-1--13.2-1\n-- downgrade version to 13.2-1\n"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/citus_columnar--15.0-1--14.0-1.sql",
    "chars": 65,
    "preview": "-- citus_columnar--15.0-1--14.0-1\n-- downgrade version to 14.0-1\n"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.0-1--9.5-1.sql",
    "chars": 906,
    "preview": "-- columnar--10.0-1--9.5-1.sql\n\nSET search_path TO columnar;\n\nDO $proc$\nBEGIN\n\nIF substring(current_Setting('server_vers"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.0-2--10.0-1.sql",
    "chars": 212,
    "preview": "-- columnar--10.0-2--10.0-1.sql\n\n-- revoke read access for columnar metadata tables from unprivileged user\nREVOKE USAGE "
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.1-1--10.0-3.sql",
    "chars": 518,
    "preview": "-- columnar--10.1-1--10.0-3.sql\n\n-- define foreign keys between columnar metadata tables\nALTER TABLE columnar.chunk\nADD "
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.2-1--10.1-1.sql",
    "chars": 976,
    "preview": "-- columnar--10.2-1--10.1-1.sql\n\n-- downgrade storage for all columnar relations\nSELECT citus_internal.downgrade_columna"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.2-2--10.2-1.sql",
    "chars": 136,
    "preview": "-- columnar--10.2-2--10.2-1.sql\n\n-- grant read access for columnar.chunk to unprivileged user\nGRANT SELECT ON columnar.c"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.2-3--10.2-2.sql",
    "chars": 670,
    "preview": "-- columnar--10.2-3--10.2-2.sql\n--\n-- If we have a pg_depend entry for this index, we can not drop it as\n-- the extensio"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--10.2-4--10.2-3.sql",
    "chars": 263,
    "preview": "-- columnar--10.2-4--10.2-3.sql\n\nDROP FUNCTION citus_internal.columnar_ensure_am_depends_catalog();\n\n-- Note that we int"
  },
  {
    "path": "src/backend/columnar/sql/downgrades/columnar--11.1-1--11.0-3.sql",
    "chars": 621,
    "preview": "#include \"../udfs/alter_columnar_table_set/10.0-1.sql\"\n#include \"../udfs/alter_columnar_table_reset/10.0-1.sql\"\n\n#includ"
  },
  {
    "path": "src/backend/columnar/sql/udfs/alter_columnar_table_reset/10.0-1.sql",
    "chars": 608,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(\n    table_name regclass,\n    chunk_group_row_limit boo"
  },
  {
    "path": "src/backend/columnar/sql/udfs/alter_columnar_table_reset/11.1-1.sql",
    "chars": 1442,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(\n    table_name regclass,\n    chunk_group_row_limit boo"
  },
  {
    "path": "src/backend/columnar/sql/udfs/alter_columnar_table_reset/latest.sql",
    "chars": 1442,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_reset(\n    table_name regclass,\n    chunk_group_row_limit boo"
  },
  {
    "path": "src/backend/columnar/sql/udfs/alter_columnar_table_set/10.0-1.sql",
    "chars": 604,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(\n    table_name regclass,\n    chunk_group_row_limit int D"
  },
  {
    "path": "src/backend/columnar/sql/udfs/alter_columnar_table_set/11.1-1.sql",
    "chars": 1566,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(\n    table_name regclass,\n    chunk_group_row_limit int D"
  },
  {
    "path": "src/backend/columnar/sql/udfs/alter_columnar_table_set/latest.sql",
    "chars": 1566,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.alter_columnar_table_set(\n    table_name regclass,\n    chunk_group_row_limit int D"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/10.2-4.sql",
    "chars": 1761,
    "preview": "CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_am_depends_catalog()\n  RETURNS void\n  LANGUAGE plpgsql\n  SET s"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/11.1-1.sql",
    "chars": 2032,
    "preview": "CREATE OR REPLACE FUNCTION citus_internal.columnar_ensure_am_depends_catalog()\n  RETURNS void\n  LANGUAGE plpgsql\n  SET s"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/11.2-1.sql",
    "chars": 1790,
    "preview": "CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_catalog()\n  RETURNS void\n  LANGUAGE plpgsql\n  SE"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_ensure_am_depends_catalog/latest.sql",
    "chars": 1790,
    "preview": "CREATE OR REPLACE FUNCTION columnar_internal.columnar_ensure_am_depends_catalog()\n  RETURNS void\n  LANGUAGE plpgsql\n  SE"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_ensure_objects_exist/10.0-1.sql",
    "chars": 2030,
    "preview": "-- citus_internal.columnar_ensure_objects_exist is an internal helper function to create\n-- missing objects, anything re"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_ensure_objects_exist/latest.sql",
    "chars": 2030,
    "preview": "-- citus_internal.columnar_ensure_objects_exist is an internal helper function to create\n-- missing objects, anything re"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_finish_pg_upgrade/13.2-1.sql",
    "chars": 444,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.columnar_finish_pg_upgrade()\n    RETURNS void\n    LANGUAGE plpgsql\n    SET search_"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_finish_pg_upgrade/latest.sql",
    "chars": 444,
    "preview": "CREATE OR REPLACE FUNCTION pg_catalog.columnar_finish_pg_upgrade()\n    RETURNS void\n    LANGUAGE plpgsql\n    SET search_"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_handler/10.0-1.sql",
    "chars": 790,
    "preview": "CREATE OR REPLACE FUNCTION columnar.columnar_handler(internal)\n    RETURNS table_am_handler\n    LANGUAGE C\nAS 'MODULE_PA"
  },
  {
    "path": "src/backend/columnar/sql/udfs/columnar_handler/latest.sql",
    "chars": 790,
    "preview": "CREATE OR REPLACE FUNCTION columnar.columnar_handler(internal)\n    RETURNS table_am_handler\n    LANGUAGE C\nAS 'MODULE_PA"
  },
  {
    "path": "src/backend/columnar/sql/udfs/downgrade_columnar_storage/10.2-1.sql",
    "chars": 312,
    "preview": "CREATE OR REPLACE FUNCTION citus_internal.downgrade_columnar_storage(rel regclass)\n  RETURNS VOID\n  STRICT\n  LANGUAGE c "
  },
  {
    "path": "src/backend/columnar/sql/udfs/downgrade_columnar_storage/latest.sql",
    "chars": 312,
    "preview": "CREATE OR REPLACE FUNCTION citus_internal.downgrade_columnar_storage(rel regclass)\n  RETURNS VOID\n  STRICT\n  LANGUAGE c "
  },
  {
    "path": "src/backend/columnar/sql/udfs/upgrade_columnar_storage/10.2-1.sql",
    "chars": 304,
    "preview": "CREATE OR REPLACE FUNCTION citus_internal.upgrade_columnar_storage(rel regclass)\n  RETURNS VOID\n  STRICT\n  LANGUAGE c AS"
  },
  {
    "path": "src/backend/columnar/sql/udfs/upgrade_columnar_storage/latest.sql",
    "chars": 304,
    "preview": "CREATE OR REPLACE FUNCTION citus_internal.upgrade_columnar_storage(rel regclass)\n  RETURNS VOID\n  STRICT\n  LANGUAGE c AS"
  },
  {
    "path": "src/backend/columnar/write_state_management.c",
    "chars": 9367,
    "preview": "\n#include <math.h>\n\n#include \"postgres.h\"\n\n#include \"miscadmin.h\"\n#include \"pgstat.h\"\n\n#include \"access/genam.h\"\n#includ"
  },
  {
    "path": "src/backend/distributed/.gitignore",
    "chars": 167,
    "preview": "# ====================\n# = Project-Specific =\n# ====================\n\n# regression test detritus\n/log/\n/regression.diffs"
  },
  {
    "path": "src/backend/distributed/Makefile",
    "chars": 4495,
    "preview": "# Makefile for the Citus extension\n\ncitus_subdir = src/backend/distributed\ncitus_top_builddir = ../../..\nsafestringlib_s"
  },
  {
    "path": "src/backend/distributed/README.md",
    "chars": 226594,
    "preview": " <!--- we use Github's href convention in Table of Content --->\n# Citus Technical Documentation\n\nThe purpose of this doc"
  },
  {
    "path": "src/backend/distributed/cdc/Makefile",
    "chars": 1389,
    "preview": "citus_top_builddir = ../../../..\ninclude $(citus_top_builddir)/Makefile.global\n\ncitus_subdir = src/backend/distributed/c"
  },
  {
    "path": "src/backend/distributed/cdc/Makefile.decoder",
    "chars": 596,
    "preview": "MODULE_big = citus_$(DECODER)\n\ncitus_decoders_dir = $(DESTDIR)$(pkglibdir)/citus_decoders\n\ncitus_top_builddir = ../../.."
  },
  {
    "path": "src/backend/distributed/cdc/cdc_decoder.c",
    "chars": 18142,
    "preview": "/*-------------------------------------------------------------------------\n *\n * cdc_decoder.c\n *\t\tCDC Decoder plugin f"
  },
  {
    "path": "src/backend/distributed/cdc/cdc_decoder_utils.c",
    "chars": 11262,
    "preview": "/*-------------------------------------------------------------------------\n *\n * cdc_decoder_utils.c\n *\t\tCDC Decoder pl"
  },
  {
    "path": "src/backend/distributed/cdc/cdc_decoder_utils.h",
    "chars": 845,
    "preview": "/*-------------------------------------------------------------------------\n *\n * cdc_decoder_utils.h\n *\t  Utility funct"
  },
  {
    "path": "src/backend/distributed/citus--11.1-1.control",
    "chars": 28,
    "preview": "requires = 'citus_columnar'\n"
  },
  {
    "path": "src/backend/distributed/citus.control",
    "chars": 158,
    "preview": "# Citus extension\ncomment = 'Citus distributed database'\ndefault_version = '15.0-1'\nmodule_pathname = '$libdir/citus'\nre"
  },
  {
    "path": "src/backend/distributed/clock/README.md",
    "chars": 11515,
    "preview": "# Cluster Clock\n### Requirement:\nMany distributed applications need to track the changes in the same order as they are a"
  },
  {
    "path": "src/backend/distributed/clock/causal_clock.c",
    "chars": 17446,
    "preview": "/*-------------------------------------------------------------------------\n * causal_clock.c\n *\n * Core function defint"
  },
  {
    "path": "src/backend/distributed/commands/README.md",
    "chars": 3249,
    "preview": "# Commands\n\nThe commands module is modeled after `backend/commands` from the postgres repository and\ncontains the logic "
  },
  {
    "path": "src/backend/distributed/commands/alter_table.c",
    "chars": 76950,
    "preview": "/*-------------------------------------------------------------------------\n *\n * alter_table.c\n *\t  Routines related to"
  },
  {
    "path": "src/backend/distributed/commands/begin.c",
    "chars": 1361,
    "preview": "/*-------------------------------------------------------------------------\n *\n * begin.c\n *    Processing of the BEGIN "
  },
  {
    "path": "src/backend/distributed/commands/call.c",
    "chars": 6829,
    "preview": "/*-------------------------------------------------------------------------\n *\n * call.c\n *    Commands for distributing"
  },
  {
    "path": "src/backend/distributed/commands/cascade_table_operation_for_connected_relations.c",
    "chars": 19254,
    "preview": "/*-------------------------------------------------------------------------\n *\n * cascade_table_operation_for_connected_"
  },
  {
    "path": "src/backend/distributed/commands/citus_add_local_table_to_metadata.c",
    "chars": 50580,
    "preview": "/*-------------------------------------------------------------------------\n *\n * citus_add_local_table_to_metadata.c\n *"
  },
  {
    "path": "src/backend/distributed/commands/citus_global_signal.c",
    "chars": 3891,
    "preview": "/*-------------------------------------------------------------------------\n *\n * citus_global_signal.c\n *    Commands f"
  },
  {
    "path": "src/backend/distributed/commands/cluster.c",
    "chars": 3745,
    "preview": "/*-------------------------------------------------------------------------\n *\n * cluster.c\n *    Commands for CLUSTER s"
  },
  {
    "path": "src/backend/distributed/commands/collation.c",
    "chars": 10443,
    "preview": "/*-------------------------------------------------------------------------\n * collation.c\n *\n * This file contains func"
  },
  {
    "path": "src/backend/distributed/commands/comment.c",
    "chars": 3292,
    "preview": "/*-------------------------------------------------------------------------\n *\n * comment.c\n *    Commands to interact w"
  },
  {
    "path": "src/backend/distributed/commands/common.c",
    "chars": 11086,
    "preview": "/*-------------------------------------------------------------------------\n *\n * common.c\n *\n *    Most of the object p"
  },
  {
    "path": "src/backend/distributed/commands/create_distributed_table.c",
    "chars": 93046,
    "preview": "/*-------------------------------------------------------------------------\n *\n * create_distributed_table.c\n *\t  Routin"
  },
  {
    "path": "src/backend/distributed/commands/database.c",
    "chars": 29733,
    "preview": "/*-------------------------------------------------------------------------\n *\n * database.c\n *    Commands to interact "
  },
  {
    "path": "src/backend/distributed/commands/dependencies.c",
    "chars": 26130,
    "preview": "/*-------------------------------------------------------------------------\n *\n * dependencies.c\n *    Commands to creat"
  },
  {
    "path": "src/backend/distributed/commands/distribute_object_ops.c",
    "chars": 59453,
    "preview": "/*-------------------------------------------------------------------------\n *\n * distribute_object_ops.c\n *\n *    Conta"
  },
  {
    "path": "src/backend/distributed/commands/domain.c",
    "chars": 11315,
    "preview": "/*-------------------------------------------------------------------------\n *\n * domain.c\n *    Hooks to handle the cre"
  },
  {
    "path": "src/backend/distributed/commands/drop_distributed_table.c",
    "chars": 6822,
    "preview": "/*-------------------------------------------------------------------------\n *\n * drop_distributed_table.c\n *\t  Routines"
  },
  {
    "path": "src/backend/distributed/commands/extension.c",
    "chars": 41231,
    "preview": "/*-------------------------------------------------------------------------\n *\n * extension.c\n *    Commands for creatin"
  },
  {
    "path": "src/backend/distributed/commands/foreign_constraint.c",
    "chars": 48960,
    "preview": "/*-------------------------------------------------------------------------\n *\n * foreign_constraint.c\n *\n * This file c"
  },
  {
    "path": "src/backend/distributed/commands/foreign_data_wrapper.c",
    "chars": 4002,
    "preview": "/*-------------------------------------------------------------------------\n *\n * foreign_data_wrapper.c\n *    Commands "
  },
  {
    "path": "src/backend/distributed/commands/foreign_server.c",
    "chars": 8021,
    "preview": "/*-------------------------------------------------------------------------\n *\n * foreign_server.c\n *    Commands for FO"
  },
  {
    "path": "src/backend/distributed/commands/function.c",
    "chars": 64861,
    "preview": "/*-------------------------------------------------------------------------\n *\n * function.c\n *    Commands for FUNCTION"
  },
  {
    "path": "src/backend/distributed/commands/grant.c",
    "chars": 7746,
    "preview": "/*-------------------------------------------------------------------------\n *\n * grant.c\n *    Commands for granting ac"
  },
  {
    "path": "src/backend/distributed/commands/index.c",
    "chars": 43532,
    "preview": "/*-------------------------------------------------------------------------\n *\n * index.c\n *    Commands for creating an"
  },
  {
    "path": "src/backend/distributed/commands/index_pg_source.c",
    "chars": 4896,
    "preview": "/*-------------------------------------------------------------------------\n *\n * index_pg_source.c\n *    Helper functio"
  },
  {
    "path": "src/backend/distributed/commands/local_multi_copy.c",
    "chars": 7943,
    "preview": "/*-------------------------------------------------------------------------\n *\n * local_multi_copy.c\n *    Commands for "
  },
  {
    "path": "src/backend/distributed/commands/multi_copy.c",
    "chars": 118615,
    "preview": "/*-------------------------------------------------------------------------\n *\n * multi_copy.c\n *     This file contains"
  },
  {
    "path": "src/backend/distributed/commands/non_main_db_distribute_object_ops.c",
    "chars": 10194,
    "preview": "/*-------------------------------------------------------------------------\n *\n * non_main_db_distribute_object_ops.c\n *"
  },
  {
    "path": "src/backend/distributed/commands/owned.c",
    "chars": 4893,
    "preview": "/*-------------------------------------------------------------------------\n *\n * owned.c\n *    Commands for DROP OWNED "
  },
  {
    "path": "src/backend/distributed/commands/policy.c",
    "chars": 17775,
    "preview": "/*-------------------------------------------------------------------------\n * policy.c\n *\n * This file contains functio"
  },
  {
    "path": "src/backend/distributed/commands/publication.c",
    "chars": 17899,
    "preview": "/*-------------------------------------------------------------------------\n *\n * publication.c\n *    Commands for creat"
  },
  {
    "path": "src/backend/distributed/commands/rename.c",
    "chars": 7137,
    "preview": "/*-------------------------------------------------------------------------\n *\n * rename.c\n *    Commands for renaming o"
  },
  {
    "path": "src/backend/distributed/commands/role.c",
    "chars": 40001,
    "preview": "/*-------------------------------------------------------------------------\n *\n * role.c\n *    Commands for ALTER ROLE s"
  },
  {
    "path": "src/backend/distributed/commands/schema.c",
    "chars": 13243,
    "preview": "/*-------------------------------------------------------------------------\n *\n * schema.c\n *    Commands for creating a"
  },
  {
    "path": "src/backend/distributed/commands/schema_based_sharding.c",
    "chars": 27697,
    "preview": "/*-------------------------------------------------------------------------\n * schema_based_sharding.c\n *\n *\t  Routines "
  },
  {
    "path": "src/backend/distributed/commands/seclabel.c",
    "chars": 5580,
    "preview": "/*-------------------------------------------------------------------------\n *\n * seclabel.c\n *\n *    This file contains"
  },
  {
    "path": "src/backend/distributed/commands/sequence.c",
    "chars": 33183,
    "preview": "/*-------------------------------------------------------------------------\n *\n * sequence.c\n *     This file contains i"
  },
  {
    "path": "src/backend/distributed/commands/serialize_distributed_ddls.c",
    "chars": 8826,
    "preview": "/*-------------------------------------------------------------------------\n *\n * serialize_distributed_ddls.c\n *\n * Thi"
  },
  {
    "path": "src/backend/distributed/commands/statistics.c",
    "chars": 22407,
    "preview": "/*-------------------------------------------------------------------------\n *\n * statistics.c\n *    Commands for STATIS"
  },
  {
    "path": "src/backend/distributed/commands/subscription.c",
    "chars": 3485,
    "preview": "/*-------------------------------------------------------------------------\n *\n * subscription.c\n *    Commands for crea"
  },
  {
    "path": "src/backend/distributed/commands/table.c",
    "chars": 138253,
    "preview": "/*-------------------------------------------------------------------------\n *\n * table.c\n *    Commands for creating an"
  },
  {
    "path": "src/backend/distributed/commands/text_search.c",
    "chars": 28928,
    "preview": "/*-------------------------------------------------------------------------\n *\n * text_search.c\n *    Commands for creat"
  },
  {
    "path": "src/backend/distributed/commands/trigger.c",
    "chars": 27831,
    "preview": "/*-------------------------------------------------------------------------\n * trigger.c\n *\n * This file contains functi"
  },
  {
    "path": "src/backend/distributed/commands/truncate.c",
    "chars": 10867,
    "preview": "/*-------------------------------------------------------------------------\n *\n * truncate.c\n *    Commands for truncati"
  }
]

// ... and 2856 more files (download for full content)

About this extraction

This page contains the full source code of the citusdata/citus GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3056 files (39.3 MB), approximately 4.1M tokens, and a symbol index with 6506 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!