)]}'
{
  "log": [
    {
      "commit": "abeb6cb37a4d3d0bc18f0049f13435c86cbee794",
      "tree": "9d1200732806f4ca2eb1e5442bec2536aca87c26",
      "parents": [
        "905a0e79fc7128f3c1430d3bb298b74b0118b54e"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Aug 28 05:26:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 05:26:36 2026 -0400"
      },
      "message": "Add DataFusion 55.0.0 release blog post (#203)\n\n* Add draft blog post for DataFusion 55.0.0 release\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\n* tidy up range\n\n* rework perf\n\n* Add development activity chart (commits, commits/day, contributors)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\n* more performance numbers, remove topk mention\n\n* remove mention of topk per partition\n\n* more examples\n\n* images\n\n* update performance\n\n* update performance\n\n* More\n\n* example\n\n* example / liks\n\n* updates\n\n* update\n\n* trim range partitioning\n\n* trim more\n\n* tighen\n\n* Trim\n\n* tighten\n\n* Update dates, tweak\n\n* obsess\n\n* bencmaxx\n\n* obsess\n\n* mention strictly order preserving\n\n* Shorten\n\n* Update content/blog/2026-08-25-datafusion-55.0.0.md\n\nCo-authored-by: Stu Hood \u003cstuhood@gmail.com\u003e\n\n* Add reference to ballista use\n\n* Update content/blog/2026-08-25-datafusion-55.0.0.md\n\nCo-authored-by: Qi Zhu \u003c821684824@qq.com\u003e\n\n* Update content/blog/2026-08-25-datafusion-55.0.0.md\n\nCo-authored-by: Qi Zhu \u003c821684824@qq.com\u003e\n\n* Mention more merge is planned\n\n---------\n\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Gene Bordegaray \u003cgene.bordegaray@datadoghq.com\u003e\nCo-authored-by: Stu Hood \u003cstuhood@gmail.com\u003e\nCo-authored-by: Qi Zhu \u003c821684824@qq.com\u003e"
    },
    {
      "commit": "905a0e79fc7128f3c1430d3bb298b74b0118b54e",
      "tree": "b74f16cc009fa71514051fb54cdf1888d7bbeaa6",
      "parents": [
        "f6954d3377a01cb746bffd4e1a74e3a1a42b1457"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Sun Aug 09 17:28:13 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 09 17:28:13 2026 -0600"
      },
      "message": "docs: add Ballista 54.1.0 release announcement blog post (#202)"
    },
    {
      "commit": "f6954d3377a01cb746bffd4e1a74e3a1a42b1457",
      "tree": "d01f08cd8c0f022fe9ce32bccdaff14c78b581e1",
      "parents": [
        "9ecf01ba5ec102ea3e95ee37188bcb21eb77e605"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Sun Aug 09 09:04:42 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 09 09:04:42 2026 -0600"
      },
      "message": "Comet 1.0.0 Blog Post (#201)\n\n* Add Comet 1.0.0 release announcement blog post\n\n* Update Comet 1.0.0 blog post with commits merged since draft\n\nIncorporates PRs merged to datafusion-comet main between 2026-07-17\nand 2026-07-27, updates PR/contributor counts, and bumps DataFusion\nversion to 54.1. Adds a new Shuffle Improvements section.\n\n* Update Comet 1.0.0 blog post with commits merged since last update\n\n* Update Comet 1.0.0 blog post for final branch-1.0 state\n\n* fixes\n\n* change date\n\n* Trim changelog feel from Comet 1.0.0 blog post\n\nRemove inline PR links throughout, compress long enumerations into\ngrouped lists, and consolidate the Iceberg / correctness / config\nsections into shorter prose. The change log link at the top is now\nthe pointer for per-PR detail.\n\n* Condense Correctness section to stats plus illustrative examples\n\nReplace the full enumeration of ~30 correctness fixes with a stat,\ntwo representative examples (whitespace trimming, ANSI short-circuit),\nand a short note on conservative fallbacks. Full list stays in the\nchange log.\n\n* Reframe Correctness section opener\n\nReplace the generic \"A 1.0 release is only as good as its results\"\nopener with concrete framing: correctness fixes have been part of\nevery release, and 1.0 was an extra push to clear the bulk of the\nknown issues.\n\n* Add Road to 1.0 section\n\nSketch the arc of the project across five threads — query coverage,\nSpark support, ecosystem, correctness rigor, and performance —\ngrounded in concrete facts from earlier releases (106 → 404\nexpressions, JVM codegen dispatcher in 0.17.0, Iceberg in 0.10.0,\n9% TPC-DS gain in 0.17.0). Trim the \"What 1.0 Means\" intro since\nthe arc is now covered above.\n\n* Fix release count and expressions in blog post\n\nCorrected the number of major releases from nineteen to sixteen and updated the supported expressions count to more than 400 in version 1.0.0.\n\n* start of human rewrite\n\n* more rewrite\n\n* aws labs links, codegen dispatch\n\n* ansi, more codegen, links to benchmarks\n\n* ai suggestions\n\n* ai suggestions\n\n* ai suggestions\n\n* ai suggestions\n\n* docs: address review feedback on Comet 1.0.0 blog post\n\n- Add expression fusion as a fourth consequence of codegen dispatch\n- Link the scalar expression optimization guide\n- Note generator and wider operator coverage in the Road to 1.0 section\n- Explain why Spark 3.4 is deprecated now\n\n* docs: describe codegen dispatch extensions in Comet 1.0.0\n\n* docs: drop expression examples from codegen dispatch section\n\n* docs: trim remaining expression examples from codegen dispatch section\n\n* Update content/blog/2026-08-07-datafusion-comet-1.0.0.md\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e\n\n* Update content/blog/2026-08-07-datafusion-comet-1.0.0.md\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e"
    },
    {
      "commit": "9ecf01ba5ec102ea3e95ee37188bcb21eb77e605",
      "tree": "0dba66a5cca2178384632d1ad2989eedf21fb5b0",
      "parents": [
        "dc8b247bbb5054036872e687d580c5796520a7e7"
      ],
      "author": {
        "name": "Qi Zhu",
        "email": "821684824@qq.com",
        "time": "Tue Jul 21 01:11:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 13:11:36 2026 -0400"
      },
      "message": "Add blog: Optimizing for Almost Sorted Data: Sort Pushdown in Apache DataFusion (#186)\n\n* Add blog: Sort Pushdown in DataFusion: Skip Sorts, Skip I/O\n\nA walkthrough of the sort pushdown work landed and in flight on Apache\nDataFusion. Covers:\n\n- Why SortExec is expensive and what `Exact` / `Inexact` ordering mean\n  at runtime (static `fetch` vs `TopK` dynamic filter).\n- Phase 1 (#19064): the `PushdownSort` rule + reverse row-group case.\n- Phase 2 (#21182): statistics-based file sort that upgrades\n  `Unsupported` to `Exact`, eliminating the `SortExec` on\n  non-overlapping ASC scans. Includes the BufferExec compensation\n  (#21426) so the SPM above doesn\u0027t lose its implicit memory buffer.\n- Reverse scans: today\u0027s row-group reverse (Inexact, #18817) and the\n  community decision to wait for arrow-rs page-level reverse (#9937)\n  before pursuing Exact reverse, after memory-profile pushback on the\n  original row-group-level proposal.\n- Benchmarks: 2.1×-49× on the ASC-LIMIT sort_pushdown suite.\n- What\u0027s next: the dynamic / TopK-driven path (#21351 merged, #21733,\n  #21712, #21956, #21580) including the precise RG-pruning vs\n  mid-stream-early-return distinction, and the EnsureRequirements\n  unification (#21976).\n- Links into the prior dynamic filters and limit pruning posts so the\n  series reads as a coherent thread.\n\n* Push draft date to 2026-05-25\n\n* Add Phase 3 section covering #21956 runtime reorder pipeline\n\nThe post previously only mentioned #21956 in passing. The PR is\nlanding the full mechanism — `try_pushdown_sort` decision tree,\ntwo flags on `ParquetSource`, three composable runtime steps\n(file reorder + RG reorder + reverse), and a `sort_prefix`-\npreserving short-circuit — so cover it as a dedicated phase\nbetween Phase 2 and the existing reverse-scan section.\n\n- TL;DR: add a Phase 3 bullet alongside Phase 1 and Phase 2.\n- Phase 1: replace the in-flight `#21956` aside with a cross-link\n  to the new section.\n- Phase 2: keep the caveat about function-wrapped sorts but note\n  that #21956\u0027s `Inexact` path now covers them via monotonicity\n  inference.\n- New `## Phase 3` section with two SVG diagrams: a decision tree\n  for the three protocol outcomes, and a three-step pipeline for\n  the `Inexact` runtime. Covers the two-flag design, the nested\n  file/RG layers, when EXPLAIN surfaces each flag, and four\n  scenarios where Phase 3 does not fire (aggregations, multi-\n  column secondary keys, function-wrapped sorts without a\n  declared ordering, source declares a forward prefix of the\n  request).\n- \"What\u0027s Next\": rename the old \"Phase 3 — filter + sort\" bullet\n  to \"Filtered reverse TopK end-to-end\" so the label doesn\u0027t\n  clash with the new section, and add a follow-up bullet\n  referencing #22198 for multi-column / function-wrapped reorder.\n\n* Add empirical note: why we keep an out-of-tree RG-level Exact reverse\n\nAdd an ### Empirical note subsection inside \"Reverse Scans for\n`ORDER BY ... DESC`\" that records what we found running an in-house\nRG-level `Exact` reverse against upstream `Inexact` + `TopK`:\n\n- `LIMIT N` does not propagate as a static stop signal in the\n  Inexact path. The dynamic filter pushdown can stats-prune\n  *subsequent* row groups once the threshold tightens, but inside\n  the row group `TopK` is currently reading the sort column has to\n  be fully decoded so the filter can be evaluated row by row.\n  `LIMIT 10` on a 1M-row row group is still ~1M sort-column\n  decodes regardless of N. LIMIT only saves work on non-sort\n  columns inside that row group and on whole subsequent row\n  groups the threshold prunes.\n- `SortExec` stays on top of `Inexact`, so the final ordering\n  pass and per-row heap maintenance are both extra costs the\n  `Exact` path (which deletes `SortExec`) does not pay.\n\nThen explain why we run RG-level `Exact` in production but did\nnot upstream it: parquet does not allow partial row-group reads,\nso any RG-level `Exact` implementation peaks at one whole row\ngroup (~128 MB) of decoded data in memory — the same constraint\nthat closed `#18817`. Our runtime advantage comes from skipping\nheap / filter / `SortExec` overhead, not from decoding less.\n\nFrame the page-level `Exact` reverse work in arrow-rs `#9937` as\nthe path that keeps the runtime win we measured while bringing\npeak memory back into the streaming regime via `OffsetIndex`\npage-level seek.\n\n* Correct internal RG-Exact description and trim arrow-rs #9937 duplication\n\nTwo corrections in the empirical-note / reverse-scans section:\n\n1. The internal RG-level `Exact` reverse path was incorrectly\n   described as \"walks pages from the back, decodes each batch,\n   reverses row-wise, stops the moment K rows have been delivered.\"\n   That is actually the page-level `Exact` shape (arrow-rs #9937),\n   not the in-house RG-level implementation. Parquet does not allow\n   partial row-group reads, so the in-house path has to decode the\n   entire target row group, reverse the buffer in memory, take the\n   first K rows, and stop — same memory profile as #18817\u0027s\n   proposal. The runtime advantage over `Inexact` + `TopK` comes\n   from removing the per-row heap maintenance, dynamic-filter\n   evaluation, and `SortExec` final ordering pass, not from\n   decoding less sort-column data. Sort col decode on the target\n   row group is the same on both paths.\n\n2. The arrow-rs #9937 paragraph I previously added duplicated the\n   technical detail already present in the long-standing\n   \"That primitive is the page-level reverse traversal...\"\n   paragraph. Replaced with a one-sentence bridge (\"The fix that\n   keeps both the runtime win and a streaming memory profile is\n   page-level `Exact` reverse via arrow-rs #9937, described next.\")\n   so the existing paragraph carries the explanation without\n   repetition.\n\n* Mark #21956 as landed (merged via merge queue)\n\n* Reframe blog from Phase N → capability-based sections\n\nAll three sort-pushdown PRs have now landed, so the chronological\n\u0027Phase 1/2/3\u0027 framing is less useful for readers than a capability\nbreakdown. Sections are now:\n- The PushdownSort Rule (#19064)\n- Sort Elimination via Statistics (#21182)\n- Runtime Reorder for TopK Convergence (#21956)\n- Reverse Scans for ORDER BY ... DESC (unchanged)\n\nIn-body Phase references replaced with PR numbers or capability names;\nanchor links updated; references section restructured.\n\n* Clarify two-layer composability: same key (min), not \u0027nest by construction\u0027\n\nThe previous wording \u0027nest by construction\u0027 could be read as a code-\nenforced property. It\u0027s actually a logical consequence of using the\nsame sort key (min) at both file and row-group level: a file\u0027s\nmin(col) is just the minimum over its row groups\u0027 min(col) values, so\nthe most-promising file contains the most-promising row group. The\nrewritten paragraph spells that out and ties it to why TopK\u0027s dynamic\nfilter tightens fast.\n\n* Strip inline PR refs from narrative; collect all links in References\n\nMatch the dynamic-filter blog\u0027s style: narrative talks about\ncapabilities/mechanisms, not \u0027PR #21956 did X / PR #19064 introduced\nY\u0027. The 81 inline PR/issue references in the body were dropping the\nreader out of the narrative; they belong in a single Issues-and-PRs\nlist at the end.\n\nChanges:\n- TL;DR: drop 6 inline PR refs from the 4 capability bullets\n- Body sections (PushdownSort Rule, Sort Elimination, Runtime Reorder,\n  Reverse Scans, Empirical Note): drop ~30 inline refs to historical\n  PRs; replace with capability names or \u0027the rule\u0027 / \u0027the runtime\n  reorder path\u0027 style descriptions\n- What\u0027s Next: switch from [#NNNNN] format to named markdown links\n  (matching dynamic-filter\u0027s Future Work style)\n- Issues for new contributors: same conversion\n- References section: rewrite using full URLs (no link-ref\n  indirection); split into \u0027Landed\u0027 vs \u0027In flight / open\u0027 for\n  clarity\n\nNet: ~90 lines removed, all PR/issue numbers now consolidated at\nthe bottom of the post.\n\n* Restructure: split into merged-features / bottlenecks / roadmap\n\nThe previous draft mixed merged work, in-flight work, and runtime-cost\nanalysis into a single \u0027Reverse Scans\u0027 section and a sprawling \u0027What\u0027s\nNext\u0027 section. Reorganize so the post answers three clear questions in\nsequence:\n\n1. What\u0027s merged today? (Sort Elimination via Statistics + benchmark,\n   Runtime Reorder for TopK Convergence, Reverse Scans for DESC) —\n   unchanged content, just kept tight.\n2. Where do those merged features still leave performance on the\n   table? New \u0027Current Bottlenecks\u0027 section with three explicitly\n   numbered bottlenecks: SortExec stays / sort column fully decoded\n   inside open RG / file-granular scheduling can\u0027t close the tap\n   mid-file. Pulls in the runtime-cost content that used to be buried\n   in an \u0027Empirical note\u0027 subsection.\n3. How does each next-step optimization remove a specific bottleneck?\n   New \u0027Roadmap\u0027 section maps page-level Exact reverse to bottlenecks\n   1+2, row-group-level dynamic early termination to bottleneck 3, and\n   shows the in-flight 17x-60x pipeline benchmark as a preview of what\n   stacking these mechanisms can deliver.\n\nSmaller follow-ups (EnsureRequirements, OFFSET pushdown, multi-column\nreorder) collected at the end of the roadmap section as a short\n\u0027Other follow-ups\u0027 bullet list.\n\n* Tighten verbose paragraphs; drop unrelated limit-pruning blog reference\n\n- \u0027Why not full Exact reverse\u0027 paragraph: cut reviewer attribution and\n  forward-pointers that were already in the bottleneck/roadmap\n  sections that follow.\n- TL;DR: trim Runtime Reorder + Reverse Scans bullets to capability\n  and impact; drop implementation mechanics like \u0027stamps two flags\u0027\n  and \u0027three-step pipeline\u0027.\n- \u0027The PushdownSort Rule\u0027 section: cut three paragraphs of\n  \u0027covered in X below\u0027 forward-references that were repeating\n  the section TOC.\n- Function-wrapped parenthetical in Sort Elimination: 4 lines to 2.\n- Single-partition vs multi-partition edge case: drop the trailing\n  \u0027which is why the example is drawn that way\u0027 tangent.\n- \u0027What this change does not affect\u0027 note: trimmed redundant prose.\n- Remove all references to the limit-pruning blog (intro mention,\n  link definition, References section bullet) — that work is about\n  static LIMIT as an I/O optimization, separate problem from sort\n  ordering.\n\n* Fold reverse as case of Inexact runtime reorder; make two-trigger asymmetry explicit\n\nPer code in datasource-parquet/src/source.rs:849-870, the reversed-\nsatisfies branch is \u0027strictly more powerful than the column-in-schema\ncheck\u0027 — it runs the request through EquivalenceProperties\u0027s full\nreasoning machinery and handles function monotonicity, constants from\nfilters, equivalence relationships, and multi-column composite\norderings. The blog had been treating reverse as just step 3 of the\nruntime pipeline, which undersold its standalone reach.\n\nStructural changes:\n- Drop the standalone \u0027Reverse Scans for ORDER BY DESC\u0027 H2 section;\n  reverse is now a case of the Inexact runtime reorder path.\n- Rename Runtime Reorder section to \u0027Runtime Reorder for TopK and\n  DESC Queries\u0027; intro now lists three classes that fall outside\n  Exact (unsorted, overlapping, DESC).\n- \u0027try_pushdown_sort\u0027 subsection rewritten as \u0027Two independent\n  triggers for Inexact\u0027, describing column-in-schema vs reversed-\n  satisfies as separate signals with the latter being strictly more\n  powerful.\n- \u0027Three runtime steps\u0027 subsection: step 3 now explicitly notes when\n  steps 1-2 are skipped and only the iteration reverse runs.\n- New \u0027ORDER BY DESC in practice\u0027 subsection right after the 3-step\n  pipeline, explaining the RGs-descending-x-rows-ascending stream.\n- Move reverse-scan.svg from the deleted Reverse Scans section into\n  the Roadmap \u003e Page-level Exact reverse subsection where it\n  illustrates the 128 MB vs 1 MB peak comparison directly.\n\nAccuracy fix:\n- \u0027Multi-column reorder follow-ups\u0027 bullet was inaccurate — said the\n  reorder \u0027only fires on plain columns\u0027. The reverse path does\n  handle function-wrapped and multi-column cases via\n  EquivalenceProperties; only the stats reorder step is restricted.\n  Updated wording to scope the limitation correctly.\n\n* Drop EnsureRequirements + OFFSET pushdown — both unrelated to sort pushdown\n\nEnsureRequirements (#21976) is a rule-unification effort for\nEnforceDistribution+EnforceSorting. Touches the same area but isn\u0027t\na sort pushdown optimization.\n\nOFFSET pushdown (#21828) is about LIMIT/OFFSET pruning. Same kind of\ntangent as the limit-pruning blog reference removed earlier — it\u0027s\nLIMIT optimization, not sort pushdown.\n\nThe remaining \u0027Multi-column and function-wrapped reorder follow-ups\u0027\nbullet is actually directly about sort pushdown\u0027s reorder step\n(#22198), so it stays. With the other two removed, \u0027Other follow-ups\u0027\ncollapsed to a single point — promoted to its own subsection\n\u0027Extending the stats reorder step\u0027 for clarity.\n\nAlso dropped the corresponding entries from the References section.\n\n* Roadmap RG-level early termination: split into non-overlap vs overlap (k-way merge)\n\nThe \u0027switch work queue from PartitionedFile to RG descriptors\u0027 fix is\nsufficient for non-overlapping ranges (post-reorder), where the first\nfile globally has the smallest values and subsequent files are\nalready stats-pruned. For overlapping ranges, the next smallest value\ncould sit in any of several open files — matching the non-overlap\nefficiency requires explicit k-way merge across open files\u0027 next-RG\nmins. The dynamic filter does this implicitly (RGs with max \u003c threshold\nare dropped), but explicit comparison closes the tap earlier when the\nfilter tightens slowly.\n\n* Rewrite blog around #22450: three-layer pruning + topk_tpch headline\n\nRestructure the post so the merged Runtime Row-Group Dynamic Pruning\n(#22450) is the centerpiece, matching the community-talk narrative:\n\n- TL;DR now leads with the three-layer pruning stack (file + RG + row)\n  and the topk_tpch headline (5/11 queries 3-4x, 0 regressions, -44%\n  total).\n- Exact path keeps credit attribution explicit: EnforceSorting already\n  handled the simple on-disk-sorted case; Phase 2 closes the\n  wrong-on-disk-order gap. BufferExec story expanded with the SPM\n  stall diagnosis.\n- Inexact path split into Tier 1 (file-level, already had early stop)\n  vs Tier 2 (RG-level, no early stop until #22450) so the gap that\n  #22450 closes is named explicitly.\n- New section: #22450 mechanics - architecture-3-eras, transition()\n  drain/decide/drive, RowGroupPruner watch/rebuild/prune, cascading\n  prune walkthrough.\n- New section: Three-layer pruning stack with the same DynamicFilter\n  driving all three layers, plus the topk_tpch benchmark table.\n- Old \"Current Bottlenecks\" + \"Roadmap\" merged into \"Future Directions\":\n  A) page-level Exact reverse (arrow-rs #9937), B) page-level dynamic\n  prune at RG boundary (#23216).\n- Updated landed-PRs list to include #20839 (push-based decoder, the\n  prerequisite for #22450) and #22450 itself.\n\nPulls in 9 PNGs from the community-call deck for the #22450-specific\ndiagrams (architecture, transition, pruner, cascade, three-layer stack,\ntopk_tpch results, page-level future).\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Address alamb review round 2 (46 comments)\n\nTighten intro to be engine-agnostic and drop time-tied phrasing; use\nplain \u0027sort\u0027 instead of SortExec in engine-agnostic sections while\nkeeping SortExec in DataFusion-internals sections. Remove several\nimplementation-detail paragraphs (bail-out conditions, plan-walk order,\nthree-eras evolution history). Rename PR-numbered sections to concept\nnames (Row Group Filter early stop, Runtime Row-Group Dynamic Pruning,\nExample of pruning row groups using TopK dynamic predicates). Relabel\nLayer 0/A/B as Layer 1/2/3 consistently. Move sort_pushdown /\ntopk_tpch benchmark descriptions into their section intros. Reframe\nbenchmark comparisons as DataFusion 54 sort optimizations disabled vs\nenabled. Collapse Future Directions to a summary sentence with issue\nlinks. Add Get Involved section and Massive sponsorship shout-out.\n\nNet -86 lines (625 -\u003e 539).\n\n* Remove transition_anatomy and pruner_loop figures\n\nBoth figures had visual overflow issues that alamb flagged (Step 2/3\ncode text overflowing box boundaries, WATCH circle cutoff). Their\ncaptions were also flagged as content that should live in the blog\ntext rather than embedded in the diagram. Since the surrounding\nmarkdown text already covers the drain/decide/drive loop and the\nwatch/rebuild/prune pipeline, dropping the figures resolves both\nconcerns without losing content.\n\n* Revert \"Remove transition_anatomy and pruner_loop figures\"\n\nThis reverts commit 9b48aa84dff0155731da614bdf1eea5904089a6f.\n\n* Regenerate transition_anatomy and pruner_loop figures\n\nAddress alamb\u0027s figure-annotation feedback:\n\ntransition_anatomy.png:\n- Widened Step 2 / Step 3 code boxes so `into_builder().with_row_groups(...)`\n  and `Data -\u003e set_active_reader` fit inside their boxes without overflow.\n- Removed the bottom captions that duplicated content already in the blog text.\n\npruner_loop.png:\n- Widened WATCH shape so `1 atomic load` fits without cutoff.\n- Removed the `Errors fall back to keep` line (too much detail per alamb).\n- Same three shapes + arrows + descriptor cards; only sizing tweaked.\n\n* Move Three-Layer Pruning section earlier\n\nPer alamb\u0027s suggestion in #3544371141 — moved the multi-layer pruning\nstrategy section from after Runtime Row-Group Dynamic Pruning to right\nafter How DataFusion Tracks Ordering, so readers see the overall\nframework (three layers, one dynamic filter) before diving into each\nlayer\u0027s implementation. Reworded the opener from \u0027sort-based\noptimizations described above\u0027 to \u0027techniques described below\u0027 since\nit\u0027s now leading rather than summarizing. Promoted the topk_tpch\nbenchmark section to top-level ## since its parent section moved.\n\n* Add @alamb as second author\n\nExtensive review + collaborative shaping across multiple rounds\nwarranted co-authorship.\n\n* Wordsmith into, add blog post\n\n* wordsmith\n\n* wordsmith\n\n* wordsmith\n\n* wordsmith\n\n* wordsmith\n\n* wordsmith\n\n* wordsmith\n\n* nits\n\n* make headings more consistent\n\n* Drop PR-number-as-concept + stale (Future B) label\n\n- Rewrote \u0027unconditional value of [#22450]\u0027 as \u0027what runtime row-group\n  dynamic pruning fundamentally provides\u0027.\n- Dropped \u0027(Future B)\u0027 — the A/B Future Directions split no longer exists.\n\n* Update content/blog/2026-07-05-sort-pushdown.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update figure 2, also wordsmit intro\n\n* refine\n\n* shorten\n\n* upate\n\n* tweak\n\n* move buffering without sorting to an appendix\"\n\n* rework\n\n* more\n\n* reorder\n\n* improve narrative\n\n* exits\n\n* convert\n\n* convert + tighten\n\n* update\n\n* rework\n\n* hone\n\n* remove redundancy\n\n* remove redundancy\n\n* typos\n\n* updated with related work\n\n* cit\n\n* move\n\n* cleanup\n\n* more\n\n* update\n\n* small tweaks to alamb edits: #22450 attribution + DF version + alt-text\n\n- Row-Level Early Stopping (line ~334): attribute the \"skip projection\n  column fetch\" behavior to arrow-rs `RowFilter` (which is where it\n  actually lives) and clarify that #22450\u0027s role is keeping the\n  threshold up-to-date at RG boundaries so this fires more often.\n- Conclusion: replace \"In DataFusion 54, we implemented\" with \"Over\n  the last few DataFusion releases\" — #22450 merged after 54.0.0 was\n  tagged and will ship in a later release.\n- Decision-tree figure alt-text: `try_pushdown_sort` -\u003e `PushdownSort`\n  to match the struct name used in the surrounding prose.\n\n* add link to raw sort_tpch benchmark numbers (addresses alamb review)\n\n* move merged arrow-rs#10158 to Major PRs; clarify #23067 uses it\n\n* chore: update publish date to 2026-07-20\n\n* update date, fix bold\n\n* wordsmith\n\n* wordsmith\n\n* wordsmith\n\n* cut\n\n* wordsmit\n\n* wordsmit\n\n* remove layer1/2/3 terminology\n\n* more\n\n* fix links\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "dc8b247bbb5054036872e687d580c5796520a7e7",
      "tree": "83573aa92973534e1b1aefbb5d041ef789aa6e81",
      "parents": [
        "c1fd23fe363c45bce5b2e9ebd1f7059deb2202d3"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Wed Jul 15 14:37:01 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 14:37:01 2026 -0600"
      },
      "message": "Add Ballista 54.0.0 release announcement blog post (#199)\n\n* docs: add Ballista 54.0.0 release announcement blog post\n\n* docs: add PyPI wheels section and fix changelog/upgrade-guide links\n\n* docs: tighten Ballista 54.0.0 post wording and fix object-store framing"
    },
    {
      "commit": "c1fd23fe363c45bce5b2e9ebd1f7059deb2202d3",
      "tree": "23a632481bb3fe1c2431bf246960403c25d2789b",
      "parents": [
        "5a8e6afcec429bb35bd4272433c73bc774704c79"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Mon Jun 22 07:37:58 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:37:58 2026 -0400"
      },
      "message": "blog: Apache DataFusion Comet 0.17.0 release post (#198)"
    },
    {
      "commit": "5a8e6afcec429bb35bd4272433c73bc774704c79",
      "tree": "d494808f1ee290f40f55eb0dcd06902c49a40708",
      "parents": [
        "ea6fc41461d27759129dfc8e375ac4715b88b8da"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Thu Jun 11 14:52:49 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 14:52:49 2026 -0400"
      },
      "message": "DataFusion 54.0.0 blog post (#197)\n\n* Blog post for DataFusion 54.0.0\n\n* Add some additional content, tighen headers\n\n* Add some other features, improve concision and grammar\n\n* Intro, summary wordsmith\n\n* obsess\n\n* Add additional background and review list fo rlambda\n\n* update date\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "ea6fc41461d27759129dfc8e375ac4715b88b8da",
      "tree": "b513c6eabed27cf0d6faa81ddaee8973f4c78d99",
      "parents": [
        "034754130526dd6d660f82ef219c455763927699"
      ],
      "author": {
        "name": "Rich Bowen",
        "email": "rbowen@rcbowen.com",
        "time": "Mon Jun 08 08:53:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 08:53:02 2026 -0400"
      },
      "message": "fix: Add required ASF policy links to footer (#192)\n\nAdds Foundation, Events, License, Security, Sponsorship, Thanks,\nand Privacy links per ASF website policy. Updates trademark text\nwhere needed.\n\nChecker: https://whimsy.apache.org/site/"
    },
    {
      "commit": "034754130526dd6d660f82ef219c455763927699",
      "tree": "95a7556ae1eac08f63104c2e883503f306d4dff7",
      "parents": [
        "bf12a118811d6e25619b658f073e07bf359976ce"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Thu Jun 04 08:22:40 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 08:22:40 2026 -0600"
      },
      "message": "fix: remove summary frontmatter from Comet EKS blog post (#194)\n\nThis is the only blog post using a summary frontmatter field, which\nappears to prevent it from being detected by the external publishing\nprocess. Remove it to match the frontmatter format of all other posts."
    },
    {
      "commit": "bf12a118811d6e25619b658f073e07bf359976ce",
      "tree": "9680445b74c8564ea9056a15c664a851da48b859",
      "parents": [
        "84941a3ee70667616ad83284594a95b4161f8bbd"
      ],
      "author": {
        "name": "Manabu McCloskey",
        "email": "manabu.mccloskey@gmail.com",
        "time": "Wed Jun 03 12:49:26 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 13:49:26 2026 -0600"
      },
      "message": "Add Comet collaboration blog post (#193)"
    },
    {
      "commit": "84941a3ee70667616ad83284594a95b4161f8bbd",
      "tree": "42de013f1f65d6f60261f9b9cc550befd2cba99c",
      "parents": [
        "d8da6d8d4dd9a53d0c7094e194cd6ab2f1063a3c"
      ],
      "author": {
        "name": "Tim Saucer",
        "email": "timsaucer@gmail.com",
        "time": "Thu May 28 21:35:28 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 21:35:28 2026 -0400"
      },
      "message": "Add blog post on writing agent skills for datafusion-python (#187)\n\n* Add blog post on writing agent skills for datafusion-python\n\nWalks through the user-facing vs developer skill split, the TPC-H\ngrounding exercise, and the iterative feedback loop we used to keep the\nskills honest as the API moved.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Apply review nits and add multi-skill install guidance\n\nAddress ntjohnson1\u0027s review on the writing-agent-skills post: trim\nfiller wording, fix mixed tenses, disambiguate \"wrapped library\", and\nlink the first mention of \"skill\" to agentskills.io. Also add a new\nparagraph explaining how end users selectively install one of several\nskills via `npx skills add --skill \u003cname\u003e`.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* Expand \"Developers should use the user skill too\" with two more reasons\n\nPer ntjohnson1\u0027s review: explain that loading the user skill while\nauthoring maintainer code surfaces hallucinated APIs as ergonomic\nsignal (e.g. `exists_ok` shaped by other Python libs), and that the\nsame skill keeps maintainer-written docstrings, examples, and tests\nidiomatic on the first pass.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* Route non-idiomatic agent output back to source, not just the skill\n\nPer ntjohnson1\u0027s review: pass 3 should also surface inconsistencies in\nthe repo itself. When the agent emits a non-idiomatic pattern, ask\nwhere it came from — if the answer is an examples/ script, a stale\ndocstring, or a README snippet, fix that source as well as the skill,\nsince the skill alone cannot stop future agents or human contributors\nfrom rediscovering the drift.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* bump date\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d8da6d8d4dd9a53d0c7094e194cd6ab2f1063a3c",
      "tree": "197d13dbf678b8c42f577254ac0663f2b3c77994",
      "parents": [
        "628d580e67d2242a6c3d5e1c412282b30ef5824e"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Thu May 28 10:39:00 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 10:39:00 2026 -0600"
      },
      "message": "fix: correct changelog link in DataFusion Java 0.1.0 blog post (#191)"
    },
    {
      "commit": "628d580e67d2242a6c3d5e1c412282b30ef5824e",
      "tree": "952654fe80ad2d09091d4ab4ec59648c2c6fd04a",
      "parents": [
        "c3f829fe01c702046c1e2d8d8765705c65b38e07"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Thu May 28 09:32:46 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 09:32:46 2026 -0600"
      },
      "message": "docs: add blog post introducing DataFusion Java 0.1.0 (#189)"
    },
    {
      "commit": "c3f829fe01c702046c1e2d8d8765705c65b38e07",
      "tree": "d532b59f55dc1fa24bac4f96f4a8baf58905b40d",
      "parents": [
        "e83599939e9b2c9fb1529efc4a76912582dbc605"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Mon May 25 08:19:09 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 08:19:09 2026 -0600"
      },
      "message": "Ballista 53.0.0 blog post (#188)"
    },
    {
      "commit": "e83599939e9b2c9fb1529efc4a76912582dbc605",
      "tree": "e022ddb7f6cb377fda84bc2f6625847249deca48",
      "parents": [
        "3a97bd094b73dd0aa4a99c43711337b9886c9759"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Tue May 12 18:42:42 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 20:42:42 2026 -0400"
      },
      "message": "Comet 0.16.0 blog post (#171)"
    },
    {
      "commit": "3a97bd094b73dd0aa4a99c43711337b9886c9759",
      "tree": "bf1759c8c6a4ea59daa363fd83bba4a8066beb61",
      "parents": [
        "0d36814431fbb318252d729bac263b13451e12bb"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue May 12 11:07:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 11:07:12 2026 -0400"
      },
      "message": "Revert \"fix: add output: \u0027blog\u0027 to publish workflow to fix /output/ URL leak …\" (#184)\n\nThis reverts commit 0d36814431fbb318252d729bac263b13451e12bb."
    },
    {
      "commit": "0d36814431fbb318252d729bac263b13451e12bb",
      "tree": "eab5a3104e1ebb26845a0771d50b4abf5babf26f",
      "parents": [
        "cfcf6f928553dcc99648e28528bc8b926c711f03"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon May 11 09:07:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 09:07:36 2026 -0400"
      },
      "message": "fix: add output: \u0027blog\u0027 to publish workflow to fix /output/ URL leak (#179)\n\npublish-site.yml was missing the output parameter, so the pelican\naction defaulted to \u0027output\u0027 instead of \u0027blog\u0027. This caused a mismatch\nwith .asf.yaml (subdir: blog), requiring .htaccess rewrite rules that\nincorrectly exposed /output/ in redirects for blog posts with version\nnumbers in their slug (e.g. datafusion-comet-0.15.0).\n\nAligns publish-site.yml with stage-site.yml which already sets\noutput: \u0027blog\u0027."
    },
    {
      "commit": "cfcf6f928553dcc99648e28528bc8b926c711f03",
      "tree": "bf1759c8c6a4ea59daa363fd83bba4a8066beb61",
      "parents": [
        "dac0ac83a4ef2692d37f1d18528f367fcde8c95e"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Sun May 10 17:18:34 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 17:18:34 2026 -0400"
      },
      "message": "Skip loading giscus on non-production origins (#175)\n\n* add a warning for when trying to access giscus on local deployment\n\n* notice"
    },
    {
      "commit": "dac0ac83a4ef2692d37f1d18528f367fcde8c95e",
      "tree": "986d8f4d399decdf51de411eb28c2727fdad8c82",
      "parents": [
        "b923d583dd4dc48eb2a3fb87c7bae5d18a4f562d"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Sun May 10 17:18:09 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 17:18:09 2026 -0400"
      },
      "message": "fix origins (#174)"
    },
    {
      "commit": "b923d583dd4dc48eb2a3fb87c7bae5d18a4f562d",
      "tree": "87981247f8361e5fa61b153a834d0ef100b153ad",
      "parents": [
        "1488f9651bf20e450232ce4907a9c4dcc33f897d"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Sun May 10 06:08:57 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 06:08:57 2026 -0400"
      },
      "message": "Add giscus.json to restrict comments to production origin (#172)\n\n* allowlist only https://datafusion.apache.org/blog\n\n* newline\n\nCo-authored-by: Copilot \u003ccopilot@github.com\u003e\n\n---------\n\nCo-authored-by: Copilot \u003ccopilot@github.com\u003e"
    },
    {
      "commit": "1488f9651bf20e450232ce4907a9c4dcc33f897d",
      "tree": "15e679c5622720886e9c0069933880c31273c2d9",
      "parents": [
        "0f984df7e550b90c8e5bcc8ffcf818c51f64adbd"
      ],
      "author": {
        "name": "Ruihang Xia",
        "email": "waynestxia@gmail.com",
        "time": "Tue May 05 11:39:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 14:39:39 2026 -0400"
      },
      "message": "chore: add favicon (#169)"
    },
    {
      "commit": "0f984df7e550b90c8e5bcc8ffcf818c51f64adbd",
      "tree": "5b70095e2774a2954a26d24d3e615b27618ea467",
      "parents": [
        "0981728c5ff04d7ae105bd2cf6d1b62d30f61d5c"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Wed Apr 22 07:52:12 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 07:52:12 2026 -0600"
      },
      "message": "Comet 0.15.0 blog post (#170)"
    },
    {
      "commit": "0981728c5ff04d7ae105bd2cf6d1b62d30f61d5c",
      "tree": "06544057c53e6ea00b0383e85d092f9d7921a401",
      "parents": [
        "b7352a5678d0028ad3dffbd274eedb174e6c46b8"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Apr 02 08:50:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 08:50:36 2026 -0400"
      },
      "message": "DataFusion 53 Release Blog (#162)\n\n* DataFusion 53 Release Blog\n\n* Updates / cleanup\n\n* more shouts\n\n* clenaup\n\n* Edits\n\n* update\n\n* update\n\n* figure\n\n* More updates\n\n* updates\n\n* grammar\n\n* clean\n\n* update planner benchmarks\n\n* Add performance results\n\n* Wordsmithing\n\n* Add known issues\n\n* wordsmit\n\n* wordsmit\n\n* Add image styles\n\n* Update image\n\n* Update Date to 2026-04-02\n\n* last minute obsession cleanups"
    },
    {
      "commit": "b7352a5678d0028ad3dffbd274eedb174e6c46b8",
      "tree": "c4b69787d31d939a702390839a7a69f09016bfc4",
      "parents": [
        "f4ee574c2e14fc82b5d9928882e1e1892249683e"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Wed Apr 01 09:21:36 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 12:21:36 2026 -0400"
      },
      "message": "Replace inline styles with Bootstrap utility classes (#165)"
    },
    {
      "commit": "f4ee574c2e14fc82b5d9928882e1e1892249683e",
      "tree": "0cb6ed433f99a8300c9ce4c5bfa21ce96bf7742d",
      "parents": [
        "64c98bfc9ac7546094884b653a3895584837c131"
      ],
      "author": {
        "name": "Tim Saucer",
        "email": "timsaucer@gmail.com",
        "time": "Tue Mar 31 16:13:29 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 16:13:29 2026 -0400"
      },
      "message": "Blog post on writing table providers (#161)\n\n* Initial commit for blog post on writing table providers\n\n* Minor text changes\n\n* Add acknowledgement\n\n* Add note about when to add push down filters\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Address a variety of user feedback\n\n* Update links\n\n* pelican processing didn\u0027t handle backticks in links well\n\n* Add an explanation of different ways to use FileFormat for a ListingTable\n\n* Address alamb review feedback\n\n- Clarify intro sentence to mention planning/execution work\n- Label TableProvider as Logical Plan and ExecutionPlan as Physical Plan\n- Change \"four phases\" to \"several phases\" (list has 5 items)\n- \"Some logical optimizations\" and \"rewrites such as\" to signal non-exhaustive lists\n- Clarify scan() comment: \"don\u0027t do any execution work here\"\n- Rewrite partitioning section to lead with simple advice (match data layout)\n  before covering target_partitions and hash partitioning subtleties\n- Narrow CPU thread pool advice: spawn_blocking is for blocking/long-running\n  work, not all CPU work\n- Add \"scan is single-threaded\" as a reason to keep scan() lightweight\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* update date\n\n* Add link to thread_pools example for blocking work section\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* remove use statements from example\n\n* revert section on scan_with_args and drop to single line\n\n* Move \u0027Choosing the Right Starting Point\u0027 before Layer 1\n\nAddresses alamb\u0027s suggestion to move the section earlier so readers\nunderstand what level of work is required before diving in.\n\n- Moved section to just before Layer 1: TableProvider\n- Trimmed the file-based path detail to a short paragraph with links\n  (the full trait hierarchy was too deep for an intro-position section)\n- Removed RecordBatchStreamAdapter reference (not yet introduced at\n  that point in the article)\n- Added a sentence orienting the reader to what the rest of the post covers\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix pre-publish review issues\n\n- Fix use-after-move bug in DatePartitionedExec construction (dirs.len()\n  called after dirs moved into struct field)\n- Fix incorrect import: SessionState → catalog::Session in CountingTable\n  example\n- Remove double space before scan_with_args link\n- Add missing blank line before \u0027### Using EXPLAIN\u0027 heading\n- Split dense \u0027Only Push Down Filters\u0027 paragraph for readability\n- Change \u0027full working example\u0027 to \u0027illustrative example\u0027 for the\n  filter pushdown code that contains todo!() stubs\n- Use \u0027Rerun is building\u0027 instead of repeating [Rerun.io] link\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Add reviewer acknowledgements to blog post\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Add \u0027Get Involved\u0027 section\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Final pre-publish fixes\n\n- Fix grammar: \"Best practices are\" → \"Best practice is\"\n- Remove unused StringArray import from complete example\n- Fix outdated arrow-datafusion repo link → apache/datafusion\n- Add missing reviewers to acknowledgements: adriangb, kevinjqliu, Omega359\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* make it alphabetical\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\nCo-authored-by: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "64c98bfc9ac7546094884b653a3895584837c131",
      "tree": "7758a363ad659447026b74a2a9269d09f3ff2b7b",
      "parents": [
        "10ed01c46781e81e230b49f20d69663ee7bd455f"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Tue Mar 31 13:56:54 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 13:56:54 2026 -0400"
      },
      "message": "Minor: add links to CASE blog in 51.0.0 and 52.0.0 release posts (#141)"
    },
    {
      "commit": "10ed01c46781e81e230b49f20d69663ee7bd455f",
      "tree": "0a2b0bf8b0d302248cfbb53927c87159f37acfb8",
      "parents": [
        "f3a9a2ce7edb2d11119eb9a0fc937787dde09e45"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Mar 31 10:46:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 13:46:34 2026 -0400"
      },
      "message": "s/img-responsive/img-fluid/g (#164)"
    },
    {
      "commit": "f3a9a2ce7edb2d11119eb9a0fc937787dde09e45",
      "tree": "de2b02fcf9f9340a6718ff8eb93d868354749686",
      "parents": [
        "6cca0cf64a9fbfc3469e44194c72a77c644bc667"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Mar 31 10:41:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 13:41:48 2026 -0400"
      },
      "message": "add page anchor, #comments (#166)"
    },
    {
      "commit": "6cca0cf64a9fbfc3469e44194c72a77c644bc667",
      "tree": "8791ea82b02d705dffdcc68bf966a95c60431c44",
      "parents": [
        "1d5beb7e984e731c1decb51b5f69015a72eeae09"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Mar 31 10:18:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 13:18:14 2026 -0400"
      },
      "message": "use correct js location (#167)"
    },
    {
      "commit": "1d5beb7e984e731c1decb51b5f69015a72eeae09",
      "tree": "7875e703ed10ede819f266cc17f652c32c9b9dd2",
      "parents": [
        "7ac5df0c1c38e119f0d4b920d3a24878bce3efdc"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Mon Mar 30 07:54:59 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 09:54:59 2026 -0400"
      },
      "message": "Comet 0.14.0 blog post (#163)"
    },
    {
      "commit": "7ac5df0c1c38e119f0d4b920d3a24878bce3efdc",
      "tree": "1cfa9e6a263ee0dee408c4127f1c020324c54434",
      "parents": [
        "bb4f07e8e9b4c846d0f3ae38fd1ef41627233312"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Wed Mar 25 05:35:57 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 08:35:57 2026 -0400"
      },
      "message": "use latest hash from reop (#159)"
    },
    {
      "commit": "bb4f07e8e9b4c846d0f3ae38fd1ef41627233312",
      "tree": "398e0870b3651052a9a4c91402ca61065aa5168f",
      "parents": [
        "c4b0bb2883d9da8126a41fec5a95558543952813"
      ],
      "author": {
        "name": "xudong.w",
        "email": "wxd963996380@gmail.com",
        "time": "Fri Mar 20 22:53:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 22:53:19 2026 +0800"
      },
      "message": "Blog: Turning LIMIT into an I/O Optimization: Inside DataFusion’s Multi-Layer Pruning Stack (#155)\n\n* Blog: limit pruning\n\n* address comments\n\n* address comments\n\n* update date"
    },
    {
      "commit": "c4b0bb2883d9da8126a41fec5a95558543952813",
      "tree": "b993273020a60aad557e0134be7408456a8e56bb",
      "parents": [
        "0b5694a104148de8e9dc6add010f15f2df053d35"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Mar 16 14:10:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 17:10:06 2026 -0400"
      },
      "message": "`make build` auto reload changes (#158)"
    },
    {
      "commit": "0b5694a104148de8e9dc6add010f15f2df053d35",
      "tree": "95902c3b9f2e247652e16cd39be563e3f5d33ddf",
      "parents": [
        "8c89c73e93ee86314146402f102f25124fb65b20"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Mar 16 12:56:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 15:56:15 2026 -0400"
      },
      "message": "upgrade Bootstrap v5.3.8 (#105)\n\n* upgrade Bootstrap v5.3.8\n\n* bump bootstrap.min.css to v5.3.8"
    },
    {
      "commit": "8c89c73e93ee86314146402f102f25124fb65b20",
      "tree": "70b3ae9530ed5ef49c0c301bdac7173759d9553a",
      "parents": [
        "5cd77cd77d0669babe06d29ab1157d77712b5309"
      ],
      "author": {
        "name": "Abhinandan Kaushik",
        "email": "abhinandankaushik.official@gmail.com",
        "time": "Mon Mar 16 16:35:27 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 07:05:27 2026 -0400"
      },
      "message": "Add dark mode support (#148)\n\n* fixed:about\n\n* Update content/theme/templates/menu.html\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* added spell check action\n\n* added spell check github-action\n\n* fixed blog-typos and added flase-positive in the list\n\n* typo lower-case issue fixed\n\n* added dark-mode support\n\n* fix blog-typos and added false-positive into the list\n\n* typos fix-attempt-1\n\n* addec dark-mode\n\n* removed extra box-style and added simple dark-mode feature\n\n* fixed all dark-mode issues\n\n* finalyze dark-mode properties\n\n* feat: refine dark mode toggle UX and simplify theme styles\n\n* simplify dark mode script flow while keeping persisted theme behavior\n* add accessible toggle state with aria-pressed\n* switch toggle icons to stable sun/moon glyphs to avoid icon fallback issues\n* reduce dark mode CSS to MVP essentials and remove non-essential overrides\n* keep code block readability in dark mode with explicit highlight styles\n\n* Update content/js/dark-mode.js\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Update content/js/dark-mode.js\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\nCo-authored-by: Kevin Liu \u003ckevin.jq.liu@gmail.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "5cd77cd77d0669babe06d29ab1157d77712b5309",
      "tree": "9f97d9628f3a6cf913da93fcc7a22db82c493447",
      "parents": [
        "7ddb694f7b63a4e08f6bc93c916cf01eed340891"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Mar 03 02:19:58 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 03 09:19:58 2026 +0200"
      },
      "message": "update codeql with pinned version (#153)\n\n"
    },
    {
      "commit": "7ddb694f7b63a4e08f6bc93c916cf01eed340891",
      "tree": "d1e713fcbc5f8156e6eaf22fe936f70a6e9019a0",
      "parents": [
        "30d6cda76e53899c51264813a76fc11e14f1c9a1"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Mar 02 09:57:26 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 09:57:26 2026 -0500"
      },
      "message": "CI: Add CodeQL workflow for GitHub Actions security scanning (#152)\n\n"
    },
    {
      "commit": "30d6cda76e53899c51264813a76fc11e14f1c9a1",
      "tree": "be2037be511daac7f5dc2e76b28f3540fbb957fa",
      "parents": [
        "eca0115820c3080a55e0850be7e4fe93f77958cd"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Mar 02 08:49:55 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 03 00:49:55 2026 +1100"
      },
      "message": "infra: simplify Makefile (#151)\n\n* dont need to download repo locally\n\n* add make clean\n\n* build and clean\n\n* style"
    },
    {
      "commit": "eca0115820c3080a55e0850be7e4fe93f77958cd",
      "tree": "00a1a7ff001309b81913a75d1d1f45b2039aba2a",
      "parents": [
        "f164a2debef3d1f8e27d7e4fdc4cf1a77c58399a"
      ],
      "author": {
        "name": "Abhinandan Kaushik",
        "email": "abhinandankaushik.official@gmail.com",
        "time": "Mon Feb 09 12:16:49 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 17:46:49 2026 +1100"
      },
      "message": "fixed makefile which pinned old issue (#149)\n\n* fixed makefile which pinned old issue\n\n* implemented all copilot feedback\n\n* Modify Makefile to sync with origin/main\n\nUpdated git commands to remove hard reset."
    },
    {
      "commit": "f164a2debef3d1f8e27d7e4fdc4cf1a77c58399a",
      "tree": "982fe1677ec3fcb0aebb6ea133212a5ecc02f05b",
      "parents": [
        "9ccf9bccf1af4aea730c71f19c003f1bde055701"
      ],
      "author": {
        "name": "Abhinandan Kaushik",
        "email": "abhinandankaushik2004@gmail.com",
        "time": "Fri Feb 06 07:17:21 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 12:47:21 2026 +1100"
      },
      "message": "Ci/add typos spellcheck (#145)\n\n* fixed:about\n\n* Update content/theme/templates/menu.html\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* added spell check action\n\n* added spell check github-action\n\n* fixed blog-typos and added flase-positive in the list\n\n* typo lower-case issue fixed\n\n* typos fix-attempt-1\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "9ccf9bccf1af4aea730c71f19c003f1bde055701",
      "tree": "41ad2a3fc91921dfdd4eca0429aebc2c7fad9cd6",
      "parents": [
        "c6e5c354e2cacbb786d9d389920e012dfd09aace"
      ],
      "author": {
        "name": "Abhinandan Kaushik",
        "email": "abhinandankaushik.official@gmail.com",
        "time": "Wed Feb 04 20:26:23 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 01:56:23 2026 +1100"
      },
      "message": "fix about page styling (#143)\n\n* fixed:about\n\n* Update content/theme/templates/menu.html\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "c6e5c354e2cacbb786d9d389920e012dfd09aace",
      "tree": "6283aaafe7ed0d0cb843eea13659fbb158fc3e54",
      "parents": [
        "ce4dfc54169ee741856d4bcc8d17812a5bb8436a"
      ],
      "author": {
        "name": "Pepijn Van Eeckhoudt",
        "email": "pepijn@vaneeckhoudt.net",
        "time": "Mon Feb 02 22:10:46 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 02 16:10:46 2026 -0500"
      },
      "message": "Improvements to case blog text (#142)\n\n"
    },
    {
      "commit": "ce4dfc54169ee741856d4bcc8d17812a5bb8436a",
      "tree": "3a32bc0a772fd885b2bf3f146a6075bbd9f54f74",
      "parents": [
        "597b7af51a9633902452b174d6ad9e94cf8a5b94"
      ],
      "author": {
        "name": "Pepijn Van Eeckhoudt",
        "email": "pepijn@vaneeckhoudt.net",
        "time": "Mon Feb 02 14:52:43 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 02 08:52:43 2026 -0500"
      },
      "message": "Blog post about CASE optimization (#122)\n\n* First AI-generated draft\n\n* Editing\n\n* More editing\n\n* Update 2025-11-11-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Remove AI cruft\n\n* Adjust title\n\n* Remove commit hashes\n\n* Misc. edits\n\n* Processing comments\n\n* More revisions\n\n* Add diagrams for optimization 3\n\n* Add description of hash table optimization\n\n* Add results chart\n\n* Typos, grammar, corrections\n\n* Tweaks to section titles\n\n* Processing comments by @rluvaton\n\n* Minor copy editing\n\n* Update content/blog/2026-01-26-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-01-26-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-01-26-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-01-26-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2026-01-26-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Correct index array in merging.svg diagram\n\n* Add DataFusion blurb footer\n\n* Observation -\u003e Opportunity\n\n* Add missing close of code block\n\n* Update content/blog/2026-01-26-datafusion_case.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update publish date to 2026-02-02\n\n* Update date in front matter\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "597b7af51a9633902452b174d6ad9e94cf8a5b94",
      "tree": "0df491a5e2b24ad989b1de453528071858680e3e",
      "parents": [
        "d3ce6899818b23ce409c7d05d861c10d15556289"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Fri Jan 30 15:54:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 15:54:32 2026 -0700"
      },
      "message": "fix: fix formatting in comet 0.13.0 blog post (#140)\n\n* fix formatting in comet 0.13.0 blog post\n\n* fix pr count"
    },
    {
      "commit": "d3ce6899818b23ce409c7d05d861c10d15556289",
      "tree": "4368733500d57985dfe300bfca67b45dffb2568e",
      "parents": [
        "dca91b1955e648beb146a3554dd3e5964861dd31"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Fri Jan 30 15:44:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 15:44:31 2026 -0700"
      },
      "message": "fix (#139)\n\n"
    },
    {
      "commit": "dca91b1955e648beb146a3554dd3e5964861dd31",
      "tree": "d4b9c96a97993d36fd1081bcaaa43fce65aa1b78",
      "parents": [
        "ffc15809a059bfbc4b32e7db70775e4ddc75797d"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Fri Jan 30 15:38:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 15:38:14 2026 -0700"
      },
      "message": "Blog post announcing Comet 0.13.0 (#137)\n\n"
    },
    {
      "commit": "ffc15809a059bfbc4b32e7db70775e4ddc75797d",
      "tree": "67376a6597db383cc62a0806bd05e737120b9431",
      "parents": [
        "5e707778d00733f23fce6f36334df5a1f9cba24e"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Jan 28 14:54:10 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 14:54:10 2026 -0500"
      },
      "message": "Update date for the DataFusion 52 release blog (#138)\n\n* Update date for the DataFusion 52 release blog\n\n* Update date"
    },
    {
      "commit": "5e707778d00733f23fce6f36334df5a1f9cba24e",
      "tree": "503a01277615015fc2f924d33e60c23602bd6fdb",
      "parents": [
        "6e852ae21756485ffdea025bed4a6a0bf8a13c7c"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Jan 28 14:33:51 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 14:33:51 2026 -0500"
      },
      "message": "DataFusion 52 release post (#135)\n\n* Initial draft (coded with codex)\n\n* updates\n\n* updates\n\n* Update sql planning\n\n* Apply suggestions from code review\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e\n\n* Updates\n\n* acknowledgments\n\n* update\n\n* updates\n\n* update\n\n* typos\n\n* refine\n\n* clean\n\n* Update content/blog/2026-01-08-datafusion-52.0.0.md\n\nCo-authored-by: Martin Grigorov \u003cmartin-g@users.noreply.github.com\u003e\n\n* Clarify RelationPlanner syntax\n\n* remove extra section\n\n* Update content/blog/2026-01-08-datafusion-52.0.0.md\n\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e\n\n* Refine wording\n\n* reflow\n\n* Metadata cache is general\n\n* Add section on Min/max dynamic filters\n\n* Update content/blog/2026-01-08-datafusion-52.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* whitespace\n\n* Improve sort pushdown description\n\n* capitalizaton\n\n* wordsmith\n\n---------\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e\nCo-authored-by: Martin Grigorov \u003cmartin-g@users.noreply.github.com\u003e\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e"
    },
    {
      "commit": "6e852ae21756485ffdea025bed4a6a0bf8a13c7c",
      "tree": "189daf87194fc58745bfbc9ec1371d0bde10ea91",
      "parents": [
        "e825eb64e1c7873829eb887ffb21dfcc53e2a6b3"
      ],
      "author": {
        "name": "Geoffrey Claude",
        "email": "geoffrey.claude@gmail.com",
        "time": "Mon Jan 12 22:20:24 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 12 16:20:24 2026 -0500"
      },
      "message": "Add blog post on extending SQL in DataFusion (#130)\n\n* Add Extending SQL blog post\n\n* fix: apply PR review suggestions\n\n* Update publish date to 2026-01-12\n\n* remove initial header\n\n* fix links\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "e825eb64e1c7873829eb887ffb21dfcc53e2a6b3",
      "tree": "1770c098a2a2f3240aae6abbd5a589ff767e4b92",
      "parents": [
        "12d5ee2e39b8113643f07ddc48f8dedc4c12e2d8"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Jan 07 15:18:27 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 07 15:18:27 2026 -0500"
      },
      "message": "Update .asf.yaml comments (#133)\n\n* Update .asf.yaml comments\n\n* Make the warning bigger"
    },
    {
      "commit": "12d5ee2e39b8113643f07ddc48f8dedc4c12e2d8",
      "tree": "4410b8935e2175ba63237b117ce8efd2acae45da",
      "parents": [
        "f10cb931b89875634c038ac7bbfca3eed60f41ae"
      ],
      "author": {
        "name": "Gene Bordegaray",
        "email": "gene.bordegaray@datadoghq.com",
        "time": "Thu Dec 18 04:02:48 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 18 07:02:48 2025 -0500"
      },
      "message": "Site/gene.bordegaray/2025/12/consecutive repartitions blog post title (#129)\n\n* initial blog post\n\n* better images and formatting\n\n* realigned some images\n\n* added links for Nga and Andrew\u0027s github\n\n* added links for Nga and Andrew\u0027s github\n\n* fixed to DataFusion and some word selection\n\n* reformatted some images for clarity and minor changes to punctuation\n\n* Update file name to match publish date\n\n* updated images\n\n* fix title\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "f10cb931b89875634c038ac7bbfca3eed60f41ae",
      "tree": "06b55fdf1aa1b5ce2443e3913fa586d70de1c31c",
      "parents": [
        "6d8cbb63ac4a2ecfafa30cc361e714c62a9e0fb5"
      ],
      "author": {
        "name": "Gene Bordegaray",
        "email": "gene.bordegaray@datadoghq.com",
        "time": "Mon Dec 15 09:20:15 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 12:20:15 2025 -0500"
      },
      "message": "Site/gene.bordegaray/2025/12/consecutive repartitions blog post fix image (#128)\n\n* initial blog post\n\n* better images and formatting\n\n* realigned some images\n\n* added links for Nga and Andrew\u0027s github\n\n* added links for Nga and Andrew\u0027s github\n\n* fixed to DataFusion and some word selection\n\n* reformatted some images for clarity and minor changes to punctuation\n\n* Update file name to match publish date\n\n* updated images\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "6d8cbb63ac4a2ecfafa30cc361e714c62a9e0fb5",
      "tree": "e95bf0bc183c0ba6c9fc0c4f618ae28dba00d129",
      "parents": [
        "646e0146722104121bf3e4a2d9f948b7a805ca8e"
      ],
      "author": {
        "name": "Gene Bordegaray",
        "email": "gene.bordegaray@datadoghq.com",
        "time": "Mon Dec 15 08:15:01 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 08:15:01 2025 -0500"
      },
      "message": "consecutive repartitions blog post (#127)\n\n* initial blog post\n\n* better images and formatting\n\n* realigned some images\n\n* added links for Nga and Andrew\u0027s github\n\n* added links for Nga and Andrew\u0027s github\n\n* fixed to DataFusion and some word selection\n\n* reformatted some images for clarity and minor changes to punctuation\n\n* Update file name to match publish date\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "646e0146722104121bf3e4a2d9f948b7a805ca8e",
      "tree": "908326d899e3e1077c0ecdac0065ed1339b79029",
      "parents": [
        "e7a3738feb9f3277e6c4bf612d0afed0a06af685"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Thu Dec 04 16:08:56 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 04 16:08:56 2025 -0500"
      },
      "message": "Add Comet 0.12.0 blog post (#125)\n\n"
    },
    {
      "commit": "e7a3738feb9f3277e6c4bf612d0afed0a06af685",
      "tree": "c9b9de300e4b61dbd19b64c446fbeb4b75a35c73",
      "parents": [
        "912c4ab43167becc92c118a3589051065ff321e1"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Tue Nov 25 11:25:18 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 25 11:25:18 2025 -0500"
      },
      "message": "Blog post for DataFusion 51.0.0 (#124)\n\n* Add blog post for DataFusion 51.0.0\n\n* Rough draft from codex\n\n* add credits\n\n* Updates\n\n* update\n\n* updates\n\n* update\n\n* update\n\n* updates\n\n* more\n\n* comments\n\n* Apply suggestions from code review\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Update performance chart\n\n* another pass\n\n* update\n\n* tweaks\n\n* Consolidate redundant sections\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e"
    },
    {
      "commit": "912c4ab43167becc92c118a3589051065ff321e1",
      "tree": "5a0b913a38abae52df770eb22a8e7e5f6a974e92",
      "parents": [
        "c5fca6a657ce7ec982a39be699eee3e7ae039ace"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Wed Oct 22 07:42:10 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 22 07:42:10 2025 -0600"
      },
      "message": "fix image links (#121)\n\n"
    },
    {
      "commit": "c5fca6a657ce7ec982a39be699eee3e7ae039ace",
      "tree": "cdd893af2cf78c0b12de40094c7f069e959612c3",
      "parents": [
        "aeb6d356bca8fdb7096120b1e3a0da4b35b0cda0"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Tue Oct 21 22:06:34 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 21 22:06:34 2025 -0400"
      },
      "message": "Add Comet 0.11.0 blog post (#120)\n\n"
    },
    {
      "commit": "aeb6d356bca8fdb7096120b1e3a0da4b35b0cda0",
      "tree": "4318e1ee79466445b186fb6addfa2953ae95f6e1",
      "parents": [
        "286c09f92ba25803005be3475bd89c99a6be816d"
      ],
      "author": {
        "name": "Samuele Resca",
        "email": "samuele.resca@gmail.com",
        "time": "Thu Oct 16 21:42:33 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 16 16:42:33 2025 -0400"
      },
      "message": "Fixing 404 in German string part 1. (#119)\n\n"
    },
    {
      "commit": "286c09f92ba25803005be3475bd89c99a6be816d",
      "tree": "df296e5c225933eb8570eb7f31ced1430049b511",
      "parents": [
        "31f9668cd424fdfd34919cbe69ed647ab7b7d70a"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Mon Sep 29 14:41:48 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 29 09:41:48 2025 -0400"
      },
      "message": "Blog: Add blog post about DataFusion 50.0.0 release (#115)\n\n* Blog: Add blog post about DataFusion 50.0.0 release\n\n* Update content/blog/2025-09-24-datafusion-50.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Add ref to future work of dynamic filter pushdown\n\n* Update content/blog/2025-09-24-datafusion-50.0.0.md\n\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e\n\n* Add clarification about dynamic filters\n\n* Adjust date\n\n* Add new committers and additional blog\n\n* Move dynamic predicate content into section\n\n* Improve spilling sorts section\n\n* Update filter pushdown section\n\n* Edit parquet metadata cache section\n\n* Update performance numbers\n\n* Update content/blog/2025-09-29-datafusion-50.0.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-09-29-datafusion-50.0.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-09-29-datafusion-50.0.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Apply suggestions, Minor fixes\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* wordsmith and add some more links to spark functions\n\n* Copyediting -- thanks to chatGPT\n\n* more tweaks\n\n* Apply suggestions\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e\n\n* Add \u0027Known Issues\u0027 section\n\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\n\n* Clarify cache improvements\n\nCo-authored-by: Vegard Stikbakke \u003cvegard.stikbakke@gmail.com\u003e\n\n* reword known issues section\n\n* Tighten up intro and figure caption\n\n* Add thanks for contributors\n\n* Add thanks for contributors for metadata cache\n\n* Thanks for filter, qualify, and configs\n\n* more thanks\n\n* fixups\n\n* final touchups\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Matt Butrovich \u003cmbutrovich@users.noreply.github.com\u003e\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\nCo-authored-by: Vegard Stikbakke \u003cvegard.stikbakke@gmail.com\u003e"
    },
    {
      "commit": "31f9668cd424fdfd34919cbe69ed647ab7b7d70a",
      "tree": "e4b4615802e71ba3bb4d0ec625c3995a106a27b6",
      "parents": [
        "fe4740f6c3eeb1d29bb5b96831cb1dd1ecb520f2"
      ],
      "author": {
        "name": "Tim Saucer",
        "email": "timsaucer@gmail.com",
        "time": "Tue Sep 23 13:11:23 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 13:11:23 2025 -0400"
      },
      "message": "Metadata handling announcement (#73)\n\n* Starting draft for blog post about metadata handling\n\n* Additional description of scalar UDF code work\n\n* Flushing out more text and examples\n\n* Adding text from review suggestion\n\n* Update date\n\n* Add additional use cases\n\n* typo\n\n* Adjust date\n\n* Responding to user input\n\n* apply suggestion on nullability\n\n* Add table of contents\n\n* Add links\n\n* Update content/blog/2025-09-21-custom-types-using-metadata.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-09-21-custom-types-using-metadata.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Add usage reference\n\n* Proposed enhancement to intro and conclusion of Metadata handling blog (#114)\n\n* Proposed update to introduction\n\n* Reword conclusion\n\n* One small correction to fix links\n\n* Back to back links did not render properly\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "fe4740f6c3eeb1d29bb5b96831cb1dd1ecb520f2",
      "tree": "a7bc14863f61adc237b7c2f43da5aa62c161d915",
      "parents": [
        "880cf3d1829f77ddfa044b9486295baca1707954"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Sat Sep 20 13:47:33 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 20 08:47:33 2025 -0400"
      },
      "message": "Blog: Center article content (#113)\n\n"
    },
    {
      "commit": "880cf3d1829f77ddfa044b9486295baca1707954",
      "tree": "efc7051db8f777032bc8adbb7b214922a6201655",
      "parents": [
        "efcb0373c6ae6b12430d64031a36fde2236470f8"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Sep 19 07:07:19 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 10:07:19 2025 -0400"
      },
      "message": "Add Table of content to past blogs (#112)\n\n* Add Table of content to past blogs\n\n* revert unecessary changes"
    },
    {
      "commit": "efcb0373c6ae6b12430d64031a36fde2236470f8",
      "tree": "a1f19eb55996d378897be73a0b11c70ff5e42783",
      "parents": [
        "cbe1336f2a4a1668a322a895354059252d0d3877"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Tue Sep 16 13:15:02 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 15:15:02 2025 -0400"
      },
      "message": "Add Comet 0.10.0 blog post (#111)\n\n* Add Comet 0.10.0 blog post draft\n\n* front matter\n\n* improvements\n\n* save\n\n* save\n\n* Update 2025-09-13-datafusion-comet-0.10.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update 2025-09-13-datafusion-comet-0.10.0.md\n\n* improvements\n\n* Update 2025-09-13-datafusion-comet-0.10.0.md\n\nCo-authored-by: Parth Chandra \u003cparthc@apache.org\u003e\n\n* update date\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Parth Chandra \u003cparthc@apache.org\u003e"
    },
    {
      "commit": "cbe1336f2a4a1668a322a895354059252d0d3877",
      "tree": "08eea31dd803fea3f9f04249bfde1f2764147583",
      "parents": [
        "d8dfbe52e92a20eef26cccd9a7627319a1575df5"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Fri Sep 12 11:46:33 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 12 06:46:33 2025 -0400"
      },
      "message": "Add table of contents to blog article (#107)\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "d8dfbe52e92a20eef26cccd9a7627319a1575df5",
      "tree": "dc003e2f553342822571e01f0460062bc70f9831",
      "parents": [
        "f69c5cc9380ceff24e39728f5fc9306b11538ca9"
      ],
      "author": {
        "name": "Adrian Garcia Badaracco",
        "email": "1755071+adriangb@users.noreply.github.com",
        "time": "Thu Sep 11 09:33:46 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 11 10:33:46 2025 -0400"
      },
      "message": "Update title for dynamic filters blog post (#109)\n\n"
    },
    {
      "commit": "f69c5cc9380ceff24e39728f5fc9306b11538ca9",
      "tree": "644ba9d483bd48621db9efe97a123814ca9cecad",
      "parents": [
        "a8f8ae68d3791f84a93df6caca20b7c60909d0ca"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Sep 10 08:36:52 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 11:36:52 2025 -0400"
      },
      "message": "Dynamic filters blog post (rev 2) (#103)\n\n* start dynamic filters\n\n* start blog post\n\n* update image\n\n* finish first draft\n\n* cleanup\n\n* fix typos\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update content/blog/2025-08-16-dynamic-filters.md\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update content/blog/2025-08-16-dynamic-filters.md\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update content/blog/2025-08-16-dynamic-filters.md\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update date + titl\n\n* Render markdown tables\n\n* update\n\n* Fix images\n\n* Add about author, about DataFusion sections, correct reference\n\n* Start filling out some more background\n\n* more\n\n* Update date\n\n* Take a pass at background / content\n\n* Take a pass at background / content\n\n* More content obsession\n\n* footnotes\n\n* update\n\n* AI proofreading\n\n* tweak\n\n* Work on join section\n\n* add acknowledgements\n\n* update future work\n\n* complete\n\n* proofread\n\n* proofread\n\n* proofread\n\n* proofread\n\n* cleanups, thanks claude\n\n* tweaks\n\n* Update results chart\n\n* Update join performance figure\n\n* tweak capitalization\n\n* clarify hash join section and add bullet points\n\n* Add djanderson to aknowledgemnts\n\n* clarify join selectivity comment\n\n---------\n\nCo-authored-by: Adrian Garcia Badaracco \u003c1755071+adriangb@users.noreply.github.com\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "a8f8ae68d3791f84a93df6caca20b7c60909d0ca",
      "tree": "6d947b05656625f97e3cdc0304ee5363552d9bfa",
      "parents": [
        "e2f655f4a7049dfb4d6864192c3727ea9663e744"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Sep 08 10:23:18 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 08 13:23:18 2025 -0400"
      },
      "message": "make `giscus` comment section opt-in to comply with ASF policy (#106)\n\n* make giscus opt-in to comply with ASF policy\n\n* new line\n\n* Update content/theme/templates/comments.html\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* typo\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "e2f655f4a7049dfb4d6864192c3727ea9663e744",
      "tree": "5ed1034df30063c13cb1349894815ce2c04d08a2",
      "parents": [
        "b23bd7a26e1df3e2b08cdb03a86e42fe267c2fd6"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Fri Aug 15 18:57:57 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 13:57:57 2025 -0400"
      },
      "message": "Blog: Limit max width (#101)\n\n"
    },
    {
      "commit": "b23bd7a26e1df3e2b08cdb03a86e42fe267c2fd6",
      "tree": "30193b0d972add73653dee0606b8358196316d65",
      "parents": [
        "9dba51d7c88e3bdff33a1f4d800ef16dcea8885c"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Aug 15 03:44:04 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 06:44:04 2025 -0400"
      },
      "message": "[BLOG] Using External Indexes, Metadata Stores, Catalogs and Caches to Accelerate Queries on Apache Parquet (#99)\n\n* [BLOG] Using External Indexes and Metadata Stores to Accelerate Queries on Apache Parquet\n\n* Apply suggestions from code review\n\n* Fix headings\n\n* Hone background section\n\n* fix link\n\n* Update content/blog/2025-08-15-external-parquet-indexes.md\n\nCo-authored-by: Adam Reeve \u003cadreeve@gmail.com\u003e\n\n* strengthen first paragraph of background\n\n* wordsmith\n\n* grammar\n\n* improved ascii art\n\n* more grammar\n\n* paren\n\n* pages --\u003e files in diagram\n\n* grammar\n\n* Implement @comphead\u0027s suggestion: highlighted the benefit of external indexes comparing to file level indexes in terms of IO\n\n* honing\n\n* capitalization OCD\n\n* Add acnknoeldgements section\n\n---------\n\nCo-authored-by: Adam Reeve \u003cadreeve@gmail.com\u003e"
    },
    {
      "commit": "9dba51d7c88e3bdff33a1f4d800ef16dcea8885c",
      "tree": "01c385274b77c74372a0d591de8b70e808cd1004",
      "parents": [
        "650272be2ee163c9497d17e2af9597b23ee6140e"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@veeva.com",
        "time": "Mon Jul 28 06:29:21 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 28 06:29:21 2025 -0400"
      },
      "message": "DataFusion `49.0.0` release post (#91)\n\n* DF 45 blog post\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Set author to PMC.\n\n* Set author to PMC, incorporated feedback.\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* expanded GSOC as it may not be obvious what it is and linked it up.\n\n* Grammar fix.\n\n* Typo fix\n\n* Typo fix\n\n* Adding spark functions to looking ahead section\n\n* minor change\n\n* Fixed Jonah Gao\u0027s handle.\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Phillip LeBlanc \u003cphillip@leblanc.tech\u003e\n\n* WIP for DF 49 blog post.\n\n* WIP for DF 49 blog post.\n\n* Update topK dynamic filtering perf section, cleanup the upgrade and changelog section\n\n* DF 47.0.0 blog post\n\n* Remove incomplete and accidentally added DF 49 blog post\n\n* Fix header.\n\n* Grammar fix\n\n* Minor formatting\n\n* Adding disabling of re-validation of spill files to performance improvements\n\n* Formatting and wordsmithing\n\n* tweaks\n\n* Update content/blog/2025-07-10-datafusion-47.0.0.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Fixed link.\n\n* Add datafusion-tracing crate mention and logo, make text more concrete\n\n* Claude edits\n\n* Update publishing date\n\n* Skeleton of DF 49 blog post\n\n* Fix frontmatter, remove breaking changes section, add link to new blog\n\n* Write up dynamic filtering\n\n* Add performance chart\n\n* Reorder sections, add new diagram\n\n* Add note on async udfs\n\n* update async section\n\n* Add note abotu WITHINK GROUP\n\n* note about parquet encryption\n\n* Add spill to disk and regex_instr\n\n* add regexp_instr\n\n* Adjust date\n\n* Small updates and typo fixes.\n\n* Wordsmith / OCD obeses\n\n* Gemini AI wordsmith / spelling / style\n\n* update performance\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Phillip LeBlanc \u003cphillip@leblanc.tech\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "650272be2ee163c9497d17e2af9597b23ee6140e",
      "tree": "5702cfbda6a3d968c301eb4f5cbeab2f60d06bf8",
      "parents": [
        "fcfc1e39d141e5d713eabaa9e96bad7d1d7b2cc4"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Thu Jul 24 10:48:37 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 13:48:37 2025 -0400"
      },
      "message": "Enable comments on datafusion-site via giscus (#93)\n\n* add comment\n\n* add datafusion-site config\n\n* Add some comments with context\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "fcfc1e39d141e5d713eabaa9e96bad7d1d7b2cc4",
      "tree": "a107095fd9e59bb8d428c4316b3185588cc00371",
      "parents": [
        "3be95e3d14a72e5e57775042e9f82edfd15c1e30"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Tue Jul 22 11:35:34 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 22 06:35:34 2025 -0400"
      },
      "message": "Fix page overflow (#92)\n\n"
    },
    {
      "commit": "3be95e3d14a72e5e57775042e9f82edfd15c1e30",
      "tree": "901ed68de3d4ae84ddc354f7f2b31d69ce1a8616",
      "parents": [
        "8b825f85a55982c4b831e1adcb92503eb8e24f4f"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Jul 17 15:23:04 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 17 15:23:04 2025 -0400"
      },
      "message": "Add alternate index strategy footnote to parquet indexing blog (#90)\n\n"
    },
    {
      "commit": "8b825f85a55982c4b831e1adcb92503eb8e24f4f",
      "tree": "7e8e436633a923c370d96425c9b232e17d4c420f",
      "parents": [
        "eb5c697c39846655c6a3ca8343cfa78d1a777e10"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@veeva.com",
        "time": "Wed Jul 16 08:23:11 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 16 08:23:11 2025 -0400"
      },
      "message": "DataFusion 48.0.0 blog post (#84)\n\n* DF 48 blog post.\n\n* revisions\n\n* update\n\n* typos\n\n* fix\n\n* Update date to 2025-07-16\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "eb5c697c39846655c6a3ca8343cfa78d1a777e10",
      "tree": "c75a4840ad3b67802eb13fd78cfb24bb296c9ee5",
      "parents": [
        "61aa76e60324ac0d51ed19b7d8f0346624dcc5d4"
      ],
      "author": {
        "name": "Jigao Luo",
        "email": "jigao.luo@outlook.com",
        "time": "Tue Jul 15 12:48:04 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 15 06:48:04 2025 -0400"
      },
      "message": "[Update author info]  Blog: Embedding User-Defined Indexes in Apache Parquet Files #79  (#89)\n\n* update author info\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n* update lucas\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n* Reduce optimizer focus for Andrew, add affiliations to byline\n\n* fix footnot\n\n* update myself\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n---------\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "61aa76e60324ac0d51ed19b7d8f0346624dcc5d4",
      "tree": "ecff8695f7b20cbebbdd35f7e052e5b9c4a2bdbc",
      "parents": [
        "0ba1f82edc6d09bf3508eb6e75ea37d87d1648ae"
      ],
      "author": {
        "name": "Qi Zhu",
        "email": "821684824@qq.com",
        "time": "Mon Jul 14 21:07:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 14 09:07:54 2025 -0400"
      },
      "message": "Blog: Embedding User-Defined Indexes in Apache Parquet Files (#79)\n\n* draft blog for datafusion custom parquet index\n\n* polish blog\n\n* polish to add why we don\u0027t need new format\n\n* Add clickbench rewriten case to improve parquet is good enough\n\n* Update content/blog/datafusion-custom-parquet-index.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* start addressing comments\n\n* continue addressing comments\n\n* continue polish doc\n\n* address comments\n\n* address comments\n\n* Add frontmatter and images, start filling out parquet background\n\n* tweak\n\n* tiny fix\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n* Custom Index --\u003e User Defined Index\n\n* Work on parquet background more\n\n* Add the Outlooking section\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n* Update custom index structure image, rename, updates\n\n* Work on example\n\n* tweak conclusion\n\n* Wordsmith pass (thanks to Copilot / Claude 4.0 for the help)\n\n* Update date to 2025-07-14\n\n* tweak title\n\n* Use Footer-metadata and fix typo (#2)\n\n* Use Footer-metadata and fix typo\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n* Footer Metadata\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n---------\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\n\n* Update content/blog/2025-07-14-user-defined-parquet-indexes.md\n\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\n\n* Address comment\n\n* address comments\n\n* address comments\n\n* Apply suggestions from code review\n\n* Hone motivating example text\n\n* Hone motivating example text\n\n* hone\n\n* Add note in example about files_to_scan\n\n* more tweaks\n\n* obsess\n\n---------\n\nSigned-off-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Jigao Luo \u003cjigao.luo@outlook.com\u003e\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e"
    },
    {
      "commit": "0ba1f82edc6d09bf3508eb6e75ea37d87d1648ae",
      "tree": "32799aecebd70e602c75abd0c71f48237e44511a",
      "parents": [
        "4c7a5c56269ed52f448efa2afb0c4c577ccd2f46"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@veeva.com",
        "time": "Fri Jul 11 07:02:50 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 11 07:02:50 2025 -0400"
      },
      "message": "DataFusion 47.0.0 blog post (#83)\n\n* DF 45 blog post\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Set author to PMC.\n\n* Set author to PMC, incorporated feedback.\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* expanded GSOC as it may not be obvious what it is and linked it up.\n\n* Grammar fix.\n\n* Typo fix\n\n* Typo fix\n\n* Adding spark functions to looking ahead section\n\n* minor change\n\n* Fixed Jonah Gao\u0027s handle.\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Phillip LeBlanc \u003cphillip@leblanc.tech\u003e\n\n* WIP for DF 49 blog post.\n\n* WIP for DF 49 blog post.\n\n* Update topK dynamic filtering perf section, cleanup the upgrade and changelog section\n\n* DF 47.0.0 blog post\n\n* Remove incomplete and accidentally added DF 49 blog post\n\n* Fix header.\n\n* Grammar fix\n\n* Minor formatting\n\n* Adding disabling of re-validation of spill files to performance improvements\n\n* Formatting and wordsmithing\n\n* tweaks\n\n* Update content/blog/2025-07-10-datafusion-47.0.0.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Fixed link.\n\n* Add datafusion-tracing crate mention and logo, make text more concrete\n\n* Claude edits\n\n* Update publishing date\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Phillip LeBlanc \u003cphillip@leblanc.tech\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "4c7a5c56269ed52f448efa2afb0c4c577ccd2f46",
      "tree": "171e9790a283fccca6b8a3bb18aa3f6738b0c9b0",
      "parents": [
        "19b5c4ec5cf256c0e2688ec7cd397682bb93606a"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Wed Jul 09 13:19:57 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 09 16:19:57 2025 -0400"
      },
      "message": "split clone and checkout commit (#87)\n\n"
    },
    {
      "commit": "19b5c4ec5cf256c0e2688ec7cd397682bb93606a",
      "tree": "2526df74a2d2efbc387361bc23f1b2655f87f8b9",
      "parents": [
        "de6a006610d6dc119b54b746a54f3d90430c198b"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Wed Jul 09 04:17:54 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 09 07:17:54 2025 -0400"
      },
      "message": "add Makefile and local setup instruction in README (#86)\n\n* add makefile and edit readme\n\n* docker -\u003e local\n\n* workaround: pin to specific commit for nfrastructure-actions\n\n* Add docs and a `all` target\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "de6a006610d6dc119b54b746a54f3d90430c198b",
      "tree": "be63f63afa1fd1bbc7906ee7faea537d16d0f0dc",
      "parents": [
        "1457b38c3c1875bebe406d4964e51a197e7b0f33"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Jul 08 13:11:45 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 08 16:11:45 2025 -0400"
      },
      "message": "github: turn on discussion (#85)\n\n* turn on discussion\n\n* forward discussion to devlist"
    },
    {
      "commit": "1457b38c3c1875bebe406d4964e51a197e7b0f33",
      "tree": "34f88b89db41b878ab75110b6ace71ccce0e380d",
      "parents": [
        "fa4641c0956ec8d3be8d568e6e5a4ae7b8a7b707"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Jul 08 07:52:13 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 08 10:52:13 2025 -0400"
      },
      "message": "add infrastructure-actions to gitignore (#82)\n\n"
    },
    {
      "commit": "fa4641c0956ec8d3be8d568e6e5a4ae7b8a7b707",
      "tree": "60b560521ffd786f923b1f3c86efe6f9c215bc33",
      "parents": [
        "fccabe965aa5982c6eda3db7a0415f2f03082d8e"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Tue Jul 08 07:51:59 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 08 10:51:59 2025 -0400"
      },
      "message": "clean up unused templates (#81)\n\n* remove frontpage.html, not referneced anywhere and still refers to apache infra\n\n* index.html is not used, same as blog.html\n\n* page.html is not used\n\n* dont track infrastructure-actions\n\n* remove references to page"
    },
    {
      "commit": "fccabe965aa5982c6eda3db7a0415f2f03082d8e",
      "tree": "953470d5c346f58f2941bda6d5f6a714908a2b66",
      "parents": [
        "87130244fa60dbc57492d52fe34dcb3354824e1a"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Fri Jul 04 11:06:18 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 11:06:18 2025 -0600"
      },
      "message": "Comet 0.9.0 (#78)\n\n"
    },
    {
      "commit": "87130244fa60dbc57492d52fe34dcb3354824e1a",
      "tree": "fa87d92b0b0bff9d4db87b8af717bc386511200b",
      "parents": [
        "a5520d5113d75b07ec7480666c6a9354059ce4d4"
      ],
      "author": {
        "name": "Pepijn Van Eeckhoudt",
        "email": "pepijn@vaneeckhoudt.net",
        "time": "Mon Jun 30 13:21:58 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 30 07:21:58 2025 -0400"
      },
      "message": "Blog post on query cancellation (#75)\n\n* First draft\n\n* Corrections based on feedback so far\n\n* Add front matter and ASF header\n\n* Integrating feedback from @alamb\n\n* Add short inline comments\n\n* Add `Acknowledgement` and `About DataFusion` sections\n\n* Add images\n\n* wordsmithing\n\n* wordsmith and format\n\n* Prettier images. Text revisions.\n\n* Another round of proofreading by AI\n\n* Obession: Wordsmithing for concision\n\n* Update content/blog/2025-06-30-cancellation.md\n\n* Update content/blog/2025-06-30-cancellation.md\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "a5520d5113d75b07ec7480666c6a9354059ce4d4",
      "tree": "9f9e1a7a44ea3099be786646354a19383fa73521",
      "parents": [
        "b7d6a21dc87b8024a973f4f2780f11a1ca95714e"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Mon Jun 16 05:51:23 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 05:51:23 2025 -0400"
      },
      "message": "Blog: Optimizing SQL and DataFrames (#74)\n\n* Blog: Optimizing SQL and DataFrames\n\n* Fix links, minor changes\n\n* Fix links\n\n* Clarify how the query planner / optimizer / dataframes are related\n\n* Apply suggestions from code review\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Mustafa Akur \u003cakurmustafa@gmail.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "b7d6a21dc87b8024a973f4f2780f11a1ca95714e",
      "tree": "2c76d6fc39e04be4e0a466d6e265a765d62865bd",
      "parents": [
        "275b9c48a825d2b7bea8d33b14b7eed3f16c7b98"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Tue May 06 11:31:05 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 06 11:31:05 2025 -0600"
      },
      "message": "fix typo (#72)\n\n"
    },
    {
      "commit": "275b9c48a825d2b7bea8d33b14b7eed3f16c7b98",
      "tree": "55a5e7f8933f335df6a7edec40bffed43ccf98b2",
      "parents": [
        "bcdf8b49d5fea57dfc6f0aa3a9647efac80490d8"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Tue May 06 11:22:02 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 06 11:22:02 2025 -0600"
      },
      "message": "Comet 0.8.0 (#71)\n\n"
    },
    {
      "commit": "bcdf8b49d5fea57dfc6f0aa3a9647efac80490d8",
      "tree": "1c27057bc208ca1c28a7658cb12e145e4139b6e5",
      "parents": [
        "4a974821ee1bd2155a6c4308aabb1764160b9cee"
      ],
      "author": {
        "name": "aditya singh rathore",
        "email": "142787780+Adez017@users.noreply.github.com",
        "time": "Sat Apr 19 15:38:44 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 19 06:08:44 2025 -0400"
      },
      "message": "User defined window functions blog post  (#66)\n\n* create 2025-04-04-user-defined-window-function.md\n\n* update\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Daniël Heres \u003cdanielheres@gmail.com\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Updated markdown\n\n* Update Final Thoughts section\n\n* Updated example in datafusion section\n\n* Updated Final thoughts\n\n* Updated User defined window functions\n\n* Update content\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2024-11-19-datafusion-python-udf-comparisons.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Update content/blog/2025-04-04-datafusion-userdefined-window-functions.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Wordsmith, fix links, comment out performance section\n\n* Update date to 2025-04-17\n\n* Add a section on how window functions are evaluated\n\n* Update content/blog/2025-04-17-user-defined-window-functions.md\n\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\n\n* Update 2025-04-04-datafusion-userdefined-window-functions.md\n\n* updated some minor typos\n\n* spell fixes\n\n* Update date to 20205-04-19\n\n---------\n\nCo-authored-by: Daniël Heres \u003cdanielheres@gmail.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e"
    },
    {
      "commit": "4a974821ee1bd2155a6c4308aabb1764160b9cee",
      "tree": "50a861fec7e15558b8f420dcddc6d35cf0af755c",
      "parents": [
        "b48fd04d64c9f1101f5b6db31638a930b1393759"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Apr 16 13:25:16 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 16 13:25:16 2025 -0400"
      },
      "message": "Fix local preview link in README (#69)\n\n"
    },
    {
      "commit": "b48fd04d64c9f1101f5b6db31638a930b1393759",
      "tree": "07dc7fff7f5afa40d9fdc84c0e1ae2959f1a9d0f",
      "parents": [
        "1b6c9eae175d1a0272fd4d036cb2444221673638"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Apr 11 13:37:08 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 11 13:37:08 2025 -0400"
      },
      "message": "Fix typo in opening paragraph (#68)\n\nScale Factor 100 is 36GB not 3.6GB"
    },
    {
      "commit": "1b6c9eae175d1a0272fd4d036cb2444221673638",
      "tree": "37fbd45482fe7dc60569f561eb781ce51b1e2d0f",
      "parents": [
        "4df2e5de3bb6c6ff9482e8acf90adf28b81d5daa"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Apr 10 11:41:04 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 10 11:41:04 2025 -0400"
      },
      "message": "[BLOG] tpchgen-rs: World’s fastest open source TPCH data generator, written in Rust (#67)\n\n* Blog Post: tpchgen-rs worlds fastest open source TPCH generator\n\n* Complete port\n\n* images + updates\n\n* update\n\n* link obsession\n\n* link obsession\n\n* move authors to end\n\n* fix title\n\n* TPCH --\u003e TPC-H\n\n* wordsmitg\n\n* Rework footnotes\n\n* Update content/blog/2025-04-10-fastest-tpch-generator.md\n\n* space\n\n* Update content/blog/2025-04-10-fastest-tpch-generator.md\n\nCo-authored-by: Xiangpeng Hao \u003chaoxiangpeng123@gmail.com\u003e\n\n* add duckdb comparison + wordsmit\n\n* Fix Databricks capitalization\n\n* Apply suggestions from code review\r\n\r\nThank you @kevinjqliu !\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* proper name\n\n* Update to say 20x\n\n* Update content/blog/2025-04-10-fastest-tpch-generator.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Update content/blog/2025-04-10-fastest-tpch-generator.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Update content/blog/2025-04-10-fastest-tpch-generator.md\n\nCo-authored-by: Sean Smith \u003cscsmithr@gmail.com\u003e\n\n* Update content/blog/2025-04-10-fastest-tpch-generator.md\n\nCo-authored-by: Sean Smith \u003cscsmithr@gmail.com\u003e\n\n* tweak\n\n* remove errant asterisks\n\n---------\n\nCo-authored-by: Xiangpeng Hao \u003chaoxiangpeng123@gmail.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\nCo-authored-by: Sean Smith \u003cscsmithr@gmail.com\u003e"
    },
    {
      "commit": "4df2e5de3bb6c6ff9482e8acf90adf28b81d5daa",
      "tree": "707361ee2b5992efbc654ef801d54c6ff93ba7c0",
      "parents": [
        "b353771a5c9643245bb666151db3bb4421d0bf10"
      ],
      "author": {
        "name": "Tim Saucer",
        "email": "timsaucer@gmail.com",
        "time": "Mon Apr 07 08:07:10 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 07 08:07:10 2025 -0400"
      },
      "message": "datafusion-python 46.0.0 announcement (#65)\n\n* datafusion-python-44 announcement\n\n* Update title\n\n* Updating blog post with links, but still needs to add text. Also need to update author list near end\n\n* Make all links at least work so CI will pass\n\n* Adding additional text to the release announcement\n\n* Heading level wrong\n\n* Minor formatting to match other posts, fixed one link\n\n* Respond to suggestions from code review\n\n* Remove codehilite since it doesn\u0027t play well with hilight.js and the latter has broader language support"
    },
    {
      "commit": "b353771a5c9643245bb666151db3bb4421d0bf10",
      "tree": "825e40a1d5e7995dd691e622b35a3adeff7c92db",
      "parents": [
        "d47b534689220dfa032c2432932965fc5e9782ef"
      ],
      "author": {
        "name": "oznur-synnada",
        "email": "oznur.hanci@synnada.ai",
        "time": "Wed Mar 26 16:13:20 2025 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 26 16:13:20 2025 +0300"
      },
      "message": "Blog post for DataFusion 46.0.0 (#64)\n\n* Create 2025-03-24-datafusion-46.0.0.md\n\n* Update 2025-03-24-datafusion-46.0.0.md\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\n\n* Update 2025-03-24-datafusion-46.0.0.md\n\n* Add upgrade guide link\n\n* Add example image for diagnostics\n\n* Update 2025-03-24-datafusion-46.0.0.md\n\n* Update content/blog/2025-03-24-datafusion-46.0.0.md\n\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Mehmet Ozan Kabak \u003cozankabak@gmail.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: berkaysynnada \u003cberkay.sahin@synnada.ai\u003e\nCo-authored-by: Berkay Şahin \u003c124376117+berkaysynnada@users.noreply.github.com\u003e\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e"
    },
    {
      "commit": "d47b534689220dfa032c2432932965fc5e9782ef",
      "tree": "e5e251ae633ebd6c5ec6c195e9a94a98f2b5d4a0",
      "parents": [
        "2be5505fd769452c6f20b94a7db8e81702e1e87c"
      ],
      "author": {
        "name": "Xiangpeng Hao",
        "email": "haoxiangpeng123@gmail.com",
        "time": "Tue Mar 25 10:46:59 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 25 11:46:59 2025 -0400"
      },
      "message": "Blog post on Parquet filter pushdown (#61)\n\n* new blog post\n\n* add parquet pushdown blog post\n\n* Apply suggestions from code review\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* improve writing\n\n* update\n\n* update\n\n* Update date\n\n* Capitalization consistency\n\n* Add links and format\n\n* Updat date\n\n* remove old page\n\n* Apply suggestions from code review\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\n\n* Update content/blog/2025-03-21-parquet-pushdown.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* update\n\n* update\n\n* Update content/blog/2025-03-21-parquet-pushdown.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Update content/blog/2025-03-21-parquet-pushdown.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Update content/blog/2025-03-21-parquet-pushdown.md\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* Apply suggestions from code review\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Oleks V \u003ccomphead@users.noreply.github.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e"
    },
    {
      "commit": "2be5505fd769452c6f20b94a7db8e81702e1e87c",
      "tree": "a400dba49b33798463128f4d5d3cb7b177c8bd6d",
      "parents": [
        "34b9200d9540b81d331d33a150c9072033185b98"
      ],
      "author": {
        "name": "Andy Grove",
        "email": "agrove@apache.org",
        "time": "Thu Mar 20 16:38:06 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 20 16:38:06 2025 -0600"
      },
      "message": "Comet 0.7.0 (#63)\n\n"
    },
    {
      "commit": "34b9200d9540b81d331d33a150c9072033185b98",
      "tree": "d617132b496abc0e87d8d7b4229809b95b9ddc3a",
      "parents": [
        "2e26e44e2d91a5c39154f8ad3fbb7379c8b91a50"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Thu Mar 20 14:00:03 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 20 14:00:03 2025 -0400"
      },
      "message": "Update 2025-03-20-parquet-pruning.md (#62)\n\n"
    },
    {
      "commit": "2e26e44e2d91a5c39154f8ad3fbb7379c8b91a50",
      "tree": "7bb926450e1ff33a90985a58abe678706864088d",
      "parents": [
        "ca0a5a2fc9d9677f45da4c6c6a16df50d07ba270"
      ],
      "author": {
        "name": "Xiangpeng Hao",
        "email": "haoxiangpeng123@gmail.com",
        "time": "Thu Mar 20 11:38:28 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 20 12:38:28 2025 -0400"
      },
      "message": "Blog post on Parquet pruning in datafusion (#60)\n\n* new blog post\n\n* Apply suggestions from code review\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* improve writing\n\n* update\n\n* Update date\n\n* Capitalization consistency\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "ca0a5a2fc9d9677f45da4c6c6a16df50d07ba270",
      "tree": "af96859eb0a0b5390583da6941a480342ec2ece1",
      "parents": [
        "67ab7206f31900ad2166ece9240f7819056e0699"
      ],
      "author": {
        "name": "Mustafa Akur",
        "email": "akurmustafa@gmail.com",
        "time": "Wed Mar 19 11:14:14 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 19 14:14:14 2025 -0400"
      },
      "message": "Add WITH ORDER example to blog post (#59)\n\n* Add WITH ORDER example\n\n* Apply suggestions from code review\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* format tweaks\n\n* Add a new example for ordering optimization\n\n* Apply suggestions from code review\n\nCo-authored-by: Bruce Ritchie \u003cbruce.ritchie@veeva.com\u003e\n\n* Address @Omega359\u0027s comments\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Bruce Ritchie \u003cbruce.ritchie@veeva.com\u003e"
    },
    {
      "commit": "67ab7206f31900ad2166ece9240f7819056e0699",
      "tree": "9092fe48969f6fa66f48ccc0a3a61d1ef6ffbfe0",
      "parents": [
        "57caa83ee52a11c1473ceea321e9b9490f42585d"
      ],
      "author": {
        "name": "Mustafa Akur",
        "email": "akurmustafa@gmail.com",
        "time": "Wed Mar 12 11:10:58 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 12 14:10:58 2025 -0400"
      },
      "message": "Blog: Using Ordering for Better Plans in Apache DataFusion (#58)\n\n* Initial commit\n\n* Update post\n\n* Address some of the points in the review (incomplete).\n\n* Update post\n\n* Update post\n\n* Update blog post\n\n* Minor changes\n\n* Minor changes\n\n* Apply suggestions from code review\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Apply suggestions from code review\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Minor changes, fix typos\n\n* Add functional dependencies\n\n* Minor changes\n\n* Minor: fix spelling errors, use code formatting\n\n* Update date to reflect publishing date\n\n* Apply suggestions from code review\n\nCo-authored-by: Bruce Ritchie \u003cbruce.ritchie@veeva.com\u003e\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Bruce Ritchie \u003cbruce.ritchie@veeva.com\u003e"
    },
    {
      "commit": "57caa83ee52a11c1473ceea321e9b9490f42585d",
      "tree": "e0e41441a6b715b0e5a1f650580b65729a3078e6",
      "parents": [
        "c0b6d6e7c74b08b64d8d5d5af32befbbfb893ecc"
      ],
      "author": {
        "name": "Bruce Ritchie",
        "email": "bruce.ritchie@veeva.com",
        "time": "Tue Feb 25 06:00:55 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 25 06:00:55 2025 -0500"
      },
      "message": "DataFusion 45 blog post (#57)\n\n* DF 45 blog post\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\n\n* Set author to PMC.\n\n* Set author to PMC, incorporated feedback.\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* expanded GSOC as it may not be obvious what it is and linked it up.\n\n* Grammar fix.\n\n* Typo fix\n\n* Typo fix\n\n* Adding spark functions to looking ahead section\n\n* minor change\n\n* Fixed Jonah Gao\u0027s handle.\n\n* Update content/blog/2025-02-20-datafusion-45.0.0.md\n\nCo-authored-by: Phillip LeBlanc \u003cphillip@leblanc.tech\u003e\n\n---------\n\nCo-authored-by: Yongting You \u003c2010youy01@gmail.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Phillip LeBlanc \u003cphillip@leblanc.tech\u003e"
    }
  ],
  "next": "c0b6d6e7c74b08b64d8d5d5af32befbbfb893ecc"
}
