rivet-cli 0.19.1

Rivet: PostgreSQL/MySQL/SQL Server/MongoDB → Parquet/CSV (local, S3, GCS, Azure). Crate name rivet-cli; binary rivet.
Documentation
# Type-fidelity coverage matrix — does a source column TYPE ride through to Parquet
# (and the warehouse) with correct precision/encoding, per engine? Same shape +
# drift-guard as the chunking/behaviour matrices. Cell = { test } | { gap } | { na }.
#
# Mongo is a JSON-blob model: every value rides a verbatim extended-JSON `document`
# column, so per-type Parquet fidelity is n/a EXCEPT where a value is explicitly
# asserted verbatim (large Int64, Decimal128) by the type-fidelity test.
#
# Known sub-refinements (not missing type-family coverage, so not gaps): MySQL
# BINARY(16)-as-uuid (only CHAR(36) uuid text is pinned), MSSQL nvarchar(max) (only
# bounded NVARCHAR), and the absence of a direct `assert_mssql_doc_parquet_schema`
# helper (MSSQL Arrow types are pinned via the DuckDB autoload + checksum guard).

engines: [postgres, mysql, mssql, mongo]

scenarios:
  - id: type_decimal
    what: "decimal/numeric(p,s) — precision + scale preserved, never floated"
    postgres: { test: golden_decimal_payments_exact_sums_and_decimal128_types }
    mysql:    { test: mysql_golden_decimal_payments_exact_sums_and_decimal128_types }
    mssql:    { test: roast_mssql_decimal_scale_survives_all_null_first_batch }
    mongo:    { test: mongo_batch_type_fidelity_document_is_verbatim_extjson }

  - id: type_uuid
    what: "uuid — PG uuid, MySQL CHAR(36), MSSQL uniqueidentifier → canonical value"
    postgres: { test: golden_uuid_fixed_size_binary_roundtrip_canonical_bytes }
    mysql:    { test: mysql_golden_uuid_varchar_utf8_expected_canonical_lower }
    mssql:    { test: duckdb_validates_mssql_type_matrix_parquet }
    mongo:    { test: mongo_batch_parallel_objectid_and_string_id }

  - id: type_json
    what: "json/jsonb — byte/content fidelity through Parquet"
    postgres: { test: roast_pg_json_column_preserves_source_bytes_through_parquet }
    mysql:    { test: mysql_edge_json_content_round_trip }
    mssql:    { na: "SQL Server has no native JSON type; the matrix fixture omits it by design" }
    mongo:    { test: mongo_batch_type_fidelity_document_is_verbatim_extjson }

  - id: type_timestamp_tz
    what: "timestamp / timestamptz — timezone handling (naive vs UTC instant)"
    postgres: { test: golden_timestamps_naive_vs_timestamptz_parquet_microsecond_semantics }
    mysql:    { test: mysql_golden_datetime_vs_timestamp_parquet_microsecond_semantics }
    mssql:    { test: mssql_batch_datetimeoffset_exports_the_utc_instant }
    mongo:    { na: "BSON dates ride the verbatim document blob; the extJSON test pins the mechanism" }

  - id: type_date_time
    what: "date / time — Date32, Time64(µs)"
    postgres: { test: pg_golden_full_type_matrix_schema_coverage }
    mysql:    { test: mysql_golden_full_type_matrix_schema_coverage }
    mssql:    { test: duckdb_validates_mssql_type_matrix_parquet }
    mongo:    { na: "date/time ride the verbatim document blob" }

  - id: type_binary
    what: "binary / bytea / varbinary — stays Arrow Binary, not Utf8"
    postgres: { test: golden_bytea_exact_binary_roundtrip }
    mysql:    { test: mysql_golden_fixed_binary_four_is_arrow_binary_not_utf8 }
    mssql:    { test: duckdb_validates_mssql_type_matrix_parquet }
    mongo:    { na: "binary rides the verbatim document blob" }

  - id: type_boolean
    what: "boolean — incl NULL; MySQL BIT(1)/TINYINT(1) → Boolean, BIT(8) → Int"
    postgres: { test: pg_golden_full_type_matrix_schema_coverage }
    mysql:    { test: mysql_golden_full_type_matrix_schema_coverage }
    mssql:    { test: duckdb_validates_mssql_type_matrix_parquet }
    mongo:    { na: "booleans ride the verbatim document blob" }

  - id: type_integer_families
    what: "int2/4/8 + unsigned widening (u64 > i64::MAX → UInt64, not overflow)"
    postgres: { test: pg_golden_full_type_matrix_schema_coverage }
    mysql:    { test: parquet_schema_pins_mysql_matrix_logical_types }
    mssql:    { test: duckdb_validates_mssql_type_matrix_parquet }
    mongo:    { test: mongo_batch_type_fidelity_document_is_verbatim_extjson }

  - id: type_text
    what: "text / varchar / nvarchar — empty, whitespace, large (100KB), unicode"
    postgres: { test: pg_edge_string_extremes_round_trip }
    mysql:    { test: mysql_edge_string_extremes_round_trip }
    mssql:    { test: duckdb_validates_mssql_type_matrix_parquet }
    mongo:    { na: "text rides the verbatim document blob" }