mz-run
Developing Materialize
Compiling
Check compilation with cargo check.
Do not use cargo build or cargo run to build or run Materialize.
Use bin/environmentd --build-only to build without running.
Running locally
Start Materialize using bin/environmentd --optimized.
Pass --reset to delete data from prior runs (clears the mzdata directory and resets Postgres schemas), useful when testing catalog changes or starting fresh.
Access Materialize using psql:
psql -p 6875 -h localhost -U materializefor regular access.psql -p 6877 -h localhost -U mz_systemfor system access.
If it fails because CockroachDB is not running, start it:
docker run --name=cockroach -d -p 26257:26257 -p 26258:8080 \
cockroachdb/cockroach:latest start-single-node --insecure --store=type=mem,size=2G
If the container already exists, use docker start cockroach instead.
Other useful flags:
--tokio-console— activate the Tokio console for debugging async tasks.--coverage— build with coverage instrumentation.--sanitizer address|memory|thread— build with the specified sanitizer.
Formatting and linting
Format Rust, Python, and Protobuf files with bin/fmt.
Run bin/lint to check for lint errors.
Run cargo clippy --all-targets -- -D warnings to check for Rust-specific warnings.
Log filters
Set MZ_LOG_FILTER to a tracing-compatible filter expression.
For example, mz_adapter::catalog::apply=trace,warn would enable trace logging for the mz-adapter crate's catalog::apply module, and warn for the rest of the system.
jemalloc
On Linux, we link against jemalloc by default.
Compile with --no-default-features to use the system allocator.