)]}'
{
  "commit": "0b6ea95a3d304a774bbe512bb70fbca332aa5426",
  "tree": "8c1e2c3ae2ea105c730d84dc47c1dfe3f720c8de",
  "parents": [
    "645d261ce3bc0b3b610c8d82422042b3e573e793"
  ],
  "author": {
    "name": "Tim Saucer",
    "email": "timsaucer@gmail.com",
    "time": "Fri Apr 03 15:43:28 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Apr 03 15:43:28 2026 -0400"
  },
  "message": "Add missing conditional functions (#1464)\n\n* Add missing conditional functions: greatest, least, nvl2, ifnull (#1449)\n\nExpose four conditional functions from upstream DataFusion that were\nnot yet available in the Python bindings.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Add unit tests for greatest, least, nvl2, and ifnull functions\n\nTests cover multiple data types (integers, strings), null handling\n(all-null, partial-null), multiple arguments, and ifnull/nvl equivalence.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Use standard alias docstring pattern for ifnull\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* remove unused df fixture and fix parameter shadowing\n\n* Refactor conditional function tests into parametrized test suite\n\nReplace separate test functions for coalesce, greatest, least, nvl,\nnvl2, ifnull with a single parametrized test using a shared fixture.\nAdds coverage for nvl, nullif (previously untested), datetime and\nboolean types, literal fallbacks, and variadic calls.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fefe14b3e0944340101503950c1835a9aaafa85a",
      "old_mode": 33188,
      "old_path": "crates/core/src/functions.rs",
      "new_id": "3f07da95bf17247d26fab4ae4505d0122bc2d8f6",
      "new_mode": 33188,
      "new_path": "crates/core/src/functions.rs"
    },
    {
      "type": "modify",
      "old_id": "2ef2f0473a41fe71288c8ca5b650dc8a1625ad9f",
      "old_mode": 33188,
      "old_path": "python/datafusion/functions.py",
      "new_id": "f1ea3d25612ed359a7f63a7d6143abf56c42c874",
      "new_mode": 33188,
      "new_path": "python/datafusion/functions.py"
    },
    {
      "type": "modify",
      "old_id": "db141fbe08ce62742f5640fd4394b7ee1e33cea6",
      "old_mode": 33188,
      "old_path": "python/tests/test_functions.py",
      "new_id": "74fcbffb45d484f2104a82a00d8fd7493f0368a4",
      "new_mode": 33188,
      "new_path": "python/tests/test_functions.py"
    }
  ]
}
