[INFO] cloning repository https://github.com/guangl/sqllog2db
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/guangl/sqllog2db" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fguangl%2Fsqllog2db", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fguangl%2Fsqllog2db'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b033f666bea4500dd4402b1630040abf454357a3
[INFO] testing guangl/sqllog2db against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fguangl%2Fsqllog2db" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/guangl/sqllog2db
[INFO] finished tweaking git repo https://github.com/guangl/sqllog2db
[INFO] tweaked toml for git repo https://github.com/guangl/sqllog2db written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/guangl/sqllog2db on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/guangl/sqllog2db already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d
[INFO] running `Command { std: "docker" "start" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling encoding_index_tests v0.1.4
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling encoding-index-tradchinese v1.20141219.5
[INFO] [stderr]    Compiling encoding-index-simpchinese v1.20141219.5
[INFO] [stderr]    Compiling encoding-index-korean v1.20141219.5
[INFO] [stderr]    Compiling encoding-index-singlebyte v1.20141219.5
[INFO] [stderr]    Compiling encoding-index-japanese v1.20141219.5
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling encoding v0.2.33
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling notify-types v2.1.0
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling hashlink v0.12.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling unit-prefix v0.5.2
[INFO] [stderr]    Compiling jiff v0.2.24
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.1
[INFO] [stderr]    Compiling dm-database-parser-sqllog v2.0.4
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling inotify v0.11.2
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling indicatif v0.18.4
[INFO] [stderr]    Compiling notify v8.2.0
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling env_filter v1.0.1
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling rusqlite v0.40.1
[INFO] [stderr]    Compiling dm-database-sqllog2db v1.20.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.24s
[INFO] running `Command { std: "docker" "inspect" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling tikv-jemalloc-sys v0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling dm-database-parser-sqllog v2.0.4
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling criterion-plot v0.6.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling env_filter v1.0.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling dm-database-sqllog2db v1.20.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.7.0
[INFO] [stderr]    Compiling tikv-jemalloc-ctl v0.6.1
[INFO] [stderr]    Compiling tikv-jemallocator v0.6.1
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 33s
[INFO] running `Command { std: "docker" "inspect" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.31s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/dm_database_sqllog2db-12bcf78b1808e558)
[INFO] [stdout] 
[INFO] [stdout] running 413 tests
[INFO] [stdout] test cli::init::tests::test_apply_does_not_corrupt_logging_file ... ok
[INFO] [stdout] test cli::init::tests::test_apply_csv_default ... ok
[INFO] [stdout] test cli::init::tests::test_apply_csv_custom ... ok
[INFO] [stdout] test cli::init::tests::test_apply_sqlite ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_all_defaults ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_custom_csv_path ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_invalid_format_three_times_returns_err ... ok
[INFO] [stdout] test cli::init::tests::test_apply_output_parses_as_config_csv ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_sqlite_defaults ... ok
[INFO] [stdout] test cli::init::tests::test_apply_output_parses_as_config_sqlite ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_writer_receives_prompts ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_sqlite_path ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_drops_matching_record ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_empty_trxid_sentinel_rejects_all_records ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_debug_format ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_tag_none_retained ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_session_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_app_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_or_veto_any_hit_drops ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_tag_none_rejected ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_thread_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_statement_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_nonempty_trxid_set_filters_correctly ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_no_filters_passes_all ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_username_passes_matching ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_username_or_semantics ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_missing_files_are_ignored_and_default_to_requested_jobs ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_trxid_and_semantics ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_min_row_count_positive ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_empty_returns_empty ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_veto_wins_over_include ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_and_semantics_between_fields ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_min_row_count_zero ... ok
[INFO] [stdout] test cli::run::tests::test_build_sql_exclude_filters_multiple_returns_correct_count ... ok
[INFO] [stdout] test cli::run::tests::test_build_sql_exclude_filters_none_returns_empty ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_exec_ids_multiple ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_single_huge_file_falls_back_to_one_job_not_zero ... ok
[INFO] [stdout] test cli::run::tests::test_build_sql_include_filters_multiple ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_timestamp_range_filter ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_small_files_keep_requested_jobs ... ok
[INFO] [stdout] test cli::run::tests::test_hint_output ... ok
[INFO] [stdout] test cli::run::tests::test_collector_not_needed_filtering ... ok
[INFO] [stdout] test cli::run::tests::test_progress_bar_disabled ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_requested_jobs_of_one_is_unaffected ... ok
[INFO] [stdout] test cli::run::tests::test_normalize_and_export_quota_hit_returns_break_quota ... ok
[INFO] [stdout] test cli::run::tests::test_normalize_and_export_filtered_params_updates_buffer ... ok
[INFO] [stdout] test cli::run::tests::test_run_summary ... ok
[INFO] [stdout] test cli::run::tests::test_write_error_log_watch_appends ... ok
[INFO] [stdout] test cli::run::tests::test_write_error_log_run_still_truncates ... ok
[INFO] [stdout] test cli::run::tests::test_collector_invalid_path_returns_error ... ok
[INFO] [stdout] test cli::run::tests::test_collector_filtered_params_normalize ... ok
[INFO] [stdout] test cli::run::tests::test_handle_run_default_config_succeeds ... ok
[INFO] [stdout] test cli::run::tests::test_progress_bar_template ... ok
[INFO] [stdout] test cli::run::tests::test_filter_path ... ok
[INFO] [stdout] test cli::stats::tests::test_merge_stats_options_cli_top_priority ... ok
[INFO] [stdout] test cli::stats::tests::test_merge_stats_options_config_top_fallback ... ok
[INFO] [stdout] test cli::run::tests::test_collector_parse_error_accumulation ... ok
[INFO] [stdout] test cli::run::tests::test_min_row_count_zero_matches_all_records ... ok
[INFO] [stdout] test cli::run::tests::test_error_log_written ... ok
[INFO] [stdout] test cli::run::tests::test_collector_interrupted_returns_empty ... ok
[INFO] [stdout] test cli::run::tests::test_include_performance_metrics_false_csv_excludes_pm_columns ... ok
[INFO] [stdout] test cli::run::tests::test_scan_for_trxids_by_transaction_filters_dedup_across_files ... ok
[INFO] [stdout] test cli::run::tests::test_parallel_merge_consistent ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_load_offsets_missing_table_returns_empty ... ok
[INFO] [stdout] test cli::watch::tests::test_collect_watch_dirs_existing_dir_returns_itself ... ok
[INFO] [stdout] test cli::watch::tests::test_collect_watch_dirs_nonexistent_glob_returns_empty ... ok
[INFO] [stdout] test cli::stats::tests::test_merge_stats_options_default_fallback ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_cli_none_config_none_falls_back_to_20 ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_ensure_offset_table_idempotent ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_cli_top_overrides_config_top ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_top_nonzero_passes ... ok
[INFO] [stdout] test cli::run::tests::test_sqlite_parallel_matches_sequential ... ok
[INFO] [stdout] test cli::watch::tests::test_format_elapsed_hms_3661_seconds ... ok
[INFO] [stdout] test cli::watch::tests::test_format_elapsed_hms_zero ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_config_top_used_when_cli_none ... ok
[INFO] [stdout] test cli::watch::tests::test_read_bytes_to_tempfile_reads_from_offset ... ok
[INFO] [stdout] test cli::watch::tests::test_read_bytes_to_tempfile_at_eof_produces_empty ... ok
[INFO] [stdout] test cli::watch::tests::test_render_active_status_includes_human_duration ... ok
[INFO] [stdout] test cli::watch::tests::test_should_trigger_isolates_distinct_paths ... ok
[INFO] [stdout] test cli::watch::tests::test_should_trigger_within_window_rejects ... ok
[INFO] [stdout] test cli::watch::tests::test_should_trigger_first_call_admits_and_records ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_top_default_passes ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_loop_state_new_with_offsets ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_loop_state_new_without_sqlite ... ok
[INFO] [stdout] test config::exporter::tests::test_default_multi_row_batch_size ... ok
[INFO] [stdout] test config::exporter::tests::test_validate_accepts_boundaries ... ok
[INFO] [stdout] test config::exporter::tests::test_validate_rejects_over_64 ... ok
[INFO] [stdout] test config::exporter::tests::test_validate_rejects_zero ... ok
[INFO] [stdout] test config::sqllog::tests::test_validate_rejects_legacy_path_key ... ok
[INFO] [stdout] test config::sqllog::tests::test_validate_rejects_whitespace_entry ... ok
[INFO] [stdout] test config::sqllog::tests::test_default_inputs_is_sqllogs ... ok
[INFO] [stdout] test config::tests::test_config_has_3_top_level_optional_fields ... ok
[INFO] [stdout] test config::tests::test_config_default_stats_all_none ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_save_and_load_offset_roundtrip ... ok
[INFO] [stdout] test config::sqllog::tests::test_validate_rejects_empty_inputs ... ok
[INFO] [stdout] test config::tests::test_default_logging_config_values ... ok
[INFO] [stdout] test config::tests::test_csv_exporter_default_include_performance_metrics_true ... ok
[INFO] [stdout] test config::tests::test_default_sqlite_exporter_values ... ok
[INFO] [stdout] test config::tests::test_exporter_config_default_no_sqlite ... ok
[INFO] [stdout] test config::tests::test_config_parses_stats_section ... ok
[INFO] [stdout] test config::tests::test_config_missing_stats_section_defaults_to_none ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_save_offset_replaces_existing ... ok
[INFO] [stdout] test config::tests::test_exporter_config_has_any_csv ... ok
[INFO] [stdout] test config::tests::test_from_file_not_found ... ok
[INFO] [stdout] test config::validate::tests::test_validate_default_config_passes ... ok
[INFO] [stdout] test config::validate::tests::test_validate_accepts_valid_stats_time_strings ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_csv_file ... ok
[INFO] [stdout] test config::tests::test_from_file_invalid_toml_returns_error ... ok
[INFO] [stdout] test config::validate::tests::test_validate_accepts_none_stats_time ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_logging_file ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_sqlite_database_url ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_sqlite_table_name ... ok
[INFO] [stdout] test config::validate::tests::test_validate_invalid_log_level ... ok
[INFO] [stdout] test config::validate::tests::test_validate_new_nested_format_passes ... ok
[INFO] [stdout] test config::tests::test_from_file_valid_toml ... ok
[INFO] [stdout] test config::validate::tests::test_validate_new_top_level_format_passes ... ok
[INFO] [stdout] test config::validate::tests::test_validate_no_exporters ... ok
[INFO] [stdout] test config::validate::tests::test_validate_output_fields_unknown_field_rejected ... ok
[INFO] [stdout] test config::validate::tests::test_validate_retention_days_zero ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_whitespace_input_entry ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_invalid_stats_to ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_legacy_sqllog_path_key ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_invalid_stats_from ... ok
[INFO] [stdout] test config::validate::tests::test_validate_retention_days_over_365 ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_leading_digit ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_non_ascii ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_quote ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_space ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_special_char ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_valid_simple ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_load_offsets_filters_negative ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_valid_underscore_prefix ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_valid_with_digits ... ok
[INFO] [stdout] test error::tests::test_classify_error_kind ... ok
[INFO] [stdout] test error::tests::test_config_invalid_value_suggestion ... ok
[INFO] [stdout] test error::tests::test_config_no_exporters_suggestion ... ok
[INFO] [stdout] test error::tests::test_error_severity_display_strings ... ok
[INFO] [stdout] test error::tests::test_error_stats_by_type_merge ... ok
[INFO] [stdout] test error::tests::test_config_invalid_log_level_suggestion ... ok
[INFO] [stdout] test error::tests::test_error_stats_default_has_no_errors ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_accumulates_counts ... ok
[INFO] [stdout] test error::tests::test_config_not_found_is_fatal_critical_suggestion ... ok
[INFO] [stdout] test error::tests::test_error_stats_add_and_count ... ok
[INFO] [stdout] test error::tests::test_config_parse_failed_suggestion_mentions_toml ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_first_fatal_wins ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_error_log_append ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_propagates_filtered_and_records ... ok
[INFO] [stdout] test error::tests::test_error_stats_set_fatal_and_has_fatal ... ok
[INFO] [stdout] test error::tests::test_file_write_failed_not_fatal_error_severity ... ok
[INFO] [stdout] test error::tests::test_file_create_directory_failed_is_fatal ... ok
[INFO] [stdout] test error::tests::test_export_write_failed_not_fatal_error_severity ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_propagates_fatal_when_base_has_none ... ok
[INFO] [stdout] test error::tests::test_file_already_exists_is_fatal ... ok
[INFO] [stdout] test error::tests::test_export_database_failed_is_fatal_critical ... ok
[INFO] [stdout] test error::tests::test_interrupted_is_fatal_critical ... ok
[INFO] [stdout] test error::tests::test_io_error_is_fatal_critical ... ok
[INFO] [stdout] test error::tests::test_no_files_found_display_contains_inputs ... ok
[INFO] [stdout] test error::tests::test_no_files_found_not_fatal ... ok
[INFO] [stdout] test error::tests::test_no_files_found_suggestion_non_empty ... ok
[INFO] [stdout] test error::tests::test_parser_invalid_path_suggestion ... ok
[INFO] [stdout] test error::tests::test_parser_path_not_found_suggestion ... ok
[INFO] [stdout] test error::tests::test_parser_read_dir_failed_is_fatal ... ok
[INFO] [stdout] test error::tests::test_truncate_to_120_chars ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_all_zero_metrics_outputs_empty_columns ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_append_mode ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_default_include_pm_true_keeps_existing_behavior ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_data_row_skips_pm_when_disabled ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_from_config ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_field_order ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_basic_export ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_full_order ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_debug_format ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_skips_pm_when_disabled ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_export_method ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_empty_export_is_noop ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_no_normalized_sql_when_normalize_false ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_statement_appname_client_ip_tag ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_subset_emits_only_requested_columns ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_export_with_normalized ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_no_normalize ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_reserve_boundary_long_sql ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_with_normalize_none_emits_empty_idx_14 ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_zero_metrics_skips_idx_11_12_13 ... ok
[INFO] [stdout] test exporter::projection::tests::test_projected_field_names_full ... ok
[INFO] [stdout] test exporter::csv::tests::test_write_csv_escaped_with_quotes ... ok
[INFO] [stdout] test exporter::projection::tests::test_projected_field_names_order_preserved ... ok
[INFO] [stdout] test exporter::csv::tests::test_write_csv_escaped_no_quotes ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_with_normalize_idx_14 ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_reserve_boundary_short_sql ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_insert_sql_full_fast_path ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_stats_snapshot ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_insert_sql_ordered ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_create_sql_ordered ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_multi_row_insert_sql_basic ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_multi_row_insert_sql_64_rows ... ok
[INFO] [stdout] test exporter::projection::tests::test_projected_field_names_subset ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_multi_row_insert_sql_single_row ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_debug_format ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_one_normalized_without_initialize_returns_err ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_without_initialize_returns_err ... ok
[INFO] [stdout] test cli::watch::tests::test_trigger_incremental_first_seen_records_baseline ... ok
[INFO] [stdout] test cli::watch::tests::test_interrupted_flag_exits_immediately ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_field_order ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_method ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_batch_commit ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_from_config ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_basic_export ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_field_order ... ok
[INFO] [stdout] test config::tests::test_csv_toml_default_include_performance_metrics ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_clears_existing_table_via_delete ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_creates_quoted_table ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_field_order_normalized_sql_skipped_when_normalize_false ... ok
[INFO] [stdout] test cli::watch::tests::test_trigger_incremental_skips_if_no_new_bytes ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_csv_append ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_batch1_equals_single ... ok
[INFO] [stdout] test exporter::tests::test_ensure_parent_dir_creates_new ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_silent_when_table_missing ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_batch_commit_interaction ... ok
[INFO] [stdout] test exporter::tests::test_export_stats_default ... ok
[INFO] [stdout] test exporter::tests::test_ensure_parent_dir_existing ... ok
[INFO] [stdout] test exporter::tests::test_export_stats_record_success ... ok
[INFO] [stdout] test exporter::tests::test_export_stats_total_includes_all ... ok
[INFO] [stdout] test exporter::tests::test_exporter_manager_debug_format ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_large_positive ... ok
[INFO] [stdout] test exporter::tests::test_exporter_manager_log_stats_no_panic ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_empty_input ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_partial_tail ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_nan ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_neg_infinity ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_negative ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_normal ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_pos_infinity ... ok
[INFO] [stdout] test exporter::tests::test_from_config_no_exporters_error ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_zero ... ok
[INFO] [stdout] test exporter::tests::test_from_config_sqlite_path ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_colon_non_ffff ... ok
[INFO] [stdout] test exporter::tests::test_from_csv_constructor ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_basic ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_empty ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_ipv6 ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_uppercase ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_no_prefix ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_with_prefix ... ok
[INFO] [stdout] test logging::tests::test_init_logging_all_valid_levels ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_append_mode ... ok
[INFO] [stdout] test logging::tests::test_parse_log_level_all ... ok
[INFO] [stdout] test logging::tests::test_init_logging_invalid_level_returns_error ... ok
[INFO] [stdout] test logging::tests::test_init_logging_with_stdout ... ok
[INFO] [stdout] test logging::tests::test_init_logging_creates_parent_dir ... ok
[INFO] [stdout] test logging::tests::test_init_logging_valid_level_info ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_stats_snapshot ... ok
[INFO] [stdout] test logging::tests::test_parse_log_level_invalid ... ok
[INFO] [stdout] test logging::tests::test_parse_log_level_uppercase ... ok
[INFO] [stdout] test parser::tests::test_log_files_empty_directory ... ok
[INFO] [stdout] test parser::tests::test_log_files_invalid_glob_pattern ... ok
[INFO] [stdout] test parser::tests::test_log_files_glob_no_match ... ok
[INFO] [stdout] test parser::tests::test_log_files_glob_pattern ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_succeeds_and_creates_db ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_disabled_returns_false ... ok
[INFO] [stdout] test parser::tests::test_log_files_sorted ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_empty ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_one_preparsed ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_with_start_ts ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_with_indicator ... ok
[INFO] [stdout] test parser::tests::test_log_files_multi_input_merge_and_dedup ... ok
[INFO] [stdout] test parser::tests::test_log_files_with_log_file ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_projection_equivalence ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_projection_subset_export ... ok
[INFO] [stdout] test parser::tests::test_log_files_nonexistent_path ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_with_username ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_no_indicators ... ok
[INFO] [stdout] test parser::tests::test_log_files_ignores_non_log_files ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_with_exec_ids ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_with_normalized ... ok
[INFO] [stdout] test parser::tests::test_log_files_single_file ... ok
[INFO] [stdout] test parser::tests::test_log_files_multi_input_mixes_file_dir_glob ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_has_filters_empty ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_with_min_runtime ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_disabled ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_matches_exec_id ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_matches_min_row_count ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_matches_min_runtime ... ok
[INFO] [stdout] test pipeline::filters::tests::test_merge_found_trxids_adds_to_set ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_no_filters_always_false ... ok
[INFO] [stdout] test pipeline::filters::tests::test_merge_found_trxids_empty_list_initializes_sentinel ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_apps ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_ips ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_sessions ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_tags ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_threads ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exec_ids_absent_returns_none ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exec_ids_deserialized_to_hashset ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_sessions ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_threads ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_tags ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exec_ids_empty_list_normalizes_to_none ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_legacy_flat_all_include_fields_mapped ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_apps ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_excludes_only_returns_true ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_includes_only_returns_true ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_none_both_returns_false ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_overwrite_drops_existing_table ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_some_empty_vec_returns_false ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_trxids_absent_returns_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_chinese_in_param ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_legacy_flat_usernames_mapped_to_include_users ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_legacy_flat_exclude_usernames_mapped ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_ips ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_colon_style_basic ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_trxids_deserialized_to_hashset ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_mixed_format_new_table_takes_priority ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_insert_with_function ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_numeric_param ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_empty_params_returns_sql_unchanged ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_colon_style_out_of_order ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_mixed_format_exclude_new_table_priority ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_multiple_params ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_no_placeholders ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_null_param ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_trxids_empty_list_normalizes_to_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_escaped_quote_in_literal ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_unclosed_string_literal ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_with_string_literal_verbatim_copy ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_single_string_param ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_skip_literal_contents ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_colon ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_colon_not_followed_by_digit ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_escaped_quote ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_question ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_skips_literals ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_unclosed_string ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_invalid_returns_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_blob_empty ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_single_varchar ... ok
[INFO] [stdout] test pipeline::tests::test_default_true_via_serde ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_quoted_with_escaped_quote ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_field_mask_with_names ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_mixed_types ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_ordered_indices_empty_equals_all ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_ordered_indices_preserves_user_order ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_field_mask_default ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_compute_normalized_nested_lookup_missing_statement ... ok
[INFO] [stdout] test pipeline::tests::test_pipeline_add ... ok
[INFO] [stdout] test pipeline::tests::test_normalize_config_default ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_both_is_auto ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_question ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_colon ... ok
[INFO] [stdout] test pipeline::tests::test_pipeline_empty ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_ordered_indices_none_returns_all ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_auto ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_ts_too_short_treated_as_out_of_range ... ok
[INFO] [stdout] test stats::aggregate::tests::test_frequent_sql_aggregation ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_none_behavior_unchanged ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_both_from_and_to_excludes_outside_records ... ok
[INFO] [stdout] test stats::aggregate::tests::test_non_ora_records_are_skipped ... ok
[INFO] [stdout] test stats::aggregate::tests::test_slow_entry_total_cmp_handles_equal_elapsed ... ok
[INFO] [stdout] test pipeline::tests::test_process_with_meta_default_delegates_to_process ... ok
[INFO] [stdout] test stats::aggregate::tests::test_slow_sql_includes_zero_and_negative_elapsed ... ok
[INFO] [stdout] test stats::aggregate::tests::test_slow_sql_top_n_limit ... ok
[INFO] [stdout] test stats::aggregate::tests::test_into_results_when_records_fewer_than_top_n ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_from_only ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_ordered ... ok
[INFO] [stdout] test stats::aggregate::tests::test_frequent_sql_top_n_limit_and_sort ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_rejects_from_after_to ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_accepts_date_only ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_to_only_excludes_later_records ... ok
[INFO] [stdout] test stats::config::tests::test_stats_config_default_all_none ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_from_only_excludes_earlier_records ... ok
[INFO] [stdout] test stats::config::tests::test_stats_config_deserialize_empty_toml ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_datetime_from_with_date_to ... ok
[INFO] [stdout] test stats::config::tests::test_stats_config_deserialize_partial_toml ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_equal_from_to ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_accepts_datetime ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_accepts_feb_29 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_apr_31 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_day_32 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_day_zero ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_empty ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_minute_60 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_no_separator ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_not_a_date ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_short_date ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_t_separator ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_slash_separator ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_hour_24 ... ok
[INFO] [stdout] test stats::normalize::tests::test_identifier_with_digits_not_replaced ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_month_13 ... ok
[INFO] [stdout] test stats::normalize::tests::test_multiple_numeric_literals ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_second_60 ... ok
[INFO] [stdout] test stats::normalize::tests::test_escaped_quote_in_string ... ok
[INFO] [stdout] test stats::normalize::tests::test_no_literals_unchanged ... ok
[INFO] [stdout] test stats::normalize::tests::test_basic_where_number_and_string ... ok
[INFO] [stdout] test stats::normalize::tests::test_unclosed_string_does_not_panic ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_escapes_double_quotes ... ok
[INFO] [stdout] test stats::normalize::tests::test_insert_multiple_columns_with_float ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_creates_two_files ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_creates_parent_dir ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_headers_and_rows ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_month_zero ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_feb_31 ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_empty_rows ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_creates_parent_dir ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_schema ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_creates_two_tables ... ok
[INFO] [stdout] test stats::tests::test_run_stats_rejects_invalid_from ... ok
[INFO] [stdout] test stats::tests::test_run_stats_skips_parse_errors ... ok
[INFO] [stdout] test stats::tests::test_run_stats_propagates_no_files_found ... ok
[INFO] [stdout] test stats::tests::test_run_stats_csv_mode_selected_when_only_csv_configured ... ok
[INFO] [stdout] test stats::tests::test_run_stats_rejects_invalid_to ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_drop_recreates ... ok
[INFO] [stdout] test cli::watch::tests::test_handle_watch_returns_interrupted ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_large_files_cap_jobs_below_requested ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 413 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 27.48s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/sqllog2db-0f6ef3c5803745ea)
[INFO] [stdout] 
[INFO] [stdout] running 444 tests
[INFO] [stdout] test cli::init::tests::test_apply_csv_default ... ok
[INFO] [stdout] test cli::init::tests::test_apply_sqlite ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_empty_trxid_sentinel_rejects_all_records ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_debug_format ... ok
[INFO] [stdout] test cli::init::tests::test_apply_does_not_corrupt_logging_file ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_sqlite_path ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_invalid_format_three_times_returns_err ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_veto_wins_over_include ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_all_defaults ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_custom_csv_path ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_tag_none_retained ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_and_semantics_between_fields ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_sqlite_defaults ... ok
[INFO] [stdout] test cli::init::tests::test_wizard_writer_receives_prompts ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_or_veto_any_hit_drops ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_exclude_drops_matching_record ... ok
[INFO] [stdout] test cli::init::tests::test_apply_csv_custom ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_app_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_session_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_statement_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_tag_none_rejected ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_thread_filter ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_username_or_semantics ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_username_passes_matching ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_no_filters_passes_all ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_nonempty_trxid_set_filters_correctly ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_include_trxid_and_semantics ... ok
[INFO] [stdout] test cli::run::filter_processor::tests::test_timestamp_range_filter ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_exec_ids_multiple ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_empty_returns_empty ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_single_huge_file_falls_back_to_one_job_not_zero ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_min_row_count_positive ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_missing_files_are_ignored_and_default_to_requested_jobs ... ok
[INFO] [stdout] test cli::run::tests::test_build_indicator_filters_min_row_count_zero ... ok
[INFO] [stdout] test cli::run::tests::test_build_sql_exclude_filters_multiple_returns_correct_count ... ok
[INFO] [stdout] test cli::run::tests::test_build_sql_exclude_filters_none_returns_empty ... ok
[INFO] [stdout] test cli::run::tests::test_build_sql_include_filters_multiple ... ok
[INFO] [stdout] test cli::init::tests::test_apply_output_parses_as_config_sqlite ... ok
[INFO] [stdout] test cli::run::tests::test_hint_output ... ok
[INFO] [stdout] test cli::init::tests::test_apply_output_parses_as_config_csv ... ok
[INFO] [stdout] test cli::run::tests::test_normalize_and_export_quota_hit_returns_break_quota ... ok
[INFO] [stdout] test cli::run::tests::test_progress_bar_disabled ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_small_files_keep_requested_jobs ... ok
[INFO] [stdout] test cli::run::tests::test_run_summary ... ok
[INFO] [stdout] test cli::run::memory_budget::tests::test_requested_jobs_of_one_is_unaffected ... ok
[INFO] [stdout] test cli::run::tests::test_progress_bar_template ... ok
[INFO] [stdout] test cli::run::tests::test_write_error_log_run_still_truncates ... ok
[INFO] [stdout] test cli::run::tests::test_write_error_log_watch_appends ... ok
[INFO] [stdout] test cli::run::tests::test_normalize_and_export_filtered_params_updates_buffer ... ok
[INFO] [stdout] test cli::run::tests::test_collector_invalid_path_returns_error ... ok
[INFO] [stdout] test cli::run::tests::test_filter_path ... ok
[INFO] [stdout] test cli::run::tests::test_error_log_written ... ok
[INFO] [stdout] test cli::run::tests::test_collector_not_needed_filtering ... ok
[INFO] [stdout] test cli::stats::tests::test_merge_stats_options_cli_top_priority ... ok
[INFO] [stdout] test cli::run::tests::test_parallel_merge_consistent ... ok
[INFO] [stdout] test cli::stats::tests::test_merge_stats_options_config_top_fallback ... ok
[INFO] [stdout] test cli::stats::tests::test_merge_stats_options_default_fallback ... ok
[INFO] [stdout] test cli::run::tests::test_collector_filtered_params_normalize ... ok
[INFO] [stdout] test cli::run::tests::test_min_row_count_zero_matches_all_records ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_load_offsets_missing_table_returns_empty ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_cli_top_overrides_config_top ... ok
[INFO] [stdout] test cli::run::tests::test_collector_interrupted_returns_empty ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_load_offsets_filters_negative ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_ensure_offset_table_idempotent ... ok
[INFO] [stdout] test cli::run::tests::test_handle_run_default_config_succeeds ... ok
[INFO] [stdout] test cli::watch::tests::test_format_elapsed_hms_zero ... ok
[INFO] [stdout] test cli::watch::tests::test_collect_watch_dirs_existing_dir_returns_itself ... ok
[INFO] [stdout] test cli::watch::tests::test_collect_watch_dirs_nonexistent_glob_returns_empty ... ok
[INFO] [stdout] test cli::watch::tests::test_format_elapsed_hms_3661_seconds ... ok
[INFO] [stdout] test cli::watch::tests::test_render_active_status_includes_human_duration ... ok
[INFO] [stdout] test cli::watch::tests::test_read_bytes_to_tempfile_reads_from_offset ... ok
[INFO] [stdout] test cli::watch::tests::test_should_trigger_first_call_admits_and_records ... ok
[INFO] [stdout] test cli::watch::tests::test_should_trigger_isolates_distinct_paths ... ok
[INFO] [stdout] test cli::watch::tests::test_should_trigger_within_window_rejects ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_config_top_used_when_cli_none ... ok
[INFO] [stdout] test cli::watch::tests::test_read_bytes_to_tempfile_at_eof_produces_empty ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_cli_none_config_none_falls_back_to_20 ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_top_default_passes ... ok
[INFO] [stdout] test cli::run::tests::test_collector_parse_error_accumulation ... ok
[INFO] [stdout] test cli::run::tests::test_include_performance_metrics_false_csv_excludes_pm_columns ... ok
[INFO] [stdout] test cli::run::tests::test_scan_for_trxids_by_transaction_filters_dedup_across_files ... ok
[INFO] [stdout] test config::exporter::tests::test_validate_accepts_boundaries ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_save_and_load_offset_roundtrip ... ok
[INFO] [stdout] test config::sqllog::tests::test_default_inputs_is_sqllogs ... ok
[INFO] [stdout] test config::exporter::tests::test_validate_rejects_zero ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_loop_state_new_with_offsets ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_loop_state_new_without_sqlite ... ok
[INFO] [stdout] test config::exporter::tests::test_default_multi_row_batch_size ... ok
[INFO] [stdout] test config::exporter::tests::test_validate_rejects_over_64 ... ok
[INFO] [stdout] test cli::stats::tests::test_handle_stats_top_nonzero_passes ... ok
[INFO] [stdout] test config::sqllog::tests::test_validate_rejects_empty_inputs ... ok
[INFO] [stdout] test config::sqllog::tests::test_validate_rejects_legacy_path_key ... ok
[INFO] [stdout] test config::tests::test_config_has_3_top_level_optional_fields ... ok
[INFO] [stdout] test config::sqllog::tests::test_validate_rejects_whitespace_entry ... ok
[INFO] [stdout] test config::tests::test_config_missing_stats_section_defaults_to_none ... ok
[INFO] [stdout] test config::tests::test_config_default_stats_all_none ... ok
[INFO] [stdout] test cli::watch::tests::test_interrupted_flag_exits_immediately ... ok
[INFO] [stdout] test cli::watch::offsets::tests::test_save_offset_replaces_existing ... ok
[INFO] [stdout] test config::tests::test_csv_exporter_default_include_performance_metrics_true ... ok
[INFO] [stdout] test config::tests::test_default_logging_config_values ... ok
[INFO] [stdout] test config::tests::test_config_parses_stats_section ... ok
[INFO] [stdout] test config::tests::test_exporter_config_default_no_sqlite ... ok
[INFO] [stdout] test config::tests::test_csv_toml_default_include_performance_metrics ... ok
[INFO] [stdout] test config::tests::test_default_sqlite_exporter_values ... ok
[INFO] [stdout] test config::tests::test_exporter_config_has_any_csv ... ok
[INFO] [stdout] test config::tests::test_from_file_not_found ... ok
[INFO] [stdout] test config::tests::test_from_file_invalid_toml_returns_error ... ok
[INFO] [stdout] test config::validate::tests::test_validate_accepts_none_stats_time ... ok
[INFO] [stdout] test config::validate::tests::test_validate_accepts_valid_stats_time_strings ... ok
[INFO] [stdout] test config::validate::tests::test_validate_default_config_passes ... ok
[INFO] [stdout] test config::tests::test_from_file_valid_toml ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_csv_file ... ok
[INFO] [stdout] test config::validate::tests::test_validate_new_nested_format_passes ... ok
[INFO] [stdout] test cli::watch::tests::test_trigger_incremental_skips_if_no_new_bytes ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_logging_file ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_sqlite_database_url ... ok
[INFO] [stdout] test config::validate::tests::test_validate_empty_sqlite_table_name ... ok
[INFO] [stdout] test config::validate::tests::test_validate_invalid_log_level ... ok
[INFO] [stdout] test config::validate::tests::test_validate_new_top_level_format_passes ... ok
[INFO] [stdout] test config::validate::tests::test_validate_no_exporters ... ok
[INFO] [stdout] test cli::watch::tests::test_trigger_incremental_first_seen_records_baseline ... ok
[INFO] [stdout] test config::validate::tests::test_validate_output_fields_unknown_field_rejected ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_invalid_stats_from ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_invalid_stats_to ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_error_log_append ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_whitespace_input_entry ... ok
[INFO] [stdout] test config::validate::tests::test_validate_rejects_legacy_sqllog_path_key ... ok
[INFO] [stdout] test cli::watch::tests::test_watch_csv_append ... ok
[INFO] [stdout] test config::validate::tests::test_validate_retention_days_over_365 ... ok
[INFO] [stdout] test config::validate::tests::test_validate_retention_days_zero ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_leading_digit ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_quote ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_non_ascii ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_valid_simple ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_space ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_rejects_special_char ... ok
[INFO] [stdout] test error::tests::test_classify_error_kind ... ok
[INFO] [stdout] test error::tests::test_config_invalid_log_level_suggestion ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_valid_underscore_prefix ... ok
[INFO] [stdout] test error::tests::test_config_invalid_value_suggestion ... ok
[INFO] [stdout] test error::tests::test_config_no_exporters_suggestion ... ok
[INFO] [stdout] test error::tests::test_config_not_found_is_fatal_critical_suggestion ... ok
[INFO] [stdout] test error::tests::test_config_parse_failed_suggestion_mentions_toml ... ok
[INFO] [stdout] test error::tests::test_error_stats_add_and_count ... ok
[INFO] [stdout] test error::tests::test_error_severity_display_strings ... ok
[INFO] [stdout] test error::tests::test_error_stats_by_type_merge ... ok
[INFO] [stdout] test error::tests::test_error_stats_default_has_no_errors ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_accumulates_counts ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_first_fatal_wins ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_propagates_fatal_when_base_has_none ... ok
[INFO] [stdout] test error::tests::test_error_stats_set_fatal_and_has_fatal ... ok
[INFO] [stdout] test error::tests::test_export_database_failed_is_fatal_critical ... ok
[INFO] [stdout] test error::tests::test_error_stats_merge_propagates_filtered_and_records ... ok
[INFO] [stdout] test error::tests::test_file_already_exists_is_fatal ... ok
[INFO] [stdout] test error::tests::test_export_write_failed_not_fatal_error_severity ... ok
[INFO] [stdout] test error::tests::test_file_create_directory_failed_is_fatal ... ok
[INFO] [stdout] test error::tests::test_file_write_failed_not_fatal_error_severity ... ok
[INFO] [stdout] test error::tests::test_interrupted_is_fatal_critical ... ok
[INFO] [stdout] test error::tests::test_io_error_is_fatal_critical ... ok
[INFO] [stdout] test error::tests::test_no_files_found_not_fatal ... ok
[INFO] [stdout] test error::tests::test_no_files_found_display_contains_inputs ... ok
[INFO] [stdout] test error::tests::test_parser_read_dir_failed_is_fatal ... ok
[INFO] [stdout] test error::tests::test_parser_path_not_found_suggestion ... ok
[INFO] [stdout] test error::tests::test_truncate_to_120_chars ... ok
[INFO] [stdout] test error::tests::test_no_files_found_suggestion_non_empty ... ok
[INFO] [stdout] test error::tests::test_parser_invalid_path_suggestion ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_debug_format ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_default_include_pm_true_keeps_existing_behavior ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_data_row_skips_pm_when_disabled ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_empty_export_is_noop ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_append_mode ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_skips_pm_when_disabled ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_no_normalize ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_basic_export ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_statement_appname_client_ip_tag ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_from_config ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_all_zero_metrics_outputs_empty_columns ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_export_method ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_no_normalized_sql_when_normalize_false ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_field_order ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_field_order ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_field_order_normalized_sql_skipped_when_normalize_false ... ok
[INFO] [stdout] test config::validate::tests::test_validate_sqlite_table_name_valid_with_digits ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_subset_emits_only_requested_columns ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_with_normalize_idx_14 ... ok
[INFO] [stdout] test cli::run::tests::test_sqlite_parallel_matches_sequential ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_reserve_boundary_long_sql ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_zero_metrics_skips_idx_11_12_13 ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_header_full_order ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_reserve_boundary_short_sql ... ok
[INFO] [stdout] test exporter::csv::tests::test_write_csv_escaped_no_quotes ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_export_with_normalized ... ok
[INFO] [stdout] test exporter::csv::tests::test_write_csv_escaped_with_quotes ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_multi_row_insert_sql_single_row ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_multi_row_insert_sql_basic ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_multi_row_insert_sql_64_rows ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_stats_snapshot ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_insert_sql_full_fast_path ... ok
[INFO] [stdout] test exporter::projection::tests::test_projected_field_names_full ... ok
[INFO] [stdout] test exporter::projection::tests::test_projected_field_names_subset ... ok
[INFO] [stdout] test exporter::projection::tests::test_projected_field_names_order_preserved ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_create_sql_ordered ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_one_normalized_without_initialize_returns_err ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_debug_format ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_without_initialize_returns_err ... ok
[INFO] [stdout] test exporter::csv::tests::test_csv_projection_with_normalize_none_emits_empty_idx_14 ... ok
[INFO] [stdout] test exporter::sqlite::sql_builder::tests::test_build_insert_sql_ordered ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_silent_when_table_missing ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_one_preparsed ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_field_order ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_export_method ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_creates_quoted_table ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_empty_input ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_batch_commit ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_from_config ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_batch1_equals_single ... ok
[INFO] [stdout] test exporter::tests::test_ensure_parent_dir_creates_new ... ok
[INFO] [stdout] test exporter::tests::test_ensure_parent_dir_existing ... ok
[INFO] [stdout] test exporter::tests::test_export_stats_default ... ok
[INFO] [stdout] test exporter::tests::test_export_stats_record_success ... ok
[INFO] [stdout] test exporter::tests::test_export_stats_total_includes_all ... ok
[INFO] [stdout] test exporter::tests::test_exporter_manager_debug_format ... ok
[INFO] [stdout] test exporter::tests::test_exporter_manager_log_stats_no_panic ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_large_positive ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_nan ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_neg_infinity ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_negative ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_normal ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_basic ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_projection_subset_export ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_pos_infinity ... ok
[INFO] [stdout] test exporter::tests::test_f32_ms_to_i64_zero ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_succeeds_and_creates_db ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_basic_export ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_stats_snapshot ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_batch_commit_interaction ... ok
[INFO] [stdout] test exporter::tests::test_from_config_sqlite_path ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_colon_non_ffff ... ok
[INFO] [stdout] test exporter::tests::test_from_csv_constructor ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_no_prefix ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_with_prefix ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_initialize_clears_existing_table_via_delete ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_empty ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_ipv6 ... ok
[INFO] [stdout] test exporter::tests::test_from_config_no_exporters_error ... ok
[INFO] [stdout] test logging::tests::test_parse_log_level_all ... ok
[INFO] [stdout] test logging::tests::test_init_logging_with_stdout ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db::parser - No .log files found in directory /tmp/.tmpcXYUcY
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_append_mode ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db::parser - No .log files matched glob pattern: /tmp/.tmpOEvN5O/nomatch*.log
[INFO] [stdout] test logging::tests::test_init_logging_all_valid_levels ... ok
[INFO] [stdout] test logging::tests::test_init_logging_creates_parent_dir ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_with_normalized ... ok
[INFO] [stdout] test parser::tests::test_log_files_empty_directory ... ok
[INFO] [stdout] test logging::tests::test_parse_log_level_uppercase ... ok
[INFO] [stdout] test parser::tests::test_log_files_glob_no_match ... ok
[INFO] [stdout] test logging::tests::test_init_logging_invalid_level_returns_error ... ok
[INFO] [stdout] test parser::tests::test_log_files_glob_pattern ... ok
[INFO] [stdout] test parser::tests::test_log_files_ignores_non_log_files ... ok
[INFO] [stdout] test logging::tests::test_init_logging_valid_level_info ... ok
[INFO] [stdout] test parser::tests::test_log_files_invalid_glob_pattern ... ok
[INFO] [stdout] test exporter::tests::test_strip_ip_prefix_uppercase ... ok
[INFO] [stdout] test logging::tests::test_parse_log_level_invalid ... ok
[INFO] [stdout] test parser::tests::test_log_files_multi_input_merge_and_dedup ... ok
[INFO] [stdout] test parser::tests::test_log_files_multi_input_mixes_file_dir_glob ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_projection_equivalence ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_overwrite_drops_existing_table ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_disabled_returns_false ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_empty ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_with_indicator ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_disabled ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_no_indicators ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_has_filters_empty ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_with_exec_ids ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_matches_min_row_count ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_matches_min_runtime ... ok
[INFO] [stdout] test exporter::sqlite::tests::test_sqlite_multi_row_partial_tail ... ok
[INFO] [stdout] test parser::tests::test_log_files_sorted ... ok
[INFO] [stdout] test parser::tests::test_log_files_single_file ... ok
[INFO] [stdout] test parser::tests::test_log_files_with_log_file ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_no_filters_always_false ... ok
[INFO] [stdout] test pipeline::filters::tests::test_merge_found_trxids_adds_to_set ... ok
[INFO] [stdout] test pipeline::filters::tests::test_merge_found_trxids_empty_list_initializes_sentinel ... ok
[INFO] [stdout] test parser::tests::test_log_files_nonexistent_path ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_ips ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_apps ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_sessions ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_tags ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exclude_filters_has_filters_with_threads ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_sessions ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_apps ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_threads ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_ips ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_legacy_flat_all_include_fields_mapped ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exec_ids_deserialized_to_hashset ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db::pipeline::filters::types - [filter] contains both a `[filter.exclude]` sub-table and legacy flat exclude fields (e.g. `exclude_usernames`). The sub-table takes priority; flat fields are ignored. Remove the legacy keys to suppress this warning.
[INFO] [stdout] test pipeline::filters::types::tests::test_mixed_format_exclude_new_table_priority ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_excludes_only_returns_true ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_none_both_returns_false ... [2026-07-10 02:54:17][WARN] sqllog2db::pipeline::filters::types - [filter] contains both a `[filter.include]` sub-table and legacy flat fields (e.g. `usernames`). The sub-table takes priority; flat fields are ignored. Remove the legacy keys to suppress this warning.
[INFO] [stdout] ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_includes_only_returns_true ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_legacy_flat_usernames_mapped_to_include_users ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_mixed_format_new_table_takes_priority ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_sql_filters_has_filters_some_empty_vec_returns_false ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_trxids_absent_returns_none ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_trxids_deserialized_to_hashset ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_with_username ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_trxids_empty_list_normalizes_to_none ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_transaction_filters_with_min_runtime ... ok
[INFO] [stdout] test pipeline::filters::tests::test_indicator_matches_exec_id ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_colon_style_basic ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exec_ids_absent_returns_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_colon_style_out_of_order ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_include_filters_has_filters_with_tags ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_null_param ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_numeric_param ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_exec_ids_empty_list_normalizes_to_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_multiple_params ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_escaped_quote_in_literal ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_insert_with_function ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_single_string_param ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_skip_literal_contents ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_empty_params_returns_sql_unchanged ... ok
[INFO] [stdout] test pipeline::filters::tests::test_has_filters_with_start_ts ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_chinese_in_param ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_unclosed_string_literal ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_no_placeholders ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_compute_normalized_nested_lookup_missing_statement ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_escaped_quote ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_colon ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_colon_not_followed_by_digit ... ok
[INFO] [stdout] test pipeline::filters::types::tests::test_legacy_flat_exclude_usernames_mapped ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_apply_params_with_string_literal_verbatim_copy ... ok
[INFO] [stdout] test cli::watch::tests::test_handle_watch_returns_interrupted ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_question ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_mixed_types ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_quoted_with_escaped_quote ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_field_mask_default ... ok
[INFO] [stdout] test pipeline::tests::test_default_true_via_serde ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_ordered_indices_empty_equals_all ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_ordered_indices_none_returns_all ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_field_mask_with_names ... ok
[INFO] [stdout] test pipeline::tests::test_output_config_ordered_indices_preserves_user_order ... ok
[INFO] [stdout] test pipeline::tests::test_pipeline_add ... ok
[INFO] [stdout] test pipeline::tests::test_pipeline_empty ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_none ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_auto ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_unclosed_string ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_both_is_auto ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_blob_empty ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db::parser - No .log files matched glob pattern: /tmp/.tmpKcDyCL/nomatch*.log
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db::parser - No .log files found in directory /tmp/.tmplcAJbX
[INFO] [stdout] test pipeline::tests::test_placeholder_override_colon ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_invalid_returns_none ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_parse_single_varchar ... ok
[INFO] [stdout] test pipeline::tests::test_normalize_config_default ... ok
[INFO] [stdout] test pipeline::tests::test_placeholder_override_question ... ok
[INFO] [stdout] test preflight::tests::test_check_csv_output_in_existing_dir ... ok
[INFO] [stdout] test preflight::tests::test_preflight_result_no_errors ... ok
[INFO] [stdout] test preflight::tests::test_preflight_result_with_errors ... ok
[INFO] [stdout] test preflight::tests::test_preflight_result_warnings_no_error ... ok
[INFO] [stdout] test pipeline::tests::test_process_with_meta_default_delegates_to_process ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_both_from_and_to_excludes_outside_records ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_from_only_excludes_earlier_records ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_to_only_excludes_later_records ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_none_behavior_unchanged ... ok
[INFO] [stdout] test preflight::tests::test_check_csv_existing_writable_file ... ok
[INFO] [stdout] test pipeline::normalizer::tests::test_count_placeholders_skips_literals ... ok
[INFO] [stdout] test stats::aggregate::tests::test_filter_ts_too_short_treated_as_out_of_range ... ok
[INFO] [stdout] test stats::aggregate::tests::test_frequent_sql_aggregation ... ok
[INFO] [stdout] test stats::aggregate::tests::test_into_results_when_records_fewer_than_top_n ... ok
[INFO] [stdout] test stats::aggregate::tests::test_frequent_sql_top_n_limit_and_sort ... ok
[INFO] [stdout] test stats::aggregate::tests::test_non_ora_records_are_skipped ... ok
[INFO] [stdout] test stats::aggregate::tests::test_slow_entry_total_cmp_handles_equal_elapsed ... ok
[INFO] [stdout] test stats::aggregate::tests::test_slow_sql_includes_zero_and_negative_elapsed ... ok
[INFO] [stdout] test stats::aggregate::tests::test_slow_sql_top_n_limit ... ok
[INFO] [stdout] test preflight::tests::test_check_nonexistent_log_dir_produces_error ... ok
[INFO] [stdout] test stats::config::tests::test_stats_config_default_all_none ... ok
[INFO] [stdout] test stats::config::tests::test_stats_config_deserialize_empty_toml ... ok
[INFO] [stdout] test stats::config::tests::test_stats_config_deserialize_partial_toml ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_datetime_from_with_date_to ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_equal_from_to ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_from_only ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_accepts_ordered ... ok
[INFO] [stdout] test stats::config::tests::test_validate_stats_time_range_rejects_from_after_to ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_accepts_date_only ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_accepts_datetime ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_accepts_feb_29 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_apr_31 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_day_32 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_day_zero ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_empty ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_no_separator ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_not_a_date ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_second_60 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_feb_31 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_hour_24 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_minute_60 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_month_13 ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_month_zero ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_short_date ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_slash_separator ... ok
[INFO] [stdout] test stats::config::tests::test_validate_time_str_rejects_t_separator ... ok
[INFO] [stdout] test stats::normalize::tests::test_basic_where_number_and_string ... ok
[INFO] [stdout] test stats::normalize::tests::test_multiple_numeric_literals ... ok
[INFO] [stdout] test stats::normalize::tests::test_no_literals_unchanged ... ok
[INFO] [stdout] test stats::normalize::tests::test_unclosed_string_does_not_panic ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_creates_parent_dir ... ok
[INFO] [stdout] test stats::normalize::tests::test_escaped_quote_in_string ... ok
[INFO] [stdout] test stats::normalize::tests::test_identifier_with_digits_not_replaced ... ok
[INFO] [stdout] test stats::normalize::tests::test_insert_multiple_columns_with_float ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_creates_two_files ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_escapes_double_quotes ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_empty_rows ... ok
[INFO] [stdout] test stats::output::tests::test_write_csv_stats_headers_and_rows ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db - --input provided but empty; using config inputs
[INFO] [stdout] test tests::test_apply_cli_inputs_empty_vec_keeps_config ... ok
[INFO] [stdout] test tests::test_apply_cli_inputs_none_keeps_config ... ok
[INFO] [stdout] test tests::test_apply_cli_inputs_some_replaces ... ok
[INFO] [stdout] test tests::test_apply_verbosity_not_quiet ... ok
[INFO] [stdout] test tests::test_apply_verbosity_quiet ... ok
[INFO] [stdout] test tests::test_apply_verbosity_verbose_sets_debug ... ok
[INFO] [stdout] test tests::test_error_io_suggestion_non_empty ... ok
[INFO] [stdout] test tests::test_error_is_fatal_for_config ... ok
[INFO] [stdout] test tests::test_error_is_fatal_for_parse_error ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_creates_two_tables ... ok
[INFO] [stdout] test tests::test_error_suggestion_for_config_not_found ... ok
[INFO] [stdout] test tests::test_error_suggestion_for_config_parse_failed ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_creates_parent_dir ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db::parser - No .log files found in directory /tmp/.tmpmjHDxD/empty
[INFO] [stdout] test tests::test_exit_code_clean ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_schema ... ok
[INFO] [stdout] test tests::test_exit_code_fatal_error ... ok
[INFO] [stdout] test tests::test_exit_code_partial_errors ... ok
[INFO] [stdout] test tests::test_format_error_output_config_parse_failed_is_critical ... ok
[INFO] [stdout] test tests::test_load_config_invalid_toml_returns_error ... ok
[INFO] [stdout] [2026-07-10 02:54:17][WARN] sqllog2db - Configuration file not found: /nonexistent/path/config.toml, using default configuration
[INFO] [stdout] test tests::test_load_config_not_found_returns_default ... ok
[INFO] [stdout] test stats::tests::test_run_stats_rejects_invalid_to ... ok
[INFO] [stdout] test tests::test_error_print_format_uses_hint_prefix ... ok
[INFO] [stdout] test tests::test_error_suggestion_for_export_write_failed ... ok
[INFO] [stdout] test stats::tests::test_run_stats_propagates_no_files_found ... ok
[INFO] [stdout] test stats::output::tests::test_write_sqlite_stats_drop_recreates ... ok
[INFO] [stdout] test tests::test_interrupted_matches_guard_is_true ... ok
[INFO] [stdout] test stats::tests::test_run_stats_skips_parse_errors ... ok
[INFO] [stdout] test stats::tests::test_run_stats_rejects_invalid_from ... ok
[INFO] [stdout] test stats::tests::test_run_stats_csv_mode_selected_when_only_csv_configured ... ok
[INFO] [stdout] test preflight::tests::test_check_glob_pattern_with_matches ... FAILED
[INFO] [stdout] test preflight::tests::test_check_glob_pattern_no_matches_produces_warning ... FAILED
[INFO] [stdout] test preflight::tests::test_check_log_dir_empty_produces_warning ... FAILED
[INFO] [stdout] test preflight::tests::test_check_log_dir_with_log_files_no_warning ... FAILED
[INFO] [stdout] test preflight::tests::test_check_single_log_file_is_valid ... FAILED
[INFO] [stderr] error: test failed, to rerun pass `--bin sqllog2db`
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/target/debug/deps/sqllog2db-0f6ef3c5803745ea` (signal: 9, SIGKILL: kill)
[INFO] running `Command { std: "docker" "inspect" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d", kill_on_drop: false }`
[INFO] [stdout] 4bfbec8beb9ef9243ad3c0789c4332f5d54b7b071be6ec4dc9d2f80fac039b1d
