# Rivet PG benchmark config — what we ran to produce REPORT_pg.md.
#
# Strategy per export: `table:` shortcut + `mode: chunked` + `chunk_size_memory_mb`.
# Small tables (rows ≤ chunk_size) auto-downgrade to snapshot via plan_build.
# Decimal columns get explicit overrides only for *unbounded* NUMERIC; declared
# precision is auto-resolved by the PG catalog-hint path.

source:
  type: postgres
  url: "postgresql://rivet:rivet@localhost:5432/rivet"
  environment: local

exports:
  - { name: audit_log,              table: public.audit_log,              mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/audit_log } }
  - { name: bench_decimal,          table: public.bench_decimal,          mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/bench_decimal } }
  - { name: bench_hc,               table: public.bench_hc,               mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/bench_hc } }
  - { name: bench_json,             table: public.bench_json,             mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/bench_json } }
  - { name: bench_narrow,           table: public.bench_narrow,           mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/bench_narrow } }
  - { name: bench_sparse,           table: public.bench_sparse,           mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/bench_sparse } }
  - { name: bench_wide,             table: public.bench_wide,             mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/bench_wide } }
  - { name: content_items,          table: public.content_items,          mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/content_items } }
  - { name: email_queue,            table: public.email_queue,            mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/email_queue } }
  - { name: events,                 table: public.events,                 mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/events } }
  - { name: logs_archive,           table: public.logs_archive,           mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/logs_archive } }
  - { name: metric_samples,         table: public.metric_samples,         mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/metric_samples } }
  - { name: orders,                 table: public.orders,                 mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/orders } }
  - { name: orders_coalesce,        table: public.orders_coalesce,        mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/orders_coalesce } }
  - { name: orders_sparse,          table: public.orders_sparse,          mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/orders_sparse } }
  - { name: page_views,             table: public.page_views,             mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/page_views } }
  - { name: product_catalog,        table: public.product_catalog,        mode: full,                                format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/product_catalog } }
  - { name: rivet_type_matrix,      table: public.rivet_type_matrix,      mode: full,                                format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/rivet_type_matrix }, columns: { amount: "decimal(18,2)", fee: "decimal(18,6)" } }
  - { name: rivet_type_matrix_full, table: public.rivet_type_matrix_full, mode: full,                                format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/rivet_type_matrix_full } }
  - { name: sessions,               table: public.sessions,               mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/sessions } }
  - { name: transactions,           table: public.transactions,           mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/transactions }, columns: { amount: "decimal(20,4)" } }
  - { name: users,                  table: public.users,                  mode: chunked, chunk_size_memory_mb: 256, format: parquet, compression: snappy, destination: { type: local, path: /tmp/rivet_bench/output/rivet/users } }
