)]}'
{
  "commit": "f2a71ef2546aae53972d236b6857c5f081a74628",
  "tree": "7820e1d6442ac594299c171b1bc9fe13fdef18fb",
  "parents": [
    "0d42092cd51993dc82ab3f390d7866d6404d11a1"
  ],
  "author": {
    "name": "Colin Lee",
    "email": "105656576+ColinLeeo@users.noreply.github.com",
    "time": "Thu Oct 29 20:44:22 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 29 20:44:22 2026 +0800"
  },
  "message": "[C++] Bound aligned batch decodes by remaining TsBlock capacity (#1045)\n\n* [C++] Bound aligned batch decodes by remaining TsBlock capacity\n\nAn aligned table query could hang forever in the first ResultSet::next()\nwhen the internal TsBlock could not hold the decoder\u0027s fixed 129-row batch.\ndecode_tv_batch() required a full batch before consuming any input, so a\nsmall block never filled, E_OVERFLOW was reported as an empty success, and\nthe scan iterator retried the same decode without progress.\n\nCap each pass at min(BATCH, remaining) as the multi-column path and\nChunkReader already do, and stop reporting an empty E_OVERFLOW as success:\na block that cannot hold a single row now surfaces E_INVALID_ARG instead of\nspinning silently.\n\nCloses #1035\n\n* [C++] Free zero-sized ByteBuffer allocations\n\nByteBuffer::init(0) still goes through mem_alloc, which allocates an\n8-byte header block, but the destructor only released the buffer when\nreserved_size_ was non-zero. A TsBlock built with a capacity below one\nrow therefore leaked one block per column, which LeakSanitizer reported\nas a failure of the new small-capacity regression test on Ubuntu.\n\nFree whenever the pointer is set; data_ is only ever assigned by\nmem_alloc/mem_realloc, so this cannot release foreign memory.\n\n* [C++] Free zero-sized BitMap allocations\n\nSame defect as the ByteBuffer fix: BitMap::init(0) rounds its bitmap size\nto zero but still allocates an 8-byte header block, and the destructor\nonly released it when size_ was non-zero. A TsBlock built with a capacity\nbelow one row leaked the null bitmap of every column, which LeakSanitizer\nreported on the new small-capacity regression test.\n\nFree on the pointer instead of the size, matching ByteBuffer.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3b1af6ab24fea9d0fdc1a31dd05076700b245be8",
      "old_mode": 33188,
      "old_path": "cpp/src/common/container/bit_map.cc",
      "new_id": "a83d66efa9f2d86c369d277d1bf714003c72664f",
      "new_mode": 33188,
      "new_path": "cpp/src/common/container/bit_map.cc"
    },
    {
      "type": "modify",
      "old_id": "0f313acdcb88806d81f302a94b59ff5de15a8cf8",
      "old_mode": 33188,
      "old_path": "cpp/src/common/container/byte_buffer.h",
      "new_id": "3f49540932691975ddb00e08910b5c274802f45a",
      "new_mode": 33188,
      "new_path": "cpp/src/common/container/byte_buffer.h"
    },
    {
      "type": "modify",
      "old_id": "38252744b1483ac8ae7681a101cf11e0e763186a",
      "old_mode": 33188,
      "old_path": "cpp/src/reader/aligned_chunk_reader.cc",
      "new_id": "828880b5834b503ad16c670570f21c144f880cb9",
      "new_mode": 33188,
      "new_path": "cpp/src/reader/aligned_chunk_reader.cc"
    },
    {
      "type": "modify",
      "old_id": "9b45403470164cd6d87158fb48cd85044d9255e8",
      "old_mode": 33188,
      "old_path": "cpp/test/reader/aligned_field_filter_regression_test.cc",
      "new_id": "c2b7506d1cfa2737d7ebffd8f19e16dc84d1830d",
      "new_mode": 33188,
      "new_path": "cpp/test/reader/aligned_field_filter_regression_test.cc"
    }
  ]
}
