Parquet Mixed Schema Attributes¶
A GeoParquet file with deliberately mixed attribute types and nullable columns: nullable integers (Int64), nullable booleans, nullable strings, and NaN floats. Exercises Parquet's native nullable type support and exposes loaders that silently downcast nullable types, lose null distinctions, or fail on mixed-type attribute schemas.
| Property | Value |
|---|---|
| Case ID | parquet_mixed_schema_attributes |
| Category | vector |
| Format | Parquet |
| Geometry type | Point |
| CRS | EPSG:4326 |
| Location | Central Europe (synthetic) — 10.00°E, 52.00°N → 13.00°E, 55.00°N |
| Test tier | unit |
| Size class | tiny |
| Storage class | bundled |
| Redistributable | yes |
| Loader | geopandas |
| Status | validated |
Use this case¶
import pytest
@pytest.mark.geocase_case("parquet_mixed_schema_attributes")
def test_parquet_mixed_schema_attributes(geocase_case) -> None:
data = geocase_case.load()
assert data is not None
Use GeoCase in your tests¶
Install the complete set of vector, raster, and NetCDF dependencies:
What this case checks¶
Detect loaders that silently downcast Parquet nullable integer columns to float64 (losing the int/null distinction), drop nullable boolean columns, or fail to round-trip mixed-type attribute schemas through GeoParquet.
Risk types covered¶
attribute/lossattribute/schema_mismatchdtype/nullable_coercionformat/columnar_storage_behavior
Expected behavior¶
| Assertion | Expected |
|---|---|
expect_loadable |
yes |
expect_valid_geometry |
yes |
expect_crs |
yes |
expected_epsg |
4326 |
expected_geometry_types |
Point |
required_drivers |
Parquet |
Notes¶
Purpose¶
This case tests Parquet/GeoParquet's native nullable type support with a deliberately mixed attribute schema.
Schema details¶
| Column | Arrow type | Nulls? | Notes |
|---|---|---|---|
id |
int64 |
No | Simple non-null integer identifier |
name |
string |
Yes | Row 3 is null |
value_int |
Int64 (nullable) |
Yes | Row 2 is null — tests nullable int |
value_float |
float64 |
Yes | Row 4 is NaN |
is_active |
boolean (nullable) |
Yes | Row 3 is null |
tags |
string |
Yes | Row 3 is null; CSV-in-string values |
geometry |
Point |
No | 4 valid WGS 84 points |
What this case catches¶
- Loaders that silently cast
Int64(nullable) →float64(losing the integer/null distinction). - Loaders that drop or coerce nullable
booleancolumns. - Loaders that conflate
None(null string) with empty string"". - Schema round-trip failures when writing back to Parquet.
Geometry¶
Four simple WGS 84 points along a NE diagonal across northern Europe.
Required capabilities¶
loadattribute-inspectionschema-preservation
Files¶
- Primary:
mixed_attrs.parquet - Notes:
notes.md
Source and license¶
- Source: geocase-curated
- License: MIT
Tags¶
attributes format_specific mixed_types nullable parquet point schema valid vector
Related cases¶
- Format-Limited KML Case --
format_limited_kml_case - Shapefile Field Name Truncation --
shapefile_field_truncation - MultiLineString Parquet Baseline --
multilinestring_parquet_baseline - Point Feather Baseline --
point_feather_baseline - Polygon Parquet Baseline --
polygon_parquet_baseline