/**
* Reproduces a join hint parser tassert from a node id that is accepted as a non-negative int32 but
* is outside the join optimizer NodeSet bitset range.
*
* @tags: [
* requires_fcv_90,
* requires_sbe,
* ]
*/
TestData.cleanUpCoreDumpsFromExpectedCrash = true;
const conn = MongoRunner.runMongod({
useLogFiles: false,
setParameter: {
featureFlagPathArrayness: true,
internalEnableJoinOptimization: true,
internalJoinReorderMode: "bottomUp",
},
});
assert(conn);
const db = conn.getDB(jsTestName());
const base = db.base;
const foreign = db.foreign;
assert.commandWorked(base.insert({x: 1}));
assert.commandWorked(foreign.insert({y: 1}));
assert.commandWorked(base.createIndex({x: 1}));
assert.commandWorked(foreign.createIndex({y: 1}));
assert.commandWorked(
db.runCommand({
aggregate: base.getName(),
pipeline: [
{
$_internalJoinHint: {
perSubsetLevelMode: [{level: NumberInt(0), mode: "CHEAPEST", hint: {node: NumberInt(64)}}],
},
},
{$lookup: {from: foreign.getName(), localField: "x", foreignField: "y", as: "joined"}},
{$unwind: "$joined"},
],
cursor: {},
}),
);
MongoRunner.stopMongod(conn, null, {allowedExitCode: MongoRunner.EXIT_ABORT});