• Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Query Optimization
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      This can happen due to eg. a document with parallel arrays (wrt. an existing multikey index) existing in the persisted sample.

      We currently fail the query in this case, but can do better (eg. fall back to MP, retry with on-the-fly sampling, trigger a re-sample etc.).

      Repro:

      // --setParameter featureFlagPersistentStats=true
      db.adminCommand({setFeatureCompatibilityVersion: "9.1", confirm: true})
      db.a.drop();
      db.adminCommand({
        setParameter: 1,
        internalQueryPlanRanker: "costBased",
        internalQueryCBRCEMode: "samplingCE",
      });
      db.a.insertOne({a: [1, 2], b: [3, 4]});
      db.runCommand({
        analyze: "a",
        mode: "sample",
        samplingMethod: "random",
      });
      db.a.deleteMany({});
      db.a.insertOne({a: [0], b: 0});
      db.a.createIndex({a:1, b: 1, c: 1});
      db.a.explain().find({a: {$gt: 0}, b: {$gt: 0}, c: {$gt: 0}})
      

      This fails with MongoServerError[Location10061118]: Parallel arrays are not supported

      Or this one:

      // --setParameter featureFlagPersistentStats=true
      db.adminCommand({setFeatureCompatibilityVersion: "9.1", confirm: true})
      db.a.drop();
      db.a.insertOne({a: [1, 2]});
      db.runCommand({
        analyze: "a",
        mode: "sample",
        samplingMethod: "random",
      });
      db.a.deleteMany({});
      db.a.insertOne({a: 0});
      db.a.createIndex({a:1, b: 1});
      db.a.explain().find({a: {$gt: 0}, b: {$gt: 0}})
      

      Which fails with MongoServerError[QueryPlanKilled]: query plan killed :: non-array path became multikey while the query was suspended: path=a

            Assignee:
            Unassigned
            Reporter:
            Kartal Kaan Bozdogan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: