)]}'
{
  "commit": "265b2a2e96469b3e384ab3b635fce481aabf1abb",
  "tree": "a36833076efd6822d1567781cf592baf5cb7508f",
  "parents": [
    "38dbeda4beede419332728039154de3c121662fd"
  ],
  "author": {
    "name": "Rithwik Koul",
    "email": "rithwik.koul@couchbase.com",
    "time": "Wed Oct 07 01:09:28 2026 +0530"
  },
  "committer": {
    "name": "Ritik Raj",
    "email": "ritik.raj@couchbase.com",
    "time": "Fri Oct 16 13:30:46 2026 +0000"
  },
  "message": "[ASTERIXDB-3955][COMP] Fix CBO cost of a pushed LIMIT\n\nThe CBO costed every operator of a plan as if it stopped at a pushed\nLIMIT. A limit is pushed only into a primary-index search, so a\nsecondary-index search still returns every match, and the primary-key\nsort after it is blocking. An index plan therefore looked near-constant\nand won even when a scan that stops after a few rows was far cheaper.\n\nA primary-index search returns the records itself, so it is no longer\ncharged a primary-key sort and fetch.\n\nMeasured against an index plan, a scan that a limit stops early still\nruns several times slower than the rows it reads suggest, so it is\ncosted as reading eight times further, though never more than a full\nscan. Without that weight it displaced index plans that were faster on\nselective predicates with large limits.\n\nExt-ref: MB-70486\nChange-Id: Id437d35c7c3e3f9624076464d196518da823400c\nReviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/22002\nReviewed-by: Rithwik Koul \u003crithwik.koul@couchbase.com\u003e\nIntegration-Tests: Jenkins \u003cjenkins@fulliautomatix.ics.uci.edu\u003e\nReviewed-by: Ali Alsuliman \u003cali.al.solaiman@gmail.com\u003e\nTested-by: Jenkins \u003cjenkins@fulliautomatix.ics.uci.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2caca8e903a9ab0fc2e35e6de3af82d654cd9960",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java",
      "new_id": "3e41e43a8a3ce6e6df66965eeed1fa40e0efd77c",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java"
    },
    {
      "type": "modify",
      "old_id": "5028414e853c662c291e75e8a3819c7658bd43f2",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java",
      "new_id": "191c93a9f3cca8e532ac62993f6062ddbbb8c58a",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java"
    },
    {
      "type": "modify",
      "old_id": "62ea3034c641c43ac39eecb152e700306457552c",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushLimitIntoOrderByRule.java",
      "new_id": "f55d706fcea7cd9f2acb92f7954e01df11f13b5a",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushLimitIntoOrderByRule.java"
    },
    {
      "type": "modify",
      "old_id": "b12fc3e9d017c6a7ed84ba44d4cbfe38b333f31b",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java",
      "new_id": "dcc461758df8825e07ec84b2a47e2d5d9ac9791b",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java"
    },
    {
      "type": "modify",
      "old_id": "0fa37acff7121208fc842fad2a845f9dfaed4b19",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java",
      "new_id": "389c13defc8d78dae082f18a09fe5dbcd3a9f5f6",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java"
    },
    {
      "type": "modify",
      "old_id": "072e2adc7cd8557bbd7b392be1ddc7c30fc7bc70",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan",
      "new_id": "a79124180518b9fa254afa51d4693b9603ccdae5",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan"
    },
    {
      "type": "modify",
      "old_id": "e6556ec146a9c6b1db03f4938385eadaba4dd294",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan",
      "new_id": "f3776305e9850e743db735149b817fd06d2c4e58",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan"
    },
    {
      "type": "modify",
      "old_id": "fbb53669505b5c6e71d4940405d326345e23bdf0",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan",
      "new_id": "250f35dc6a759532420d539ee33d90fc16681107",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan"
    },
    {
      "type": "modify",
      "old_id": "5eca8725cf6b4db22b32ec690720f33534b1c8e8",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan",
      "new_id": "955393a59f1e96e1c11e00243a3b41d331f772b9",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan"
    },
    {
      "type": "modify",
      "old_id": "01e87422588b7b811807419c915e5f0b3af6b821",
      "old_mode": 33188,
      "old_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_ncservice/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan",
      "new_id": "2fcaa7ef51f0b4227da445a0544921dc16d79e0c",
      "new_mode": 33188,
      "new_path": "asterixdb/asterix-app/src/test/resources/runtimets/results_ncservice/cardinality-estimation/single-collection-queries/single-collection-queries.10.plan"
    }
  ]
}
