Skip to content

Validate empty and null JSON columns - #27

Merged
quinnj merged 2 commits into
mainfrom
maintenance/column-lengths
Oct 14, 2026
Merged

quinnj merged 2 commits into
mainfrom
maintenance/column-lengths

Conversation

@quinnj

@quinnj quinnj commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Depends on #26; its row-input and CI foundation is included until that PR merges. The additional change covers the JSON object-of-arrays path.

An empty first column currently disables equal-length validation: {"a":[],"b":[1]} is accepted even though its columns have different lengths. Recognize the first column using the existing column-name count so zero remains a valid initialized length.

An entirely null column also throws UndefVarError because the union method does not bind its type parameter for Nothing. Handle that exact type as Missing. Empty parsed arrays can have Union{} as their element type; use Any for those unknown column types so constructing a table schema and converting the empty table succeeds on current Julia. Populated and mixed-null column types retain their existing handling.

Validation:

  • The preceding column-length probe has eight passes and four failures, including accepted unequal lengths after an empty first column. Two all-null schema checks separately error with the unbound type parameter. Current Julia also reproduces empty-column schema/row/column conversion errors before the empty-type fallback.
  • All 46 new public checks pass: unequal lengths in both orders and after multiple empty columns, valid equal empty/populated columns, mixed nulls, all-null columns through text/byte/IO/parsed inputs, schema types, and row/column conversions.
  • The full 140-check suite passes on Julia 1.6.7 and 1.13.0 with four threads and forced bounds checks. git diff --check passes.
  • All six checks pass at 7d72b625be0d176313a65d913c3dedfb1291b03e: all four native jobs in run 37186035745, including Julia 1.0, plus both Codecov checks. All four coverage sessions were accepted at the correct repository/commit destination; the stable job uploaded 893 bytes and the final report is 93.75%. Merge remains held for prerequisite Restore JSON row inputs and missing fields after empty rows #26 and the required independent approval.

Co-authored by Codex

AI disclosure: This work was prepared with assistance from OpenAI Codex.

@codecov

codecov Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.75%. Comparing base (fea5d94) to head (b98b669).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
+ Coverage   93.61%   93.75%   +0.13%     
==========================================
  Files           1        1              
  Lines          94       96       +2     
==========================================
+ Hits           88       90       +2     
  Misses          6        6              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

quinnj and others added 2 commits October 13, 2026 18:56
Keep zero-length columns initialized for equal-length validation. Map all-null element types to Missing and empty bottom element types to Any so the table schema can represent them. Cover public schema and row/column conversions without changing populated-column types.

AI disclosure: This work was prepared with assistance from OpenAI Codex.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@quinnj
quinnj force-pushed the maintenance/column-lengths branch from c6ecf9a to b98b669 Compare October 14, 2026 00:56
@quinnj
quinnj merged commit b466c6b into main Oct 14, 2026
6 checks passed
@quinnj
quinnj deleted the maintenance/column-lengths branch October 14, 2026 01:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant