Skip to content

data-ingest: Fix data generation and executor issues#37520

Draft
def- wants to merge 1 commit into
MaterializeInc:mainfrom
def-:pr-data-ingest-improve
Draft

data-ingest: Fix data generation and executor issues#37520
def- wants to merge 1 commit into
MaterializeInc:mainfrom
def-:pr-data-ingest-improve

Conversation

@def-

@def- def- commented Jul 8, 2026

Copy link
Copy Markdown
Contributor
  • Text.random_value: the special-values branch (NULL, unicode, numbers as strings) was dead code, always overwritten by the record-size branch
  • Insert: restart keys on each generate() call so cycling workloads (DeleteDataAtEndOfDay*) insert again after the first cycle instead of degenerating into no-op deletes
  • DeleteDataAtEndOfDay*: the delete phase now actually runs as a single transaction, as its comment claims
  • Upsert: honor the keyspace parameter, reject the unimplemented EXISTING
  • Replace the type blocklists with explicit allowlists and drop types from DATA_TYPES_FOR_MYSQL that cannot work: MzTimestamp and TimestampTz have no MySQL type, Timestamp and Date values exceed MySQL's ranges
  • Seed the row-value rng so --seed makes runs fully reproducible
  • Sort WORKLOADS so rng.choice in parallel-workload is deterministic
  • PrintExecutor: don't connect to Mz, --verbose crashed when the randomly picked materialized2 wasn't up yet
  • Executor.execute: only retry OperationalErrors against Mz, never redirect an upstream Postgres query to the Mz connection

Test run: https://buildkite.com/materialize/nightly/builds/17085

- Text.random_value: the special-values branch (NULL, unicode, numbers
  as strings) was dead code, always overwritten by the record-size branch
- Insert: restart keys on each generate() call so cycling workloads
  (DeleteDataAtEndOfDay*) insert again after the first cycle instead of
  degenerating into no-op deletes
- DeleteDataAtEndOfDay*: the delete phase now actually runs as a single
  transaction, as its comment claims
- Upsert: honor the keyspace parameter, reject the unimplemented EXISTING
- Replace the type blocklists with explicit allowlists and drop types
  from DATA_TYPES_FOR_MYSQL that cannot work: MzTimestamp and TimestampTz
  have no MySQL type, Timestamp and Date values exceed MySQL's ranges
- Seed the row-value rng so --seed makes runs fully reproducible
- Sort WORKLOADS so rng.choice in parallel-workload is deterministic
- PrintExecutor: don't connect to Mz, --verbose crashed when the randomly
  picked materialized2 wasn't up yet
- Executor.execute: only retry OperationalErrors against Mz, never
  redirect an upstream Postgres query to the Mz connection

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant