# The pg_regress schedule. A line runs its tests in parallel, one backend # each, and the lines run one after the other. So that the suite is fast, # and so that it exercises ProvSQL under concurrency, tests share a line # unless one of these keeps them apart: # - a test that changes or reads what every test sees (the extension # itself, the tool registry, the whole circuit store, the probabilities # or tokens of the shared fixture personnel, the content of every # tracked table) runs on a line of its own; # - a test that reads an object another test creates (a table, a mapping, # a function) runs on a later line than it; # - two tests that create objects of the same name do not share a line # (a test leaving an object behind runs after those that create one of # that name). # A new test that only creates and drops objects of its own, under names no # other test uses, can join any line. schedule.14 and schedule.15 are # appended for PostgreSQL 14+ and 15+, then extension_upgrade (Makefile). test: setup # Each runs alone: they create databases, or check the store as a whole. test: per_db_circuit # The shared fixture personnel, then its provenance removed and re-added, # before anything maps its tokens. test: add_provenance test: remove_add_provenance test: transactional_metadata test: write_once_probability test: store_durability # Basic checks. identify_token and resolve_input answer from the content of # every tracked table, so each runs alone; the gate-cache pair must run in # two backends, one after the other. test: provenance_in_from subquery test: create_provenance_mapping test: identify_token test: circuit_subgraph simplify_identities test: resolve_input test: annotation_gate test: gate_cache_setup test: gate_cache_consistency # Semirings. sr_counting, sr_boolean, sr_minmax and formula create the # mappings and functions the next lines read. test: sr_formula sr_counting sr_boolean sr_why sr_how sr_which sr_tropical sr_viterbi sr_lukasiewicz sr_minmax sr_maxmin sr_subset capability sr_qualified_mapping # SQL language coverage. unsupported_features drops and re-creates the # extension, so it runs alone. test: formula counting boolean deterministic union_all test: union nested_union union_nary distinct group_by_provenance except null test: unsupported_features test: no_attribute resjunk values verbose_setops union_untracked star_provsql star_hint null_semantics nonzero cte active aggregation agg_kinds aggregate_null outer_join nested_antijoin sublink_block_shapes scalar_subquery join_syntax_equivalence # Aggregation, before personnel has probabilities (agg_arithmetic reads it # without them). test: agg_distinct agg_order_by agg_arithmetic agg_functions agg_deviation window_aggregates phantom_rows agg_distinct_null_where agg_distinct_expr agg_token_casts agg_support agg_case agg_avg_moment agg_token_text_as_uuid create_as insert_select_provenance no_zero_gate having_on_aggregation formula_on_having where_on_aggregation test: choose agg_token_text empty_count # The probabilities and descriptions of personnel, which everything below # reads. test: probability_setup test: viewing_setup # Probability computation, HAVING, and conditioning test: possible_worlds monte_carlo karp_luby stopping_rule sieve probability_paths probability_bounds dtree agg_uuid_aggfnoid gate_builders gate_builders_agg sr_boolexpr probability_having probability_having_avg_min_max having_boolean_connectors count_cmp_optimisation min_max_cmp_optimisation sum_cmp_optimisation having_safe_join_count having_safe_join_agg test: having_numeric having_union having_group_by_const having_grouped_column having_always_true having_min_max_scan test: having_bool_agg test: having_array_agg agg_filter set_operation_nesting set_operation_with_ties except_untracked_arm null_safe_join limit_warning limit_rank implicit_freeze having_impossible test: having_choose having_first_present test: having_correlated having_count_distinct scalar_empty_having having_sum_zero having_bid having_certified having_arithmetic having_agg_fptras insert_select_sublink insert_select_provsql_column test: inert_provenance_sublink conditioning given_conditioning rv_conditioning agg_conditioning # External compilers, tree decompositions, and knowledge-compilation helpers test: predicate_conditioning provenance_not mixed_selection last_eval_method d4 dsharp weightmc c2d minic2d d4_timeout external_tool_timeout semiring_timeout treedec_simple treedec treedec_mulinput default_probability_evaluate independent repair_key expected test: large_circuit btw_reachability tseytin_cnf tseytin_cnf_mapping tree_decomposition_dot compile_to_ddnnf_dot compile_to_ddnnf_dot_d4v2 compile_to_ddnnf_nnf compile_to_ddnnf_inversion_free ddnnf_stats tool_available circuit_subgraph_depth fallback_compiler_guc # Shapley and Banzhaf values, and makeDD: they rewrite the tokens or # probabilities of personnel, so each runs alone. test: shapley test: banzhaf test: shapley_mulinput test: makedd_auto test: view_circuit_multiple view_circuit_mulinput tool_search_path # The external-tool registry and the KCMCP client change what every # probability computation uses, so each runs alone (the KCMCP tests skip # unless test/kcmcp/with-tdkc.sh provisioned a server). test: tool_registry test: kcmcp_client_endpoint test: kcmcp_client_managed # Where-provenance, the tutorial, and the case studies test: keyword_table where_provenance where_provenance_join where_provenance_or tutorial casestudy1 test: casestudy2 casestudy3 casestudy5 group_by_empty grouping_sets continuous_basic continuous_sampler continuous_arithmetic continuous_transforms # Continuous random variables test: continuous_selection test: continuous_join continuous_union continuous_rangecheck continuous_rangecheck_having continuous_analytic continuous_gamma continuous_lognormal continuous_beta continuous_weibull_pareto continuous_inverse continuous_logistic continuous_discrete_families continuous_gmm continuous_information continuous_empirical continuous_comparison_surface continuous_expectation continuous_quantile continuous_mc_transparency continuous_conditioning test: continuous_latent continuous_posterior continuous_latent_aggregate continuous_latent_discrete continuous_latent_usecases continuous_cte_latent continuous_collapsed_posterior continuous_conjugate continuous_support continuous_hybrid continuous_rv_histogram continuous_mixture_basic continuous_mixture_sampler test: continuous_mixture_analytic test: continuous_mixture_support test: continuous_mixture_histogram test: continuous_mixture_hybrid continuous_categorical continuous_aggregation continuous_order_statistics continuous_covariance continuous_stat_aggregates # More continuous features, case studies 6 and 8, PROV export, table # metadata, and the safe-query rewriter test: continuous_case continuous_having continuous_having_rv_cmp continuous_sample_truncated continuous_analytical_curves formula_measure_gates casestudy6 casestudy8 to_provxml table_info ancestry ctas_inheritance safe_query_basic safe_query_pushdown safe_query_semiring safe_query_opaque safe_query_const_sel safe_query_pk_fd safe_query_deterministic safe_query_self_join_pk # Query classification, rewriting corner cases, and the joint-width UCQ # compiler test: safe_query_fd_closure safe_query_self_join_disjoint safe_query_view_descent safe_query_ancestry_disjoint safe_query_inner_join safe_query_inversion_free boolean_fold nested_agg_refuse reaggregation possible_worlds_aggregates rank_over_aggregate explode_agg_value sublink_no_relation sublink_boolean sublink_body_groups sublink_body_setop provenance_per_row ucq_joint ucq_joint_correlated # The Möbius-inversion route test: ucq_joint_answers mobius_safe mobius_selfjoin # The classifier's NOTICE is emitted each time a statement is planned, and a # statement is planned again when another test changes the catalog meanwhile: # classify_query, which counts these NOTICEs, runs alone. test: classify_query # Reclaiming what nothing references any more takes the database # exclusively, so it runs alone, and late: it removes the orphan gates every # earlier test left behind. test: circuit_cleanup