diff --git a/buildscripts/resmokeconfig/suites/timeseries_crud_jscore_passthrough.yml b/buildscripts/resmokeconfig/suites/timeseries_crud_jscore_passthrough.yml index 94ca9c62b4e..e526c981a98 100644 --- a/buildscripts/resmokeconfig/suites/timeseries_crud_jscore_passthrough.yml +++ b/buildscripts/resmokeconfig/suites/timeseries_crud_jscore_passthrough.yml @@ -14,305 +14,25 @@ selector: - jstests/core/query/queryable_encryption/**/*.js - jstests/core/query/sbe/**/*.js - # Time-series collection behavior is already tested within this directory. - - jstests/core/write/bulk/bulk_write_timeseries_basic.js - # Time-series collections already have the default clustered index. - - jstests/core/query/find_with_resume_after_param.js - - jstests/core/query/or_use_clustered_collection.js - # Unique indexes. - - jstests/core/write/uniqueness.js - - jstests/core/query/bulk/bulk_api_ordered.js - - jstests/core/query/bulk/bulk_api_unordered.js - # Time-series is not compatible with viewOn. - - jstests/core/query/collation/collation.js - - jstests/core/query/disallow_system_views_user_writes.js - - jstests/core/query/agg_hint.js - - jstests/core/query/collection_uuid_find.js - - jstests/core/query/parsing/collection_uuid_write_commands.js - # Time-series is not allowed with an explicit validator. - - jstests/core/query/bulk/bulk_write.js - - jstests/core/write/bulk/bulk_write_non_transaction.js - # Sparse indexes. - - jstests/core/query/distinct/distinct_hint.js - - jstests/core/query/plan_cache_stability.js - - jstests/core/query/sparse_index_supports_ne_null.js - # Text indexes. - - jstests/core/query/internal_strip_invalid_assignment.js - - jstests/core/query/plan_cache/plan_cache_eof.js - - jstests/core/query/release_memory/text_or.js # Hashed indexes. - - jstests/core/query/hashed_partial_and_sparse_index.js - - jstests/core/query/distinct/distinct_with_hashed_index.js - - jstests/core/query/distinct/distinct_for_passthrough.js - - jstests/core/query/index_with_hashed_path_prefix_of_nonhashed_path.js - jstests/core/query/internal_hash_eq/**/*.js - - jstests/core/query/project/projection_with_hashed_index.js - - jstests/core/query/single_field_hashed_index.js - # Indexed measurement field contains an array value - - jstests/core/query/project/projection_semantics.js - - jstests/core/query/array/array_index_and_nonIndex_consistent.js - - jstests/core/query/update/update_multi7.js - - jstests/core/query/delete/remove_with_in.js - - jstests/core/query/delete/remove_with_idx.js - - jstests/core/query/update/update_positional_inc.js - - jstests/core/query/update/update_arraymatch5.js - - jstests/core/query/update/update_arraymatch7.js - # findAndModify sort. - - jstests/core/query/natural_validation.js - - jstests/core/query/crud_api.js - - jstests/core/query/find_and_modify/find_and_modify.js - - jstests/core/query/find_and_modify/find_and_modify_positional.js - - jstests/core/query/find_and_modify/find_and_modify_empty_update.js - - jstests/core/query/find_and_modify/find_and_modify_invalid_query_params.js - - jstests/core/query/find_and_modify/find_and_modify_new_upsert_sort.js - # updateOne sort. - - jstests/core/query/update/updateOne_sort.js - - jstests/core/query/update/updateOne_sort_sharded.js - # Incompatible find command option. - - jstests/core/query/min_max_hashed_index.js # min - - jstests/core/query/expr/expr.js # divide - - jstests/core/query/show_record_id.js # showRecordId + # Explain will return different plan than expected when a collection becomes a time-series # collection. Also, query shape will be different. - - jstests/core/query/command_let_variables.js - - jstests/core/query/cover_null_queries.js - - jstests/core/query/covered_query_with_sort.js - - jstests/core/query/field_name_empty.js - - jstests/core/query/partialFilterExpression_with_geoWithin.js - - jstests/core/query/and/and3.js - - jstests/core/query/bittest.js - - jstests/core/query/boolean_expression_simplification.js - - jstests/core/query/distinct/distinct_compound_index.js - - jstests/core/query/distinct/distinct_index1.js - - jstests/core/query/distinct/distinct_multikey_dotted_path.js - - jstests/core/query/distinct/distinct_sbe_compatibility.js - - jstests/core/query/exists/existsa.js - jstests/core/query/explain/**/*.js - - jstests/core/query/expr/expr_and_or_index.js - - jstests/core/query/expr/expr_in_index_use.js - - jstests/core/query/expr/expr_index_use.js - - jstests/core/query/idhack.js - - jstests/core/query/index_deduplication.js - - jstests/core/query/plan_cache/introspect_hidden_index_plan_cache_entries.js - - jstests/core/query/or/or3.js - - jstests/core/query/or/or_to_in.js - - jstests/core/query/or/orf.js - - jstests/core/query/or/or_memory_limit.js - - jstests/core/query/plan_cache/plan_cache_clear.js - - jstests/core/query/plan_cache/plan_cache_list_plans.js - # Ignore because index filters are applied directly to collections, not views (or TS). - - jstests/core/query/query_settings/query_settings_and_index_filters.js - # Ignore because the rewrite of the query for TS leads to other stages preceding - # $planCacheStats, which is not allowed. - - jstests/core/query/query_settings/query_settings_reject_application_bypass.js - - jstests/core/query/query_settings/query_settings_plan_cache.js - # Ignore because the find command is rewritten for TS collections before reaching the failpoint. - - jstests/core/query/query_settings/query_shape_hash_in_current_op.js - - jstests/core/query/regex/regex.js - - jstests/core/query/regex/regex3.js - - jstests/core/query/regex/regex4.js - - jstests/core/query/regex/regex6.js - - jstests/core/query/regex/regex_distinct.js - - jstests/core/query/sort/sort_array.js - - jstests/core/query/sort/sort_merge_collation.js - - jstests/core/query/sort/sort_merge_memory_limit.js - - jstests/core/query/record_store_count.js - - jstests/core/query/delete/batched_multi_deletes_a.js - - jstests/core/query/delete/batched_multi_deletes_id.js - - jstests/core/query/bulk/bulk_write_profile.js - - jstests/core/query/parsing/delete_hint.js - - jstests/core/query/find_and_modify/find_and_modify_hint.js - - jstests/core/query/find_and_modify/find_and_modify_pipeline_update.js - - jstests/core/query/update/update_hint.js - - jstests/core/query/update/update_pipeline_shell_helpers.js - # Incompatible with the update option manipulation from the override. - - jstests/core/query/update/verify_update_mods.js - # Sort takes much more memory for the time-series version. - - jstests/core/query/sort/sortg.js - # Update operator results in document without a time field. - - jstests/core/query/find_and_modify/collation_find_and_modify.js - # The passthrough creates collections implicitly. - - jstests/core/write/no_db_created.js - - jstests/core/query/invalid_db_name.js - # Time-series collections have different _id properties. - - jstests/core/query/embedded_dollar_prefixed_field_validation.js - - jstests/core/query/field_name_validation.js - - jstests/core/query/regex/regex_not_id.js - - jstests/core/query/rename/rename_operator.js - - jstests/core/write/insert/batch_write_command_insert.js - - jstests/core/write/insert/insert1.js - - jstests/core/write/insert/insert_id_undefined.js - - jstests/core/query/update/update_mod_dotted.js - - jstests/core/query/update/update_find_and_modify_id.js - - jstests/core/query/update/update_setOnInsert.js - - jstests/core/query/update/upsert_fields.js - - jstests/core/query/update/upsert_fields_duplicate_or.js - - jstests/core/query/update/upsert_nor.js - - jstests/core/write/write_error_message_truncation.js - - jstests/core/write/write_result.js - # Time-series collections may generate different profiling entries from regular ones. - - jstests/core/query/count/count10.js - - jstests/core/query/count/count_plan_summary.js - - jstests/core/query/plan_cache/cached_plan_trial_does_not_discard_work.js - - jstests/core/query/top/top.js - - jstests/core/query/top/top_drop.js - # Buckets collection creates compounded secondary indexes, which is not compatible with wildcard indexes. - - jstests/core/query/update/update_with_pipeline.js - # Operations not allowed on views. - - jstests/core/query/project/positional_projection_multiple_array_fields.js # $slice - jstests/core/query/elemmatch/**/*.js # $elemMatch - - jstests/core/query/plan_cache/elem_match_index_diff_types.js # $elemMatch - - jstests/core/query/plan_cache/match_or_duplicate_predicate_plan_cache.js # locking - - jstests/core/query/plan_cache/query_solution_hash.js # locking - - jstests/core/query/sbe/sbe_plan_cache_autoparameterize_collscan.js # locking - - jstests/core/query/project/slice1.js # $slice - - jstests/core/query/find_and_modify/find_and_modify_positional_new_remove.js # $elemMatch + # Time-series collections are views which don't support map-reduce - - jstests/core/query/map_reduce/constructors.js - - jstests/core/query/function_string_representations.js - - jstests/core/query/map_reduce/map_reduce_validation.js - - jstests/core/query/map_reduce/mr_single_reduce.js - jstests/core/query/map_reduce/**/*.js - - jstests/core/query/recursion.js - # Incompatible aggregation operations. - - jstests/core/query/command_let_variables_merge_only.js # merge - - jstests/core/query/exhaust.js # singleBatch - - jstests/core/query/kill_cursors.js # noCursorTimeout - - jstests/core/query/min_max_bounds.js # min - - jstests/core/query/project/positional_projection.js # Positional projection - - jstests/core/query/batch_size.js # singleBatch - - jstests/core/query/dbref/dbref3.js # Positional projection - # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the - # first stage in a pipeline. This will be incomplatible with timeseries. - - jstests/core/query/plan_cache/in_expression_plan_cache.js - - jstests/core/query/plan_cache/plan_cache_distinct.js - - jstests/core/query/find/find_getmore_cmd.js # singleBatch - - jstests/core/query/find/finda.js # returnKey - - jstests/core/query/index_key_expression.js # Unclean aggregation result - - jstests/core/query/minmax.js # min - - jstests/core/query/minmax_edge.js # min - - jstests/core/query/partial_index_logical.js # Not first stage in pipeline - - jstests/core/query/plan_cache/plan_cache_list_shapes.js # Not first stage in pipeline - - jstests/core/query/plan_cache/plan_cache_positional_projection.js # Positional projection - - jstests/core/query/plan_cache/plan_cache_sbe.js # Not first stage in pipeline - - jstests/core/query/plan_cache/plan_cache_shell_helpers.js # Not first stage in pipeline - - jstests/core/query/plan_cache/plan_cache_stats_shard_and_host.js # Not first stage in pipeline - - jstests/core/query/project/project_with_collation.js # Positional projection - - jstests/core/query/sbe/sbe_plan_cache_autoparameterize_ixscan.js # Not first stage in pipeline - - jstests/core/query/sort/sorth.js # singleBatch - - jstests/core/query/sort/sortk.js # singleBatch - - jstests/core/query/return_key.js # returnKey - - jstests/core/query/sbe/sbe_plan_cache_duplicate_or_clauses.js # Not first stage in pipeline - - jstests/core/query/sort_min_max_options.js # max - - jstests/core/query/single_batch.js # singleBatch - - jstests/core/query/testminmax.js # min - # Different field ordering. - - jstests/core/query/basica.js - - jstests/core/query/group_lookup_with_canonical_query_prefix.js - - jstests/core/query/objid/objid3.js - - jstests/core/query/or/or1.js - - jstests/core/query/or/or2.js - # Runs for too long for time-series collections. - - jstests/core/query/batch_write/batch_write_command_update.js - - jstests/core/query/batch_write/batch_write_command_delete.js - # Multikey indexes and array measurement field. - - jstests/core/query/match_numeric_components.js - - jstests/core/query/array/array_index_scan_memory_limit.js - - jstests/core/query/array/array1.js - - jstests/core/query/array/arrayfind10.js - - jstests/core/query/array/arrayfind8.js - - jstests/core/query/collation_correctness_pbt.js - - jstests/core/query/fixed_collation_correctness_pbt.js - - jstests/core/query/covered_multikey.js - - jstests/core/query/dotted_path_in_null.js - - jstests/core/query/explode_for_sort_equality_to_array.js - - jstests/core/query/explode_for_sort_multikey.js - - jstests/core/query/find/find_dedup.js - - jstests/core/query/find/find_project_sort.js - - jstests/core/query/nan.js - - jstests/core/query/not/not2.js - - jstests/core/query/or/or8.js - - jstests/core/query/sort/sorta.js - - jstests/core/query/type/null_undefined.js - - jstests/core/query/type/type_array.js - - jstests/core/query/update/update_numeric_field_name.js - - jstests/core/query/run_all_plans_pbt.js - - jstests/core/query/plan_cache/cache_correctness_pbt.js - - jstests/core/query/index_correctness_pbt.js - - jstests/core/query/partial_index_pbt.js - - jstests/core/query/query_knob_correctness_pbt.js - - jstests/core/query/or/subplanning_pbt.js - # Time-series collections have different indexes from regular collections. - - jstests/core/query/array/arrayfind4.js - - jstests/core/query/array/arrayfind9.js - - jstests/core/query/array/arrayfinda.js - - jstests/core/query/count/count_hint.js - - jstests/core/query/exists/exists9.js - - jstests/core/query/sort/sort8.js - - jstests/core/query/update/collation_update.js - - jstests/core/query/commands_with_uuid.js - # Document size too big in the bucket format. - - jstests/core/query/max_doc_size.js - - jstests/core/query/find/find_getmore_bsonsize.js - - jstests/core/query/set/set7.js - # Different error message due to the override. - - jstests/core/query/update/update_arrayFilters.js - # TODO(SERVER-84158): Try to include this test(s). - - jstests/core/write/depth_limit.js - - jstests/core/query/mod/mod_with_where.js - - jstests/core/query/and/and.js - - jstests/core/query/cursor/cursora.js - - jstests/core/query/expressions_matching_whole_array.js - - jstests/core/query/find/find6.js + - jstests/core/query/js/**/*.js - - jstests/core/query/or/ora.js - jstests/core/query/where/**/*.js - - jstests/core/query/system_js_access.js - - jstests/core/query/system_js_drop.js - - jstests/core/query/find_and_modify/find_and_modify_where.js - # TODO(SERVER-85322): Try to include this test(s). - - jstests/core/query/resume_query.js - - jstests/core/query/resume_query_from_non_existent_record.js - - jstests/core/query/start_at_blocked_in_sbe.js - # Inserting into a time-series collection does not replace top-level empty timestamps. - - jstests/core/write/ts1.js - # Cursor manipulation incompatible with count 'applySkipLimit' option. - - jstests/core/query/count/count2.js - # Known unclear issues with distinct. - - jstests/core/query/distinct/distinct_semantics.js - - jstests/core/query/distinct/distinct_collator.js - # TODO(SERVER-85335): Try to include this test(s). - - jstests/core/query/project/projection_meta_index_key.js - - jstests/core/query/sort/sortl.js - # Parallel shell not running through the override. - - jstests/core/query/comment_field.js - # Time-series buckets processing may have different cursor behavior. - - jstests/core/query/cursor/getmore_invalidated_cursors.js - - jstests/core/query/cursor/limit_batch_size.js - # For inserts on time-series collections, mongod does _not_ replace empty timestamp values - # with the current time. - - jstests/core/write/empty_ts/empty_ts.js - - jstests/core/write/empty_ts/empty_ts_bulk_write.js - - jstests/core/write/empty_ts/bypass_empty_ts_replacement.js - - jstests/core/write/empty_ts/bypass_empty_ts_replacement_bulk_write.js - - jstests/core/write/empty_ts/bypass_empty_ts_replacement_timeseries.js - # Change stream pre-/post-images are not available for time-series collections. - - jstests/core/query/change_streams_pre_and_post_images_in_create_and_collmod.js - # Inserts documents that are too large for a timeseries collection. - - jstests/core/query/bson_size_limit.js - # Test relying on document ordering that can be different for time-series collections. - - jstests/core/query/update/update_fail_halts_modifications.js - # geoNear requires setup such as a optimizations to be enabled for TS. See timeseries_geonear.js - - jstests/core/query/geo/geo_extra_fields.js - # Test relies on creating a collection without an index, so notablescan leads to a failure. - - jstests/core/query/notablescan_sbe_consistency.js - # Use godinsert command that is not supported on timeseries collections - - jstests/core/query/update/update_guarantee_id.js exclude_with_any_tags: - requires_sharding - requires_capped - assumes_standalone_mongod + - exclude_from_timeseries_crud_passthrough executor: archive: hooks: diff --git a/jstests/core/query/agg_hint.js b/jstests/core/query/agg_hint.js index b39cf58e558..d3f2bcc57b6 100644 --- a/jstests/core/query/agg_hint.js +++ b/jstests/core/query/agg_hint.js @@ -6,6 +6,8 @@ // does_not_support_stepdowns, // # Explain of a resolved view must be executed by mongos. // directly_against_shardsvrs_incompatible, +// # Time series collections cannot be used as a source for `viewOn` or have view-like limitations in this context. +// exclude_from_timeseries_crud_passthrough, // ] import {assertDropCollection} from "jstests/libs/collection_drop_recreate.js"; import {getAggPlanStages, getPlanStages} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/and/and.js b/jstests/core/query/and/and.js index 37d8c1d1038..00b2be8f817 100644 --- a/jstests/core/query/and/and.js +++ b/jstests/core/query/and/and.js @@ -2,7 +2,9 @@ // @tags: [ // # Uses $where operator // requires_scripting, -// requires_getmore +// requires_getmore, +// # TODO(SERVER-84158): Try to include this test. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_and; diff --git a/jstests/core/query/and/and3.js b/jstests/core/query/and/and3.js index eaf77624369..9145f9f5d78 100644 --- a/jstests/core/query/and/and3.js +++ b/jstests/core/query/and/and3.js @@ -6,6 +6,9 @@ // assumes_read_concern_local, // requires_fcv_80, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_and3; diff --git a/jstests/core/query/array/array1.js b/jstests/core/query/array/array1.js index 4a17cc5295f..b6b55c6a5f7 100644 --- a/jstests/core/query/array/array1.js +++ b/jstests/core/query/array/array1.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] + const coll = db.array1; coll.drop(); diff --git a/jstests/core/query/array/array_index_and_nonIndex_consistent.js b/jstests/core/query/array/array_index_and_nonIndex_consistent.js index 600f34a7b81..6a79437bc4a 100644 --- a/jstests/core/query/array/array_index_and_nonIndex_consistent.js +++ b/jstests/core/query/array/array_index_and_nonIndex_consistent.js @@ -7,6 +7,8 @@ * # This test runs too long for TSAN and code coverage builds. * tsan_incompatible, * incompatible_with_gcov, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/array/array_index_scan_memory_limit.js b/jstests/core/query/array/array_index_scan_memory_limit.js index 6ce7c83e673..353b275a671 100644 --- a/jstests/core/query/array/array_index_scan_memory_limit.js +++ b/jstests/core/query/array/array_index_scan_memory_limit.js @@ -8,6 +8,8 @@ * requires_fcv_83, * requires_getmore, * uses_getmore_outside_of_transaction, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/array/arrayfind10.js b/jstests/core/query/array/arrayfind10.js index 8bc646d5079..6a0db2271be 100644 --- a/jstests/core/query/array/arrayfind10.js +++ b/jstests/core/query/array/arrayfind10.js @@ -2,6 +2,8 @@ * Tests some of the find command's semantics with respect to how arrays are handled. * @tags: [ * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/array/arrayfind4.js b/jstests/core/query/array/arrayfind4.js index 3e0cd46f460..a2039dc453f 100644 --- a/jstests/core/query/array/arrayfind4.js +++ b/jstests/core/query/array/arrayfind4.js @@ -1,6 +1,8 @@ // @tags: [ // requires_non_retryable_writes, -// requires_getmore +// requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] // Test query empty array SERVER-2258 diff --git a/jstests/core/query/array/arrayfind8.js b/jstests/core/query/array/arrayfind8.js index 9fd2be72335..7e90cf58f7e 100644 --- a/jstests/core/query/array/arrayfind8.js +++ b/jstests/core/query/array/arrayfind8.js @@ -2,7 +2,9 @@ * Matching behavior for $elemMatch applied to a top level element. * Includes tests for bugs described in SERVER-1264 and SERVER-4180. * @tags: [ - * requires_getmore + * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ const collNamePrefix = "jstests_arrayfind8_"; diff --git a/jstests/core/query/array/arrayfind9.js b/jstests/core/query/array/arrayfind9.js index 6c76c23a9cc..73fc7a4a734 100644 --- a/jstests/core/query/array/arrayfind9.js +++ b/jstests/core/query/array/arrayfind9.js @@ -1,6 +1,8 @@ // Assorted $elemMatch behavior checks. // @tags: [ -// requires_getmore +// requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_arrayfind9; diff --git a/jstests/core/query/array/arrayfinda.js b/jstests/core/query/array/arrayfinda.js index c74fb286897..7b52cb86a11 100644 --- a/jstests/core/query/array/arrayfinda.js +++ b/jstests/core/query/array/arrayfinda.js @@ -1,6 +1,8 @@ // Assorted $elemMatch matching behavior checks. // @tags: [ -// requires_getmore +// requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_arrayfinda; diff --git a/jstests/core/query/basica.js b/jstests/core/query/basica.js index 56ac102c718..2b3a3900974 100644 --- a/jstests/core/query/basica.js +++ b/jstests/core/query/basica.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections may return fields in a different order due to internal rewriting or view semantics. +// exclude_from_timeseries_crud_passthrough, +// ] + let t = db.basica; t.drop(); diff --git a/jstests/core/query/batch_size.js b/jstests/core/query/batch_size.js index 62fd5e233e5..051365d8c36 100644 --- a/jstests/core/query/batch_size.js +++ b/jstests/core/query/batch_size.js @@ -1,6 +1,9 @@ // @tags: [ // assumes_balancer_off, -// requires_getmore +// requires_getmore, +// # Time series collections (as views) have specific limitations on aggregation stages +// # (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). +// exclude_from_timeseries_crud_passthrough, // ] // Test subtleties of batchSize and limit. diff --git a/jstests/core/query/batch_write/batch_write_command_delete.js b/jstests/core/query/batch_write/batch_write_command_delete.js index 170955a75b8..5018ea80cc1 100644 --- a/jstests/core/query/batch_write/batch_write_command_delete.js +++ b/jstests/core/query/batch_write/batch_write_command_delete.js @@ -4,6 +4,8 @@ // requires_fastcount, // # TODO SERVER-89461 Investigate why test using huge batch size timeout in suites with balancer // assumes_balancer_off, +// # Runs for too long for time-series collections. +// exclude_from_timeseries_crud_passthrough, // ] // diff --git a/jstests/core/query/batch_write/batch_write_command_update.js b/jstests/core/query/batch_write/batch_write_command_update.js index f8f27b1622f..31fc664d8c3 100644 --- a/jstests/core/query/batch_write/batch_write_command_update.js +++ b/jstests/core/query/batch_write/batch_write_command_update.js @@ -7,6 +7,8 @@ // requires_fastcount, // # TODO SERVER-89461 Investigate why test using huge batch size timeout in suites with balancer // assumes_balancer_off, +// # Runs for too long for time-series collections. +// exclude_from_timeseries_crud_passthrough, // ] // diff --git a/jstests/core/query/bittest.js b/jstests/core/query/bittest.js index e6bfd087f97..e4920d85f7c 100644 --- a/jstests/core/query/bittest.js +++ b/jstests/core/query/bittest.js @@ -2,6 +2,9 @@ * This test ensures that bit test query operators work. * @tags: [ * assumes_read_concern_local, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getWinningPlanFromExplain, isCollscan} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/boolean_expression_simplification.js b/jstests/core/query/boolean_expression_simplification.js index 59b365abbb9..a0eb03d3ac1 100644 --- a/jstests/core/query/boolean_expression_simplification.js +++ b/jstests/core/query/boolean_expression_simplification.js @@ -4,6 +4,9 @@ * requires_fcv_72, * # explain command, used by the test, does not support majority read concern. * assumes_read_concern_local, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/bson_size_limit.js b/jstests/core/query/bson_size_limit.js index e8ee07cbb40..014669ae3ab 100644 --- a/jstests/core/query/bson_size_limit.js +++ b/jstests/core/query/bson_size_limit.js @@ -12,6 +12,8 @@ * requires_getmore, * # This test relies on query commands returning specific batch-sized responses. * assumes_no_implicit_cursor_exhaustion, + * # Inserts documents that are too large for a timeseries collection. + * exclude_from_timeseries_crud_passthrough, * ] */ const collName = jsTestName(); diff --git a/jstests/core/query/bulk/bulk_api_ordered.js b/jstests/core/query/bulk/bulk_api_ordered.js index 4258be0f7d9..9bbd7a6b178 100644 --- a/jstests/core/query/bulk/bulk_api_ordered.js +++ b/jstests/core/query/bulk/bulk_api_ordered.js @@ -1,5 +1,11 @@ // This test creates secondary unique: true indexes without the shard key prefix. -// @tags: [assumes_unsharded_collection, requires_multi_updates, requires_non_retryable_writes] +// @tags: [ +// assumes_unsharded_collection, +// requires_multi_updates, +// requires_non_retryable_writes, +// # Time series collections do not support unique indexes. +// exclude_from_timeseries_crud_passthrough, +// ] const coll = db[jsTestName()]; coll.drop(); diff --git a/jstests/core/query/bulk/bulk_api_unordered.js b/jstests/core/query/bulk/bulk_api_unordered.js index cbe5be6a9d9..5aadfe55aed 100644 --- a/jstests/core/query/bulk/bulk_api_unordered.js +++ b/jstests/core/query/bulk/bulk_api_unordered.js @@ -1,5 +1,11 @@ // This test creates secondary unique: true indexes without the shard key prefix. -// @tags: [assumes_unsharded_collection, requires_multi_updates, requires_non_retryable_writes] +// @tags: [ +// assumes_unsharded_collection, +// requires_multi_updates, +// requires_non_retryable_writes, +// # Time series collections do not support unique indexes. +// exclude_from_timeseries_crud_passthrough, +// ] const coll = db[jsTestName()]; coll.drop(); diff --git a/jstests/core/query/bulk/bulk_write.js b/jstests/core/query/bulk/bulk_write.js index 6dac8d760b9..02f10a5cdc6 100644 --- a/jstests/core/query/bulk/bulk_write.js +++ b/jstests/core/query/bulk/bulk_write.js @@ -5,7 +5,9 @@ * # The test runs commands that are not allowed with security token: bulkWrite. * not_allowed_with_signed_security_token, * command_not_supported_in_serverless, - * requires_fcv_80 + * requires_fcv_80, + * # Time-series is not allowed with an explicit validator. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/bulk/bulk_write_profile.js b/jstests/core/query/bulk/bulk_write_profile.js index 36f76fb0458..308bd5d8732 100644 --- a/jstests/core/query/bulk/bulk_write_profile.js +++ b/jstests/core/query/bulk/bulk_write_profile.js @@ -12,6 +12,8 @@ * assumes_no_implicit_index_creation, * # The test runs getLatestProfileEntry(). The downstream syncing node affects the profiler. * run_getLatestProfilerEntry, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/change_streams_pre_and_post_images_in_create_and_collmod.js b/jstests/core/query/change_streams_pre_and_post_images_in_create_and_collmod.js index 94e73c24020..755db485d30 100644 --- a/jstests/core/query/change_streams_pre_and_post_images_in_create_and_collmod.js +++ b/jstests/core/query/change_streams_pre_and_post_images_in_create_and_collmod.js @@ -4,6 +4,8 @@ * @tags: [ * requires_fcv_60, * requires_replication, + * # Change stream pre-/post-images are not available for time-series collections. + * exclude_from_timeseries_crud_passthrough, * ] */ import {assertDropCollection} from "jstests/libs/collection_drop_recreate.js"; diff --git a/jstests/core/query/collation/collation.js b/jstests/core/query/collation/collation.js index 0b5fa6bdf6f..5e90902810a 100644 --- a/jstests/core/query/collation/collation.js +++ b/jstests/core/query/collation/collation.js @@ -19,6 +19,9 @@ // # TODO(SERVER-112424): Instantiate ScopedAllowImplicitCollectionCreate_UNSAFE object in // # cloneCollectionAsCapped command // transitioning_replicaset_incompatible, +// # Time series collections cannot be used as a source for `viewOn` or have view-like +// # limitations in this context. +// exclude_from_timeseries_crud_passthrough, // ] // Integration tests for the collation feature. diff --git a/jstests/core/query/collation_correctness_pbt.js b/jstests/core/query/collation_correctness_pbt.js index 5459a7c0604..30cfe2760cb 100644 --- a/jstests/core/query/collation_correctness_pbt.js +++ b/jstests/core/query/collation_correctness_pbt.js @@ -7,6 +7,8 @@ * requires_getmore, * # This test runs commands that are not allowed with security token: setParameter. * not_allowed_with_signed_security_token, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/collection_uuid_find.js b/jstests/core/query/collection_uuid_find.js index 32b41af64eb..ca23c6dd602 100644 --- a/jstests/core/query/collection_uuid_find.js +++ b/jstests/core/query/collection_uuid_find.js @@ -4,6 +4,9 @@ * @tags: [ * requires_fcv_60, * assumes_stable_collection_uuid, + * # Time series collections cannot be used as a source for `viewOn` or have view-like + * # limitations in this context. + * exclude_from_timeseries_crud_passthrough, * ] */ const testDB = db.getSiblingDB(jsTestName()); diff --git a/jstests/core/query/command_let_variables.js b/jstests/core/query/command_let_variables.js index 6b7f40e338f..b28ebd024c8 100644 --- a/jstests/core/query/command_let_variables.js +++ b/jstests/core/query/command_let_variables.js @@ -6,6 +6,9 @@ // does_not_support_config_fuzzer, // requires_fcv_81, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] // import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/command_let_variables_merge_only.js b/jstests/core/query/command_let_variables_merge_only.js index e34b7455319..1925374af73 100644 --- a/jstests/core/query/command_let_variables_merge_only.js +++ b/jstests/core/query/command_let_variables_merge_only.js @@ -14,6 +14,9 @@ * # where the collection doesn't live on the primary shard. * assumes_balancer_off, * requires_getmore, + * # Time series collections (as views) have specific limitations on aggregation stages + * # (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.command_let_variables; diff --git a/jstests/core/query/commands_with_uuid.js b/jstests/core/query/commands_with_uuid.js index 255281c2223..817cfad00a5 100644 --- a/jstests/core/query/commands_with_uuid.js +++ b/jstests/core/query/commands_with_uuid.js @@ -7,6 +7,8 @@ * # Runs listCollections and asserts on the output. * assumes_no_implicit_index_creation, * assumes_stable_collection_uuid, + * # Time series collections have specific index limitations (e.g. count hints, collation updates). + * exclude_from_timeseries_crud_passthrough, * ] */ import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/comment_field.js b/jstests/core/query/comment_field.js index f77bdccb0b7..b9bc1dd5799 100644 --- a/jstests/core/query/comment_field.js +++ b/jstests/core/query/comment_field.js @@ -13,6 +13,8 @@ * requires_profiling, * uses_parallel_shell, * no_selinux, + * # Parallel shell not running through the override. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/count/count10.js b/jstests/core/query/count/count10.js index 9b3dc95bdc2..607ad86919c 100644 --- a/jstests/core/query/count/count10.js +++ b/jstests/core/query/count/count10.js @@ -16,6 +16,9 @@ // # The balancer can interrupt the count operation, entering in a race with the parallel shell. // assumes_balancer_off, // requires_getmore, +// # Time series collections (as views) generate different profiling/plan +// # summary entries (e.g. distinct from underlying bucket collection). +// exclude_from_timeseries_crud_passthrough, // ] let coll = db.count10; diff --git a/jstests/core/query/count/count2.js b/jstests/core/query/count/count2.js index d477e17db8a..02fc609dfbc 100644 --- a/jstests/core/query/count/count2.js +++ b/jstests/core/query/count/count2.js @@ -1,4 +1,9 @@ -// @tags: [requires_getmore, requires_fastcount] +// @tags: [ +// requires_getmore, +// requires_fastcount, +// # Cursor manipulation incompatible on timeseries with count 'applySkipLimit' option. +// exclude_from_timeseries_crud_passthrough, +// ] const coll = db.count2; coll.drop(); diff --git a/jstests/core/query/count/count_hint.js b/jstests/core/query/count/count_hint.js index 5a6f9a74b8c..670aeec7dfd 100644 --- a/jstests/core/query/count/count_hint.js +++ b/jstests/core/query/count/count_hint.js @@ -5,7 +5,11 @@ * - The hint() method should support both the name of the index, and the object spec of the * index. * - * @tags: [requires_fastcount] + * @tags: [ + * requires_fastcount, + * # Time series collections have specific index limitations (e.g. count hints, collation updates). + * exclude_from_timeseries_crud_passthrough, + * ] */ let coll = db.jstests_count_hint; coll.drop(); diff --git a/jstests/core/query/count/count_plan_summary.js b/jstests/core/query/count/count_plan_summary.js index 8d8b65d03bc..45d68923d87 100644 --- a/jstests/core/query/count/count_plan_summary.js +++ b/jstests/core/query/count/count_plan_summary.js @@ -17,6 +17,9 @@ // # shell to finish. // does_not_support_stepdowns, // assumes_balancer_off, +// # Time series collections (as views) generate different profiling/plan summary entries +// # (e.g. distinct from underlying bucket collection). +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/cover_null_queries.js b/jstests/core/query/cover_null_queries.js index d2e53778dec..c46719370d9 100644 --- a/jstests/core/query/cover_null_queries.js +++ b/jstests/core/query/cover_null_queries.js @@ -8,6 +8,9 @@ * # This test could produce unexpected explain output if additional indexes are created. * assumes_no_implicit_index_creation, * requires_getmore, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/covered_multikey.js b/jstests/core/query/covered_multikey.js index 0d0752e3a66..12186fe89e2 100644 --- a/jstests/core/query/covered_multikey.js +++ b/jstests/core/query/covered_multikey.js @@ -3,6 +3,8 @@ // order to apply the SHARDING_FILTER stage. // @tags: [ // assumes_unsharded_collection, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] /** diff --git a/jstests/core/query/covered_query_with_sort.js b/jstests/core/query/covered_query_with_sort.js index 54225e21f7a..4a26cf4c27e 100644 --- a/jstests/core/query/covered_query_with_sort.js +++ b/jstests/core/query/covered_query_with_sort.js @@ -6,6 +6,9 @@ // # in order to apply the SHARDING_FILTER stage. // assumes_unsharded_collection, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {getPlanStage, getWinningPlanFromExplain, isIndexOnly} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/crud_api.js b/jstests/core/query/crud_api.js index 99e60c428bb..4a46c8c0453 100644 --- a/jstests/core/query/crud_api.js +++ b/jstests/core/query/crud_api.js @@ -8,6 +8,8 @@ // requires_getmore, // # Unacknowledged writes are prohibited with sessions: // does_not_support_retryable_writes, +// # Time series collections do not support `sort` in `findAndModify` commands. +// exclude_from_timeseries_crud_passthrough, // ] import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/cursor/cursora.js b/jstests/core/query/cursor/cursora.js index 9caf8fd68f5..e564b771901 100644 --- a/jstests/core/query/cursor/cursora.js +++ b/jstests/core/query/cursor/cursora.js @@ -6,6 +6,8 @@ // requires_scripting, // uses_multiple_connections, // uses_parallel_shell, +// # TODO(SERVER-84158): Try to include this test. +// exclude_from_timeseries_crud_passthrough, // ] const t = db.cursora; diff --git a/jstests/core/query/cursor/getmore_invalidated_cursors.js b/jstests/core/query/cursor/getmore_invalidated_cursors.js index 87aedb8a554..fe5ba4c75bc 100644 --- a/jstests/core/query/cursor/getmore_invalidated_cursors.js +++ b/jstests/core/query/cursor/getmore_invalidated_cursors.js @@ -10,6 +10,8 @@ // requires_non_retryable_commands, // # In-memory data structures are not causally consistent. // does_not_support_causal_consistency, +// # Time-series buckets processing may have different cursor behavior. +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/cursor/limit_batch_size.js b/jstests/core/query/cursor/limit_batch_size.js index b442afea277..660c8f7efdd 100644 --- a/jstests/core/query/cursor/limit_batch_size.js +++ b/jstests/core/query/cursor/limit_batch_size.js @@ -5,6 +5,8 @@ * # TODO SERVER-111689 - remove this tag when isEOF() is supported on router. * assumes_against_mongod_not_mongos, * requires_fcv_83, + * # Time-series buckets processing may have different cursor behavior. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/dbref/dbref3.js b/jstests/core/query/dbref/dbref3.js index 0e12c90293c..e09c3691bbb 100644 --- a/jstests/core/query/dbref/dbref3.js +++ b/jstests/core/query/dbref/dbref3.js @@ -5,6 +5,9 @@ // requires_getmore, // # Positional projection is not supported on views. // incompatible_with_views, +// # Time series collections (as views) have specific limitations on aggregation stages +// # (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). +// exclude_from_timeseries_crud_passthrough, // ] let t = db.dbref3; diff --git a/jstests/core/query/delete/batched_multi_deletes_a.js b/jstests/core/query/delete/batched_multi_deletes_a.js index 411c31ffe61..f629b51700c 100644 --- a/jstests/core/query/delete/batched_multi_deletes_a.js +++ b/jstests/core/query/delete/batched_multi_deletes_a.js @@ -9,6 +9,8 @@ * does_not_support_transactions, * no_selinux, * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/delete/batched_multi_deletes_id.js b/jstests/core/query/delete/batched_multi_deletes_id.js index e16a0c7e33e..e3c6d4b13b2 100644 --- a/jstests/core/query/delete/batched_multi_deletes_id.js +++ b/jstests/core/query/delete/batched_multi_deletes_id.js @@ -9,6 +9,8 @@ * does_not_support_transactions, * no_selinux, * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/delete/remove_with_idx.js b/jstests/core/query/delete/remove_with_idx.js index 990654ffcbe..adb223be4d8 100644 --- a/jstests/core/query/delete/remove_with_idx.js +++ b/jstests/core/query/delete/remove_with_idx.js @@ -1,4 +1,9 @@ -// @tags: [requires_non_retryable_writes, requires_fastcount] +// @tags: [ +// requires_non_retryable_writes, +// requires_fastcount, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] const t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/delete/remove_with_in.js b/jstests/core/query/delete/remove_with_in.js index 39bc5a031c8..41b59ee5b76 100644 --- a/jstests/core/query/delete/remove_with_in.js +++ b/jstests/core/query/delete/remove_with_in.js @@ -1,4 +1,8 @@ -// @tags: [requires_non_retryable_writes] +// @tags: [ +// requires_non_retryable_writes, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] let t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/disallow_system_views_user_writes.js b/jstests/core/query/disallow_system_views_user_writes.js index 40fb66c5bfe..234863c40e1 100644 --- a/jstests/core/query/disallow_system_views_user_writes.js +++ b/jstests/core/query/disallow_system_views_user_writes.js @@ -3,6 +3,9 @@ * * @tags: [ * requires_non_retryable_writes, + * # Time series collections cannot be used as a source for `viewOn` or + * # shave view-like limitations in this context. + * exclude_from_timeseries_crud_passthrough, * ] */ const viewNs = "test.view"; diff --git a/jstests/core/query/distinct/distinct_collator.js b/jstests/core/query/distinct/distinct_collator.js index 8a9f7d1c6a5..323dee1f1a9 100644 --- a/jstests/core/query/distinct/distinct_collator.js +++ b/jstests/core/query/distinct/distinct_collator.js @@ -5,6 +5,8 @@ * assumes_write_concern_unchanged, * does_not_support_transactions, * does_not_support_stepdowns, + * # Known unclear issues with distinct on timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/distinct/distinct_compound_index.js b/jstests/core/query/distinct/distinct_compound_index.js index 25d99a53dc5..86234eb5fac 100644 --- a/jstests/core/query/distinct/distinct_compound_index.js +++ b/jstests/core/query/distinct/distinct_compound_index.js @@ -3,6 +3,9 @@ // assumes_unsharded_collection, // # Asserts that some queries use a collection scan. // assumes_no_implicit_index_creation, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; import { diff --git a/jstests/core/query/distinct/distinct_for_passthrough.js b/jstests/core/query/distinct/distinct_for_passthrough.js index dc6cb13cbbc..ded3c8d9204 100644 --- a/jstests/core/query/distinct/distinct_for_passthrough.js +++ b/jstests/core/query/distinct/distinct_for_passthrough.js @@ -9,7 +9,9 @@ * requires_fcv_82, * simulate_atlas_proxy_incompatible, * simulate_mongoq_incompatible, - * not_allowed_with_signed_security_token + * not_allowed_with_signed_security_token, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/distinct/distinct_hint.js b/jstests/core/query/distinct/distinct_hint.js index 92f3f77e604..e327409fe15 100644 --- a/jstests/core/query/distinct/distinct_hint.js +++ b/jstests/core/query/distinct/distinct_hint.js @@ -4,6 +4,8 @@ * @tags: [ * assumes_unsharded_collection, * requires_fcv_71, + * # Time series collections do not support sparse indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/distinct/distinct_index1.js b/jstests/core/query/distinct/distinct_index1.js index d327afe61a1..86f0a2451d4 100644 --- a/jstests/core/query/distinct/distinct_index1.js +++ b/jstests/core/query/distinct/distinct_index1.js @@ -3,6 +3,9 @@ * @tags: [ * assumes_balancer_off, * assumes_read_concern_local, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/distinct/distinct_multikey_dotted_path.js b/jstests/core/query/distinct/distinct_multikey_dotted_path.js index faa6034c54a..c0b600359ad 100644 --- a/jstests/core/query/distinct/distinct_multikey_dotted_path.js +++ b/jstests/core/query/distinct/distinct_multikey_dotted_path.js @@ -9,6 +9,9 @@ * @tags: [ * assumes_unsharded_collection, * does_not_support_stepdowns, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getAggPlanStages, getWinningPlanFromExplain, planHasStage} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/distinct/distinct_sbe_compatibility.js b/jstests/core/query/distinct/distinct_sbe_compatibility.js index 61999df6e96..73c8a05406a 100644 --- a/jstests/core/query/distinct/distinct_sbe_compatibility.js +++ b/jstests/core/query/distinct/distinct_sbe_compatibility.js @@ -11,7 +11,10 @@ * # Explain cannot run within a multi-document transaction. * does_not_support_transactions, * featureFlagShardFilteringDistinctScan, - * requires_fcv_82 + * requires_fcv_82, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {assertEngine, getPlanStage, getWinningPlanFromExplain} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/distinct/distinct_semantics.js b/jstests/core/query/distinct/distinct_semantics.js index bf2e21de5f9..69a862c08c0 100644 --- a/jstests/core/query/distinct/distinct_semantics.js +++ b/jstests/core/query/distinct/distinct_semantics.js @@ -1,5 +1,10 @@ /** * Test that 'distinct' command returns expected results for various inputs. + * + * @tags: [ + * # Known unclear issues with distinct on timeseries. + * exclude_from_timeseries_crud_passthrough, + * ] */ import {assertArrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/distinct/distinct_with_hashed_index.js b/jstests/core/query/distinct/distinct_with_hashed_index.js index 0f290ff0429..eb214e51ace 100644 --- a/jstests/core/query/distinct/distinct_with_hashed_index.js +++ b/jstests/core/query/distinct/distinct_with_hashed_index.js @@ -6,6 +6,8 @@ * @tags: [ * assumes_unsharded_collection, * does_not_support_stepdowns, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import { diff --git a/jstests/core/query/dotted_path_in_null.js b/jstests/core/query/dotted_path_in_null.js index 70eef8599ca..2b79f19be14 100644 --- a/jstests/core/query/dotted_path_in_null.js +++ b/jstests/core/query/dotted_path_in_null.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] + const coll = db.dotted_path_in_null; coll.drop(); diff --git a/jstests/core/query/embedded_dollar_prefixed_field_validation.js b/jstests/core/query/embedded_dollar_prefixed_field_validation.js index 565d72aadc6..ae9e79d49f6 100644 --- a/jstests/core/query/embedded_dollar_prefixed_field_validation.js +++ b/jstests/core/query/embedded_dollar_prefixed_field_validation.js @@ -5,6 +5,8 @@ * @tags: [ * assumes_unsharded_collection, * requires_fcv_71, + * # Time-series collections have different _id properties. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.field_name_validation; diff --git a/jstests/core/query/exhaust.js b/jstests/core/query/exhaust.js index e1a6f5dbeea..e0780c82fa2 100644 --- a/jstests/core/query/exhaust.js +++ b/jstests/core/query/exhaust.js @@ -5,6 +5,8 @@ // simulate_atlas_proxy_incompatible, // # This test relies on query commands returning specific batch-sized responses. // assumes_no_implicit_cursor_exhaustion, +// # Time series collections (as views) have specific limitations on aggregation stages (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.exhaustColl; diff --git a/jstests/core/query/exists/exists9.js b/jstests/core/query/exists/exists9.js index 36ebd8057ed..e689cc0af4e 100644 --- a/jstests/core/query/exists/exists9.js +++ b/jstests/core/query/exists/exists9.js @@ -1,6 +1,8 @@ // SERVER-393 Test exists with various empty array and empty object cases. // @tags: [ // requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_exists9; diff --git a/jstests/core/query/exists/existsa.js b/jstests/core/query/exists/existsa.js index 4fb00b52d63..22419414184 100644 --- a/jstests/core/query/exists/existsa.js +++ b/jstests/core/query/exists/existsa.js @@ -2,6 +2,9 @@ * Tests that sparse indexes are disallowed for $exists:false queries. * @tags: [ * requires_getmore, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.jstests_existsa; diff --git a/jstests/core/query/explode_for_sort_equality_to_array.js b/jstests/core/query/explode_for_sort_equality_to_array.js index 53d97b3c4ff..2942d6a4d14 100644 --- a/jstests/core/query/explode_for_sort_equality_to_array.js +++ b/jstests/core/query/explode_for_sort_equality_to_array.js @@ -8,6 +8,8 @@ * @tags: [ * # explain does not support majority read concern * assumes_read_concern_local, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getPlanStages, getWinningPlanFromExplain} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/explode_for_sort_multikey.js b/jstests/core/query/explode_for_sort_multikey.js index fa748dac7c8..12ab6d25d81 100644 --- a/jstests/core/query/explode_for_sort_multikey.js +++ b/jstests/core/query/explode_for_sort_multikey.js @@ -5,6 +5,8 @@ * requires_fcv_81, * # Makes assertions about the number of rejected plans * assumes_no_implicit_index_creation, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {hasRejectedPlans, planHasStage} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/expr/expr.js b/jstests/core/query/expr/expr.js index cf2c726f5d2..ca3e914f273 100644 --- a/jstests/core/query/expr/expr.js +++ b/jstests/core/query/expr/expr.js @@ -15,6 +15,8 @@ // requires_getmore, // # This test relies on query commands returning specific batch-sized responses. // assumes_no_implicit_cursor_exhaustion, +// # Test relies on mapReduce or unsupported $expr behaviors (e.g. $divide error codes) on time-series. +// exclude_from_timeseries_crud_passthrough, // ] import "jstests/libs/query/sbe_assert_error_override.js"; diff --git a/jstests/core/query/expr/expr_and_or_index.js b/jstests/core/query/expr/expr_and_or_index.js index 4f2e21bf915..fdea244544a 100644 --- a/jstests/core/query/expr/expr_and_or_index.js +++ b/jstests/core/query/expr/expr_and_or_index.js @@ -1,7 +1,10 @@ /* * Tests the rewrite of queries that contain $and inside $expr. * @tags: [ - * requires_fcv_82 + * requires_fcv_82, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/expr/expr_in_index_use.js b/jstests/core/query/expr/expr_in_index_use.js index c6cf697e726..ae9f3094581 100644 --- a/jstests/core/query/expr/expr_in_index_use.js +++ b/jstests/core/query/expr/expr_in_index_use.js @@ -8,6 +8,9 @@ // assumes_read_concern_local, // requires_fcv_81, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import { diff --git a/jstests/core/query/expr/expr_index_use.js b/jstests/core/query/expr/expr_index_use.js index 006904624e9..76a03975ebf 100644 --- a/jstests/core/query/expr/expr_index_use.js +++ b/jstests/core/query/expr/expr_index_use.js @@ -7,6 +7,9 @@ // requires_getmore, // # $text is not supported on views. // incompatible_with_views, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {getAggPlanStage, getEngine, getPlanStage, hasRejectedPlans} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/expressions_matching_whole_array.js b/jstests/core/query/expressions_matching_whole_array.js index adc13084586..f0cf9c284a5 100644 --- a/jstests/core/query/expressions_matching_whole_array.js +++ b/jstests/core/query/expressions_matching_whole_array.js @@ -4,6 +4,8 @@ // # Uses $where operator // requires_scripting, // requires_getmore, +// # TODO(SERVER-84158): Try to include this test. +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.expressions_matching_whole_array; diff --git a/jstests/core/query/field_name_empty.js b/jstests/core/query/field_name_empty.js index c26e167ad97..a2c7a66c660 100644 --- a/jstests/core/query/field_name_empty.js +++ b/jstests/core/query/field_name_empty.js @@ -3,6 +3,9 @@ * @tags: [ * assumes_read_concern_local, * requires_getmore, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {assertArrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/field_name_validation.js b/jstests/core/query/field_name_validation.js index fdf1ebaf09a..a23b7200cda 100644 --- a/jstests/core/query/field_name_validation.js +++ b/jstests/core/query/field_name_validation.js @@ -10,6 +10,8 @@ * @tags: [ * assumes_unsharded_collection, * requires_getmore, + * # Time-series collections have different _id properties. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.field_name_validation; diff --git a/jstests/core/query/find/find6.js b/jstests/core/query/find/find6.js index 9fffa304d41..0af87f1d54a 100644 --- a/jstests/core/query/find/find6.js +++ b/jstests/core/query/find/find6.js @@ -2,6 +2,8 @@ // requires_fastcount, // # Uses $where operator // requires_scripting, +// # TODO(SERVER-84158): Try to include this test. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.find6; diff --git a/jstests/core/query/find/find_dedup.js b/jstests/core/query/find/find_dedup.js index cea43cc0019..bf96fac8be1 100644 --- a/jstests/core/query/find/find_dedup.js +++ b/jstests/core/query/find/find_dedup.js @@ -2,7 +2,9 @@ // // @tags: [ // requires_fastcount, -// requires_getmore +// requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.jstests_find_dedup; diff --git a/jstests/core/query/find/find_getmore_bsonsize.js b/jstests/core/query/find/find_getmore_bsonsize.js index 2695c880761..6eb144dcf1e 100644 --- a/jstests/core/query/find/find_getmore_bsonsize.js +++ b/jstests/core/query/find/find_getmore_bsonsize.js @@ -4,6 +4,9 @@ // does_not_support_config_fuzzer, // # This test relies on query commands returning specific batch-sized responses. // assumes_no_implicit_cursor_exhaustion, +// # Time series collections pack measurements into buckets, potentially exceeding +// # BSON size limits earlier than regular collections. +// exclude_from_timeseries_crud_passthrough, // ] // Ensure that the find and getMore commands can handle documents nearing the 16 MB size limit for diff --git a/jstests/core/query/find/find_getmore_cmd.js b/jstests/core/query/find/find_getmore_cmd.js index f7c55b48ff1..10da7f1a0ed 100644 --- a/jstests/core/query/find/find_getmore_cmd.js +++ b/jstests/core/query/find/find_getmore_cmd.js @@ -2,6 +2,9 @@ // requires_getmore, // # This test relies on query commands returning specific batch-sized responses. // assumes_no_implicit_cursor_exhaustion, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] // Tests that explicitly invoke the find and getMore commands. diff --git a/jstests/core/query/find/find_project_sort.js b/jstests/core/query/find/find_project_sort.js index b9c86736b84..3637c58afd6 100644 --- a/jstests/core/query/find/find_project_sort.js +++ b/jstests/core/query/find/find_project_sort.js @@ -1,7 +1,9 @@ /** * Test a variety of predicates for the find command's filter, projection and sort expressions. * @tags: [ - * requires_getmore + * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {arrayEq, orderedArrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/find/finda.js b/jstests/core/query/find/finda.js index 97e6b3ea156..d770fba2cea 100644 --- a/jstests/core/query/find/finda.js +++ b/jstests/core/query/find/finda.js @@ -2,6 +2,9 @@ // requires_getmore, // # This test relies on query commands returning specific batch-sized responses. // assumes_no_implicit_cursor_exhaustion, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] // Tests where the QueryOptimizerCursor enters takeover mode during a query rather than a get more. diff --git a/jstests/core/query/find_and_modify/collation_find_and_modify.js b/jstests/core/query/find_and_modify/collation_find_and_modify.js index 2aac2631a67..59df0336870 100644 --- a/jstests/core/query/find_and_modify/collation_find_and_modify.js +++ b/jstests/core/query/find_and_modify/collation_find_and_modify.js @@ -1,6 +1,10 @@ // Cannot implicitly shard accessed collections because of collection existing when none // expected. -// @tags: [assumes_no_implicit_collection_creation_after_drop] +// @tags: [ +// assumes_no_implicit_collection_creation_after_drop, +// # Update operator results in document without a time field. +// exclude_from_timeseries_crud_passthrough, +// ] // Integration tests for collation-aware findAndModify. const coll = db[jsTestName()]; diff --git a/jstests/core/query/find_and_modify/find_and_modify.js b/jstests/core/query/find_and_modify/find_and_modify.js index 117a3d18d5e..3c08b52d60d 100644 --- a/jstests/core/query/find_and_modify/find_and_modify.js +++ b/jstests/core/query/find_and_modify/find_and_modify.js @@ -1,5 +1,7 @@ // @tags: [ // requires_fastcount, +// # Time series collections do not support `sort` in `findAndModify` commands. +// exclude_from_timeseries_crud_passthrough, // ] const t = db[jsTestName()]; diff --git a/jstests/core/query/find_and_modify/find_and_modify_empty_update.js b/jstests/core/query/find_and_modify/find_and_modify_empty_update.js index 79ceaa5907f..0936882d050 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_empty_update.js +++ b/jstests/core/query/find_and_modify/find_and_modify_empty_update.js @@ -1,4 +1,8 @@ -// @tags: [requires_non_retryable_writes] +// @tags: [ +// requires_non_retryable_writes, +// # Time series collections do not support `sort` in `findAndModify` commands. +// exclude_from_timeseries_crud_passthrough, +// ] // Test passing update:{} to findAndModify. SERVER-13883. diff --git a/jstests/core/query/find_and_modify/find_and_modify_hint.js b/jstests/core/query/find_and_modify/find_and_modify_hint.js index e22c9c19e58..6f23b10b23f 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_hint.js +++ b/jstests/core/query/find_and_modify/find_and_modify_hint.js @@ -6,6 +6,8 @@ * @tags: [ * assumes_unsharded_collection, * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/find_and_modify/find_and_modify_invalid_query_params.js b/jstests/core/query/find_and_modify/find_and_modify_invalid_query_params.js index e3a9151f161..f72c88745f7 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_invalid_query_params.js +++ b/jstests/core/query/find_and_modify/find_and_modify_invalid_query_params.js @@ -4,6 +4,8 @@ * * @tags: [ * assumes_unsharded_collection, + * # Time series collections do not support `sort` in `findAndModify` commands. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db[jsTestName()]; diff --git a/jstests/core/query/find_and_modify/find_and_modify_new_upsert_sort.js b/jstests/core/query/find_and_modify/find_and_modify_new_upsert_sort.js index 3814967bac4..c7d70250503 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_new_upsert_sort.js +++ b/jstests/core/query/find_and_modify/find_and_modify_new_upsert_sort.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections do not support `sort` in `findAndModify` commands. +// exclude_from_timeseries_crud_passthrough, +// ] + const t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/find_and_modify/find_and_modify_pipeline_update.js b/jstests/core/query/find_and_modify/find_and_modify_pipeline_update.js index 93e88e3f137..17794c3fc4a 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_pipeline_update.js +++ b/jstests/core/query/find_and_modify/find_and_modify_pipeline_update.js @@ -1,6 +1,10 @@ /** * Tests the pipeline-style update is accepted by the findAndModify command. - * @tags: [requires_non_retryable_writes] + * @tags: [ + * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, + * ] */ import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; import {getPlanStage, planHasStage} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/find_and_modify/find_and_modify_positional.js b/jstests/core/query/find_and_modify/find_and_modify_positional.js index 0ff48020ed3..4be1e10dc1f 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_positional.js +++ b/jstests/core/query/find_and_modify/find_and_modify_positional.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections do not support `sort` in `findAndModify` commands. +// exclude_from_timeseries_crud_passthrough, +// ] + let t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/find_and_modify/find_and_modify_positional_new_remove.js b/jstests/core/query/find_and_modify/find_and_modify_positional_new_remove.js index 19f090fe042..31e44275d48 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_positional_new_remove.js +++ b/jstests/core/query/find_and_modify/find_and_modify_positional_new_remove.js @@ -4,6 +4,8 @@ * @tags: [ * # $elemMatch is not supported in find on a view. * incompatible_with_views, + * # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). + * exclude_from_timeseries_crud_passthrough, * ] */ const t = db[jsTestName()]; diff --git a/jstests/core/query/find_and_modify/find_and_modify_where.js b/jstests/core/query/find_and_modify/find_and_modify_where.js index 0d0df40293a..e3d66d16011 100644 --- a/jstests/core/query/find_and_modify/find_and_modify_where.js +++ b/jstests/core/query/find_and_modify/find_and_modify_where.js @@ -4,6 +4,8 @@ // // # Uses $where operator // requires_scripting, +// # TODO(SERVER-84158): Try to include this test(s). +// exclude_from_timeseries_crud_passthrough, // ] const t = db[jsTestName()]; diff --git a/jstests/core/query/find_with_resume_after_param.js b/jstests/core/query/find_with_resume_after_param.js index 6d889e38559..da038a03cce 100644 --- a/jstests/core/query/find_with_resume_after_param.js +++ b/jstests/core/query/find_with_resume_after_param.js @@ -17,6 +17,8 @@ * requires_capped, * # TODO(SERVER-113809): Check query error on replicaset running as --shardsvr * transitioning_replicaset_incompatible, + * # Time-series collections already have the default clustered index. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/fixed_collation_correctness_pbt.js b/jstests/core/query/fixed_collation_correctness_pbt.js index 650a09ed747..1fb4ecadd4a 100644 --- a/jstests/core/query/fixed_collation_correctness_pbt.js +++ b/jstests/core/query/fixed_collation_correctness_pbt.js @@ -10,7 +10,9 @@ * # This test runs commands that are not allowed with security token: setParameter. * not_allowed_with_signed_security_token, * # Multiversion tests rediscover an issue where a buggy optimization omits $sortKey when required. - * requires_fcv_83 + * requires_fcv_83, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/function_string_representations.js b/jstests/core/query/function_string_representations.js index 309630a33e3..74a1c0c2051 100644 --- a/jstests/core/query/function_string_representations.js +++ b/jstests/core/query/function_string_representations.js @@ -9,6 +9,8 @@ * uses_map_reduce_with_temp_collections, * # Uses $where operator * requires_scripting, + * # Time-series collections are views which don't support map-reduce + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/geo/geo_extra_fields.js b/jstests/core/query/geo/geo_extra_fields.js index 187b6f57540..32e3386ffb2 100644 --- a/jstests/core/query/geo/geo_extra_fields.js +++ b/jstests/core/query/geo/geo_extra_fields.js @@ -1,7 +1,9 @@ // This test verifies that queries on GeoJSON work regardless of extra fields and their // position in respect to the GeoJSON fields. // @tags: [ -// requires_fcv_82 +// requires_fcv_82, +// # geoNear requires setup such as a optimizations to be enabled for TS. See timeseries_geonear.js +// exclude_from_timeseries_crud_passthrough, // ] const testDB = db.geo_extra_fields; diff --git a/jstests/core/query/group_lookup_with_canonical_query_prefix.js b/jstests/core/query/group_lookup_with_canonical_query_prefix.js index 318a1df14d5..c55f7373e24 100644 --- a/jstests/core/query/group_lookup_with_canonical_query_prefix.js +++ b/jstests/core/query/group_lookup_with_canonical_query_prefix.js @@ -15,6 +15,8 @@ * assumes_read_concern_unchanged, * requires_fcv_80, * no_selinux, + * # Time series collections may return fields in a different order due to internal rewriting or view semantics. + * exclude_from_timeseries_crud_passthrough, * ] */ import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/hashed_partial_and_sparse_index.js b/jstests/core/query/hashed_partial_and_sparse_index.js index ff8ded99e7f..0c8fd88a90d 100644 --- a/jstests/core/query/hashed_partial_and_sparse_index.js +++ b/jstests/core/query/hashed_partial_and_sparse_index.js @@ -4,7 +4,9 @@ * prefix. * @tags: [ * assumes_read_concern_local, - * requires_getmore + * requires_getmore, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/idhack.js b/jstests/core/query/idhack.js index 8e11d26e3ff..3be3d060434 100644 --- a/jstests/core/query/idhack.js +++ b/jstests/core/query/idhack.js @@ -5,6 +5,9 @@ // requires_getmore, // # $elemMatch is not supported in find on a view. // incompatible_with_views, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] // Include helpers for analyzing explain output. import {getWinningPlanFromExplain, isExpress, isIdhackOrExpress} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/index_correctness_pbt.js b/jstests/core/query/index_correctness_pbt.js index 504385a9e98..6fcac41e11e 100644 --- a/jstests/core/query/index_correctness_pbt.js +++ b/jstests/core/query/index_correctness_pbt.js @@ -12,6 +12,8 @@ * does_not_support_stepdowns, * # Runs queries that may return many results, requiring getmores * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {createCorrectnessProperty} from "jstests/libs/property_test_helpers/common_properties.js"; diff --git a/jstests/core/query/index_deduplication.js b/jstests/core/query/index_deduplication.js index 00de51c1328..473ad9c211f 100644 --- a/jstests/core/query/index_deduplication.js +++ b/jstests/core/query/index_deduplication.js @@ -11,7 +11,10 @@ * # This test runs commands that are not allowed with security token: setParameter. * not_allowed_with_signed_security_token, * # Index deduping not available on earlier FCVs. - * requires_fcv_80 + * requires_fcv_80, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/index_key_expression.js b/jstests/core/query/index_key_expression.js index f44105f27e6..f641f0b5dc8 100644 --- a/jstests/core/query/index_key_expression.js +++ b/jstests/core/query/index_key_expression.js @@ -4,6 +4,9 @@ * @tags: [ * does_not_support_stepdowns, * requires_fcv_63, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ import {FeatureFlagUtil} from "jstests/libs/feature_flag_util.js"; diff --git a/jstests/core/query/index_with_hashed_path_prefix_of_nonhashed_path.js b/jstests/core/query/index_with_hashed_path_prefix_of_nonhashed_path.js index 8930986e4af..8f58ac8169e 100644 --- a/jstests/core/query/index_with_hashed_path_prefix_of_nonhashed_path.js +++ b/jstests/core/query/index_with_hashed_path_prefix_of_nonhashed_path.js @@ -4,7 +4,12 @@ * test reproduces several failing cases for passthrough suites. * * TODO BACKPORT-24552, BACKPORT-24553 - relax this fcv requirement. - * @tags: [requires_fcv_82, requires_non_retryable_commands] + * @tags: [ + * requires_fcv_82, + * requires_non_retryable_commands, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, + * ] */ import {TestCases} from "jstests/libs/query/index_with_hashed_path_prefix_of_nonhashed_path_tests.js"; diff --git a/jstests/core/query/internal_strip_invalid_assignment.js b/jstests/core/query/internal_strip_invalid_assignment.js index 137543a549b..3f674e7270d 100644 --- a/jstests/core/query/internal_strip_invalid_assignment.js +++ b/jstests/core/query/internal_strip_invalid_assignment.js @@ -7,6 +7,8 @@ * @tags: [ * # Explain command does not support read concerns other than local. * assumes_read_concern_local, + * # Time series collections do not support text indexes. + * exclude_from_timeseries_crud_passthrough, * ] */ import {planHasStage} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/invalid_db_name.js b/jstests/core/query/invalid_db_name.js index c3a95c4895a..a0d96866904 100644 --- a/jstests/core/query/invalid_db_name.js +++ b/jstests/core/query/invalid_db_name.js @@ -2,7 +2,9 @@ // // Can't create a collection with invalid database name // @tags: [ -// assumes_no_implicit_collection_creation_on_get_collection +// assumes_no_implicit_collection_creation_on_get_collection, +// # The passthrough creates collections implicitly. +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/kill_cursors.js b/jstests/core/query/kill_cursors.js index 41dc79da6fd..e1a7668c446 100644 --- a/jstests/core/query/kill_cursors.js +++ b/jstests/core/query/kill_cursors.js @@ -11,6 +11,8 @@ // uses_testing_only_commands, // # This test relies on find commands returning specific batch-sized responses. // assumes_no_implicit_cursor_exhaustion, +// # Time series collections (as views) have specific limitations on aggregation stages (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). +// exclude_from_timeseries_crud_passthrough, // ] let cmdRes; diff --git a/jstests/core/query/map_reduce/constructors.js b/jstests/core/query/map_reduce/constructors.js index e5cf974e2a9..ec222d027e0 100644 --- a/jstests/core/query/map_reduce/constructors.js +++ b/jstests/core/query/map_reduce/constructors.js @@ -9,6 +9,8 @@ // # This test has statements that do not support non-local read concern. // does_not_support_causal_consistency, // requires_scripting, +// # Time-series collections are views which don't support map-reduce +// exclude_from_timeseries_crud_passthrough, // ] // Takes a list of constructors and returns a new list with an extra entry for each constructor with diff --git a/jstests/core/query/map_reduce/map_reduce_validation.js b/jstests/core/query/map_reduce/map_reduce_validation.js index fd46def947a..781f6a95e21 100644 --- a/jstests/core/query/map_reduce/map_reduce_validation.js +++ b/jstests/core/query/map_reduce/map_reduce_validation.js @@ -7,6 +7,8 @@ // does_not_support_stepdowns, // uses_map_reduce_with_temp_collections, // requires_scripting, +// # Time-series collections are views which don't support map-reduce +// exclude_from_timeseries_crud_passthrough, // ] import {assertDropCollection} from "jstests/libs/collection_drop_recreate.js"; import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/map_reduce/mr_single_reduce.js b/jstests/core/query/map_reduce/mr_single_reduce.js index a7ef48aa602..997f223acda 100644 --- a/jstests/core/query/map_reduce/mr_single_reduce.js +++ b/jstests/core/query/map_reduce/mr_single_reduce.js @@ -5,6 +5,8 @@ // not_allowed_with_signed_security_token, // # Uses mapReduce command. // requires_scripting, +// # Time-series collections are views which don't support map-reduce +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.bar; diff --git a/jstests/core/query/match_numeric_components.js b/jstests/core/query/match_numeric_components.js index 94da9eb1671..f7521b1e734 100644 --- a/jstests/core/query/match_numeric_components.js +++ b/jstests/core/query/match_numeric_components.js @@ -2,6 +2,8 @@ * Tests behavior of the match language when using numeric path components. * @tags: [ * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.match_numeric_components; diff --git a/jstests/core/query/max_doc_size.js b/jstests/core/query/max_doc_size.js index 8f9f7309f11..7acf683d98a 100644 --- a/jstests/core/query/max_doc_size.js +++ b/jstests/core/query/max_doc_size.js @@ -16,6 +16,8 @@ * # under burn-in configuration. * # TODO(SERVER-111328): Remove this tag after investigating memory resource issues. * assumes_read_preference_unchanged, + * # Time series collections pack measurements into buckets, potentially exceeding BSON size limits earlier than regular collections. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/min_max_bounds.js b/jstests/core/query/min_max_bounds.js index 918eaaecdda..8c8f0c2d0dd 100644 --- a/jstests/core/query/min_max_bounds.js +++ b/jstests/core/query/min_max_bounds.js @@ -3,6 +3,8 @@ * @tags: [ * assumes_balancer_off, * requires_getmore, + * # Time series collections (as views) have specific limitations on aggregation stages (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). + * exclude_from_timeseries_crud_passthrough, * ] */ import {resultsEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/min_max_hashed_index.js b/jstests/core/query/min_max_hashed_index.js index d2a6fc41da6..f8d77a2fd41 100644 --- a/jstests/core/query/min_max_hashed_index.js +++ b/jstests/core/query/min_max_hashed_index.js @@ -2,6 +2,8 @@ * Check that min() and max() work with a hashed index. * @tags: [ * requires_getmore, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.min_max_hashed_index; diff --git a/jstests/core/query/minmax.js b/jstests/core/query/minmax.js index ad7a20b2158..51454f71cdc 100644 --- a/jstests/core/query/minmax.js +++ b/jstests/core/query/minmax.js @@ -2,6 +2,9 @@ // @tags: [ // assumes_balancer_off, // requires_getmore, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] import {resultsEq} from "jstests/aggregation/extras/utils.js"; import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/minmax_edge.js b/jstests/core/query/minmax_edge.js index 304a1eb8b92..cbc7bcf7122 100644 --- a/jstests/core/query/minmax_edge.js +++ b/jstests/core/query/minmax_edge.js @@ -3,6 +3,9 @@ * Other edge cases are covered by C++ unit tests. * @tags: [ * requires_getmore, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ const t = db.minmax_edge; diff --git a/jstests/core/query/mod/mod_with_where.js b/jstests/core/query/mod/mod_with_where.js index fcadd7bed3b..fdc3fc5a5ac 100644 --- a/jstests/core/query/mod/mod_with_where.js +++ b/jstests/core/query/mod/mod_with_where.js @@ -5,6 +5,8 @@ // requires_scripting, // assumes_read_concern_local, // requires_getmore, +// # TODO(SERVER-84158): Try to include this test(s). +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.mod_with_where; diff --git a/jstests/core/query/nan.js b/jstests/core/query/nan.js index 8d2e2bcd8a7..83c3ca0a063 100644 --- a/jstests/core/query/nan.js +++ b/jstests/core/query/nan.js @@ -2,6 +2,8 @@ * Tests basic NaN handling. Note that WiredTiger indexes handle -NaN and NaN differently. * @tags: [ * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {assertArrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/natural_validation.js b/jstests/core/query/natural_validation.js index e463c66fa1e..fe69d4ab260 100644 --- a/jstests/core/query/natural_validation.js +++ b/jstests/core/query/natural_validation.js @@ -5,6 +5,8 @@ * assumes_unsharded_collection, * requires_fastcount, * requires_fcv_70, + * # Time series collections do not support `sort` in `findAndModify` commands. + * exclude_from_timeseries_crud_passthrough, * ] */ import {assertDropAndRecreateCollection} from "jstests/libs/collection_drop_recreate.js"; diff --git a/jstests/core/query/not/not2.js b/jstests/core/query/not/not2.js index 73526660b05..9d1ea3c52d9 100644 --- a/jstests/core/query/not/not2.js +++ b/jstests/core/query/not/not2.js @@ -1,5 +1,7 @@ // @tags: [ // requires_non_retryable_writes, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.jstests_not2; diff --git a/jstests/core/query/notablescan_sbe_consistency.js b/jstests/core/query/notablescan_sbe_consistency.js index 64ae164d3c9..bfa1be20060 100644 --- a/jstests/core/query/notablescan_sbe_consistency.js +++ b/jstests/core/query/notablescan_sbe_consistency.js @@ -8,6 +8,8 @@ // assumes_read_preference_unchanged, // assumes_superuser_permissions, // does_not_support_stepdowns, +// # Test relies on creating a collection without an index, so notablescan leads to a failure. +// exclude_from_timeseries_crud_passthrough, // ] // Populate foo and foo2 collections. diff --git a/jstests/core/query/objid/objid3.js b/jstests/core/query/objid/objid3.js index 7e248f33df0..7af20d9a7ce 100644 --- a/jstests/core/query/objid/objid3.js +++ b/jstests/core/query/objid/objid3.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections may return fields in a different order due to internal rewriting or view semantics. +// exclude_from_timeseries_crud_passthrough, +// ] + let t = db.objid3; t.drop(); diff --git a/jstests/core/query/or/or1.js b/jstests/core/query/or/or1.js index d04b81e4400..1e4c2905325 100644 --- a/jstests/core/query/or/or1.js +++ b/jstests/core/query/or/or1.js @@ -1,5 +1,7 @@ // @tags: [ // requires_getmore, +// # Time series collections may return fields in a different order due to internal rewriting or view semantics. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_or1; diff --git a/jstests/core/query/or/or2.js b/jstests/core/query/or/or2.js index 80d2e50cf3f..abd9d5781a9 100644 --- a/jstests/core/query/or/or2.js +++ b/jstests/core/query/or/or2.js @@ -1,6 +1,8 @@ // @tags: [ // assumes_read_concern_local, // requires_getmore, +// # Time series collections may return fields in a different order due to internal rewriting or view semantics. +// exclude_from_timeseries_crud_passthrough, // ] // Include helpers for analyzing explain output. diff --git a/jstests/core/query/or/or3.js b/jstests/core/query/or/or3.js index d01bf4e8629..ac36a2ca2a4 100644 --- a/jstests/core/query/or/or3.js +++ b/jstests/core/query/or/or3.js @@ -1,6 +1,9 @@ // @tags: [ // assumes_read_concern_local, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] // Include helpers for analyzing explain output. diff --git a/jstests/core/query/or/or8.js b/jstests/core/query/or/or8.js index b5d04503a1b..dc292d4c78c 100644 --- a/jstests/core/query/or/or8.js +++ b/jstests/core/query/or/or8.js @@ -1,6 +1,8 @@ // @tags: [ // requires_non_retryable_writes, // requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] // missing collection diff --git a/jstests/core/query/or/or_memory_limit.js b/jstests/core/query/or/or_memory_limit.js index 0d68ed5f297..a5299f94c5d 100644 --- a/jstests/core/query/or/or_memory_limit.js +++ b/jstests/core/query/or/or_memory_limit.js @@ -8,6 +8,9 @@ * requires_fcv_83, * requires_getmore, * uses_getmore_outside_of_transaction, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/or/or_to_in.js b/jstests/core/query/or/or_to_in.js index 8c0f744bfef..d861db6dce1 100644 --- a/jstests/core/query/or/or_to_in.js +++ b/jstests/core/query/or/or_to_in.js @@ -8,6 +8,9 @@ // assumes_unsharded_collection, // requires_fcv_80, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/or/ora.js b/jstests/core/query/or/ora.js index d41aae3c63a..fed3821daf8 100644 --- a/jstests/core/query/or/ora.js +++ b/jstests/core/query/or/ora.js @@ -1,6 +1,8 @@ // @tags: [ // # Uses $where operator -// requires_scripting +// requires_scripting, +// # TODO(SERVER-84158): Try to include this test. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_ora; diff --git a/jstests/core/query/or/orf.js b/jstests/core/query/or/orf.js index 2606c071adb..4c9938f7b6e 100644 --- a/jstests/core/query/or/orf.js +++ b/jstests/core/query/or/orf.js @@ -4,6 +4,9 @@ // assumes_read_concern_local, // # `explain.executionStats` is not causally consistent. // does_not_support_causal_consistency, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {ClusteredCollectionUtil} from "jstests/libs/clustered_collections/clustered_collection_util.js"; diff --git a/jstests/core/query/or/subplanning_pbt.js b/jstests/core/query/or/subplanning_pbt.js index c83f407efdd..16d741d3d5e 100644 --- a/jstests/core/query/or/subplanning_pbt.js +++ b/jstests/core/query/or/subplanning_pbt.js @@ -12,6 +12,8 @@ * does_not_support_stepdowns, * # Runs queries that may return many results, requiring getmores * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {createCacheCorrectnessProperty} from "jstests/libs/property_test_helpers/common_properties.js"; diff --git a/jstests/core/query/or_use_clustered_collection.js b/jstests/core/query/or_use_clustered_collection.js index 858052af497..66bfec12568 100644 --- a/jstests/core/query/or_use_clustered_collection.js +++ b/jstests/core/query/or_use_clustered_collection.js @@ -10,6 +10,8 @@ * does_not_support_stepdowns, * # $text is not supported on views. * incompatible_with_views, + * # Time-series collections already have the default clustered index. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/parsing/collection_uuid_write_commands.js b/jstests/core/query/parsing/collection_uuid_write_commands.js index 1831d3d04f8..062eefec3f9 100644 --- a/jstests/core/query/parsing/collection_uuid_write_commands.js +++ b/jstests/core/query/parsing/collection_uuid_write_commands.js @@ -4,6 +4,8 @@ * @tags: [ * requires_fcv_62, * assumes_stable_collection_uuid, + * # Time series collections cannot be used as a source for `viewOn` or have view-like limitations in this context. + * exclude_from_timeseries_crud_passthrough, * ] */ const validateErrorResponse = function (res, db, collectionUUID, expectedCollection, actualCollection) { diff --git a/jstests/core/query/parsing/delete_hint.js b/jstests/core/query/parsing/delete_hint.js index 909cc6ba677..ab9007898b4 100644 --- a/jstests/core/query/parsing/delete_hint.js +++ b/jstests/core/query/parsing/delete_hint.js @@ -7,6 +7,8 @@ * @tags: [ * assumes_unsharded_collection, * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/partialFilterExpression_with_geoWithin.js b/jstests/core/query/partialFilterExpression_with_geoWithin.js index 5f53f84a7b0..dd0653ff8e3 100644 --- a/jstests/core/query/partialFilterExpression_with_geoWithin.js +++ b/jstests/core/query/partialFilterExpression_with_geoWithin.js @@ -2,6 +2,9 @@ // requires_non_retryable_writes, // requires_fcv_51, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {getWinningPlanFromExplain, isIxscan} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/partial_index_logical.js b/jstests/core/query/partial_index_logical.js index 0bf58e7b65b..dd109b119e1 100644 --- a/jstests/core/query/partial_index_logical.js +++ b/jstests/core/query/partial_index_logical.js @@ -12,6 +12,9 @@ * assumes_balancer_off, * assumes_unsharded_collection, * requires_fcv_63, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getPlanCacheKeyFromShape} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/partial_index_pbt.js b/jstests/core/query/partial_index_pbt.js index b1e615e3313..aa7dcd827d0 100644 --- a/jstests/core/query/partial_index_pbt.js +++ b/jstests/core/query/partial_index_pbt.js @@ -18,6 +18,8 @@ * # Runs queries that may return many results, requiring getmores * requires_getmore, * multiversion_incompatible, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {createCacheCorrectnessProperty} from "jstests/libs/property_test_helpers/common_properties.js"; diff --git a/jstests/core/query/plan_cache/cache_correctness_pbt.js b/jstests/core/query/plan_cache/cache_correctness_pbt.js index a6fc68a89d0..6e87a5fc530 100644 --- a/jstests/core/query/plan_cache/cache_correctness_pbt.js +++ b/jstests/core/query/plan_cache/cache_correctness_pbt.js @@ -13,6 +13,8 @@ * does_not_support_stepdowns, * # Runs queries that may return many results, requiring getmores * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {createCacheCorrectnessProperty} from "jstests/libs/property_test_helpers/common_properties.js"; diff --git a/jstests/core/query/plan_cache/cached_plan_trial_does_not_discard_work.js b/jstests/core/query/plan_cache/cached_plan_trial_does_not_discard_work.js index cfbeb8ed561..44d09bedcdf 100644 --- a/jstests/core/query/plan_cache/cached_plan_trial_does_not_discard_work.js +++ b/jstests/core/query/plan_cache/cached_plan_trial_does_not_discard_work.js @@ -18,6 +18,9 @@ // requires_getmore, // assumes_balancer_off, // featureFlagSbeFull, +// # Time series collections (as views) generate different profiling/plan summary entries +// # (e.g. distinct from underlying bucket collection). +// exclude_from_timeseries_crud_passthrough, // ] import {getLatestProfilerEntry} from "jstests/libs/profiler.js"; diff --git a/jstests/core/query/plan_cache/elem_match_index_diff_types.js b/jstests/core/query/plan_cache/elem_match_index_diff_types.js index fd9b3038acd..0f4126efcff 100644 --- a/jstests/core/query/plan_cache/elem_match_index_diff_types.js +++ b/jstests/core/query/plan_cache/elem_match_index_diff_types.js @@ -6,6 +6,8 @@ * requires_getmore, * # explain command, used by the test, does not support majority read concern. * assumes_read_concern_local, + * # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/plan_cache/in_expression_plan_cache.js b/jstests/core/query/plan_cache/in_expression_plan_cache.js index cd0a363f96a..2c0b5ee9c35 100644 --- a/jstests/core/query/plan_cache/in_expression_plan_cache.js +++ b/jstests/core/query/plan_cache/in_expression_plan_cache.js @@ -20,6 +20,9 @@ * # Plan does not support repeat queries * does_not_support_repeated_reads, * requires_getmore, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ import { diff --git a/jstests/core/query/plan_cache/introspect_hidden_index_plan_cache_entries.js b/jstests/core/query/plan_cache/introspect_hidden_index_plan_cache_entries.js index 28318c27005..9cb2bf8bb73 100644 --- a/jstests/core/query/plan_cache/introspect_hidden_index_plan_cache_entries.js +++ b/jstests/core/query/plan_cache/introspect_hidden_index_plan_cache_entries.js @@ -10,6 +10,9 @@ * assumes_read_preference_unchanged, * assumes_balancer_off, * requires_getmore, + * # Explain will return different plan than expected when a collection becomes a time-series + * # collection. Also, query shape will be different. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/plan_cache/match_or_duplicate_predicate_plan_cache.js b/jstests/core/query/plan_cache/match_or_duplicate_predicate_plan_cache.js index c3580e438e6..fc65775d9ee 100644 --- a/jstests/core/query/plan_cache/match_or_duplicate_predicate_plan_cache.js +++ b/jstests/core/query/plan_cache/match_or_duplicate_predicate_plan_cache.js @@ -15,6 +15,8 @@ * assumes_balancer_off, * assumes_unsharded_collection, * requires_getmore, + * # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/plan_cache/plan_cache_clear.js b/jstests/core/query/plan_cache/plan_cache_clear.js index e1cbb66c4f6..4e6b5ca8802 100644 --- a/jstests/core/query/plan_cache/plan_cache_clear.js +++ b/jstests/core/query/plan_cache/plan_cache_clear.js @@ -17,6 +17,9 @@ // requires_fcv_63, // references_foreign_collection, // requires_getmore, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/plan_cache/plan_cache_distinct.js b/jstests/core/query/plan_cache/plan_cache_distinct.js index 7e35c615773..d02af706b28 100644 --- a/jstests/core/query/plan_cache/plan_cache_distinct.js +++ b/jstests/core/query/plan_cache/plan_cache_distinct.js @@ -17,7 +17,10 @@ * featureFlagShardFilteringDistinctScan, * requires_getmore, * # The test examines the SBE plan cache, which initial sync may change the contents of. - * examines_sbe_cache + * examines_sbe_cache, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/plan_cache/plan_cache_eof.js b/jstests/core/query/plan_cache/plan_cache_eof.js index d42fe90bbf5..573246468e1 100644 --- a/jstests/core/query/plan_cache/plan_cache_eof.js +++ b/jstests/core/query/plan_cache/plan_cache_eof.js @@ -18,6 +18,8 @@ * requires_getmore, * # $text is not supported on views. * incompatible_with_views, + * # Time series collections do not support text indexes. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/plan_cache/plan_cache_list_plans.js b/jstests/core/query/plan_cache/plan_cache_list_plans.js index e2abfc4ed79..f9dc9f61f96 100644 --- a/jstests/core/query/plan_cache/plan_cache_list_plans.js +++ b/jstests/core/query/plan_cache/plan_cache_list_plans.js @@ -30,6 +30,9 @@ // requires_getmore, // # TODO(SERVER-113800): Enable setClusterParameters with replicaset started with --shardsvr // transitioning_replicaset_incompatible, +// # Explain will return different plan than expected when a collection becomes a time-series +// # collection. Also, query shape will be different. +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/plan_cache/plan_cache_list_shapes.js b/jstests/core/query/plan_cache/plan_cache_list_shapes.js index 6090ee1a55e..053bd2bff70 100644 --- a/jstests/core/query/plan_cache/plan_cache_list_shapes.js +++ b/jstests/core/query/plan_cache/plan_cache_list_shapes.js @@ -12,6 +12,9 @@ // assumes_read_preference_unchanged, // assumes_unsharded_collection, // requires_getmore, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] import {getPlanCacheShapeHashFromObject} from "jstests/libs/query/analyze_plan.js"; import {checkSbeFullyEnabled} from "jstests/libs/query/sbe_util.js"; diff --git a/jstests/core/query/plan_cache/plan_cache_positional_projection.js b/jstests/core/query/plan_cache/plan_cache_positional_projection.js index c5f8f0e4796..deba94648d5 100644 --- a/jstests/core/query/plan_cache/plan_cache_positional_projection.js +++ b/jstests/core/query/plan_cache/plan_cache_positional_projection.js @@ -4,6 +4,9 @@ * requires_getmore, * # Positional projection is not supported on views. * incompatible_with_views, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ const coll = db.plan_cache_positional_projection; diff --git a/jstests/core/query/plan_cache/plan_cache_sbe.js b/jstests/core/query/plan_cache/plan_cache_sbe.js index 8a03a5a8923..bfe659c486a 100644 --- a/jstests/core/query/plan_cache/plan_cache_sbe.js +++ b/jstests/core/query/plan_cache/plan_cache_sbe.js @@ -24,6 +24,9 @@ * # The test examines the SBE plan cache, which initial sync may change the contents of. * examines_sbe_cache, * requires_getmore, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ import {FeatureFlagUtil} from "jstests/libs/feature_flag_util.js"; diff --git a/jstests/core/query/plan_cache/plan_cache_shell_helpers.js b/jstests/core/query/plan_cache/plan_cache_shell_helpers.js index bc2a04dd824..8fc9ac19970 100644 --- a/jstests/core/query/plan_cache/plan_cache_shell_helpers.js +++ b/jstests/core/query/plan_cache/plan_cache_shell_helpers.js @@ -11,6 +11,9 @@ // assumes_unsharded_collection, // does_not_support_stepdowns, // requires_getmore, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] import {assertArrayEq} from "jstests/aggregation/extras/utils.js"; import {getPlanCacheKeyFromShape} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/plan_cache/plan_cache_stats_shard_and_host.js b/jstests/core/query/plan_cache/plan_cache_stats_shard_and_host.js index 59092409f53..e26e0332aea 100644 --- a/jstests/core/query/plan_cache/plan_cache_stats_shard_and_host.js +++ b/jstests/core/query/plan_cache/plan_cache_stats_shard_and_host.js @@ -8,6 +8,9 @@ // does_not_support_stepdowns, // # Plan cache key is not guaranteed to be stable across versions. // multiversion_incompatible, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; import {getPlanCacheKeyFromExplain} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/plan_cache/query_solution_hash.js b/jstests/core/query/plan_cache/query_solution_hash.js index f255147ad6d..817247b7e67 100644 --- a/jstests/core/query/plan_cache/query_solution_hash.js +++ b/jstests/core/query/plan_cache/query_solution_hash.js @@ -22,6 +22,8 @@ * # The test examines the SBE plan cache, which initial sync may change the contents of. * examines_sbe_cache, * requires_getmore, + * # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). + * exclude_from_timeseries_crud_passthrough, * ] */ (function () { diff --git a/jstests/core/query/plan_cache_stability.js b/jstests/core/query/plan_cache_stability.js index c35a928dc9a..5fea36a4fda 100644 --- a/jstests/core/query/plan_cache_stability.js +++ b/jstests/core/query/plan_cache_stability.js @@ -19,6 +19,8 @@ * # This test expects stable query plans, creating unanticipated indexes can lead to variations * # in the plans. * assumes_no_implicit_index_creation, + * # Time series collections do not support sparse indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/project/positional_projection.js b/jstests/core/query/project/positional_projection.js index a91abc9bc53..88fbfbbc918 100644 --- a/jstests/core/query/project/positional_projection.js +++ b/jstests/core/query/project/positional_projection.js @@ -3,6 +3,8 @@ // requires_getmore, // # Positional projection is not supported on views. // incompatible_with_views, +// # Time series collections (as views) have specific limitations on aggregation stages (e.g. $merge, $out) or cursor options (e.g. noCursorTimeout, singleBatch). +// exclude_from_timeseries_crud_passthrough, // ] import "jstests/libs/query/sbe_assert_error_override.js"; diff --git a/jstests/core/query/project/positional_projection_multiple_array_fields.js b/jstests/core/query/project/positional_projection_multiple_array_fields.js index cba55fd5720..6abde066cf8 100644 --- a/jstests/core/query/project/positional_projection_multiple_array_fields.js +++ b/jstests/core/query/project/positional_projection_multiple_array_fields.js @@ -8,6 +8,8 @@ * requires_getmore, * # $slice is not supported on views. * incompatible_with_views, + * # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). + * exclude_from_timeseries_crud_passthrough, * ] */ import "jstests/libs/query/sbe_assert_error_override.js"; diff --git a/jstests/core/query/project/project_with_collation.js b/jstests/core/query/project/project_with_collation.js index 1ffefd4a901..7b9e93d44b6 100644 --- a/jstests/core/query/project/project_with_collation.js +++ b/jstests/core/query/project/project_with_collation.js @@ -5,6 +5,9 @@ // requires_getmore, // # Positional projection is not supported on views. // incompatible_with_views, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] const collation = { diff --git a/jstests/core/query/project/projection_meta_index_key.js b/jstests/core/query/project/projection_meta_index_key.js index 37f70609db0..01d990c8728 100644 --- a/jstests/core/query/project/projection_meta_index_key.js +++ b/jstests/core/query/project/projection_meta_index_key.js @@ -4,6 +4,8 @@ // requires_getmore, // # Metadata projection behavior differs between find and aggregate. // incompatible_with_views, +// # TODO(SERVER-85335): Try to include this test(s). +// exclude_from_timeseries_crud_passthrough, // ] import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/project/projection_semantics.js b/jstests/core/query/project/projection_semantics.js index 989e5bb2afb..91223431acd 100644 --- a/jstests/core/query/project/projection_semantics.js +++ b/jstests/core/query/project/projection_semantics.js @@ -8,6 +8,8 @@ * does_not_support_stepdowns, * not_allowed_with_signed_security_token, * featureFlagSbeFull, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/project/projection_with_hashed_index.js b/jstests/core/query/project/projection_with_hashed_index.js index 97066471a7d..388da26d2d3 100644 --- a/jstests/core/query/project/projection_with_hashed_index.js +++ b/jstests/core/query/project/projection_with_hashed_index.js @@ -4,6 +4,8 @@ * @tags: [ * # Explain may return incomplete results if interrupted by a stepdown. * does_not_support_stepdowns, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/project/slice1.js b/jstests/core/query/project/slice1.js index 94739b957bd..2f98883565b 100644 --- a/jstests/core/query/project/slice1.js +++ b/jstests/core/query/project/slice1.js @@ -2,6 +2,8 @@ // requires_getmore, // # $slice is not supported on views. // incompatible_with_views, +// # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). +// exclude_from_timeseries_crud_passthrough, // ] let t = db.slice1; diff --git a/jstests/core/query/query_knob_correctness_pbt.js b/jstests/core/query/query_knob_correctness_pbt.js index bfbea9156a7..124795ce679 100644 --- a/jstests/core/query/query_knob_correctness_pbt.js +++ b/jstests/core/query/query_knob_correctness_pbt.js @@ -13,7 +13,9 @@ * # Runs queries that may return many results, requiring getmores * requires_getmore, * # Some query knobs may not exist on older versions. - * multiversion_incompatible + * multiversion_incompatible, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getCollectionModel} from "jstests/libs/property_test_helpers/models/collection_models.js"; diff --git a/jstests/core/query/query_settings/query_settings_and_index_filters.js b/jstests/core/query/query_settings/query_settings_and_index_filters.js index fb059dae883..90c4404b161 100644 --- a/jstests/core/query/query_settings/query_settings_and_index_filters.js +++ b/jstests/core/query/query_settings/query_settings_and_index_filters.js @@ -16,6 +16,8 @@ // simulate_atlas_proxy_incompatible, // # TODO(SERVER-113800): Enable setClusterParameters with replicaset started with --shardsvr // transitioning_replicaset_incompatible, +// # Ignore because index filters are applied directly to collections, not views (or TS). +// exclude_from_timeseries_crud_passthrough, // ] import {getExplainCommand} from "jstests/libs/cmd_object_utils.js"; diff --git a/jstests/core/query/query_settings/query_settings_plan_cache.js b/jstests/core/query/query_settings/query_settings_plan_cache.js index aeb4222764a..66abaec1e69 100644 --- a/jstests/core/query/query_settings/query_settings_plan_cache.js +++ b/jstests/core/query/query_settings/query_settings_plan_cache.js @@ -23,6 +23,9 @@ // requires_getmore, // # TODO(SERVER-113800): Enable setClusterParameters with replicaset started with --shardsvr // transitioning_replicaset_incompatible, +// # Ignore because the rewrite of the query for TS leads to other stages preceding +// # $planCacheStats, which is not allowed. +// exclude_from_timeseries_crud_passthrough, // ] import {getExplainCommand} from "jstests/libs/cmd_object_utils.js"; diff --git a/jstests/core/query/query_settings/query_settings_reject_application_bypass.js b/jstests/core/query/query_settings/query_settings_reject_application_bypass.js index 55a9903f3cc..c25ac637363 100644 --- a/jstests/core/query/query_settings/query_settings_reject_application_bypass.js +++ b/jstests/core/query/query_settings/query_settings_reject_application_bypass.js @@ -14,6 +14,9 @@ // assumes_no_implicit_cursor_exhaustion, // # TODO(SERVER-113800): Enable setClusterParameters with replicaset started with --shardsvr // transitioning_replicaset_incompatible, +// # Ignore because the rewrite of the query for TS leads to other stages preceding +// # $planCacheStats, which is not allowed. +// exclude_from_timeseries_crud_passthrough, // ] // diff --git a/jstests/core/query/query_settings/query_shape_hash_in_current_op.js b/jstests/core/query/query_settings/query_shape_hash_in_current_op.js index 2a48d8c1109..d87710c775c 100644 --- a/jstests/core/query/query_settings/query_shape_hash_in_current_op.js +++ b/jstests/core/query/query_settings/query_shape_hash_in_current_op.js @@ -9,6 +9,8 @@ * command_not_supported_in_serverless, * directly_against_shardsvrs_incompatible, * uses_parallel_shell, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/record_store_count.js b/jstests/core/query/record_store_count.js index a9ae122171f..1e347f4afdf 100644 --- a/jstests/core/query/record_store_count.js +++ b/jstests/core/query/record_store_count.js @@ -3,6 +3,8 @@ * logically empty. See SERVER-20536 for more details. * @tags: [ * assumes_read_concern_local, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/recursion.js b/jstests/core/query/recursion.js index 31409c2a176..0eafbcf0fac 100644 --- a/jstests/core/query/recursion.js +++ b/jstests/core/query/recursion.js @@ -10,6 +10,8 @@ // # This test has statements that do not support non-local read concern. // does_not_support_causal_consistency, // requires_scripting, +// # Time-series collections are views which don't support map-reduce +// exclude_from_timeseries_crud_passthrough, // ] db.recursion.drop(); diff --git a/jstests/core/query/regex/regex.js b/jstests/core/query/regex/regex.js index 661b85e2872..d29b9ac00c5 100644 --- a/jstests/core/query/regex/regex.js +++ b/jstests/core/query/regex/regex.js @@ -1,5 +1,7 @@ // @tags: [ // assumes_read_concern_local, +// # Ignore because the find command is rewritten for TS collections before reaching the failpoint. +// exclude_from_timeseries_crud_passthrough, // ] import {getQueryPlanner} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/regex/regex3.js b/jstests/core/query/regex/regex3.js index 8aa81fabde3..7f474dcc172 100644 --- a/jstests/core/query/regex/regex3.js +++ b/jstests/core/query/regex/regex3.js @@ -3,6 +3,8 @@ // assumes_read_concern_local, // requires_fcv_80, // requires_getmore, +// # Ignore because the find command is rewritten for TS collections before reaching the failpoint. +// exclude_from_timeseries_crud_passthrough, // ] const colName = jsTestName(); diff --git a/jstests/core/query/regex/regex4.js b/jstests/core/query/regex/regex4.js index 7a77ae07bb2..67b00bedee1 100644 --- a/jstests/core/query/regex/regex4.js +++ b/jstests/core/query/regex/regex4.js @@ -1,6 +1,8 @@ // @tags: [ // assumes_balancer_off, // assumes_read_concern_local, +// # Ignore because the find command is rewritten for TS collections before reaching the failpoint. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.regex4; diff --git a/jstests/core/query/regex/regex6.js b/jstests/core/query/regex/regex6.js index b539746715c..e84c6d2f744 100644 --- a/jstests/core/query/regex/regex6.js +++ b/jstests/core/query/regex/regex6.js @@ -4,6 +4,8 @@ // @tags: [ // assumes_unsharded_collection, // requires_fcv_80, +// # Ignore because the find command is rewritten for TS collections before reaching the failpoint. +// exclude_from_timeseries_crud_passthrough, // ] const colName = jsTestName(); let t = db.getCollection(colName); diff --git a/jstests/core/query/regex/regex_distinct.js b/jstests/core/query/regex/regex_distinct.js index 2ae640bb17c..dd77673d470 100644 --- a/jstests/core/query/regex/regex_distinct.js +++ b/jstests/core/query/regex/regex_distinct.js @@ -6,6 +6,8 @@ * assumes_read_concern_local, * # Makes checks about the number of shards in the collection. * assumes_balancer_off, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/regex/regex_not_id.js b/jstests/core/query/regex/regex_not_id.js index ebca93a733c..53d858dcf06 100644 --- a/jstests/core/query/regex/regex_not_id.js +++ b/jstests/core/query/regex/regex_not_id.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, +// ] + // don't allow regex as _id: SERVER-9502 let testColl = db.regex_not_id; diff --git a/jstests/core/query/release_memory/text_or.js b/jstests/core/query/release_memory/text_or.js index d1ec9d2ccd0..97bc0c9f9b5 100644 --- a/jstests/core/query/release_memory/text_or.js +++ b/jstests/core/query/release_memory/text_or.js @@ -15,6 +15,8 @@ * # This test sets a server parameter via setParameterOnAllNonConfigNodes. To keep the host list * # consistent, no add/remove shard operations should occur during the test. * assumes_stable_shard_list, + * # Time series collections do not support text indexes. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/rename/rename_operator.js b/jstests/core/query/rename/rename_operator.js index d769109f7f6..97dd64f50aa 100644 --- a/jstests/core/query/rename/rename_operator.js +++ b/jstests/core/query/rename/rename_operator.js @@ -9,6 +9,8 @@ * # update with multi:false is not supported on sharded collection * assumes_unsharded_collection, * requires_getmore, + * # Time-series collections have different _id properties. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/resume_query.js b/jstests/core/query/resume_query.js index 8d029d344b0..497db453a7e 100644 --- a/jstests/core/query/resume_query.js +++ b/jstests/core/query/resume_query.js @@ -12,6 +12,8 @@ * cannot_run_during_upgrade_downgrade, * # Multiplanning breaks postBatchResumeTokens, as they don't account for PlanExecutor's stash * does_not_support_multiplanning_single_solutions, + * # TODO(SERVER-85322): Try to include this test(s). + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/resume_query_from_non_existent_record.js b/jstests/core/query/resume_query_from_non_existent_record.js index e7359ba13e4..9e499ba3bcf 100644 --- a/jstests/core/query/resume_query_from_non_existent_record.js +++ b/jstests/core/query/resume_query_from_non_existent_record.js @@ -22,6 +22,8 @@ * # The test explicitly tests with batchSize equal to 1 and the config fuzzer changes batchSize * # that can cause a mimatch between results. * does_not_support_config_fuzzer, + * # TODO(SERVER-85322): Try to include this test(s). + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/return_key.js b/jstests/core/query/return_key.js index a2693dd1900..22a7345a36c 100644 --- a/jstests/core/query/return_key.js +++ b/jstests/core/query/return_key.js @@ -3,6 +3,9 @@ // order to apply the SHARDING_FILTER stage. // @tags: [ // assumes_unsharded_collection, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] /** diff --git a/jstests/core/query/run_all_plans_pbt.js b/jstests/core/query/run_all_plans_pbt.js index 3c906559d98..7c407b233c9 100644 --- a/jstests/core/query/run_all_plans_pbt.js +++ b/jstests/core/query/run_all_plans_pbt.js @@ -24,6 +24,8 @@ * # Exercises hashed index bug in SERVER-102302. Once that fix is backported, this fcv * # requirement can be removed. * requires_fcv_82, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getDifferentlyShapedQueries} from "jstests/libs/property_test_helpers/common_properties.js"; diff --git a/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_collscan.js b/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_collscan.js index 33eb47da9db..3bde68c00d4 100644 --- a/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_collscan.js +++ b/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_collscan.js @@ -16,6 +16,8 @@ * # This test is specifically verifying the behavior of the SBE plan cache, which is only enabled * # when SBE is enabled. * featureFlagSbeFull, + * # Time series collections (as views) do not support this operation (e.g. $elemMatch, $slice). + * exclude_from_timeseries_crud_passthrough, * ] */ import {getPlanCacheKeyFromShape} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_ixscan.js b/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_ixscan.js index 3b3a16da94a..36e6bfa23d5 100644 --- a/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_ixscan.js +++ b/jstests/core/query/sbe/sbe_plan_cache_autoparameterize_ixscan.js @@ -15,7 +15,10 @@ * # when SBE is enabled. * featureFlagSbeFull, * # The test examines the SBE plan cache, which initial sync may change the contents of. - * examines_sbe_cache + * examines_sbe_cache, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ import { diff --git a/jstests/core/query/sbe/sbe_plan_cache_duplicate_or_clauses.js b/jstests/core/query/sbe/sbe_plan_cache_duplicate_or_clauses.js index 5f0ad4261d5..9ebd0149d04 100644 --- a/jstests/core/query/sbe/sbe_plan_cache_duplicate_or_clauses.js +++ b/jstests/core/query/sbe/sbe_plan_cache_duplicate_or_clauses.js @@ -17,6 +17,9 @@ * # This test assumes that the queries are using the SBE plan cache. * featureFlagSbeFull, * assumes_balancer_off, + * # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the + * # first stage in a pipeline. This will be incomplatible with timeseries. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/set/set7.js b/jstests/core/query/set/set7.js index 7c6b1311b41..eabd75cf003 100644 --- a/jstests/core/query/set/set7.js +++ b/jstests/core/query/set/set7.js @@ -1,6 +1,9 @@ // @tags: [ // # The {$set: {"a.1500000": 1}} update takes multiple seconds to execute. // operations_longer_than_stepdown_interval, +// # Time series collections pack measurements into buckets, potentially exceeding +// # BSON size limits earlier than regular collections. +// exclude_from_timeseries_crud_passthrough, // ] // test $set with array indicies diff --git a/jstests/core/query/show_record_id.js b/jstests/core/query/show_record_id.js index bc3df5051c1..3019d0c6c1c 100644 --- a/jstests/core/query/show_record_id.js +++ b/jstests/core/query/show_record_id.js @@ -1,5 +1,7 @@ // @tags: [ // requires_getmore, +// # Time series collections do not support the `showRecordId` find option. +// exclude_from_timeseries_crud_passthrough, // ] // Sanity check for the showRecordId option. diff --git a/jstests/core/query/single_batch.js b/jstests/core/query/single_batch.js index 7eb41810e13..a725b2f2fad 100644 --- a/jstests/core/query/single_batch.js +++ b/jstests/core/query/single_batch.js @@ -1,6 +1,9 @@ // Test the "single batch" semantics of negative limit. // @tags: [ // requires_getmore, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] const coll = db.jstests_single_batch; coll.drop(); diff --git a/jstests/core/query/single_field_hashed_index.js b/jstests/core/query/single_field_hashed_index.js index 7dac88ccf0a..e1c0e269728 100644 --- a/jstests/core/query/single_field_hashed_index.js +++ b/jstests/core/query/single_field_hashed_index.js @@ -6,6 +6,8 @@ * assumes_no_implicit_index_creation, * requires_fastcount, * requires_getmore, + * # Time series collections do not support hashed indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getWinningPlanFromExplain, isIxscan} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/sort/sort8.js b/jstests/core/query/sort/sort8.js index 2385ce88043..0e9eb3c35c3 100644 --- a/jstests/core/query/sort/sort8.js +++ b/jstests/core/query/sort/sort8.js @@ -1,6 +1,8 @@ // Check sorting of arrays indexed by key SERVER-2884 // @tags: [ // requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_sort8; diff --git a/jstests/core/query/sort/sort_array.js b/jstests/core/query/sort/sort_array.js index 31c0e2d51da..53a32fd999a 100644 --- a/jstests/core/query/sort/sort_array.js +++ b/jstests/core/query/sort/sort_array.js @@ -2,6 +2,8 @@ // does_not_support_stepdowns, // requires_non_retryable_writes, // requires_getmore, +// # Ignore because the find command is rewritten for TS collections before reaching the failpoint. +// exclude_from_timeseries_crud_passthrough, // ] /** diff --git a/jstests/core/query/sort/sort_merge_collation.js b/jstests/core/query/sort/sort_merge_collation.js index a734c627b19..e7b4e3b6e28 100644 --- a/jstests/core/query/sort/sort_merge_collation.js +++ b/jstests/core/query/sort/sort_merge_collation.js @@ -6,6 +6,8 @@ * requires_getmore, * # Views do not inherit default collection collation. * incompatible_with_views, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getPlanStages} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/sort/sort_merge_memory_limit.js b/jstests/core/query/sort/sort_merge_memory_limit.js index dc1c796fee6..78a2770d795 100644 --- a/jstests/core/query/sort/sort_merge_memory_limit.js +++ b/jstests/core/query/sort/sort_merge_memory_limit.js @@ -8,6 +8,8 @@ * requires_fcv_83, * requires_getmore, * uses_getmore_outside_of_transaction, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/sort/sorta.js b/jstests/core/query/sort/sorta.js index 17ffe146d9d..b56e71f12f8 100644 --- a/jstests/core/query/sort/sorta.js +++ b/jstests/core/query/sort/sorta.js @@ -1,6 +1,8 @@ // SERVER-2905 sorting with missing fields // @tags: [ // requires_getmore, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] let coll = db.jstests_sorta; diff --git a/jstests/core/query/sort/sortg.js b/jstests/core/query/sort/sortg.js index d3f8cca96f5..10e011ca7c8 100644 --- a/jstests/core/query/sort/sortg.js +++ b/jstests/core/query/sort/sortg.js @@ -3,6 +3,8 @@ // @tags: [ // assumes_no_implicit_index_creation, // requires_getmore, +// # Sort takes much more memory for the time-series version. +// exclude_from_timeseries_crud_passthrough, // ] // Test that a memory exception is triggered for in memory sorts, but not for indexed sorts. diff --git a/jstests/core/query/sort/sorth.js b/jstests/core/query/sort/sorth.js index fbb40694b53..aa6d8aee159 100644 --- a/jstests/core/query/sort/sorth.js +++ b/jstests/core/query/sort/sorth.js @@ -2,6 +2,9 @@ // # When the config fuzzer changes 'internalQueryFindCommandBatchSize' to a value < 3, // # 'cursor.firstBatch' is too small for the limit. // does_not_support_config_fuzzer, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] // Tests for the $in/sort/limit optimization combined with inequality bounds. SERVER-5777 diff --git a/jstests/core/query/sort/sortk.js b/jstests/core/query/sort/sortk.js index 60fdd636f56..d827864a157 100644 --- a/jstests/core/query/sort/sortk.js +++ b/jstests/core/query/sort/sortk.js @@ -12,6 +12,9 @@ // does_not_support_config_fuzzer, // # TestData.setParameters is undefined when run from selinux/core.js // no_selinux, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.jstests_sortk; diff --git a/jstests/core/query/sort/sortl.js b/jstests/core/query/sort/sortl.js index d1400e7a920..8a2be216e16 100644 --- a/jstests/core/query/sort/sortl.js +++ b/jstests/core/query/sort/sortl.js @@ -3,6 +3,8 @@ // @tags: [ // # Metadata projection behavior differs between find and aggregate. // incompatible_with_views, +// # TODO(SERVER-85335): Try to include this test(s). +// exclude_from_timeseries_crud_passthrough, // ] let coll = db.sortl; coll.drop(); diff --git a/jstests/core/query/sort_min_max_options.js b/jstests/core/query/sort_min_max_options.js index d9783d5e88c..0edced7785e 100644 --- a/jstests/core/query/sort_min_max_options.js +++ b/jstests/core/query/sort_min_max_options.js @@ -2,6 +2,9 @@ // Test that sorting with .max() and .min() doesn't crash. // @tags: [ // requires_getmore, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] let t = db[jsTestName()]; diff --git a/jstests/core/query/sparse_index_supports_ne_null.js b/jstests/core/query/sparse_index_supports_ne_null.js index 3350b680417..af8efb02064 100644 --- a/jstests/core/query/sparse_index_supports_ne_null.js +++ b/jstests/core/query/sparse_index_supports_ne_null.js @@ -10,6 +10,8 @@ * # In 8.0, we changed behavior for equality to null. * requires_fcv_80, * requires_getmore, + * # Time series collections do not support sparse indexes on measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ import {getPlanStages, getWinningPlanFromExplain} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/start_at_blocked_in_sbe.js b/jstests/core/query/start_at_blocked_in_sbe.js index e608bf6fedf..b8491f55e1c 100644 --- a/jstests/core/query/start_at_blocked_in_sbe.js +++ b/jstests/core/query/start_at_blocked_in_sbe.js @@ -21,6 +21,8 @@ * # Secondary read preference passthroughs don't set it on the explain which causes an * # $initialSyncId mismatch. * assumes_read_preference_unchanged, + * # TODO(SERVER-85322): Try to include this test(s). + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/system_js_access.js b/jstests/core/query/system_js_access.js index a9e1fb16998..0c1f1b64cdd 100644 --- a/jstests/core/query/system_js_access.js +++ b/jstests/core/query/system_js_access.js @@ -8,6 +8,8 @@ // # system.js stored functions only work for collections that live on the db-primary shard so // # we have to make sure it wont be moved anywhere by the balancer // assumes_balancer_off, +// # TODO(SERVER-84158): Try to include this test(s). +// exclude_from_timeseries_crud_passthrough, // ] const testDB = db.getSiblingDB("system_js_access"); diff --git a/jstests/core/query/system_js_drop.js b/jstests/core/query/system_js_drop.js index 33e738b7f00..f52cc05ac18 100644 --- a/jstests/core/query/system_js_drop.js +++ b/jstests/core/query/system_js_drop.js @@ -12,6 +12,8 @@ * # system.js stored functions only work for collections that live on the db-primary shard so * # we have to make sure it wont be moved anywhere by the balancer * assumes_balancer_off, + * # TODO(SERVER-84158): Try to include this test(s). + * exclude_from_timeseries_crud_passthrough, * ] */ const testDB = db.getSiblingDB(jsTestName()); diff --git a/jstests/core/query/testminmax.js b/jstests/core/query/testminmax.js index 67049cbd69a..f56808d4b74 100644 --- a/jstests/core/query/testminmax.js +++ b/jstests/core/query/testminmax.js @@ -1,6 +1,9 @@ // @tags: [ // requires_fastcount, // requires_getmore, +// # Not first stage in pipeline. The following test uses $planCacheStats, which is required to be the +// # first stage in a pipeline. This will be incomplatible with timeseries. +// exclude_from_timeseries_crud_passthrough, // ] let t = db.minmaxtest; diff --git a/jstests/core/query/top/top.js b/jstests/core/query/top/top.js index 58a7c27f5b5..f3f66a25181 100644 --- a/jstests/core/query/top/top.js +++ b/jstests/core/query/top/top.js @@ -15,6 +15,9 @@ * # The downstream syncing node affects the top output. * incompatible_with_initial_sync, * requires_getmore, + * # Time series collections (as views) generate different profiling/plan summary entries + * # (e.g. distinct from underlying bucket collection). + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/top/top_drop.js b/jstests/core/query/top/top_drop.js index 79b110f1e0e..dc4971e5325 100644 --- a/jstests/core/query/top/top_drop.js +++ b/jstests/core/query/top/top_drop.js @@ -7,6 +7,9 @@ * assumes_against_mongod_not_mongos, * requires_non_retryable_writes, * requires_getmore, + * # Time series collections (as views) generate different profiling/plan summary entries + * # (e.g. distinct from underlying bucket collection). + * exclude_from_timeseries_crud_passthrough, * ] */ let topDB = db.getSiblingDB("topdrop"); diff --git a/jstests/core/query/type/null_undefined.js b/jstests/core/query/type/null_undefined.js index 351c5114929..598ad6144c3 100644 --- a/jstests/core/query/type/null_undefined.js +++ b/jstests/core/query/type/null_undefined.js @@ -6,6 +6,8 @@ * # The explain command does not support majority read concern. * assumes_read_concern_local, * requires_getmore, + * # Time series collections do not support indexing array values in measurement fields. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/type/type_array.js b/jstests/core/query/type/type_array.js index 8ad888db4e3..bd573440532 100644 --- a/jstests/core/query/type/type_array.js +++ b/jstests/core/query/type/type_array.js @@ -1,5 +1,7 @@ // @tags: [ // requires_non_retryable_writes, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] /** diff --git a/jstests/core/query/update/collation_update.js b/jstests/core/query/update/collation_update.js index 5cb71c91d55..023beb8454a 100644 --- a/jstests/core/query/update/collation_update.js +++ b/jstests/core/query/update/collation_update.js @@ -1,6 +1,10 @@ // Cannot implicitly shard accessed collections because of collection existing when none // expected. -// @tags: [assumes_no_implicit_collection_creation_after_drop] +// @tags: [ +// assumes_no_implicit_collection_creation_after_drop, +// # Time series collections have specific index limitations (e.g. count hints, collation updates). +// exclude_from_timeseries_crud_passthrough, +// ] // Integration tests for collation-aware updates. const coll = db[jsTestName()]; diff --git a/jstests/core/query/update/updateOne_sort.js b/jstests/core/query/update/updateOne_sort.js index 7e47544d97e..bb857fa9efb 100644 --- a/jstests/core/query/update/updateOne_sort.js +++ b/jstests/core/query/update/updateOne_sort.js @@ -8,6 +8,8 @@ * requires_multi_updates, * requires_non_retryable_writes, * requires_fcv_80, + * # Time series collections do not support `sort` in `updateOne` commands. + * exclude_from_timeseries_crud_passthrough, * ] */ import {isMongos} from "jstests/concurrency/fsm_workload_helpers/server_types.js"; diff --git a/jstests/core/query/update/updateOne_sort_sharded.js b/jstests/core/query/update/updateOne_sort_sharded.js index 171ea823356..709d9660c89 100644 --- a/jstests/core/query/update/updateOne_sort_sharded.js +++ b/jstests/core/query/update/updateOne_sort_sharded.js @@ -7,6 +7,8 @@ * requires_multi_updates, * requires_non_retryable_writes, * requires_fcv_81, + * # Time series collections do not support `sort` in `updateOne` commands. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/query/update/update_arrayFilters.js b/jstests/core/query/update/update_arrayFilters.js index b96a5b74629..84873727acd 100644 --- a/jstests/core/query/update/update_arrayFilters.js +++ b/jstests/core/query/update/update_arrayFilters.js @@ -8,6 +8,8 @@ // does_not_support_causal_consistency, // # Uses $where operator // requires_scripting, +// # Different error message due to the override. +// exclude_from_timeseries_crud_passthrough, // ] // Tests for the arrayFilters option to update and findAndModify. diff --git a/jstests/core/query/update/update_arraymatch5.js b/jstests/core/query/update/update_arraymatch5.js index 8e995976c93..29aec71187f 100644 --- a/jstests/core/query/update/update_arraymatch5.js +++ b/jstests/core/query/update/update_arraymatch5.js @@ -2,6 +2,8 @@ // requires_fastcount, // requires_multi_updates, // requires_non_retryable_writes, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] const t = db[jsTestName()]; diff --git a/jstests/core/query/update/update_arraymatch7.js b/jstests/core/query/update/update_arraymatch7.js index 1a29a50283c..9bdec39d896 100644 --- a/jstests/core/query/update/update_arraymatch7.js +++ b/jstests/core/query/update/update_arraymatch7.js @@ -1,4 +1,8 @@ -// @tags: [requires_non_retryable_writes] +// @tags: [ +// requires_non_retryable_writes, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] // Check that the positional operator works properly when an index only match is used for the update // query spec. SERVER-5067 diff --git a/jstests/core/query/update/update_fail_halts_modifications.js b/jstests/core/query/update/update_fail_halts_modifications.js index 0b8bcca38d1..cbfbba15ac0 100644 --- a/jstests/core/query/update/update_fail_halts_modifications.js +++ b/jstests/core/query/update/update_fail_halts_modifications.js @@ -3,7 +3,13 @@ // This test uses a multi-update, which is not retryable. The behavior it is testing is also not // true of sharded clusters, since one shard may continue applying updates while the other // encounters an error. -// @tags: [requires_multi_updates, requires_non_retryable_writes, assumes_unsharded_collection] +// @tags: [ +// requires_multi_updates, +// requires_non_retryable_writes, +// assumes_unsharded_collection, +// # Test relying on document ordering that can be different for time-series collections. +// exclude_from_timeseries_crud_passthrough, +// ] let t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/update/update_find_and_modify_id.js b/jstests/core/query/update/update_find_and_modify_id.js index b1827848963..1c2d970df16 100644 --- a/jstests/core/query/update/update_find_and_modify_id.js +++ b/jstests/core/query/update/update_find_and_modify_id.js @@ -1,7 +1,11 @@ // SERVER-4516 and SERVER-6913: test that update and findAndModify tolerate // an _id in the update document, as long as the _id will not be modified // -// @tags: [requires_fastcount] +// @tags: [ +// requires_fastcount, +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, +// ] const t = db[jsTestName()]; const startingDoc = { diff --git a/jstests/core/query/update/update_guarantee_id.js b/jstests/core/query/update/update_guarantee_id.js index e4fe5e6214f..4fc50ccb3e2 100644 --- a/jstests/core/query/update/update_guarantee_id.js +++ b/jstests/core/query/update/update_guarantee_id.js @@ -3,7 +3,9 @@ // @tags: [ // # The test runs commands that are not allowed with security token: godinsert. // not_allowed_with_signed_security_token, -// requires_non_retryable_commands +// requires_non_retryable_commands, +// # Use godinsert command that is not supported on timeseries collections +// exclude_from_timeseries_crud_passthrough, // ] let t = db[jsTestName()]; diff --git a/jstests/core/query/update/update_hint.js b/jstests/core/query/update/update_hint.js index d5cac66aa70..0b5568d01e1 100644 --- a/jstests/core/query/update/update_hint.js +++ b/jstests/core/query/update/update_hint.js @@ -4,7 +4,13 @@ * - The hint option should support both the name of the index, and the object spec of the * index. * - * @tags: [assumes_unsharded_collection, requires_multi_updates, requires_non_retryable_writes] + * @tags: [ + * assumes_unsharded_collection, + * requires_multi_updates, + * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, + * ] */ import {getPlanStage} from "jstests/libs/query/analyze_plan.js"; diff --git a/jstests/core/query/update/update_mod_dotted.js b/jstests/core/query/update/update_mod_dotted.js index 2328ac01018..5762a0135c0 100644 --- a/jstests/core/query/update/update_mod_dotted.js +++ b/jstests/core/query/update/update_mod_dotted.js @@ -1,4 +1,9 @@ // Update with mods corner cases. +// +// @tags: [ +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, +// ] const f = db[jsTestName()]; diff --git a/jstests/core/query/update/update_multi7.js b/jstests/core/query/update/update_multi7.js index 09829f6ef88..fe2a627acce 100644 --- a/jstests/core/query/update/update_multi7.js +++ b/jstests/core/query/update/update_multi7.js @@ -1,4 +1,9 @@ -// @tags: [requires_multi_updates, requires_non_retryable_writes] +// @tags: [ +// requires_multi_updates, +// requires_non_retryable_writes, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] const t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/update/update_numeric_field_name.js b/jstests/core/query/update/update_numeric_field_name.js index 9a94a5b4ca0..66ef085a6cf 100644 --- a/jstests/core/query/update/update_numeric_field_name.js +++ b/jstests/core/query/update/update_numeric_field_name.js @@ -2,6 +2,8 @@ // constraint for indexes. This is designed to reproduce SERVER-37058. // @tags: [ // uses_full_validation, +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, // ] const coll = db[jsTestName()]; coll.drop(); diff --git a/jstests/core/query/update/update_pipeline_shell_helpers.js b/jstests/core/query/update/update_pipeline_shell_helpers.js index 65d774a23b6..667c4318792 100644 --- a/jstests/core/query/update/update_pipeline_shell_helpers.js +++ b/jstests/core/query/update/update_pipeline_shell_helpers.js @@ -5,6 +5,8 @@ * assumes_write_concern_unchanged, * requires_multi_updates, * requires_non_retryable_writes, + * # Ignore because the find command is rewritten for TS collections before reaching the failpoint. + * exclude_from_timeseries_crud_passthrough, * ] */ import {arrayEq} from "jstests/aggregation/extras/utils.js"; diff --git a/jstests/core/query/update/update_positional_inc.js b/jstests/core/query/update/update_positional_inc.js index 7e036645e46..284b6a9281b 100644 --- a/jstests/core/query/update/update_positional_inc.js +++ b/jstests/core/query/update/update_positional_inc.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time series collections do not support indexing array values in measurement fields. +// exclude_from_timeseries_crud_passthrough, +// ] + const t = db[jsTestName()]; t.drop(); diff --git a/jstests/core/query/update/update_setOnInsert.js b/jstests/core/query/update/update_setOnInsert.js index 9199ea60dca..f0761330c27 100644 --- a/jstests/core/query/update/update_setOnInsert.js +++ b/jstests/core/query/update/update_setOnInsert.js @@ -1,4 +1,10 @@ // This tests that $setOnInsert works and allow setting the _id +// +// @tags: [ +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, +// ] + const t = db[jsTestName()]; let res; diff --git a/jstests/core/query/update/update_with_pipeline.js b/jstests/core/query/update/update_with_pipeline.js index 8e12d586d1f..8a9b28cd53c 100644 --- a/jstests/core/query/update/update_with_pipeline.js +++ b/jstests/core/query/update/update_with_pipeline.js @@ -3,6 +3,8 @@ * @tags: [ * requires_multi_updates, * requires_non_retryable_writes, + * # Buckets collection creates compounded secondary indexes, which is not compatible with wildcard indexes. + * exclude_from_timeseries_crud_passthrough, * ] */ import {FixtureHelpers} from "jstests/libs/fixture_helpers.js"; diff --git a/jstests/core/query/update/upsert_fields.js b/jstests/core/query/update/upsert_fields.js index b85130ebc22..1dcb5161f2b 100644 --- a/jstests/core/query/update/upsert_fields.js +++ b/jstests/core/query/update/upsert_fields.js @@ -4,6 +4,8 @@ // assumes_unsharded_collection, // # TODO SERVER-111930 Support recording query stats for updates with simple ID query // known_query_shape_computation_problem, +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, // ] // // Upsert behavior tests for field extraction diff --git a/jstests/core/query/update/upsert_fields_duplicate_or.js b/jstests/core/query/update/upsert_fields_duplicate_or.js index 02e5d3b27be..58ef74b63cc 100644 --- a/jstests/core/query/update/upsert_fields_duplicate_or.js +++ b/jstests/core/query/update/upsert_fields_duplicate_or.js @@ -2,6 +2,8 @@ // requires_fcv_73, // # TODO SERVER-111930 Support recording query stats for updates with simple ID query // known_query_shape_computation_problem, +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, // ] // Tests to ensure that duplicate fields on the same path in $or conditions are deduplicated. diff --git a/jstests/core/query/update/upsert_nor.js b/jstests/core/query/update/upsert_nor.js index c27c27da79c..abbdc81ee44 100644 --- a/jstests/core/query/update/upsert_nor.js +++ b/jstests/core/query/update/upsert_nor.js @@ -17,7 +17,12 @@ * since the simplifier shouldn't change the query's semantics. We decided to disable the simplifier * for upsert operations until we come up the better solution. * - * @tags: [assumes_unsharded_collection, requires_non_retryable_writes] + * @tags: [ + * assumes_unsharded_collection, + * requires_non_retryable_writes, + * # Time-series collections have different _id properties. + * exclude_from_timeseries_crud_passthrough, + * ] */ const collectionName = jsTestName(); diff --git a/jstests/core/query/update/verify_update_mods.js b/jstests/core/query/update/verify_update_mods.js index 5ea3d9713b8..d30bb0fa544 100644 --- a/jstests/core/query/update/verify_update_mods.js +++ b/jstests/core/query/update/verify_update_mods.js @@ -6,6 +6,8 @@ * assumes_unsharded_collection, * # Performs modifications that if repeated would fail the test. * requires_non_retryable_writes, + * # Incompatible with the update option manipulation from the override. + * exclude_from_timeseries_crud_passthrough, * ] */ const testDB = db.getSiblingDB(jsTestName()); diff --git a/jstests/core/write/bulk/bulk_write_non_transaction.js b/jstests/core/write/bulk/bulk_write_non_transaction.js index 9c26e658210..9507105a612 100644 --- a/jstests/core/write/bulk/bulk_write_non_transaction.js +++ b/jstests/core/write/bulk/bulk_write_non_transaction.js @@ -15,6 +15,8 @@ * # TODO SERVER-89461 Investigate why test using huge batch size timeout in suites with balancer * assumes_balancer_off, * multiversion_incompatible, + * # Time-series is not allowed with an explicit validator. + * exclude_from_timeseries_crud_passthrough, * ] */ import {cursorEntryValidator, cursorSizeValidator, summaryFieldsValidator} from "jstests/libs/bulk_write_utils.js"; diff --git a/jstests/core/write/bulk/bulk_write_timeseries_basic.js b/jstests/core/write/bulk/bulk_write_timeseries_basic.js index 483610d6fdb..185a3c8f11c 100644 --- a/jstests/core/write/bulk/bulk_write_timeseries_basic.js +++ b/jstests/core/write/bulk/bulk_write_timeseries_basic.js @@ -9,6 +9,8 @@ * # TODO SERVER-80796 Timeseries unordered error handling incompatible with proxy simulation. * simulate_atlas_proxy_incompatible, * requires_fcv_80, + * # Time-series collection behavior is already tested within this directory. + * exclude_from_timeseries_crud_passthrough, * ] */ import {cursorEntryValidator, cursorSizeValidator, summaryFieldsValidator} from "jstests/libs/bulk_write_utils.js"; diff --git a/jstests/core/write/depth_limit.js b/jstests/core/write/depth_limit.js index f4ab6c351c1..4f44af19737 100644 --- a/jstests/core/write/depth_limit.js +++ b/jstests/core/write/depth_limit.js @@ -2,6 +2,8 @@ // @tags: [ // # Uses $where operator // requires_scripting, +// # TODO(SERVER-84158): Try to include this test(s). +// exclude_from_timeseries_crud_passthrough, // ] function test() { diff --git a/jstests/core/write/empty_ts/bypass_empty_ts_replacement.js b/jstests/core/write/empty_ts/bypass_empty_ts_replacement.js index aad5326b374..4ea259468a5 100644 --- a/jstests/core/write/empty_ts/bypass_empty_ts_replacement.js +++ b/jstests/core/write/empty_ts/bypass_empty_ts_replacement.js @@ -3,6 +3,9 @@ * * @tags: [ * requires_fcv_81, + * # For inserts on time-series collections, mongod does _not_ replace empty timestamp values + * # with the current time. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/write/empty_ts/bypass_empty_ts_replacement_bulk_write.js b/jstests/core/write/empty_ts/bypass_empty_ts_replacement_bulk_write.js index 9616b848c7b..d6230f625e5 100644 --- a/jstests/core/write/empty_ts/bypass_empty_ts_replacement_bulk_write.js +++ b/jstests/core/write/empty_ts/bypass_empty_ts_replacement_bulk_write.js @@ -4,6 +4,9 @@ * @tags: [ * not_allowed_with_signed_security_token, * requires_fcv_81, + * # For inserts on time-series collections, mongod does _not_ replace empty timestamp values + * # with the current time. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/write/empty_ts/bypass_empty_ts_replacement_timeseries.js b/jstests/core/write/empty_ts/bypass_empty_ts_replacement_timeseries.js index ee5ee8ee527..143fc00ad03 100644 --- a/jstests/core/write/empty_ts/bypass_empty_ts_replacement_timeseries.js +++ b/jstests/core/write/empty_ts/bypass_empty_ts_replacement_timeseries.js @@ -8,6 +8,9 @@ * requires_multi_updates, * requires_non_retryable_writes, * requires_timeseries, + * # For inserts on time-series collections, mongod does _not_ replace empty timestamp values + * # with the current time. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/write/empty_ts/empty_ts.js b/jstests/core/write/empty_ts/empty_ts.js index c43262809cd..40c8bb5703d 100644 --- a/jstests/core/write/empty_ts/empty_ts.js +++ b/jstests/core/write/empty_ts/empty_ts.js @@ -3,6 +3,9 @@ * * @tags: [ * requires_fcv_81, + * # For inserts on time-series collections, mongod does _not_ replace empty timestamp values + * # with the current time. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/write/empty_ts/empty_ts_bulk_write.js b/jstests/core/write/empty_ts/empty_ts_bulk_write.js index bdb03a69802..00536e3bad8 100644 --- a/jstests/core/write/empty_ts/empty_ts_bulk_write.js +++ b/jstests/core/write/empty_ts/empty_ts_bulk_write.js @@ -4,6 +4,9 @@ * @tags: [ * not_allowed_with_signed_security_token, * requires_fcv_81, + * # For inserts on time-series collections, mongod does _not_ replace empty timestamp values + * # with the current time. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/write/insert/batch_write_command_insert.js b/jstests/core/write/insert/batch_write_command_insert.js index cf0579e1831..3c7b65fcc15 100644 --- a/jstests/core/write/insert/batch_write_command_insert.js +++ b/jstests/core/write/insert/batch_write_command_insert.js @@ -10,6 +10,8 @@ // requires_background_index, // # TODO SERVER-89461 Investigate why test using huge batch size timeout in suites with balancer // assumes_balancer_off, +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, // ] // // diff --git a/jstests/core/write/insert/insert1.js b/jstests/core/write/insert/insert1.js index 14b18787a59..c28bb36d91c 100644 --- a/jstests/core/write/insert/insert1.js +++ b/jstests/core/write/insert/insert1.js @@ -1,3 +1,8 @@ +// @tags: [ +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, +// ] + const collNamePrefix = "insert1_"; let collCount = 0; diff --git a/jstests/core/write/insert/insert_id_undefined.js b/jstests/core/write/insert/insert_id_undefined.js index 80873def9c6..f98fc3f679a 100644 --- a/jstests/core/write/insert/insert_id_undefined.js +++ b/jstests/core/write/insert/insert_id_undefined.js @@ -1,6 +1,11 @@ // Cannot implicitly shard accessed collections because of collection existing when none // expected. -// @tags: [assumes_no_implicit_collection_creation_after_drop, requires_fastcount] +// @tags: [ +// assumes_no_implicit_collection_creation_after_drop, +// requires_fastcount, +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, +// ] // ensure a document with _id undefined cannot be saved let t = db.insert_id_undefined; diff --git a/jstests/core/write/no_db_created.js b/jstests/core/write/no_db_created.js index d799f4e89df..2dc1f810916 100644 --- a/jstests/core/write/no_db_created.js +++ b/jstests/core/write/no_db_created.js @@ -5,7 +5,9 @@ // # The test runs commands that are not allowed with security token: compact. // not_allowed_with_signed_security_token, // requires_non_retryable_commands, -// uses_compact +// uses_compact, +// # The passthrough creates collections implicitly. +// exclude_from_timeseries_crud_passthrough, // ] let adminDB = db.getSiblingDB("admin"); diff --git a/jstests/core/write/ts1.js b/jstests/core/write/ts1.js index 991cf772413..f94ff8d6b9c 100644 --- a/jstests/core/write/ts1.js +++ b/jstests/core/write/ts1.js @@ -3,6 +3,8 @@ // if the inserts are into a sharded collection. // @tags: [ // assumes_unsharded_collection, +// # Inserting into a time-series collection does not replace top-level empty timestamps. +// exclude_from_timeseries_crud_passthrough, // ] const t = db.ts1; t.drop(); diff --git a/jstests/core/write/uniqueness.js b/jstests/core/write/uniqueness.js index 17751f78de5..fe64109ca8f 100644 --- a/jstests/core/write/uniqueness.js +++ b/jstests/core/write/uniqueness.js @@ -6,6 +6,8 @@ // // # Uses index building in background // requires_background_index, +// # Time series collections do not support unique indexes. +// exclude_from_timeseries_crud_passthrough, // ] let res; diff --git a/jstests/core/write/write_error_message_truncation.js b/jstests/core/write/write_error_message_truncation.js index 2c949a840f6..d0d193a02bf 100644 --- a/jstests/core/write/write_error_message_truncation.js +++ b/jstests/core/write/write_error_message_truncation.js @@ -3,6 +3,8 @@ * * @tags: [ * assumes_write_concern_unchanged, + * # Time-series collections have different _id properties. + * exclude_from_timeseries_crud_passthrough, * ] */ diff --git a/jstests/core/write/write_result.js b/jstests/core/write/write_result.js index 4b816342d1b..f851977b6e4 100644 --- a/jstests/core/write/write_result.js +++ b/jstests/core/write/write_result.js @@ -5,6 +5,8 @@ // requires_multi_updates, // requires_non_retryable_writes, // requires_fastcount, +// # Time-series collections have different _id properties. +// exclude_from_timeseries_crud_passthrough, // ] // diff --git a/jstests/libs/override_methods/implicit_timeseries_collections.js b/jstests/libs/override_methods/implicit_timeseries_collections.js index 8c2830d77ec..48c929db2ac 100644 --- a/jstests/libs/override_methods/implicit_timeseries_collections.js +++ b/jstests/libs/override_methods/implicit_timeseries_collections.js @@ -3,6 +3,10 @@ * functions to create all collections as timeseries collections. As part of this override, * each insert/write will implicitly add a timeseries field to the document, which is * removed when calling any find methods. + * + * @tags: [ + * exclude_from_timeseries_crud_passthrough, + * ] */ import {transformIndexHintsForTimeseriesCollection} from "jstests/core/timeseries/libs/timeseries_writes_util.js";