Skip to content

v1.35.0 — dtype sites routed through the fail-closed admission boundary

Choose a tag to compare

@inviscid inviscid released this 24 Sep 06:49
2223c4c

Changes since v1.34.0.

  • Route every dtype site in this package through plaid-rpc's fail-closed admission boundary (sc-30348, #382). sql_from_dtype raised a bare KeyError that every upstream except KeyError swallowed; dtype_from_sql held an 11-entry map and answered None for everything else — including uuid, json, serial, bigserial, tinyint, double and largebinary, all of which analyze declares. It now reads the registry's pandas declaration, so those six convert and the four with no pandas representation refuse by name. Four wrappers that swallowed the refusal are narrowed so it reaches the caller. _dtype_ok replaces a hand-kept 20-token enum plus an accept-anything-resolvable fallback with a per-role check: joinable_as_key for both operands of a column-to-column join condition, default_agg for an aggregated target column. Counting is exempt throughout — COUNT and COUNT(DISTINCT) read no value semantics, so they stay valid for a dtype that refuses every other aggregation. get_from_clause gains the emitter's only per-dtype aggregation decision, so an unaggregatable dtype is refused here rather than reaching the warehouse as SUM(<array>) and failing there, in another repo, naming neither the column nor the dtype.
    • Behaviour change: a typed PSV returned the text of a date, time, timestamp or interval rather than the value — the first three because declaring a column object defeats parse_dates, the fourth because read_csv refuses a timedelta dtype=. All four now come back as real datetime64/timedelta64 values.
    • Two pre-existing defects in the touched functions are fixed with them: converter_from_sql read pd.datetime, removed in pandas 2.0, so every call raised AttributeError and load_typed_psv answered nothing at all; and set_column_types' timedelta tuple was missing a comma.
  • Close the StarRocks @compiles gap in sqlalchemy_functions (sc-30376, #381).
  • Raise the plaidcloud-rpc floor to >=1.16.0 (#383). The new code imports admit_dtype, require_dtype_capability and UnsupportedDtype, none of which exists before rpc 1.16.0, while the declared floor still said >=1.11.0. An unbounded resolve happened to work; a constrained install or a lockfile would have paired this code with an rpc that raises ImportError at import.

Requires plaidcloud-rpc >= 1.16.0.

Note on the CHANGELOG: CHANGELOG.md's ## Unreleased heading is stale — this repo has been tagging releases without retitling it, so that section currently holds entries going back many versions. It is deliberately left alone here rather than retitled, because retitling would relabel those older entries as this release. Splitting it by version is tracked separately.