SERVER-100326 CBR with heuristicCE jscore passthrough (#32023)

GitOrigin-RevId: 29d1ac65290ba78a963efd21a53e5ed520d1e2c0
This commit is contained in:
Ben Shteinfeld 2025-02-06 15:12:16 -05:00 committed by MongoDB Bot
parent c3b7d3b6bb
commit a37a628c64
4 changed files with 80 additions and 3 deletions

View File

@ -0,0 +1,63 @@
# This is equivalent to the core suite, but runs with CBR with heursitic CE enabled.
test_kind: js_test
selector:
roots:
- jstests/core/**/*.js
- jstests/core_standalone/**/*.js
exclude_files:
# Transactions are not supported on MongoDB standalone nodes, so we do not run these tests in the
# 'core' suite. Instead we run them against a 1-node replica set in the 'core_txns' suite.
- jstests/core/txns/**/*.js
# Queryable encryption is not supported on standalone.
- jstests/core/query/queryable_encryption/**/*.js
# Query settings are not supported on standalone.
- jstests/core/query/query_settings/**/*.js
# CBR does not currently add plans to the plan cache. These tests examine the plan cache.
- jstests/core/query/plan_cache/*.js
- jstests/core/query/explain/explain_plan_cache.js
- jstests/core/query/partial_index_logical.js
- jstests/core/index/index_filter_commands.js
- jstests/core/index/index_filter_commands_invalidate_plan_cache_entries.js
# Asserting on specific plan, CBR pick different one
- jstests/core/query/agg_hint.js
# CBR picks a different plan which results in different results due to SERVER-23229
- jstests/core/query/project/projection_dotted_paths.js
# CBR chooses plan with SORT and hits memory limit
- jstests/core/query/sort/sortg.js
# Asserts on output of allPlansExecution. CBR picks a single plan so there is no multiplanning.
- jstests/core/query/explain/explain_winning_plan.js
# TODO SERVER-100144
- jstests/core/query/elemmatch/elemmatch_or_pushdown.js
# TODO SERVER-100417
- jstests/core/query/explain/explain_multi_plan_count.js
# TODO SERVER-99956
- jstests/core/query/json_schema/*.js
- jstests/core/timeseries/write/timeseries_update_arbitrary_updates_not_enabled.js
# TODO SERVER-92589: Fails in all feature flags variant because SBE explain not supported
- jstests/core/query/index_deduplication.js
- jstests/core/query/explain/explain_all_plans_execution_stats.js
- jstests/core/query/explain/explain_multi_plan.js
exclude_with_any_tags:
# Profiler entries will have different shape in CBR
- requires_profiling
executor:
config:
shell_options:
crashOnInvalidBSONError: ""
objcheck: ""
eval: |
await import("jstests/libs/override_methods/detect_spawning_own_mongod.js");
fixture:
class: MongoDFixture
mongod_options:
set_parameters:
enableTestCommands: 1
planRankerMode: "heuristicCE"

View File

@ -1899,6 +1899,19 @@ tasks:
vars:
suite: query_tester_manual_test
- <<: *task_template
name: query_cbr_heuristic_jscore_passthrough
tags: [
"assigned_to_jira_team_server_query_optimization",
"experimental",
"blocked_in_query_alias", # We explicitly specify this task in query alias
]
commands:
- func: "do setup"
- func: "run tests"
vars:
suite: query_cbr_heuristic_jscore_passthrough
################################################
# Query Integration tasks #
################################################

View File

@ -350,6 +350,8 @@ buildvariants:
- name: noPassthroughWithMongod_gen
- name: initial_sync_fuzzer_sanity_patch
- name: rollback_fuzzer_sanity_patch
- name: query_cbr_heuristic_jscore_passthrough
cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
- <<: *amazon_linux2_arm64_static_compile_variant_dependency
name: amazon_linux2_arm64_static-try-sbe-engine-query-patch-only

View File

@ -335,9 +335,8 @@ CEResult CardinalityEstimator::estimate(const MatchExpression* node, const bool
ceRes = estimate(static_cast<const ElemMatchValueMatchExpression*>(node), isFilterRoot);
break;
case MatchExpression::ELEM_MATCH_OBJECT:
ceRes =
estimate(static_cast<const ElemMatchObjectMatchExpression*>(node), isFilterRoot);
break;
// TODO SERVER-100293
return Status(ErrorCodes::UnsupportedCbrNode, "elemMatchObject supported");
default:
MONGO_UNIMPLEMENTED_TASSERT(9586708);
}