Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-66989

Make HashAgg record store key owned

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 6.0.0-rc10, 6.0.0-rc11
    • 6.1.0-rc0
    • None
    • None
    • Fully Compatible
    • ALL
    • v6.0
    • Hide

      (function() {
      "use strict";
       
      const memoryLimitMb = 1;
      const memoryLimitBytes = memoryLimitMb * 1024 * 1024;
       
      // Start mongod with reduced memory limit for the $group stage.
      const conn = MongoRunner.runMongod({
          setParameter: {
              internalDocumentSourceGroupMaxMemoryBytes: memoryLimitBytes,
              internalQuerySlotBasedExecutionHashAggApproxMemoryUseInBytesBeforeSpill: memoryLimitBytes
          }
      });
      const testDb = conn.getDB(jsTestName());
       
      // Create a collection exceeding the memory limit.
      testDb.largeColl.drop();
      const largeStr = "A".repeat(1024 * 1024);  // 1MB string
      for (let i = 0; i < memoryLimitMb + 1; ++i)
          assert.commandWorked(testDb.largeColl.insert({x: i, largeStr: largeStr + i}));
       
      const pipeline = [{$group: {_id: '$largeStr', minId: {$min: '$_id'}}}];
      // Make sure that the pipeline needs to spill to disk.
      assert.throwsWithCode(() => testDb.largeColl.aggregate(pipeline, {allowDiskUse: false}),
                            ErrorCodes.QueryExceededMemoryLimitNoDiskUseAllowed);
      testDb.largeColl.aggregate(pipeline);
       
      MongoRunner.stopMongod(conn);
      })();
      

      Show
      (function() { "use strict";   const memoryLimitMb = 1; const memoryLimitBytes = memoryLimitMb * 1024 * 1024;   // Start mongod with reduced memory limit for the $group stage. const conn = MongoRunner.runMongod({ setParameter: { internalDocumentSourceGroupMaxMemoryBytes: memoryLimitBytes, internalQuerySlotBasedExecutionHashAggApproxMemoryUseInBytesBeforeSpill: memoryLimitBytes } }); const testDb = conn.getDB(jsTestName());   // Create a collection exceeding the memory limit. testDb.largeColl.drop(); const largeStr = "A".repeat(1024 * 1024); // 1MB string for (let i = 0; i < memoryLimitMb + 1; ++i) assert.commandWorked(testDb.largeColl.insert({x: i, largeStr: largeStr + i}));   const pipeline = [{$group: {_id: '$largeStr', minId: {$min: '$_id'}}}]; // Make sure that the pipeline needs to spill to disk. assert.throwsWithCode(() => testDb.largeColl.aggregate(pipeline, {allowDiskUse: false}), ErrorCodes.QueryExceededMemoryLimitNoDiskUseAllowed); testDb.largeColl.aggregate(pipeline);   MongoRunner.stopMongod(conn); })();
    • QE 2022-06-13, QE 2022-06-27

    Attachments

      Activity

        People

          eric.cox@mongodb.com Eric Cox (Inactive)
          romans.kasperovics@mongodb.com Romans Kasperovics
          Votes:
          0 Vote for this issue
          Watchers:
          11 Start watching this issue

          Dates

            Created:
            Updated:
            Resolved: