)]}'
{
  "commit": "15ac4e4ea36a42d1573595202b656a8365a45eeb",
  "tree": "87fb1cc39b9df917bca1b7f3a9eb3e5318ce1259",
  "parents": [
    "864dd2be80efed67c576d3dc2698b2b5766720c0"
  ],
  "author": {
    "name": "CritasWang",
    "email": "critas@outlook.com",
    "time": "Thu Feb 05 14:46:13 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Feb 05 14:46:13 2026 +0800"
  },
  "message": "Add batch insert APIs and concurrent execution utilities for Node.js optimization (#13)\n\n* Initial plan\n\n* Add insertTablets API and concurrent execution utilities for Node.js optimization\n\n\n* Fix insertTabletsParallel to use proper worker-based concurrency control\n\n\n* Add benchmark comparison, E2E tests, and examples for new concurrent APIs\n\n\n* Add TableSessionPool examples and benchmark comparison for table model\n\n\n* Fix code review issues: use TSDataType constants, use STRING for TAG columns\n\n\n* Fix insertTablets to handle redirect response code 400\n\n\n* Co-authored-by: CritasWang \u003c19721744+CritasWang@users.noreply.github.com\u003e\n\n* Fix code review issues: semaphore race condition, undefined handling, unused variables\n\n\n---------\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "90577b0c2ee0f952b1defc06957a42343dfde9bf",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "8f6a36d073d9f67f2f4713d6dd3d363b0f794d6c",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "8e27a373d65d9eb9d82499771cd34ad41b8919b0",
      "old_mode": 33188,
      "old_path": "benchmark/README.md",
      "new_id": "fb812caf6c10236867b8c0ebf0298798ac8c1988",
      "new_mode": 33188,
      "new_path": "benchmark/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fc633618303a3686f52786cce4c74bb46c0d10aa",
      "new_mode": 33188,
      "new_path": "benchmark/benchmark-comparison.js"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ca121bc2e859e9c7e329c364a888cd9e7c6ad249",
      "new_mode": 33188,
      "new_path": "benchmark/benchmark-table-comparison.js"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "115dff8f27b800eb692096fa8edfd18a94a64c80",
      "new_mode": 33188,
      "new_path": "docs/nodejs-vs-java-analysis.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb6d218dca5baeac95db77d6f480f1193602549d",
      "new_mode": 33188,
      "new_path": "examples/concurrent-operations.ts"
    },
    {
      "type": "modify",
      "old_id": "b004d72c3d0ecd3873abffe6750d54390834429f",
      "old_mode": 33188,
      "old_path": "examples/session-pool.ts",
      "new_id": "8ed3cb32cbdbc3a4e09bb3bccf734f4071f59cb9",
      "new_mode": 33188,
      "new_path": "examples/session-pool.ts"
    },
    {
      "type": "modify",
      "old_id": "076140eef42083d0a0dbe4d0790ae6b4293c2b54",
      "old_mode": 33188,
      "old_path": "examples/table-session-pool.ts",
      "new_id": "65ab0be0706fb4df8a5295434d5cce7deabbe1ce",
      "new_mode": 33188,
      "new_path": "examples/table-session-pool.ts"
    },
    {
      "type": "modify",
      "old_id": "0e1fb29f3aa8afe3ac3ba41ebef6d29cbb5cbe2f",
      "old_mode": 33188,
      "old_path": "package-lock.json",
      "new_id": "02f76ec2bc8cf15a447b4615a34b8cfd5cae0eba",
      "new_mode": 33188,
      "new_path": "package-lock.json"
    },
    {
      "type": "modify",
      "old_id": "68fa6355488aa8ab975e596cb918e01dd3bdb1c3",
      "old_mode": 33188,
      "old_path": "src/client/BaseSessionPool.ts",
      "new_id": "6eef90f707b6e5257b8fcf16d8153e042cbda7e2",
      "new_mode": 33188,
      "new_path": "src/client/BaseSessionPool.ts"
    },
    {
      "type": "modify",
      "old_id": "1084838eef4849a10e06871f5d02691a954a62b5",
      "old_mode": 33188,
      "old_path": "src/client/Session.ts",
      "new_id": "879f62ef88ced16a61929ae2b4ecbd1618895da1",
      "new_mode": 33188,
      "new_path": "src/client/Session.ts"
    },
    {
      "type": "modify",
      "old_id": "11b93788c615bfe11b8e418dec27f63fe5ffbb31",
      "old_mode": 33188,
      "old_path": "src/index.ts",
      "new_id": "54fdee40fcaf55dbb5e0f0da66e001aee1f9e7b1",
      "new_mode": 33188,
      "new_path": "src/index.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "70cfa8e2761409bfa18b58241f8341970fcc95f2",
      "new_mode": 33188,
      "new_path": "src/utils/ConcurrentExecutor.ts"
    },
    {
      "type": "modify",
      "old_id": "8f998581c7986877b618242fa8c391bce3455439",
      "old_mode": 33188,
      "old_path": "tests/e2e/Session.test.ts",
      "new_id": "1be2e284493ead3ff0a8e6eac9cba6fbc76b2f91",
      "new_mode": 33188,
      "new_path": "tests/e2e/Session.test.ts"
    },
    {
      "type": "modify",
      "old_id": "0900a26e5965e04e193f7455fbc27f6cf1de2786",
      "old_mode": 33188,
      "old_path": "tests/e2e/SessionPool.test.ts",
      "new_id": "e5464fbb73837654d8911661ed9ad65198c4fe50",
      "new_mode": 33188,
      "new_path": "tests/e2e/SessionPool.test.ts"
    },
    {
      "type": "modify",
      "old_id": "64883e50d61661654f540ce0cc9063116b425316",
      "old_mode": 33188,
      "old_path": "tests/e2e/TableSessionPool.test.ts",
      "new_id": "f7fbb784bf6d0f350cc97e50fb97027e271423fd",
      "new_mode": 33188,
      "new_path": "tests/e2e/TableSessionPool.test.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5715cb906d42fa2478a65e7fc5337925c2c32087",
      "new_mode": 33188,
      "new_path": "tests/unit/ConcurrentExecutor.test.ts"
    }
  ]
}
