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©ING.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
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©ING.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
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.