[INFO] cloning repository https://github.com/srcountrochester/krust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/srcountrochester/krust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsrcountrochester%2Fkrust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsrcountrochester%2Fkrust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cfe952c9db980ae15d5ab59719616bac2f3362b7 [INFO] testing srcountrochester/krust against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsrcountrochester%2Fkrust" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/srcountrochester/krust [INFO] finished tweaking git repo https://github.com/srcountrochester/krust [INFO] tweaked toml for git repo https://github.com/srcountrochester/krust written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/srcountrochester/krust on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/srcountrochester/krust 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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded url v2.5.6 [INFO] [stderr] Downloaded sqlparser v0.58.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] cb38bdd7704548a20f6b635d06184aeb88633b3ffa9f3559f106b12de313e917 [INFO] running `Command { std: "docker" "start" "-a" "cb38bdd7704548a20f6b635d06184aeb88633b3ffa9f3559f106b12de313e917", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cb38bdd7704548a20f6b635d06184aeb88633b3ffa9f3559f106b12de313e917", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cb38bdd7704548a20f6b635d06184aeb88633b3ffa9f3559f106b12de313e917", kill_on_drop: false }` [INFO] [stdout] cb38bdd7704548a20f6b635d06184aeb88633b3ffa9f3559f106b12de313e917 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 608fc447e931534e4d30024b90112ff34499349e0a2b8d42bbfc19e4a62177fd [INFO] running `Command { std: "docker" "start" "-a" "608fc447e931534e4d30024b90112ff34499349e0a2b8d42bbfc19e4a62177fd", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.97 [INFO] [stderr] Compiling libc v0.2.175 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Compiling cc v1.2.32 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling futures-sink v0.3.31 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling rustls v0.23.31 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling slab v0.4.11 [INFO] [stderr] Compiling tracing-core v0.1.34 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling crc-catalog v2.4.0 [INFO] [stderr] Compiling crossbeam-queue v0.3.12 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling spin v0.9.8 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling crc v3.3.0 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling serde_json v1.0.143 [INFO] [stderr] Compiling flume v0.11.1 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling dotenvy v0.15.7 [INFO] [stderr] Compiling humantime v2.2.0 [INFO] [stderr] Compiling hashlink v0.10.0 [INFO] [stderr] Compiling indexmap v2.10.0 [INFO] [stderr] Compiling mio v1.0.4 [INFO] [stderr] Compiling socket2 v0.6.0 [INFO] [stderr] Compiling getrandom v0.2.16 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling psm v0.1.26 [INFO] [stderr] Compiling parking_lot v0.12.4 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling stacker v0.1.21 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling tokio v1.47.1 [INFO] [stderr] Compiling futures-intrusive v0.5.0 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling rustls-webpki v0.103.4 [INFO] [stderr] Compiling tokio-stream v0.1.17 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Compiling thiserror-impl v2.0.16 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling recursive-proc-macro-impl v0.1.1 [INFO] [stderr] Compiling recursive v0.1.1 [INFO] [stderr] Compiling sqlparser v0.58.0 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.0 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling thiserror v2.0.16 [INFO] [stderr] Compiling zerovec v0.11.4 [INFO] [stderr] Compiling zerotrie v0.2.2 [INFO] [stderr] Compiling tinystr v0.8.1 [INFO] [stderr] Compiling potential_utf v0.1.2 [INFO] [stderr] Compiling icu_collections v2.0.0 [INFO] [stderr] Compiling icu_locale_core v2.0.0 [INFO] [stderr] Compiling icu_provider v2.0.0 [INFO] [stderr] Compiling icu_properties v2.0.1 [INFO] [stderr] Compiling icu_normalizer v2.0.0 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.6 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling sqlx-core v0.8.6 [INFO] [stderr] Compiling sqlx-sqlite v0.8.6 [INFO] [stderr] Compiling sqlx-macros-core v0.8.6 [INFO] [stderr] Compiling sqlx-macros v0.8.6 [INFO] [stderr] Compiling sqlx v0.8.6 [INFO] [stderr] Compiling knux v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `OptimizeConfigBuilder` [INFO] [stdout] --> src/executor/mod.rs:24:33 [INFO] [stdout] | [INFO] [stdout] 24 | optimizer::{OptimizeConfig, OptimizeConfigBuilder}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stdout] --> src/optimizer/utils.rs:68:19 [INFO] [stdout] | [INFO] [stdout] 68 | #[cfg(not(feature = "bigdecimal"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stdout] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stdout] --> src/optimizer/utils.rs:78:15 [INFO] [stdout] | [INFO] [stdout] 78 | #[cfg(feature = "bigdecimal")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stdout] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 18 | Dialect::Postgres => format!("({}::jsonb) @> ({}::jsonb)", col, quote_sql_str(json)), [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] 19 | // MySQL: JSON_CONTAINS(left, right_json) [INFO] [stdout] 20 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 21 | // SQLite: left ⊇ right через проверку отсутствия «пробелов» в правом объекте [INFO] [stdout] 22 | Dialect::SQLite => sqlite_json_superset_sql(col, json), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 23 | // fallback: MySQL-стиль [INFO] [stdout] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | _ => format!( [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 37 | Dialect::Postgres => format!( [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 43 | Dialect::MySQL => format!( [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 49 | Dialect::SQLite => format!( [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 55 | _ => format!( [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 71 | Dialect::Postgres => format!( [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 76 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 77 | Dialect::SQLite => sqlite_json_superset_sql(left, right_json), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 90 | Dialect::Postgres => format!("({}::jsonb) <@ ({}::jsonb)", left_json, right), [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] 91 | // MySQL: subset(a,b) эквивалент JSON_CONTAINS(b, a) [INFO] [stdout] 92 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 93 | Dialect::SQLite => sqlite_json_subset_sql(left_json, right), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/delete.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/delete.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 85 | Dialect::Postgres | Dialect::SQLite => render_returning(&mut w, &d.returning, cfg), [INFO] [stdout] | ----------------------------------- matches some of the same values [INFO] [stdout] 86 | Dialect::MySQL => { /* ignore */ } [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 87 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/insert.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/insert.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 44 | Dialect::Postgres => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 81 | Dialect::SQLite => { [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 111 | Dialect::MySQL => { [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 132 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/map/utils.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | _ => Vec::new(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/map/utils.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 315 | FunctionArguments::None => Vec::new(), [INFO] [stdout] | ----------------------- matches some of the same values [INFO] [stdout] 316 | FunctionArguments::List(list) => list.args.iter().map(map_func_arg).collect(), [INFO] [stdout] | ----------------------------- matches some of the same values [INFO] [stdout] 317 | FunctionArguments::Subquery(q) => vec![R::Expr::Ident { [INFO] [stdout] | ------------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 320 | _ => Vec::new(), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `optimize_cfg` and `optimize_ast` are never used [INFO] [stdout] --> src/optimizer/mod.rs:48:19 [INFO] [stdout] | [INFO] [stdout] 26 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | pub(crate) fn optimize_cfg(&self) -> &crate::optimizer::OptimizeConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub(crate) fn optimize_ast(&self, stmt: &mut S::Statement) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `base_optimize_cfg` is never used [INFO] [stdout] --> src/optimizer/mod.rs:99:19 [INFO] [stdout] | [INFO] [stdout] 77 | impl QueryExecutor { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 99 | pub(crate) fn base_optimize_cfg(&self) -> &OptimizeConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probably_no_optimizations` is never used [INFO] [stdout] --> src/optimizer/passes.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn probably_no_optimizations(stmt: &S::Statement) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pop_pool_and_render` is never used [INFO] [stdout] --> src/query_builder/mod.rs:238:19 [INFO] [stdout] | [INFO] [stdout] 92 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stdout] | ------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 238 | pub(crate) fn pop_pool_and_render( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `collect_args` is never used [INFO] [stdout] --> src/query_builder/args.rs:228:8 [INFO] [stdout] | [INFO] [stdout] 228 | pub fn collect_args<'a, I, T>(items: I) -> Vec> [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/query_builder/distinct.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl DistinctOnNode { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 18 | #[inline] [INFO] [stdout] 19 | pub fn new(expr: SqlExpr, params: SmallVec<[Param; 8]>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `object_name_to_strings` is never used [INFO] [stdout] --> src/renderer/map/utils.rs:11:15 [INFO] [stdout] | [INFO] [stdout] 11 | pub(crate) fn object_name_to_strings(obj: &S::ObjectName) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `split_object_name` is never used [INFO] [stdout] --> src/renderer/map/utils.rs:15:15 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) fn split_object_name(obj: &ObjectName) -> (Option, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `num_value` is never used [INFO] [stdout] --> src/utils.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | pub(crate) fn num_value(n: u64) -> ValueWithSpan { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_span` is never used [INFO] [stdout] --> src/utils.rs:15:15 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) fn strip_span(val: &ValueWithSpan) -> Value { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `attach_empty_span` is never used [INFO] [stdout] --> src/utils.rs:21:15 [INFO] [stdout] | [INFO] [stdout] 21 | pub(crate) fn attach_empty_span(val: Value) -> ValueWithSpan { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `value_to_string` is never used [INFO] [stdout] --> src/utils.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | pub(crate) fn value_to_string(val: &Value) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `expr_to_string` is never used [INFO] [stdout] --> src/utils.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | pub(crate) fn expr_to_string(expr: &SqlExpr) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `object_name_from_default` is never used [INFO] [stdout] --> src/utils.rs:49:15 [INFO] [stdout] | [INFO] [stdout] 49 | pub(crate) fn object_name_from_default(default_schema: Option<&str>, table: &str) -> ObjectName { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 55.71s [INFO] running `Command { std: "docker" "inspect" "608fc447e931534e4d30024b90112ff34499349e0a2b8d42bbfc19e4a62177fd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "608fc447e931534e4d30024b90112ff34499349e0a2b8d42bbfc19e4a62177fd", kill_on_drop: false }` [INFO] [stdout] 608fc447e931534e4d30024b90112ff34499349e0a2b8d42bbfc19e4a62177fd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0d525fa7ea6de6625d069aa5cdec06389459623b1887d46d3c75841d9e1a6872 [INFO] running `Command { std: "docker" "start" "-a" "0d525fa7ea6de6625d069aa5cdec06389459623b1887d46d3c75841d9e1a6872", kill_on_drop: false }` [INFO] [stderr] Compiling getrandom v0.2.16 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling serde_json v1.0.143 [INFO] [stderr] Compiling base64ct v1.8.0 [INFO] [stderr] Compiling byteorder v1.5.0 [INFO] [stderr] Compiling unicode-properties v0.1.3 [INFO] [stderr] Compiling num-bigint-dig v0.8.4 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling bitflags v2.9.1 [INFO] [stderr] Compiling whoami v1.6.1 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling dotenvy v0.15.7 [INFO] [stderr] Compiling home v0.5.11 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling stringprep v0.1.5 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling icu_normalizer v2.0.0 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling md-5 v0.10.6 [INFO] [stderr] Compiling hkdf v0.12.4 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling parking_lot v0.12.4 [INFO] [stderr] Compiling der v0.7.10 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling futures-intrusive v0.5.0 [INFO] [stderr] Compiling url v2.5.6 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling spki v0.7.3 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling pkcs8 v0.10.2 [INFO] [stderr] Compiling pkcs1 v0.7.5 [INFO] [stderr] Compiling rustls-webpki v0.103.4 [INFO] [stderr] Compiling rsa v0.9.8 [INFO] [stderr] Compiling rustls v0.23.31 [INFO] [stderr] Compiling sqlx-core v0.8.6 [INFO] [stderr] Compiling sqlx-mysql v0.8.6 [INFO] [stderr] Compiling sqlx-postgres v0.8.6 [INFO] [stderr] Compiling sqlx-sqlite v0.8.6 [INFO] [stderr] Compiling sqlx-macros-core v0.8.6 [INFO] [stderr] Compiling sqlx-macros v0.8.6 [INFO] [stderr] Compiling sqlx v0.8.6 [INFO] [stderr] Compiling knux v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `OptimizeConfigBuilder` [INFO] [stdout] --> src/executor/mod.rs:24:33 [INFO] [stdout] | [INFO] [stdout] 24 | optimizer::{OptimizeConfig, OptimizeConfigBuilder}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stdout] --> src/optimizer/utils.rs:68:19 [INFO] [stdout] | [INFO] [stdout] 68 | #[cfg(not(feature = "bigdecimal"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stdout] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stdout] --> src/optimizer/utils.rs:78:15 [INFO] [stdout] | [INFO] [stdout] 78 | #[cfg(feature = "bigdecimal")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stdout] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OptimizeConfigBuilder` [INFO] [stdout] --> src/executor/mod.rs:24:33 [INFO] [stdout] | [INFO] [stdout] 24 | optimizer::{OptimizeConfig, OptimizeConfigBuilder}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::expression::Expression` [INFO] [stdout] --> src/expression/__tests__/expr.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::expression::Expression; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lit` [INFO] [stdout] --> src/expression/__tests__/expr.rs:2:30 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::expression::{col, lit, val}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Expression` [INFO] [stdout] --> src/expression/__tests__/aggr.rs:1:25 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::expression::{Expression, col}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Expression` [INFO] [stdout] --> src/expression/__tests__/alias.rs:1:25 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::expression::{Expression, col, val}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stdout] --> src/optimizer/utils.rs:68:19 [INFO] [stdout] | [INFO] [stdout] 68 | #[cfg(not(feature = "bigdecimal"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stdout] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stdout] --> src/optimizer/utils.rs:78:15 [INFO] [stdout] | [INFO] [stdout] 78 | #[cfg(feature = "bigdecimal")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stdout] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/optimizer/__tests__/passes.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | return panic!("ORDER BY должен быть удалён"); [INFO] [stdout] | ^^^^^^^------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/optimizer/__tests__/passes.rs:103:33 [INFO] [stdout] | [INFO] [stdout] 103 | ... return panic!("проекция должна быть из одного элемента"); [INFO] [stdout] | ^^^^^^^------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/optimizer/__tests__/passes.rs:145:25 [INFO] [stdout] | [INFO] [stdout] 145 | return panic!("ORDER BY должен быть удалён"); [INFO] [stdout] | ^^^^^^^------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/optimizer/__tests__/passes.rs:475:25 [INFO] [stdout] | [INFO] [stdout] 475 | return panic!("ORDER BY должен быть удалён"); [INFO] [stdout] | ^^^^^^^------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 18 | Dialect::Postgres => format!("({}::jsonb) @> ({}::jsonb)", col, quote_sql_str(json)), [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] 19 | // MySQL: JSON_CONTAINS(left, right_json) [INFO] [stdout] 20 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 21 | // SQLite: left ⊇ right через проверку отсутствия «пробелов» в правом объекте [INFO] [stdout] 22 | Dialect::SQLite => sqlite_json_superset_sql(col, json), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 23 | // fallback: MySQL-стиль [INFO] [stdout] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | _ => format!( [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 37 | Dialect::Postgres => format!( [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 43 | Dialect::MySQL => format!( [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 49 | Dialect::SQLite => format!( [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 55 | _ => format!( [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 71 | Dialect::Postgres => format!( [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 76 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 77 | Dialect::SQLite => sqlite_json_superset_sql(left, right_json), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 90 | Dialect::Postgres => format!("({}::jsonb) <@ ({}::jsonb)", left_json, right), [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] 91 | // MySQL: subset(a,b) эквивалент JSON_CONTAINS(b, a) [INFO] [stdout] 92 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 93 | Dialect::SQLite => sqlite_json_subset_sql(left_json, right), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/delete.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/delete.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 85 | Dialect::Postgres | Dialect::SQLite => render_returning(&mut w, &d.returning, cfg), [INFO] [stdout] | ----------------------------------- matches some of the same values [INFO] [stdout] 86 | Dialect::MySQL => { /* ignore */ } [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 87 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/insert.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/insert.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 44 | Dialect::Postgres => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 81 | Dialect::SQLite => { [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 111 | Dialect::MySQL => { [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 132 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/map/utils.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | _ => Vec::new(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/map/utils.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 315 | FunctionArguments::None => Vec::new(), [INFO] [stdout] | ----------------------- matches some of the same values [INFO] [stdout] 316 | FunctionArguments::List(list) => list.args.iter().map(map_func_arg).collect(), [INFO] [stdout] | ----------------------------- matches some of the same values [INFO] [stdout] 317 | FunctionArguments::Subquery(q) => vec![R::Expr::Ident { [INFO] [stdout] | ------------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 320 | _ => Vec::new(), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `optimize_cfg` and `optimize_ast` are never used [INFO] [stdout] --> src/optimizer/mod.rs:48:19 [INFO] [stdout] | [INFO] [stdout] 26 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | pub(crate) fn optimize_cfg(&self) -> &crate::optimizer::OptimizeConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub(crate) fn optimize_ast(&self, stmt: &mut S::Statement) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `base_optimize_cfg` is never used [INFO] [stdout] --> src/optimizer/mod.rs:99:19 [INFO] [stdout] | [INFO] [stdout] 77 | impl QueryExecutor { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 99 | pub(crate) fn base_optimize_cfg(&self) -> &OptimizeConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probably_no_optimizations` is never used [INFO] [stdout] --> src/optimizer/passes.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn probably_no_optimizations(stmt: &S::Statement) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pop_pool_and_render` is never used [INFO] [stdout] --> src/query_builder/mod.rs:238:19 [INFO] [stdout] | [INFO] [stdout] 92 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stdout] | ------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 238 | pub(crate) fn pop_pool_and_render( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `collect_args` is never used [INFO] [stdout] --> src/query_builder/args.rs:228:8 [INFO] [stdout] | [INFO] [stdout] 228 | pub fn collect_args<'a, I, T>(items: I) -> Vec> [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/query_builder/distinct.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl DistinctOnNode { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 18 | #[inline] [INFO] [stdout] 19 | pub fn new(expr: SqlExpr, params: SmallVec<[Param; 8]>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `object_name_to_strings` is never used [INFO] [stdout] --> src/renderer/map/utils.rs:11:15 [INFO] [stdout] | [INFO] [stdout] 11 | pub(crate) fn object_name_to_strings(obj: &S::ObjectName) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `split_object_name` is never used [INFO] [stdout] --> src/renderer/map/utils.rs:15:15 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) fn split_object_name(obj: &ObjectName) -> (Option, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `num_value` is never used [INFO] [stdout] --> src/utils.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | pub(crate) fn num_value(n: u64) -> ValueWithSpan { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_span` is never used [INFO] [stdout] --> src/utils.rs:15:15 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) fn strip_span(val: &ValueWithSpan) -> Value { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `attach_empty_span` is never used [INFO] [stdout] --> src/utils.rs:21:15 [INFO] [stdout] | [INFO] [stdout] 21 | pub(crate) fn attach_empty_span(val: Value) -> ValueWithSpan { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `value_to_string` is never used [INFO] [stdout] --> src/utils.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | pub(crate) fn value_to_string(val: &Value) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `expr_to_string` is never used [INFO] [stdout] --> src/utils.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | pub(crate) fn expr_to_string(expr: &SqlExpr) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `object_name_from_default` is never used [INFO] [stdout] --> src/utils.rs:49:15 [INFO] [stdout] | [INFO] [stdout] 49 | pub(crate) fn object_name_from_default(default_schema: Option<&str>, table: &str) -> ObjectName { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 18 | Dialect::Postgres => format!("({}::jsonb) @> ({}::jsonb)", col, quote_sql_str(json)), [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] 19 | // MySQL: JSON_CONTAINS(left, right_json) [INFO] [stdout] 20 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 21 | // SQLite: left ⊇ right через проверку отсутствия «пробелов» в правом объекте [INFO] [stdout] 22 | Dialect::SQLite => sqlite_json_superset_sql(col, json), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 23 | // fallback: MySQL-стиль [INFO] [stdout] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | _ => format!( [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 37 | Dialect::Postgres => format!( [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 43 | Dialect::MySQL => format!( [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 49 | Dialect::SQLite => format!( [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 55 | _ => format!( [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 71 | Dialect::Postgres => format!( [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 76 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 77 | Dialect::SQLite => sqlite_json_superset_sql(left, right_json), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 90 | Dialect::Postgres => format!("({}::jsonb) <@ ({}::jsonb)", left_json, right), [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] 91 | // MySQL: subset(a,b) эквивалент JSON_CONTAINS(b, a) [INFO] [stdout] 92 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 93 | Dialect::SQLite => sqlite_json_subset_sql(left_json, right), [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/delete.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/delete.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 85 | Dialect::Postgres | Dialect::SQLite => render_returning(&mut w, &d.returning, cfg), [INFO] [stdout] | ----------------------------------- matches some of the same values [INFO] [stdout] 86 | Dialect::MySQL => { /* ignore */ } [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] 87 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/insert.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/insert.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 44 | Dialect::Postgres => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 81 | Dialect::SQLite => { [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 111 | Dialect::MySQL => { [INFO] [stdout] | -------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 132 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/renderer/map/utils.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | _ => Vec::new(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/renderer/map/utils.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 315 | FunctionArguments::None => Vec::new(), [INFO] [stdout] | ----------------------- matches some of the same values [INFO] [stdout] 316 | FunctionArguments::List(list) => list.args.iter().map(map_func_arg).collect(), [INFO] [stdout] | ----------------------------- matches some of the same values [INFO] [stdout] 317 | FunctionArguments::Subquery(q) => vec![R::Expr::Ident { [INFO] [stdout] | ------------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 320 | _ => Vec::new(), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/tests/dialect_test_helpers.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn ph(n: usize) -> String { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_eq` is never used [INFO] [stdout] --> src/expression/__tests__/join_on.rs:5:4 [INFO] [stdout] | [INFO] [stdout] 5 | fn is_eq(lhs: &SqlExpr, rhs: &SqlExpr, node: &SqlExpr) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_and` is never used [INFO] [stdout] --> src/expression/__tests__/join_on.rs:14:4 [INFO] [stdout] | [INFO] [stdout] 14 | fn is_and(a: &SqlExpr, b: &SqlExpr, node: &SqlExpr) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_or` is never used [INFO] [stdout] --> src/expression/__tests__/join_on.rs:23:4 [INFO] [stdout] | [INFO] [stdout] 23 | fn is_or(a: &SqlExpr, b: &SqlExpr, node: &SqlExpr) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `optimize_cfg` and `optimize_ast` are never used [INFO] [stdout] --> src/optimizer/mod.rs:48:19 [INFO] [stdout] | [INFO] [stdout] 26 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | pub(crate) fn optimize_cfg(&self) -> &crate::optimizer::OptimizeConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub(crate) fn optimize_ast(&self, stmt: &mut S::Statement) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `base_optimize_cfg` is never used [INFO] [stdout] --> src/optimizer/mod.rs:99:19 [INFO] [stdout] | [INFO] [stdout] 77 | impl QueryExecutor { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 99 | pub(crate) fn base_optimize_cfg(&self) -> &OptimizeConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probably_no_optimizations` is never used [INFO] [stdout] --> src/optimizer/passes.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn probably_no_optimizations(stmt: &S::Statement) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pop_pool_and_render` is never used [INFO] [stdout] --> src/query_builder/mod.rs:238:19 [INFO] [stdout] | [INFO] [stdout] 92 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stdout] | ------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 238 | pub(crate) fn pop_pool_and_render( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/query_builder/distinct.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl DistinctOnNode { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 18 | #[inline] [INFO] [stdout] 19 | pub fn new(expr: SqlExpr, params: SmallVec<[Param; 8]>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 00s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "0d525fa7ea6de6625d069aa5cdec06389459623b1887d46d3c75841d9e1a6872", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0d525fa7ea6de6625d069aa5cdec06389459623b1887d46d3c75841d9e1a6872", kill_on_drop: false }` [INFO] [stdout] 0d525fa7ea6de6625d069aa5cdec06389459623b1887d46d3c75841d9e1a6872 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 22381d148682f16f18c5ab7a9ea720b24dd839153bd8cd0374ecf0ad6fd5021c [INFO] running `Command { std: "docker" "start" "-a" "22381d148682f16f18c5ab7a9ea720b24dd839153bd8cd0374ecf0ad6fd5021c", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `OptimizeConfigBuilder` [INFO] [stderr] --> src/executor/mod.rs:24:33 [INFO] [stderr] | [INFO] [stderr] 24 | optimizer::{OptimizeConfig, OptimizeConfigBuilder}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stderr] --> src/optimizer/utils.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | #[cfg(not(feature = "bigdecimal"))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stderr] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `bigdecimal` [INFO] [stderr] --> src/optimizer/utils.rs:78:15 [INFO] [stderr] | [INFO] [stderr] 78 | #[cfg(feature = "bigdecimal")] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: expected values for `feature` are: `chrono`, `default`, `mysql`, `postgres`, `rust_decimal`, `serde_json`, `sqlite`, `time`, and `uuid` [INFO] [stderr] = help: consider adding `bigdecimal` as a feature in `Cargo.toml` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 18 | Dialect::Postgres => format!("({}::jsonb) @> ({}::jsonb)", col, quote_sql_str(json)), [INFO] [stderr] | ----------------- matches some of the same values [INFO] [stderr] 19 | // MySQL: JSON_CONTAINS(left, right_json) [INFO] [stderr] 20 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stderr] | -------------- matches some of the same values [INFO] [stderr] 21 | // SQLite: left ⊇ right через проверку отсутствия «пробелов» в правом объекте [INFO] [stderr] 22 | Dialect::SQLite => sqlite_json_superset_sql(col, json), [INFO] [stderr] | --------------- matches some of the same values [INFO] [stderr] 23 | // fallback: MySQL-стиль [INFO] [stderr] 24 | _ => format!("JSON_CONTAINS({}, {})", col, quote_sql_str(json)), [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | _ => format!( [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 37 | Dialect::Postgres => format!( [INFO] [stderr] | ----------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 43 | Dialect::MySQL => format!( [INFO] [stderr] | -------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 49 | Dialect::SQLite => format!( [INFO] [stderr] | --------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 55 | _ => format!( [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 71 | Dialect::Postgres => format!( [INFO] [stderr] | ----------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 76 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stderr] | -------------- matches some of the same values [INFO] [stderr] 77 | Dialect::SQLite => sqlite_json_superset_sql(left, right_json), [INFO] [stderr] | --------------- matches some of the same values [INFO] [stderr] 78 | _ => format!("JSON_CONTAINS({}, {})", left, quote_sql_str(right_json)), [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/query_builder/where_clause/where_json.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 90 | Dialect::Postgres => format!("({}::jsonb) <@ ({}::jsonb)", left_json, right), [INFO] [stderr] | ----------------- matches some of the same values [INFO] [stderr] 91 | // MySQL: subset(a,b) эквивалент JSON_CONTAINS(b, a) [INFO] [stderr] 92 | Dialect::MySQL => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stderr] | -------------- matches some of the same values [INFO] [stderr] 93 | Dialect::SQLite => sqlite_json_subset_sql(left_json, right), [INFO] [stderr] | --------------- matches some of the same values [INFO] [stderr] 94 | _ => format!("JSON_CONTAINS({}, {})", right, quote_sql_str(left_json)), [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/renderer/delete.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | _ => {} [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/renderer/delete.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 85 | Dialect::Postgres | Dialect::SQLite => render_returning(&mut w, &d.returning, cfg), [INFO] [stderr] | ----------------------------------- matches some of the same values [INFO] [stderr] 86 | Dialect::MySQL => { /* ignore */ } [INFO] [stderr] | -------------- matches some of the same values [INFO] [stderr] 87 | _ => {} [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/renderer/insert.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | _ => {} [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/renderer/insert.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 44 | Dialect::Postgres => { [INFO] [stderr] | ----------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 81 | Dialect::SQLite => { [INFO] [stderr] | --------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 111 | Dialect::MySQL => { [INFO] [stderr] | -------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 132 | _ => {} [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/renderer/map/utils.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | _ => Vec::new(), [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/renderer/map/utils.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 315 | FunctionArguments::None => Vec::new(), [INFO] [stderr] | ----------------------- matches some of the same values [INFO] [stderr] 316 | FunctionArguments::List(list) => list.args.iter().map(map_func_arg).collect(), [INFO] [stderr] | ----------------------------- matches some of the same values [INFO] [stderr] 317 | FunctionArguments::Subquery(q) => vec![R::Expr::Ident { [INFO] [stderr] | ------------------------------ matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 320 | _ => Vec::new(), [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: methods `optimize_cfg` and `optimize_ast` are never used [INFO] [stderr] --> src/optimizer/mod.rs:48:19 [INFO] [stderr] | [INFO] [stderr] 26 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stderr] | ------------------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 48 | pub(crate) fn optimize_cfg(&self) -> &crate::optimizer::OptimizeConfig { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 52 | pub(crate) fn optimize_ast(&self, stmt: &mut S::Statement) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `base_optimize_cfg` is never used [INFO] [stderr] --> src/optimizer/mod.rs:99:19 [INFO] [stderr] | [INFO] [stderr] 77 | impl QueryExecutor { [INFO] [stderr] | ------------------ method in this implementation [INFO] [stderr] ... [INFO] [stderr] 99 | pub(crate) fn base_optimize_cfg(&self) -> &OptimizeConfig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `probably_no_optimizations` is never used [INFO] [stderr] --> src/optimizer/passes.rs:9:8 [INFO] [stderr] | [INFO] [stderr] 9 | pub fn probably_no_optimizations(stmt: &S::Statement) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `pop_pool_and_render` is never used [INFO] [stderr] --> src/query_builder/mod.rs:238:19 [INFO] [stderr] | [INFO] [stderr] 92 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stderr] | ------------------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 238 | pub(crate) fn pop_pool_and_render( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `collect_args` is never used [INFO] [stderr] --> src/query_builder/args.rs:228:8 [INFO] [stderr] | [INFO] [stderr] 228 | pub fn collect_args<'a, I, T>(items: I) -> Vec> [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/query_builder/distinct.rs:19:12 [INFO] [stderr] | [INFO] [stderr] 17 | impl DistinctOnNode { [INFO] [stderr] | ------------------- associated function in this implementation [INFO] [stderr] 18 | #[inline] [INFO] [stderr] 19 | pub fn new(expr: SqlExpr, params: SmallVec<[Param; 8]>) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: function `object_name_to_strings` is never used [INFO] [stderr] --> src/renderer/map/utils.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | pub(crate) fn object_name_to_strings(obj: &S::ObjectName) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `split_object_name` is never used [INFO] [stderr] --> src/renderer/map/utils.rs:15:15 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) fn split_object_name(obj: &ObjectName) -> (Option, String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `num_value` is never used [INFO] [stderr] --> src/utils.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | pub(crate) fn num_value(n: u64) -> ValueWithSpan { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `strip_span` is never used [INFO] [stderr] --> src/utils.rs:15:15 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) fn strip_span(val: &ValueWithSpan) -> Value { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `attach_empty_span` is never used [INFO] [stderr] --> src/utils.rs:21:15 [INFO] [stderr] | [INFO] [stderr] 21 | pub(crate) fn attach_empty_span(val: Value) -> ValueWithSpan { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `value_to_string` is never used [INFO] [stderr] --> src/utils.rs:27:15 [INFO] [stderr] | [INFO] [stderr] 27 | pub(crate) fn value_to_string(val: &Value) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `expr_to_string` is never used [INFO] [stderr] --> src/utils.rs:33:15 [INFO] [stderr] | [INFO] [stderr] 33 | pub(crate) fn expr_to_string(expr: &SqlExpr) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `object_name_from_default` is never used [INFO] [stderr] --> src/utils.rs:49:15 [INFO] [stderr] | [INFO] [stderr] 49 | pub(crate) fn object_name_from_default(default_schema: Option<&str>, table: &str) -> ObjectName { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `knux` (lib) generated 24 warnings (run `cargo fix --lib -p knux` to apply 1 suggestion) [INFO] [stderr] warning: unused import: `crate::expression::Expression` [INFO] [stderr] --> src/expression/__tests__/expr.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::expression::Expression; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `lit` [INFO] [stderr] --> src/expression/__tests__/expr.rs:2:30 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::expression::{col, lit, val}; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Expression` [INFO] [stderr] --> src/expression/__tests__/aggr.rs:1:25 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::expression::{Expression, col}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Expression` [INFO] [stderr] --> src/expression/__tests__/alias.rs:1:25 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::expression::{Expression, col, val}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/optimizer/__tests__/passes.rs:97:25 [INFO] [stderr] | [INFO] [stderr] 97 | return panic!("ORDER BY должен быть удалён"); [INFO] [stderr] | ^^^^^^^------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/optimizer/__tests__/passes.rs:103:33 [INFO] [stderr] | [INFO] [stderr] 103 | ... return panic!("проекция должна быть из одного элемента"); [INFO] [stderr] | ^^^^^^^------------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/optimizer/__tests__/passes.rs:145:25 [INFO] [stderr] | [INFO] [stderr] 145 | return panic!("ORDER BY должен быть удалён"); [INFO] [stderr] | ^^^^^^^------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/optimizer/__tests__/passes.rs:475:25 [INFO] [stderr] | [INFO] [stderr] 475 | return panic!("ORDER BY должен быть удалён"); [INFO] [stderr] | ^^^^^^^------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/tests/dialect_test_helpers.rs:31:11 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn ph(n: usize) -> String { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `is_eq` is never used [INFO] [stderr] --> src/expression/__tests__/join_on.rs:5:4 [INFO] [stderr] | [INFO] [stderr] 5 | fn is_eq(lhs: &SqlExpr, rhs: &SqlExpr, node: &SqlExpr) -> bool { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `is_and` is never used [INFO] [stderr] --> src/expression/__tests__/join_on.rs:14:4 [INFO] [stderr] | [INFO] [stderr] 14 | fn is_and(a: &SqlExpr, b: &SqlExpr, node: &SqlExpr) -> bool { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_or` is never used [INFO] [stderr] --> src/expression/__tests__/join_on.rs:23:4 [INFO] [stderr] | [INFO] [stderr] 23 | fn is_or(a: &SqlExpr, b: &SqlExpr, node: &SqlExpr) -> bool { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `optimize_cfg` and `optimize_ast` are never used [INFO] [stderr] --> src/optimizer/mod.rs:48:19 [INFO] [stderr] | [INFO] [stderr] 26 | impl<'a, T> QueryBuilder<'a, T> { [INFO] [stderr] | ------------------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 48 | pub(crate) fn optimize_cfg(&self) -> &crate::optimizer::OptimizeConfig { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 52 | pub(crate) fn optimize_ast(&self, stmt: &mut S::Statement) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `knux` (lib test) generated 27 warnings (14 duplicates) (run `cargo fix --lib -p knux --tests` to apply 4 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.32s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/knux-f118efb3e6de4156) [INFO] [stdout] [INFO] [stdout] running 568 tests [INFO] [stdout] test __tests__::utils::expr_to_object_name_non_identifier_returns_none ... ok [INFO] [stdout] test __tests__::utils::expr_to_object_name_identifier_and_compound ... ok [INFO] [stdout] test __tests__::utils::num_expr_builds_number_expr ... ok [INFO] [stdout] test __tests__::utils::parse_object_name_splits_by_dot ... ok [INFO] [stdout] test __tests__::utils::num_value_strip_and_attach_roundtrip ... ok [INFO] [stdout] test executor::__tests__::config::builder_overrides_dsn ... ok [INFO] [stdout] test executor::__tests__::config::parse_dsn_ok ... ok [INFO] [stdout] test executor::__tests__::config::scheme_detection_flag ... ok [INFO] [stdout] test executor::__tests__::insert::insert_await_without_returning_is_error ... ok [INFO] [stdout] test executor::__tests__::executor::connect_sqlite_and_init_sql ... ok [INFO] [stdout] test executor::__tests__::executor::fetch_typed_binds_work ... ok [INFO] [stdout] test executor::__tests__::insert::insert_returning_all_multi_rows_with_explicit_ids ... ok [INFO] [stdout] test executor::__tests__::insert::insert_exec_bulk_rows_affected_without_returning ... ok [INFO] [stdout] test executor::__tests__::delete::delete_returning_single_row_vec ... ok [INFO] [stdout] test executor::__tests__::delete::delete_await_without_returning_is_error ... ok [INFO] [stdout] test executor::__tests__::delete::delete_exec_rows_affected_without_returning ... ok [INFO] [stdout] test executor::__tests__::executor::qb_into_future_many_select_sqlite ... ok [INFO] [stdout] test executor::__tests__::insert::insert_returning_multiple_rows_vec ... ok [INFO] [stdout] test executor::__tests__::insert::insert_returning_all_single_row_vec ... ok [INFO] [stdout] test executor::__tests__::insert::insert_exec_rows_affected_without_returning ... ok [INFO] [stdout] test executor::__tests__::insert::insert_returning_all_single_row_with_explicit_id ... ok [INFO] [stdout] test executor::__tests__::delete::delete_returning_no_match_empty_vec ... ok [INFO] [stdout] test executor::__tests__::executor::qb_one_and_optional_sqlite ... ok [INFO] [stdout] test executor::__tests__::transaction_utils::sqlite_exec_and_fetch_inside_tx_then_rollback ... ok [INFO] [stdout] test __tests__::utils::value_to_string_formats_basic_values ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_execute_and_fetch_typed_inside_tx ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_rollback_is_idempotent_ok ... ok [INFO] [stdout] test executor::__tests__::update::update_exec_rows_affected_without_returning ... ok [INFO] [stdout] test executor::__tests__::update::update_returning_all_rows_vec ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_commit_is_idempotent_ok ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_nested_savepoint_commit ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_nested_savepoint_rollback_only_inner ... ok [INFO] [stdout] test executor::__tests__::parallel::poolquery_parallel_update_and_select_sqlite ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_executes_inside_not_on_pool_connection ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_commit_makes_changes_visible_outside ... ok [INFO] [stdout] test expression::__tests__::aggr::test_count_all ... ok [INFO] [stdout] test expression::__tests__::aggr::fn_call_with_clauses_sets_clauses ... ok [INFO] [stdout] test expression::__tests__::aggr::test_avg ... ok [INFO] [stdout] test expression::__tests__::aggr::test_count ... ok [INFO] [stdout] test expression::__tests__::aggr::test_distinct_on_existing_function ... ok [INFO] [stdout] test expression::__tests__::aggr::test_max ... ok [INFO] [stdout] test expression::__tests__::aggr::test_sum ... ok [INFO] [stdout] test expression::__tests__::alias::alias_after_aggregate ... ok [INFO] [stdout] test expression::__tests__::alias::alias_overwrites_previous_alias ... ok [INFO] [stdout] test expression::__tests__::alias::alias_synonym_behaves_like_as ... ok [INFO] [stdout] test expression::__tests__::alias::as_sets_alias_on_plain_col ... ok [INFO] [stdout] test expression::__tests__::cmp::eq_builds_binaryop_and_binds_param ... ok [INFO] [stdout] test expression::__tests__::cmp::in_list_collects_params_and_sets_flag ... ok [INFO] [stdout] test expression::__tests__::cmp::in_list_collects_params_from_expressions ... ok [INFO] [stdout] test expression::__tests__::cmp::is_null_and_is_not_null_have_no_params ... ok [INFO] [stdout] test expression::__tests__::cmp::ne_gt_gte_lt_lte_all_build_binaryops ... ok [INFO] [stdout] test expression::__tests__::cmp::not_in_list_sets_negated_and_params ... ok [INFO] [stdout] test expression::__tests__::cmp::params_order_is_left_then_right_for_binaryops ... ok [INFO] [stdout] test expression::__tests__::expr::col_builds_identifier_and_compound ... ok [INFO] [stdout] test expression::__tests__::expr::count_all_stars ... ok [INFO] [stdout] test expression::__tests__::expr::count_then_distinct_marks_duplicate_treatment ... ok [INFO] [stdout] test expression::__tests__::expr::logic_and_math_combo ... ok [INFO] [stdout] test expression::__tests__::expr::max_with_alias ... ok [INFO] [stdout] test expression::__tests__::expr::val_binds_one_param_placeholder ... ok [INFO] [stdout] test expression::__tests__::helpers::col_builds_identifier_and_compound ... ok [INFO] [stdout] test expression::__tests__::helpers::col_three_part_compound ... ok [INFO] [stdout] test expression::__tests__::helpers::lit_builds_single_quoted_literal_without_params ... ok [INFO] [stdout] test expression::__tests__::helpers::raw_count_star_yields_function_not_string ... ok [INFO] [stdout] test executor::__tests__::parallel::poolquery_parallel_selects_sqlite ... ok [INFO] [stdout] test executor::__tests__::update::update_returning_no_match_empty_vec ... ok [INFO] [stdout] test expression::__tests__::helpers::schema_helper_produces_identifier ... ok [INFO] [stdout] test expression::__tests__::helpers::raw_wraps_custom_expr_without_params ... ok [INFO] [stdout] test expression::__tests__::helpers::table_compound_identifier ... ok [INFO] [stdout] test expression::__tests__::helpers::table_simple_identifier ... ok [INFO] [stdout] test expression::__tests__::helpers::val_f32_and_f64_params ... ok [INFO] [stdout] test expression::__tests__::helpers::val_inserts_placeholder_and_collects_param_i32 ... ok [INFO] [stdout] test expression::__tests__::helpers::raw_qualified_wildcard_is_not_quoted ... ok [INFO] [stdout] test expression::__tests__::helpers::val_works_with_string_sources ... ok [INFO] [stdout] test expression::__tests__::join_on::join_on_builder_and_on_or_on_chain ... ok [INFO] [stdout] test expression::__tests__::join_on::and_on_is_alias_for_and ... ok [INFO] [stdout] test expression::__tests__::join_on::join_on_builder_empty_and_non_empty ... ok [INFO] [stdout] test expression::__tests__::join_on::or_on_is_alias_for_or ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_between_and_or_on_between ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_exists_and_on_not_exists_collect_params ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_in_builds_and_inlist_and_collects_params ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_not_in_builds_negated_inlist ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_not_null_and_or_on_not_null ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_not_between_and_or_on_not_between ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::or_on_in_builds_or ... ok [INFO] [stdout] test expression::__tests__::join_on_ext::on_null_and_or_on_null ... ok [INFO] [stdout] test expression::__tests__::logic::and_builds_binaryop_and_merges_params ... ok [INFO] [stdout] test expression::__tests__::logic::chaining_and_or_preserves_structure ... ok [INFO] [stdout] test expression::__tests__::logic::not_preserves_params_inside ... ok [INFO] [stdout] test expression::__tests__::logic::not_wraps_unary_and_keeps_params ... ok [INFO] [stdout] test expression::__tests__::logic::or_builds_binaryop_and_merges_params ... ok [INFO] [stdout] test expression::__tests__::logic::params_order_left_then_right ... ok [INFO] [stdout] test expression::__tests__::math::add_builds_binaryop_plus_and_merges_params ... ok [INFO] [stdout] test expression::__tests__::math::mul_builds_binaryop_multiply_and_merges_params ... ok [INFO] [stdout] test expression::__tests__::math::div_builds_binaryop_divide_and_merges_params ... ok [INFO] [stdout] test expression::__tests__::math::multiple_operations_preserve_param_order ... ok [INFO] [stdout] test expression::__tests__::math::sub_builds_binaryop_minus_and_merges_params ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_rollback_discards_changes ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_between_and_or_on_between_collect_params ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_exists_and_on_not_exists_collect_params ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_in_builds_and_inlist_and_collects_params ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_not_in_negates_inlist ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_not_between_and_or_on_not_between ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_not_null_and_or_on_not_null ... ok [INFO] [stdout] test expression::__tests__::on_builder::on_null_and_or_on_null ... ok [INFO] [stdout] test expression::__tests__::path::col_splits_dot_path ... ok [INFO] [stdout] test expression::__tests__::path::schema_table_col_full_chain ... ok [INFO] [stdout] test expression::__tests__::on_builder::or_on_in_uses_or ... ok [INFO] [stdout] test expression::__tests__::path::schema_then_table_equals_table_with_schema ... ok [INFO] [stdout] test expression::__tests__::path::table_then_col_appends_column ... ok [INFO] [stdout] test optimizer::__tests__::dedup_in_list::dedup_in_list_sql_mixed ... ok [INFO] [stdout] test optimizer::__tests__::flatten_simple_subqueries::flatten_sql_projection_only ... ok [INFO] [stdout] test optimizer::__tests__::flatten_simple_subqueries::flatten_sql_basic ... ok [INFO] [stdout] test optimizer::__tests__::in_to_exists::in_to_exists_sql_basic ... ok [INFO] [stdout] test optimizer::__tests__::dedup_in_list::dedup_in_list_sql_numbers ... ok [INFO] [stdout] test optimizer::__tests__::in_to_exists::in_to_exists_sql_not_in_untouched ... ok [INFO] [stdout] test optimizer::__tests__::passes::dedup_in_list_mixed_constants_and_identifiers ... ok [INFO] [stdout] test optimizer::__tests__::passes::dedup_in_list_numbers_basic ... ok [INFO] [stdout] test optimizer::__tests__::passes::flatten_simple_subquery_basic ... ok [INFO] [stdout] test optimizer::__tests__::passes::in_to_exists_basic_ast ... ok [INFO] [stdout] test optimizer::__tests__::passes::flatten_simple_subquery_projection_only ... ok [INFO] [stdout] test optimizer::__tests__::passes::in_to_exists_does_not_touch_not_in ... ok [INFO] [stdout] test optimizer::__tests__::passes::in_to_exists_not_in_is_untouched_ast ... ok [INFO] [stdout] test optimizer::__tests__::passes::keep_ob_in_subquery_with_limit ... ok [INFO] [stdout] test optimizer::__tests__::passes::pp_dont_pull_up_when_distinct_present ... ok [INFO] [stdout] test optimizer::__tests__::passes::ppd_do_not_push_when_distinct ... ok [INFO] [stdout] test optimizer::__tests__::passes::ppd_push_where_into_simple_derived ... ok [INFO] [stdout] test optimizer::__tests__::passes::pp_pull_up_simple_derived_and_merge_where ... ok [INFO] [stdout] test optimizer::__tests__::passes::rm_ob_in_derived_subquery_without_limit ... ok [INFO] [stdout] test optimizer::__tests__::passes::simplify_exists_in_projection_ignores_order_even_with_limit ... ok [INFO] [stdout] test optimizer::__tests__::passes::simplify_exists_in_where_sets_select_one_and_removes_order ... ok [INFO] [stdout] test optimizer::__tests__::predicate_pullup::pp_sql_do_not_flatten_when_projection_has_expr ... ok [INFO] [stdout] test optimizer::__tests__::predicate_pushdown::predicate_pushdown_moves_where_into_subquery_sql ... ok [INFO] [stdout] test optimizer::__tests__::predicate_pullup::pp_sql_flatten_simple_derived ... ok [INFO] [stdout] test optimizer::__tests__::predicate_pushdown::predicate_pushdown_not_applied_with_distinct_sql ... ok [INFO] [stdout] test optimizer::__tests__::rm_subquery_order_by::qb_keeps_order_when_limit_present_sql ... ok [INFO] [stdout] test optimizer::__tests__::rm_subquery_order_by::qb_removes_order_in_derived_without_limit_sql ... ok [INFO] [stdout] test optimizer::__tests__::simplify_exists::qb_having_exists_with_limit_simplified_sql ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_and_merge_assigns ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_and_merge_basic ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_and_merge_conjunction ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_is_literal_const_placeholder_false ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_is_literal_const_true ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_is_plain_column_false ... ok [INFO] [stdout] test optimizer::__tests__::simplify_exists::qb_where_exists_simplified_sql ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_is_plain_column_true ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_projection_direct_columns_false ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_projection_direct_columns_true ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_simple_no_cardinality_false ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_simple_no_cardinality_true ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_walk_expr_post_root_last ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_walk_join_mut_cross_noop ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_walk_expr_visits_subquery_where ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_walk_statement_query_top_true ... ok [INFO] [stdout] test expression::__tests__::aggr::distinct_marker_is_consumed_once ... ok [INFO] [stdout] test query_builder::__tests__::alias::from_closure_subquery_with_alias ... ok [INFO] [stdout] test query_builder::__tests__::alias::from_subquery_with_alias_via_builder_as ... ok [INFO] [stdout] test query_builder::__tests__::args::collect_args_mixed_inputs ... ok [INFO] [stdout] test query_builder::__tests__::args::into_qb_arg_from_closure ... ok [INFO] [stdout] test query_builder::__tests__::args::into_qb_arg_from_expression ... ok [INFO] [stdout] test query_builder::__tests__::args::into_qb_arg_from_querybuilder ... ok [INFO] [stdout] test query_builder::__tests__::args::into_qb_arg_from_str_and_string ... ok [INFO] [stdout] test query_builder::__tests__::args::into_qbarg_still_works_explicitly ... ok [INFO] [stdout] test query_builder::__tests__::args::resolve_into_expr_with_for_subquery_and_closure ... ok [INFO] [stdout] test query_builder::__tests__::args::resolve_into_expr_with_works_for_expr ... ok [INFO] [stdout] test query_builder::__tests__::args::try_into_expr_fails_for_subquery_and_closure ... ok [INFO] [stdout] test query_builder::__tests__::args::try_into_expr_success_for_expr ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_walk_statement_update_with_join ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_walk_join_mut_on_called ... ok [INFO] [stdout] test query_builder::__tests__::args::vec_of_strs_and_slice_of_strs ... ok [INFO] [stdout] test expression::__tests__::aggr::test_distinct_for_next ... ok [INFO] [stdout] test query_builder::__tests__::build_query::build_query_ast_defaults_to_wildcard_projection ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_distinct_resets_flag_and_items ... ok [INFO] [stdout] test optimizer::__tests__::passes::in_to_exists_basic_positive_in ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_having ... ok [INFO] [stdout] test query_builder::__tests__::args::tuple_variadic_mixed_types ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_group ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_limit_and_clear_offset_individually ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_limit_offset_both ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_select_and_where_via_router ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_order ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_join ... ok [INFO] [stdout] test query_builder::__tests__::clear::clear_router_unknown_and_unsupported ... ok [INFO] [stdout] test query_builder::__tests__::distinct::distinct_with_columns_adds_projection_and_flag ... ok [INFO] [stdout] test query_builder::__tests__::distinct::distinct_without_columns_falls_back_to_star ... ok [INFO] [stdout] test query_builder::__tests__::from::from_mixed_table_subquery_and_closure_collects_params_and_preserves_order ... ok [INFO] [stdout] test query_builder::__tests__::from::from_multiple_plain_tables_with_default_schema ... ok [INFO] [stdout] test query_builder::__tests__::group_by::group_by_expression_collects_params ... ok [INFO] [stdout] test query_builder::__tests__::group_by::group_by_ignores_empty_list ... ok [INFO] [stdout] test query_builder::__tests__::group_by::group_by_rejects_closure ... ok [INFO] [stdout] test query_builder::__tests__::distinct::distinct_collects_params_from_expressions ... ok [INFO] [stdout] test query_builder::__tests__::group_by::group_by_rejects_subquery ... ok [INFO] [stdout] test query_builder::__tests__::distinct::distinct_on_accepts_multiple_expressions_and_params ... ok [INFO] [stdout] test executor::__tests__::transaction_utils::sqlite_nulls_and_f32_mapping ... ok [INFO] [stdout] test query_builder::__tests__::group_by::group_by_single_and_multiple_columns ... ok [INFO] [stdout] test query_builder::__tests__::distinct::distinct_on_builds_distinct_on_clause ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::except_all_sql_contains_except_all ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::intersect_basic_sql_contains_intersect ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::except_basic_sql_contains_except ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::set_chain_left_associative_and_quantifiers ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::set_params_bubble_in_order_intersect_except ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::except_builds_setexpr_ast ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::intersect_all_sql_contains_intersect_all ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::set_with_quoted_identifiers ... ok [INFO] [stdout] test executor::__tests__::update::update_returning_single_row_vec ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::intersect_builds_setexpr_ast ... ok [INFO] [stdout] test query_builder::__tests__::limit::limit_and_offset ... ok [INFO] [stdout] test query_builder::__tests__::order_by::order_by_expression_collects_params ... ok [INFO] [stdout] test query_builder::__tests__::schema::from_uses_default_schema_if_no_explicit_set ... ok [INFO] [stdout] test query_builder::__tests__::order_by::order_by_single_and_multiple_columns ... ok [INFO] [stdout] test query_builder::__tests__::schema::from_with_explicit_schema_overrides_default ... ok [INFO] [stdout] test query_builder::__tests__::schema::from_without_schema_or_default_uses_plain_table ... ok [INFO] [stdout] test query_builder::__tests__::select::select_col_star_count_renders_count_star ... ok [INFO] [stdout] test query_builder::__tests__::select::select_raw_count_star_renders_plain_sql_without_quotes ... ok [INFO] [stdout] test query_builder::__tests__::select::select_tuple_mixed_types_keeps_order_and_alias ... ok [INFO] [stdout] test query_builder::__tests__::select::select_subquery_and_closure_expand_into_subqueries ... ok [INFO] [stdout] test query_builder::__tests__::select::select_vec_of_strs_and_slice_work ... ok [INFO] [stdout] test query_builder::__tests__::limit::limit_only ... ok [INFO] [stdout] test query_builder::__tests__::limit::offset_only ... ok [INFO] [stdout] test query_builder::__tests__::order_by::order_by_empty_list_ignored ... ok [INFO] [stdout] test query_builder::__tests__::select_subquery::select_includes_subquery_and_closure_as_expr_subquery ... ok [INFO] [stdout] test query_builder::__tests__::select::select_with_string_items_builds_unnamed_exprs ... ok [INFO] [stdout] test query_builder::__tests__::order_by::order_by_rejects_subquery_and_closure ... ok [INFO] [stdout] test query_builder::__tests__::select_subquery::select_mixed_items_expr_and_subquery_preserve_alias_on_expr ... ok [INFO] [stdout] test query_builder::__tests__::sql::insert_into_with_columns_values_and_params ... ok [INFO] [stdout] test query_builder::__tests__::select_subquery::subquery_params_are_merged_into_outer_builder_on_build ... ok [INFO] [stdout] test query_builder::__tests__::sql::delete_basic_where_and_returning ... ok [INFO] [stdout] test query_builder::__tests__::sql::delete_using_multiple_tables ... ok [INFO] [stdout] test query_builder::__tests__::sql::insert_into_with_default_schema ... ok [INFO] [stdout] test query_builder::__tests__::sql::insert_returning_is_emitted ... ok [INFO] [stdout] test query_builder::__tests__::sql::select_from_subquery_and_collect_params ... ok [INFO] [stdout] test query_builder::__tests__::sql::select_from_qualified_table ... ok [INFO] [stdout] test query_builder::__tests__::sql::select_from_table_with_default_schema ... ok [INFO] [stdout] test query_builder::__tests__::sql::simple_select_from_table ... ok [INFO] [stdout] test query_builder::__tests__::sql::to_sql_from_mixed_table_subquery_and_closure ... ok [INFO] [stdout] test query_builder::__tests__::sql::update_with_from_sources ... ok [INFO] [stdout] test query_builder::__tests__::union::order_by_applies_to_entire_set ... ok [INFO] [stdout] test query_builder::__tests__::sql::update_set_and_where_to_sql ... ok [INFO] [stdout] test query_builder::__tests__::sql::to_sql_from_multiple_plain_tables_with_default_schema ... ok [INFO] [stdout] test query_builder::__tests__::union::union_all_sql_contains_union_all ... ok [INFO] [stdout] test query_builder::__tests__::union::union_builds_setexpr_ast ... ok [INFO] [stdout] test query_builder::__tests__::union::union_basic_sql_contains_union ... ok [INFO] [stdout] test query_builder::__tests__::union::union_chain_left_associative_and_quantifiers ... ok [INFO] [stdout] test query_builder::__tests__::union::union_params_bubble_in_order ... ok [INFO] [stdout] test query_builder::__tests__::with::with_recursive_sets_flag_and_renders_recursive ... ok [INFO] [stdout] test query_builder::__tests__::with::with_from_sets_from_ident_in_ast ... ok [INFO] [stdout] test query_builder::__tests__::intersect_except::order_by_applies_to_entire_set_for_intersect_except ... ok [INFO] [stdout] test query_builder::__tests__::union::union_with_quoted_identifiers ... ok [INFO] [stdout] test query_builder::__tests__::with::with_rejects_expression_body_and_reports_builder_error ... ok [INFO] [stdout] test query_builder::__tests__::with::with_materialized_and_not_materialized_set_ast_only ... ok [INFO] [stdout] test query_builder::__tests__::with::with_pushes_cte_and_bubbles_params ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_empty_table_arg_reports_error ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_sets_table_from_expr_and_where_and_returning_qstar ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_returning_variants_work ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_using_invalid_expr_yields_error ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::push_returning_list_appends_items ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::set_returning_all_from_schema_table ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::set_returning_all_from_simple ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_using_collects_multiple_tables ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_where_empty_tuple_is_noop ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::set_returning_all_overwrites_with_star ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::set_returning_one_empty_error ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::set_returning_one_replaces_and_keeps_first ... ok [INFO] [stdout] test query_builder::having::__tests__::core_fn::attach_having_with_and_accumulates ... ok [INFO] [stdout] test query_builder::delete::__tests__::returning::push_returning_list_empty_error ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_supports_sqlite_dialect_context ... ok [INFO] [stdout] test query_builder::having::__tests__::core_fn::attach_having_with_or_builds_or_tree ... ok [INFO] [stdout] test query_builder::delete::__tests__::core_fn::delete_where_chaining_merges_with_and ... ok [INFO] [stdout] test query_builder::having::__tests__::core_fn::resolve_having_group_empty_returns_none_and_changes_nothing ... ok [INFO] [stdout] test query_builder::having::__tests__::core_fn::resolve_having_group_and_attach_collects_params_and_chains_with_and ... ok [INFO] [stdout] test query_builder::having::__tests__::having::having_arglist_combines_with_and ... ok [INFO] [stdout] test query_builder::having::__tests__::having::having_raw_records_parse_error ... ok [INFO] [stdout] test query_builder::having::__tests__::having::and_having_and_or_having ... ok [INFO] [stdout] test query_builder::having::__tests__::having_between::having_between_collects_params_only_from_bounds ... ok [INFO] [stdout] test query_builder::having::__tests__::having::having_raw_parses_and_or_having_raw ... ok [INFO] [stdout] test query_builder::having::__tests__::having_between::having_between_and_not_between ... ok [INFO] [stdout] test query_builder::having::__tests__::having::having_single_expr ... ok [INFO] [stdout] test query_builder::having::__tests__::having_between::or_having_between_combines_with_or ... ok [INFO] [stdout] test query_builder::having::__tests__::having_exists::having_exists_with_expression_is_builder_error ... ok [INFO] [stdout] test query_builder::having::__tests__::having_exists::or_having_exists_builds_or_tree ... ok [INFO] [stdout] test query_builder::having::__tests__::having_exists::or_having_not_exists_with_expression_is_builder_error ... ok [INFO] [stdout] test query_builder::having::__tests__::having_in::having_in_empty_values_records_builder_error ... ok [INFO] [stdout] test query_builder::having::__tests__::having_in::having_in_with_list ... ok [INFO] [stdout] test query_builder::having::__tests__::having_in::having_in_collects_params_order ... ok [INFO] [stdout] test query_builder::having::__tests__::having_in::having_in_with_subquery ... ok [INFO] [stdout] test query_builder::having::__tests__::having_null::having_not_null_basic ... ok [INFO] [stdout] test query_builder::having::__tests__::having_in::having_not_in_with_list ... ok [INFO] [stdout] test query_builder::having::__tests__::having_null::having_null_basic ... ok [INFO] [stdout] test query_builder::having::__tests__::having_in::or_having_in_combines_with_or ... ok [INFO] [stdout] test query_builder::having::__tests__::having_null::having_null_then_not_null_combines_with_and ... ok [INFO] [stdout] test query_builder::having::__tests__::having_null::or_having_not_null_combines_with_or ... ok [INFO] [stdout] test query_builder::having::__tests__::having_null::or_having_null_combines_with_or ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_column_identifier_can_be_compound_uses_last_segment ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_columns_chunking_multiple_rows ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_columns_empty_list_error ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_columns_exactly_one_row_when_counts_match ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_compound_identifier_column_uses_last_segment ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_error_mismatch_values_count ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_error_odd_pairs_without_defined_columns ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_no_columns_empty_data_error ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_one_column_many_values_becomes_many_rows ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_multi_columns_chunked_into_rows ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_params_across_multiple_rows_preserve_order ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_single_column_many_values_multiple_rows ... ok [INFO] [stdout] test executor::__tests__::transaction_utils::sqlite_fetch_empty_is_ok ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_single_row_from_pairs ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_value_can_be_scalar_subquery_and_params_order_is_preserved ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_values_count_mismatch_error ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_with_scalar_subquery_value_collects_params ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::insert_without_columns_odd_pairs_error ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::into_parses_schema_table_into_object_name ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert::into_parses_schema_table_object_name ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::ignore_sets_insert_ignore_and_action_do_nothing_when_target_present ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::combine_upsert_with_returning_variants ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::merge_columns_only_short_form_maps_to_from_inserted ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::merge_all_requires_known_columns_and_populates_assignments ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::merge_pairs_col_value_collects_params_and_builds_expr_values ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::returning_all_from_builds_qualified_wildcard ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::on_conflict_sets_target_columns ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::returning_all_sets_wildcard ... ok [INFO] [stdout] test query_builder::join::__tests__::core_fn::cross_join_has_no_constraint ... ok [INFO] [stdout] test query_builder::insert::__tests__::insert_ext::returning_one_sets_single_item_and_overwrites_previous ... ok [INFO] [stdout] test query_builder::join::__tests__::core_fn::inner_join_with_on_expr_chain_and_on ... ok [INFO] [stdout] test query_builder::join::__tests__::core_fn::left_join_without_on_records_error_and_defaults_to_true ... ok [INFO] [stdout] test query_builder::join::__tests__::core_fn::resolve_join_target_from_expression_table ... ok [INFO] [stdout] test query_builder::join::__tests__::join::full_join_behavior_is_dialect_agnostic ... ok [INFO] [stdout] test query_builder::join::__tests__::core_fn::resolve_join_target_from_subquery_and_closure ... ok [INFO] [stdout] test query_builder::join::__tests__::join::cross_join_has_no_constraint ... ok [INFO] [stdout] test query_builder::join::__tests__::join::inner_join_with_on_expression_chain_and_on ... ok [INFO] [stdout] test query_builder::join::__tests__::join::inner_join_with_on_string ... ok [INFO] [stdout] test query_builder::join::__tests__::join::join_with_subquery_target_produces_derived_relation ... ok [INFO] [stdout] test query_builder::join::__tests__::join::join_with_closure_target_produces_derived_relation ... ok [INFO] [stdout] test query_builder::join::__tests__::join::left_join_without_on_registers_error ... ok [INFO] [stdout] test query_builder::join::__tests__::join::join_without_from_registers_error ... ok [INFO] [stdout] test query_builder::join::__tests__::join::left_join_with_on_string ... ok [INFO] [stdout] test query_builder::join::__tests__::join::natural_full_join_behavior_is_dialect_agnostic ... ok [INFO] [stdout] test query_builder::join::__tests__::join::natural_inner_join_builds_ast ... ok [INFO] [stdout] test query_builder::join::__tests__::join::natural_left_join_builds_ast ... ok [INFO] [stdout] test query_builder::join::__tests__::utils::clone_params_copies_params ... ok [INFO] [stdout] test query_builder::join::__tests__::join::natural_right_join_behavior_is_dialect_agnostic ... ok [INFO] [stdout] test query_builder::join::__tests__::utils::clone_params_from_expr_copies_params ... ok [INFO] [stdout] test query_builder::join::__tests__::utils::must_have_constraint_none_adds_error_and_returns_none ... ok [INFO] [stdout] test query_builder::join::__tests__::utils::must_have_constraint_some_passthrough ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_accepts_table_expr_with_schema ... ok [INFO] [stdout] test query_builder::join::__tests__::join::right_join_behavior_is_dialect_agnostic ... ok [INFO] [stdout] test query_builder::having::__tests__::having_exists::having_exists_and_not_exists ... ok [INFO] [stdout] test query_builder::having::__tests__::having_exists::having_exists_collects_params_from_subquery ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_from_collects_multiple_tables ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_set_pairs_collects_params ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_invalid_table_argument_reports_error_but_keeps_first ... ok [INFO] [stdout] test query_builder::join::__tests__::core_fn::inner_join_with_on_string_builds_ast ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::clear_counters_handles_compound_identifier ... ok [INFO] [stdout] test query_builder::having::__tests__::having_between::or_having_not_between_combines_with_or ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::decrement_left_not_identifier_error ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::decrement_with_compound_identifier_uses_last_segment ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::clear_counters_removes_only_counters ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_sqlite_or_replace_and_or_ignore_flags ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::decrement_with_expr_column ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_where_empty_is_noop ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::increment_left_not_identifier_error ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::decrement_with_str_column_and_value_expr ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::increment_with_expr_column ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::set_returning_all_from_schema_table ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::push_returning_list_appends_items ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::set_returning_all_from_simple ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::push_returning_list_empty_error ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::set_returning_all_overwrites_with_star ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::set_returning_one_empty_error ... ok [INFO] [stdout] test query_builder::update::__tests__::returning::set_returning_one_replaces_and_keeps_first ... ok [INFO] [stdout] test query_builder::update::__tests__::set::set_empty_list_error ... ok [INFO] [stdout] test query_builder::update::__tests__::set::set_left_not_identifier_error ... ok [INFO] [stdout] test query_builder::update::__tests__::set::set_left_compound_identifier_takes_last_segment ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::increment_with_compound_identifier_uses_last_segment ... ok [INFO] [stdout] test query_builder::update::__tests__::set::set_odd_number_of_items_error ... ok [INFO] [stdout] test query_builder::update::__tests__::increment::increment_with_str_column_and_value_expr ... ok [INFO] [stdout] test query_builder::update::__tests__::set::set_parse_multiple_pairs_preserves_order_and_params ... ok [INFO] [stdout] test query_builder::update::__tests__::update::update_complex_chain_set_where_and_returning_qstar ... ok [INFO] [stdout] test query_builder::update::__tests__::set::set_parse_single_pair_collects_param ... ok [INFO] [stdout] test query_builder::update::__tests__::update::update_compound_lhs_identifier_keeps_last_segment ... ok [INFO] [stdout] test query_builder::update::__tests__::update::update_error_on_empty_set_and_table_from_expr ... ok [INFO] [stdout] test query_builder::update::__tests__::update::update_returning_one_overwrites_previous_list_takes_first ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::core_fn::build_in_predicate_empty_values_records_error ... ok [INFO] [stdout] test query_builder::update::__tests__::update::update_where_noop_on_empty_tuple ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::core_fn::attach_where_with_and_then_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::core_fn::build_in_predicate_single_value_list_produces_inlist_and_collects_params ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::core_fn::resolve_qbarg_into_expr_passes_expression_and_subquery_and_closure ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::core_fn::resolve_where_group_empty_returns_none ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_in_list_and_in_subquery ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::boolean_literal_ok ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_like_and_ilike ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_and_or_chain ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_between_and_not_between ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::quote_sql_str_basic_and_escaping ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_simple_binary_eq ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_unary_not ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::returns_invalid_expression_on_parser_error ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_between::or_where_between_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_between::or_where_not_between_appends_with_or_and_negated ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_between::where_between_and_not_between ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::sqlite_json_superset_sql_shape_and_parse ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::parses_is_null_and_is_not_null ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_set_and_where_chain_and_returning ... ok [INFO] [stdout] test query_builder::update::__tests__::core_fn::update_returning_all ... ok [INFO] [stdout] test __tests__::utils::object_name_from_default_prefixed_when_no_schema ... ok [INFO] [stdout] test __tests__::utils::expr_to_string_formats_basic_exprs ... ok [INFO] [stdout] test executor::__tests__::delete::delete_returning_multiple_rows_vec ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_between::where_between_collects_params_for_bounds ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::and_where_appends_with_and ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::or_then_and_preserves_grouping ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::where_accepts_subquery_and_closure ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::where_accepts_string_as_boolean_identifier_via_col ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_exists::or_where_exists_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::group_inside_or_where_is_and_of_items ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::where_multiple_args_tuple_and_chaining ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::or_where_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::or_where_in_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::or_where_not_in_sets_negated_and_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::where_not_wraps_group_with_not ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::where_in_accepts_str_column_via_into_qbarg ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_clause::where_single_expression ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::where_in_accepts_closure_subquery ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_exists::where_exists_and_not_exists ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::where_not_in_sets_negated ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::where_in_with_subquery ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_exists::where_exists_collects_params_from_subquery ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_in::where_in_with_list ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::sqlite_where_json_path_is_is_not_null_over_json_extract ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_exists::where_exists_with_non_subquery_adds_builder_error ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::utils::sqlite_json_subset_sql_shape_and_parse ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::sqlite_where_json_superset_subset_are_not_exists ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_superset_of_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_like::or_where_ilike_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_object_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_like::or_where_like_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_superset_subset_build_where ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_exists::or_where_not_exists_appends_with_or_and_negated ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_object_builds_where ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_path_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_path_builds_where ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_json::where_json_subset_of_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_like::where_like_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_raw::or_where_raw_invalid_sql_records_builder_error ... ok [INFO] [stdout] test expression::__tests__::aggr::test_min ... ok [INFO] [stdout] test expression::__tests__::alias::alias_keeps_params_intact ... ok [INFO] [stdout] test optimizer::__tests__::utils::utils_select_is_simple_no_cardinality ... ok [INFO] [stdout] test query_builder::__tests__::select::select_with_expression_and_alias_preserves_alias_and_params ... ok [INFO] [stdout] test renderer::__tests__::compat::column_alias_without_as_when_flag_disabled ... ok [INFO] [stdout] test renderer::__tests__::compat::raw_expr_is_rendered_as_is ... ok [INFO] [stdout] test renderer::__tests__::compat::strict_policy_blocks_by_name_in_set_ops ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_raw::where_raw_parses_sql ... ok [INFO] [stdout] test renderer::__tests__::compat::strict_policy_blocks_distinct_on_outside_postgres ... ok [INFO] [stdout] test renderer::__tests__::compat::strict_policy_blocks_ilike_on_mysql_and_sqlite ... ok [INFO] [stdout] test renderer::__tests__::compat::table_alias_without_as_when_flag_disabled ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_raw::where_raw_invalid_sql_records_builder_error ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_like::where_ilike_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_like::where_like_accepts_str_column ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_null::or_where_null_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_null::where_not_null_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_null::where_null_accepts_str_column_via_into_qbarg ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_null::where_null_basic ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_null::or_where_not_null_appends_with_or ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_raw::or_where_raw_appends_with_or ... ok [INFO] [stdout] test renderer::__tests__::delete::mysql_delete_ignores_returning_but_renders_using ... ok [INFO] [stdout] test renderer::__tests__::delete::pg_delete_with_using_where_returning_star ... ok [INFO] [stdout] test renderer::__tests__::delete::sqlite_delete_with_using_and_qualified_returning ... ok [INFO] [stdout] test renderer::__tests__::indent::always_quotes_postgres_and_sqlite ... ok [INFO] [stdout] test renderer::__tests__::indent::smart_mode_keeps_simple_safe_idents_unquoted ... ok [INFO] [stdout] test renderer::__tests__::indent::quote_path_joins_and_quotes_each_segment_via_push ... ok [INFO] [stdout] test renderer::__tests__::indent::smart_mode_quotes_keywords_and_preserve_case_quotes ... ok [INFO] [stdout] test renderer::__tests__::indent::escaping_inside_path_segments_via_push ... ok [INFO] [stdout] test renderer::__tests__::insert_render::pg_basic_single_row_with_returning_all ... ok [INFO] [stdout] test renderer::__tests__::insert_render::mysql_insert_ignore_and_duplicate_key_update_with_new_alias ... ok [INFO] [stdout] test renderer::__tests__::indent::always_quotes_mysql_with_backticks_and_escapes ... ok [INFO] [stdout] test query_builder::where_clause::__tests__::where_raw::multiple_where_raw_calls_chain_with_and ... ok [INFO] [stdout] test renderer::__tests__::query::set_operations_parentheses_across_dialects ... ok [INFO] [stdout] test renderer::__tests__::insert_render::pg_multi_rows_values_and_param_order ... ok [INFO] [stdout] test renderer::__tests__::query::with_cte_simple_pg ... ok [INFO] [stdout] test renderer::__tests__::quotes::smart_mode_preserve_case_false_basic_rules_pg ... ok [INFO] [stdout] test renderer::__tests__::quotes::always_mode_quotes_everything_pg_mysql_sqlite ... ok [INFO] [stdout] test renderer::__tests__::insert_render::sqlite_insert_or_ignore_without_do_update ... ok [INFO] [stdout] test renderer::__tests__::quotes::smart_mode_preserve_case_true_forces_quotes ... ok [INFO] [stdout] test renderer::__tests__::query::mysql_limit_offset_comma_style ... ok [INFO] [stdout] test renderer::__tests__::insert_render::sqlite_on_conflict_do_update_with_excluded ... ok [INFO] [stdout] test renderer::__tests__::query::with_recursive_union_all_pg ... ok [INFO] [stdout] test renderer::__tests__::quotes::smart_mode_with_keyword_and_mixed_path ... ok [INFO] [stdout] test renderer::__tests__::insert_render::pg_returning_all_from_qualified_star ... ok [INFO] [stdout] test renderer::__tests__::insert_render::values_then_merge_params_ordering ... ok [INFO] [stdout] test renderer::__tests__::update::mysql_update_ignores_returning ... ok [INFO] [stdout] test renderer::__tests__::quotes::smart_mode_preserve_case_false_mysql_and_sqlite ... ok [INFO] [stdout] test renderer::__tests__::update::pg_update_with_where_and_returning_star ... ok [INFO] [stdout] test renderer::__tests__::update::sqlite_update_or_ignore_with_from ... ok [INFO] [stdout] test renderer::__tests__::update::sqlite_update_with_qualified_returning ... ok [INFO] [stdout] test renderer::__tests__::update::render_decrement_with_expr_column_via_qb_ast ... ok [INFO] [stdout] test renderer::__tests__::update::render_increment_with_bind_rhs ... ok [INFO] [stdout] test renderer::__tests__::update::pg_update_with_from_multiple_tables ... ok [INFO] [stdout] test renderer::__tests__::insert_render::pg_on_conflict_merge_columns_only_uses_excluded ... ok [INFO] [stdout] test renderer::__tests__::update::mysql_update_ignores_from_and_or ... ok [INFO] [stdout] test renderer::__tests__::update::render_increment_with_str_column_via_qb_ast ... ok [INFO] [stdout] test renderer::__tests__::update::render_decrement_with_bind_rhs ... ok [INFO] [stdout] test renderer::__tests__::update::render_decrement_with_number_rhs ... ok [INFO] [stdout] test renderer::__tests__::insert_render::pg_on_conflict_do_nothing ... ok [INFO] [stdout] test renderer::__tests__::update::render_increment_with_number_rhs ... ok [INFO] [stdout] test renderer::__tests__::validate::ilike_is_forbidden_in_mysql_and_sqlite_in_strict ... ok [INFO] [stdout] test renderer::__tests__::validate::nulls_last_is_forbidden_outside_pg_in_strict ... ok [INFO] [stdout] test renderer::__tests__::validate::by_name_in_set_ops_is_forbidden_in_strict_everywhere ... ok [INFO] [stdout] test renderer::__tests__::writer::numbered_placeholders_increment_index ... ok [INFO] [stdout] test renderer::__tests__::validate::distinct_on_is_forbidden_outside_pg_in_strict ... ok [INFO] [stdout] test renderer::__tests__::validate::group_by_modifiers_rules ... ok [INFO] [stdout] test renderer::__tests__::writer::compose_full_sql_with_question_placeholders ... ok [INFO] [stdout] test renderer::__tests__::with_render::render_with_as_not_materialized_pg ... ok [INFO] [stdout] test renderer::__tests__::with_render::render_with_from_in_header_pg ... ok [INFO] [stdout] test renderer::__tests__::with_render::render_multiple_ctes_pg ... ok [INFO] [stdout] test renderer::__tests__::with_render::render_with_recursive_pg ... ok [INFO] [stdout] test renderer::__tests__::with_render::materialized_keywords_are_omitted_for_sqlite_and_mysql ... ok [INFO] [stdout] test executor::__tests__::transaction_utils::sqlite_exec_and_fetch_on_pool ... ok [INFO] [stdout] test renderer::__tests__::writer::compose_full_sql_with_numbered_placeholders ... ok [INFO] [stdout] test renderer::map::__tests__::delete::map_delete_with_from_using_where_returning ... ok [INFO] [stdout] test renderer::__tests__::with_render::render_with_basic_cte_pg ... ok [INFO] [stdout] test renderer::__tests__::writer::push_and_finish_basic ... ok [INFO] [stdout] test renderer::__tests__::writer::question_placeholders_do_not_increment_index ... ok [INFO] [stdout] test renderer::__tests__::writer::separate_writers_are_independent ... ok [INFO] [stdout] test renderer::__tests__::writer::unicode_char_and_strings_ok ... ok [INFO] [stdout] test renderer::map::__tests__::delete::map_delete_using_absent_is_empty_vec ... ok [INFO] [stdout] test renderer::__tests__::with_render::render_with_as_materialized_pg ... ok [INFO] [stdout] test renderer::map::__tests__::delete::map_delete_target_with_schema_and_alias ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_count_star_function_arg ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_case_when_else ... ok [INFO] [stdout] test renderer::map::__tests__::delete::map_delete_without_from_keyword ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_from_after_set_and_sqlite_or ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_from_before_set_is_also_supported ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_maps_where_and_returning ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_set_target_tuple_uses_last_segment ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_distinct_on_order_by_limit_offset_pg ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_plain_group_by_two_columns ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_group_by_with_grouping_sets_has_modifier ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_from_none_is_empty ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_in_list_and_between_normalization ... ok [INFO] [stdout] test executor::__tests__::transaction::tx_query_after_commit_returns_missing_connection ... ok [INFO] [stdout] test renderer::map::__tests__::utils::map_expr_ident_and_compound ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_target_with_schema_and_alias ... ok [INFO] [stdout] test renderer::map::__tests__::utils::literal_u64_number_and_unary ... ok [INFO] [stdout] test renderer::map::__tests__::utils::map_expr_isnull_inlist_like_nested_cast_collate ... ok [INFO] [stdout] test renderer::map::__tests__::utils::map_bin_op_and_un_op ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_sqlite_or_replace ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_group_by_with_rollup_pg ... ok [INFO] [stdout] test renderer::map::__tests__::utils::map_expr_values ... ok [INFO] [stdout] test renderer::map::__tests__::utils::map_select_item_wildcards_and_expr ... ok [INFO] [stdout] test renderer::map::__tests__::utils::object_name_to_strings_basic ... ok [INFO] [stdout] test renderer::map::__tests__::utils::object_name_join_with_dot ... ok [INFO] [stdout] test renderer::map::__tests__::utils::split_object_name_cow_identifiers ... ok [INFO] [stdout] test renderer::select::__tests__::select::join_and_subquery_in_from_render ... ok [INFO] [stdout] test renderer::select::__tests__::select::limit_and_offset_rendering ... ok [INFO] [stdout] test renderer::select::__tests__::select::group_by_and_rollup_across_dialects ... ok [INFO] [stdout] test renderer::select::__tests__::select_extras::cast_and_collate_render ... ok [INFO] [stdout] test renderer::select::__tests__::select::order_by_with_nulls_last_only_in_pg ... ok [INFO] [stdout] test renderer::map::__tests__::utils::map_expr_unary_and_binary_and_between ... ok [INFO] [stdout] test renderer::select::__tests__::select::ilike_downgrade_on_non_pg ... ok [INFO] [stdout] test renderer::select::__tests__::select_extras::count_star_and_in_tuple ... ok [INFO] [stdout] test renderer::select::__tests__::select::basic_select_items_and_from_where ... ok [INFO] [stdout] test renderer::select::__tests__::select_extras::emulate_nulls_last_when_enabled ... ok [INFO] [stdout] test renderer::map::__tests__::utils::split_object_name_one_and_two_parts ... ok [INFO] [stdout] test renderer::select::__tests__::select::distinct_and_distinct_on_rendering ... ok [INFO] [stdout] test renderer::select::__tests__::select_extras::join_using_and_natural ... ok [INFO] [stdout] test renderer::select::__tests__::select_extras::like_with_escape ... ok [INFO] [stdout] test renderer::select::__tests__::select::case_when_else_render ... ok [INFO] [stdout] test renderer::select::__tests__::select_extras::window_function_partition_and_order ... ok [INFO] [stdout] test renderer::__tests__::validate::lenient_policy_allows_features ... ok [INFO] [stdout] test renderer::map::__tests__::map::map_join_on_and_wildcards ... ok [INFO] [stdout] test renderer::map::__tests__::update::map_update_panics_on_target_joins - should panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 568 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.65s [INFO] [stdout] [INFO] [stderr] Doc-tests knux [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test src/query_builder/update/increment.rs - query_builder::update::increment::UpdateBuilder<'a,T>::clear_counters (line 128) ... ignored [INFO] [stdout] test src/query_builder/update/increment.rs - query_builder::update::increment::UpdateBuilder<'a,T>::decrement (line 71) ... ok [INFO] [stdout] test src/query_builder/update/increment.rs - query_builder::update::increment::UpdateBuilder<'a,T>::increment (line 13) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "22381d148682f16f18c5ab7a9ea720b24dd839153bd8cd0374ecf0ad6fd5021c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "22381d148682f16f18c5ab7a9ea720b24dd839153bd8cd0374ecf0ad6fd5021c", kill_on_drop: false }` [INFO] [stdout] 22381d148682f16f18c5ab7a9ea720b24dd839153bd8cd0374ecf0ad6fd5021c