Skip to content

Parquet Mixed Schema Attributes

vectorParquetPointEPSG:4326tinybundled

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.

Point geometry of parquet_mixed_schema_attributes, rendered from the case's data
Point geometry, rendered from the case's actual geometry. Scale is normalized to the viewport and is not comparable between cases.
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:

pip install "geocase[all]"

View GeoCase on PyPI.

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

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 boolean columns.
  • 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

  • load
  • attribute-inspection
  • schema-preservation

Files

Browse this case on GitHub

Source and license

  • Source: geocase-curated
  • License: MIT

Tags

attributes format_specific mixed_types nullable parquet point schema valid vector