# ----------
# $Id$
#
# Regression tests that exercise distributed planning/execution functionality.
#
# All new regression tests are expected to be run by this schedule. Tests that
# do not set specific task executor type should also be added to
# multi_task_tracker_extra_schedule.
#
# Note that we use variant comparison files to test version dependent regression
# test results. For more information:
# http://www.postgresql.org/docs/current/static/regress-variant.html
# ----------

# ---
# Tests around schema changes, these are run first, so there's no preexisting objects.
#
# propagate_extension_commands lies just after multi_cluster_management as we do
# remove / add node operations, we do not want any preexisting objects before
# propagate_extension_commands
# ---
test: multi_test_helpers
test: multi_test_catalog_views
test: multi_name_resolution


# ----------
# The following distributed tests depend on creating a partitioned table and
# uploading data to it.
# ----------
test: multi_create_table
test: multi_master_protocol multi_load_data multi_behavioral_analytics_create_table
test: recursive_dml_with_different_planners_executors
test: window_functions multi_insert_select_window

# following should not run in parallel because it relies on connection counts to workers
test: insert_select_connection_leak

# ---------
# at the end of the regression tests regaring recursively planned modifications
# ensure that we don't leak any intermediate results
# This test should not run in parallel with any other tests
# ---------

# ----------
# Tests for partitioning support
# ----------


# ----------
# Tests for recursive subquery planning
# ----------
test: subquery_basics subquery_local_tables subquery_executors set_operations set_operation_and_local_tables
test: subquery_partitioning subquery_complex_target_list subqueries_not_supported
test: subquery_prepared_statements pg12 cte_inline

# ----------
# Miscellaneous tests to check our query planning behavior
# ----------
test: multi_distributed_transaction_id
test: hyperscale_tutorial
test: multi_basic_queries multi_complex_expressions multi_subquery_complex_queries multi_subquery_behavioral_analytics
test: multi_subquery_complex_reference_clause multi_subquery_window_functions multi_sql_function
test: multi_function_in_join row_types
test: multi_subquery_in_where_reference_clause join_pushdown adaptive_executor propagate_set_commands
test: rollback_to_savepoint insert_select_into_local_table undistribute_table
test: multi_subquery_union multi_subquery_in_where_clause multi_subquery_misc
test:  multi_limit_clause_approximate multi_single_relation_subquery set_role_in_transaction
test: multi_select_for_update pg13_with_ties
test: multi_average_expression multi_working_columns multi_having_pushdown
test: multi_array_agg
test: multi_jsonb_agg multi_jsonb_object_agg multi_json_agg multi_json_object_agg bool_agg ch_bench_having ch_bench_subquery_repartition chbenchmark_all_queries expression_reference_join
test: multi_agg_type_conversion multi_count_type_conversion
test: multi_cross_shard
test: multi_dropped_column_aliases foreign_key_restriction_enforcement

# ----------
# Parallel TPC-H tests to check our distributed execution behavior
# ----------
test: multi_tpch_query1 multi_tpch_query3 multi_tpch_query6 multi_tpch_query10
test: multi_tpch_query12 multi_tpch_query14 multi_tpch_query19
test: multi_tpch_query7 multi_tpch_query7_nested

# ----------
# Parallel tests to check our join order planning logic. Note that we load data
# below; and therefore these tests should come after the execution tests.
# ----------
test: multi_join_order_tpch_small multi_join_order_additional
test: multi_join_order_tpch_repartition

# ----------
# Tests for repartition join planning and execution. Be careful when creating
# new shards before these tests, as they expect specific shard identifiers in
# the output.
# ----------
test: multi_repartition_join_ref
test: adaptive_executor_repartition

# ---------
# Tests that modify data should run sequentially
# ---------
test: with_prepare

# ---------
# Tests for recursive planning.
# ---------
test: with_nested with_where
test: cte_prepared_modify cte_nested_modification
test: with_executors with_partitioning with_dml


# ----------
# Tests to check our large record loading and shard deletion behavior
# ----------
test: multi_shard_modify

# ----------
# Tests around DDL statements run on distributed tables
# ----------

# ----------
# multi_create_schema tests creation, loading, and querying of a table in a new
# schema (namespace).
# ----------
test: multi_create_schema

# ----------
# Tests to check if we inform the user about potential caveats of creating new
# databases, schemas, roles, and authentication information.
# ----------

# ----------
# Tests to check the sequential and parallel executions of DDL and modification
# commands
# Should not be executed in parallel with other tests
# ----------

# ---------
#  loads data to create shards in a way that forces
# shard caching.
# ---------

# ---------
# multi_outer_join loads data to create shards to test outer join mappings
# ---------
test: multi_outer_join

# ---
# Tests covering mostly modification queries and required preliminary
# functionality related to metadata, shard creation, shard pruning and
# "hacky" copy script for hash partitioned tables.
# Note that the order of the following tests are important. multi_complex_count_distinct
# is independent from the rest of the group, it is added to increase parallelism.
# ---
test: multi_complex_count_distinct
test: multi_upsert multi_simple_queries
test: foreign_key_to_reference_table
test: validate_constraint

# ---------
#  creates hash and range-partitioned tables and performs COPY
#  creates hash partitioned tables.
# ---------
test: fast_path_router_modify
test: null_parameters

# ----------
#  loads more lineitem data using high shard identifiers
# ----------

# ----------
#   tests various size commands on distributed tables
# ----------

# ----------
# multi_drop_extension makes sure we can safely drop and recreate the extension
# ----------

# ----------
#  tests the propagation of mx-related metadata changes to metadata workers
# multi_unsupported_worker_operations tests that unsupported operations error out on metadata workers
# ----------

# ----------
#  tests if the GRANT ... ON SCHEMA queries are propagated correctly
#  makes sure we can work with tables in schemas other than public with no problem
# ----------

# ----------
# multi_function_evaluation tests edge-cases in master-side function pre-evaluation
# ----------
test: multi_function_evaluation

# ----------
#  tests truncate functionality for distributed tables
# ----------

# ----------
#  tests utility functions written for co-location feature & internal API
#  tests master_copy_shard_placement with colocated tables.
# ----------

# ----------
#  tests utility functions written for citus tools
# ----------

# ----------
# multi_foreign_key tests foreign key push down on distributed tables
# ----------
test: multi_foreign_key

# ----------
#  tests for upgrade_reference_table UDF
#  tests replicating reference tables to new nodes after we add new nodes
#  tests metadata changes after master_remove_node
# ----------

# --------
# Replicating reference tables to coordinator.  Add coordinator to pg_dist_node
# and rerun some of the tests.
# --------
test: foreign_key_to_reference_table


# ----------
#  tests for dropping shards using connection API
# ----------

# ----------
#  tests simple combinations of permission access and queries
# ----------

# ---------
#  tests for an obscure crash citus used to exhibit when shardids
# changed the table they belonged to during a session
# --------

# ---------
# multi_task_string_size tests task string size checks
# ---------
test: multi_task_string_size

# ---------
# connection encryption tests
# ---------

# ---------
# object distribution tests
# ---------
test: distributed_types_xact_add_enum_value

# ---------
# deparsing logic tests
# ---------

# ---------
# test that no tests leaked intermediate results. This should always be last
# Causes random test failures so commented out for now
# ---------
# test:
