[INFO] cloning repository https://github.com/parisxmas/ForgeDB
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/parisxmas/ForgeDB" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fparisxmas%2FForgeDB", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fparisxmas%2FForgeDB'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d5b70b4af3e3b3abe42f75a32f46ec259b896216
[INFO] checking parisxmas/ForgeDB against master#57f772f25c5ce2bd870d6f8c3ab318eaee5a3326 for pr-133502-22
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fparisxmas%2FForgeDB" "/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/parisxmas/ForgeDB
[INFO] finished tweaking git repo https://github.com/parisxmas/ForgeDB
[INFO] tweaked toml for git repo https://github.com/parisxmas/ForgeDB written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/parisxmas/ForgeDB on toolchain 57f772f25c5ce2bd870d6f8c3ab318eaee5a3326
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/parisxmas/ForgeDB 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" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8816b0e6385d977fd0d828ccfacd8d1dec21ca0932d585732e2c1fa58100cdb7
[INFO] running `Command { std: "docker" "start" "-a" "8816b0e6385d977fd0d828ccfacd8d1dec21ca0932d585732e2c1fa58100cdb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8816b0e6385d977fd0d828ccfacd8d1dec21ca0932d585732e2c1fa58100cdb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8816b0e6385d977fd0d828ccfacd8d1dec21ca0932d585732e2c1fa58100cdb7", kill_on_drop: false }`
[INFO] [stdout] 8816b0e6385d977fd0d828ccfacd8d1dec21ca0932d585732e2c1fa58100cdb7
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3091a87d9536c74ea8b7a2faca0935b66ab7c2816986a5b70564ff98e013c0d8
[INFO] running `Command { std: "docker" "start" "-a" "3091a87d9536c74ea8b7a2faca0935b66ab7c2816986a5b70564ff98e013c0d8", kill_on_drop: false }`
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]    Compiling recursive-proc-macro-impl v0.1.1
[INFO] [stderr]    Compiling stacker v0.1.23
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]    Compiling ar_archive_writer v0.5.1
[INFO] [stderr]    Compiling psm v0.1.30
[INFO] [stderr]     Checking recursive v0.1.1
[INFO] [stderr]     Checking sqlparser v0.61.0
[INFO] [stderr]     Checking forgedb v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/index/clustered.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashMap;
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/server/tds_protocol.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IsolationLevel`
[INFO] [stdout]   --> src/database.rs:21:72
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::txn::{TransactionManager, TxnContext, UndoLog, LockManager, IsolationLevel};
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/index/clustered.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashMap;
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/server/tds_protocol.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IsolationLevel`
[INFO] [stdout]   --> src/database.rs:21:72
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::txn::{TransactionManager, TxnContext, UndoLog, LockManager, IsolationLevel};
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `group_key`
[INFO] [stdout]     --> src/executor/aggregate.rs:1051:10
[INFO] [stdout]      |
[INFO] [stdout] 1051 |     for (group_key, accs) in &group_order {
[INFO] [stdout]      |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_group_key`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/executor/create_index.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let mut btree = if columns.len() > 1 {
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dummy_rid`
[INFO] [stdout]    --> src/executor/grace_hash_join.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     let dummy_rid = RID { page_id: PageId(0), slot_id: 0 };
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dummy_rid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_heap`
[INFO] [stdout]    --> src/executor/insert.rs:222:37
[INFO] [stdout]     |
[INFO] [stdout] 222 | ...                   let parent_heap = crate::storage::heap_file::HeapFile::new(
[INFO] [stdout]     |                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> src/index/clustered.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let n = leaf_num_keys(page) as usize;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ver_off`
[INFO] [stdout]    --> src/server/tds_protocol.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 281 |         let ver_off = data_offset; data_offset += 6;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ver_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enc_off`
[INFO] [stdout]    --> src/server/tds_protocol.rs:287:13
[INFO] [stdout]     |
[INFO] [stdout] 287 |         let enc_off = data_offset; data_offset += 1;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enc_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pkt_type`
[INFO] [stdout]    --> src/server/tds_protocol.rs:330:14
[INFO] [stdout]     |
[INFO] [stdout] 330 |         let (pkt_type, payload) = self.read_packet()?;
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pkt_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/server/tds_protocol.rs:408:14
[INFO] [stdout]     |
[INFO] [stdout] 408 |         for (idx, stmt_sql) in statements.iter().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upper`
[INFO] [stdout]    --> src/server/tds_protocol.rs:605:13
[INFO] [stdout]     |
[INFO] [stdout] 605 |         let upper = s.to_uppercase();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_upper`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `group_key`
[INFO] [stdout]     --> src/executor/aggregate.rs:1051:10
[INFO] [stdout]      |
[INFO] [stdout] 1051 |     for (group_key, accs) in &group_order {
[INFO] [stdout]      |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_group_key`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/executor/create_index.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let mut btree = if columns.len() > 1 {
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tuple/tuple.rs:414:13
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let mut pos = bitmap_len;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/tuple/tuple.rs:414:13
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let mut pos = bitmap_len;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dummy_rid`
[INFO] [stdout]    --> src/executor/grace_hash_join.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     let dummy_rid = RID { page_id: PageId(0), slot_id: 0 };
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dummy_rid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_heap`
[INFO] [stdout]    --> src/executor/insert.rs:222:37
[INFO] [stdout]     |
[INFO] [stdout] 222 | ...                   let parent_heap = crate::storage::heap_file::HeapFile::new(
[INFO] [stdout]     |                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/database.rs:311:17
[INFO] [stdout]     |
[INFO] [stdout] 311 |             let mut cursors = self.cursors.lock().unwrap();
[INFO] [stdout]     |                 ----^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/database.rs:487:37
[INFO] [stdout]     |
[INFO] [stdout] 487 |                         if let Some(mut full_log) = tm.take_undo_log(txn_id) {
[INFO] [stdout]     |                                     ----^^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upper`
[INFO] [stdout]     --> src/database.rs:1744:13
[INFO] [stdout]      |
[INFO] [stdout] 1744 |         let upper = text.to_uppercase();
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_upper`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:550:13
[INFO] [stdout]     |
[INFO] [stdout] 550 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:568:13
[INFO] [stdout]     |
[INFO] [stdout] 568 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:589:13
[INFO] [stdout]     |
[INFO] [stdout] 589 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:612:13
[INFO] [stdout]     |
[INFO] [stdout] 612 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:648:13
[INFO] [stdout]     |
[INFO] [stdout] 648 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Varchar(120), TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `value_eq` is never used
[INFO] [stdout]    --> src/executor/aggregate.rs:791:4
[INFO] [stdout]     |
[INFO] [stdout] 791 | fn value_eq(a: &Value, b: &Value) -> 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: field `distinct` is never read
[INFO] [stdout]    --> src/executor/aggregate.rs:928:36
[INFO] [stdout]     |
[INFO] [stdout] 928 |     Agg { func: String, arg: Expr, distinct: bool },
[INFO] [stdout]     |     --- field in this variant      ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StreamColDesc` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `send_result_set`, `build_column_definition`, and `find_column_index_by_name` are never used
[INFO] [stdout]    --> src/server/mysql_protocol.rs:385:8
[INFO] [stdout]     |
[INFO] [stdout] 184 | impl ConnectionHandler {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 385 |     fn send_result_set(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     fn build_column_definition(&self, col_name: &str, rows: &[Vec<Value>]) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     fn find_column_index_by_name(&self, _col_name: &str, _rows: &[Vec<Value>]) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TDS_PRELOGIN` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const TDS_PRELOGIN: u8 = 18;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TDS_LOGIN7` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TDS_LOGIN7: u8 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_INFO` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const TOKEN_INFO: u8 = 0xAB;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_DONEPROC` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const TOKEN_DONEPROC: u8 = 0xFE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_DONEINPROC` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const TOKEN_DONEINPROC: u8 = 0xFF;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_ORDER` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const TOKEN_ORDER: u8 = 0xA9;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DONE_MORE` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const DONE_MORE: u16 = 0x0001;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TDS_TYPE_BIGVARCHAR` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const TDS_TYPE_BIGVARCHAR: u8 = 0xA7;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse_login7_database` is never used
[INFO] [stdout]    --> src/server/tds_protocol.rs:369:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl TdsConnection {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     fn parse_login7_database(payload: &[u8]) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool_size` is never read
[INFO] [stdout]   --> src/storage/concurrent_bpm.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ConcurrentBufferPool {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pool_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:671:13
[INFO] [stdout]     |
[INFO] [stdout] 671 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `columns_sql` is never read
[INFO] [stdout]   --> src/database.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct PartitionMeta {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     columns_sql: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PartitionMeta` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:696:13
[INFO] [stdout]     |
[INFO] [stdout] 696 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:725:13
[INFO] [stdout]     |
[INFO] [stdout] 725 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:752:13
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:783:13
[INFO] [stdout]     |
[INFO] [stdout] 783 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:821:13
[INFO] [stdout]     |
[INFO] [stdout] 821 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Varchar(50), TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/btree.rs:849:13
[INFO] [stdout]     |
[INFO] [stdout] 849 |         let mut idx = BTreeIndex::create(&mut bpm, DataType::Integer, TableId(0), 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> src/index/clustered.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let n = leaf_num_keys(page) as usize;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]     --> src/sql/parser.rs:1349:32
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                     for dup in &arg_list.duplicate_treatment {
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]      |
[INFO] [stdout] 1349 -                     for dup in &arg_list.duplicate_treatment {
[INFO] [stdout] 1349 +                     while let Some(dup) = &arg_list.duplicate_treatment {
[INFO] [stdout]      |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]      |
[INFO] [stdout] 1349 -                     for dup in &arg_list.duplicate_treatment {
[INFO] [stdout] 1349 +                     if let Some(dup) = &arg_list.duplicate_treatment {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/clustered.rs:663:13
[INFO] [stdout]     |
[INFO] [stdout] 663 |         let mut idx = ClusteredIndex::create(&mut bpm, 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/clustered.rs:680:13
[INFO] [stdout]     |
[INFO] [stdout] 680 |         let mut idx = ClusteredIndex::create(&mut bpm, 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/clustered.rs:699:13
[INFO] [stdout]     |
[INFO] [stdout] 699 |         let mut idx = ClusteredIndex::create(&mut bpm, 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/index/clustered.rs:719:13
[INFO] [stdout]     |
[INFO] [stdout] 719 |         let mut idx = ClusteredIndex::create(&mut bpm, 0).unwrap();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ver_off`
[INFO] [stdout]    --> src/server/tds_protocol.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 281 |         let ver_off = data_offset; data_offset += 6;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ver_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enc_off`
[INFO] [stdout]    --> src/server/tds_protocol.rs:287:13
[INFO] [stdout]     |
[INFO] [stdout] 287 |         let enc_off = data_offset; data_offset += 1;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enc_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pkt_type`
[INFO] [stdout]    --> src/server/tds_protocol.rs:330:14
[INFO] [stdout]     |
[INFO] [stdout] 330 |         let (pkt_type, payload) = self.read_packet()?;
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pkt_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/server/tds_protocol.rs:408:14
[INFO] [stdout]     |
[INFO] [stdout] 408 |         for (idx, stmt_sql) in statements.iter().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upper`
[INFO] [stdout]    --> src/server/tds_protocol.rs:605:13
[INFO] [stdout]     |
[INFO] [stdout] 605 |         let upper = s.to_uppercase();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_upper`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicBool` and `AtomicI64`
[INFO] [stdout]   --> tests/acid_compliance_test.rs:12:25
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::sync::atomic::{AtomicBool, AtomicI64, AtomicUsize, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/integration_test.rs:13:16
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let (_dir, mut db) = new_db();
[INFO] [stdout]    |                ----^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/integration_test.rs:44:16
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let (_dir, mut db) = new_db();
[INFO] [stdout]    |                ----^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/integration_test.rs:65:16
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let (_dir, mut db) = new_db();
[INFO] [stdout]    |                ----^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/integration_test.rs:88:16
[INFO] [stdout]    |
[INFO] [stdout] 88 |     let (_dir, mut db) = new_db();
[INFO] [stdout]    |                ----^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:105:16
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:134:16
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:156:16
[INFO] [stdout]     |
[INFO] [stdout] 156 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:172:16
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 203 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:230:16
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:247:16
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:263:16
[INFO] [stdout]     |
[INFO] [stdout] 263 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:288:16
[INFO] [stdout]     |
[INFO] [stdout] 288 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tuple/tuple.rs:414:13
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let mut pos = bitmap_len;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/tuple/tuple.rs:414:13
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let mut pos = bitmap_len;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:306:16
[INFO] [stdout]     |
[INFO] [stdout] 306 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let mut db = Database::new(&path).unwrap();
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let mut db = Database::open(&path).unwrap();
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:361:16
[INFO] [stdout]     |
[INFO] [stdout] 361 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:386:16
[INFO] [stdout]     |
[INFO] [stdout] 386 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:411:16
[INFO] [stdout]     |
[INFO] [stdout] 411 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:431:16
[INFO] [stdout]     |
[INFO] [stdout] 431 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:447:16
[INFO] [stdout]     |
[INFO] [stdout] 447 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:481:16
[INFO] [stdout]     |
[INFO] [stdout] 481 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:500:16
[INFO] [stdout]     |
[INFO] [stdout] 500 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:523:16
[INFO] [stdout]     |
[INFO] [stdout] 523 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:547:16
[INFO] [stdout]     |
[INFO] [stdout] 547 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:564:16
[INFO] [stdout]     |
[INFO] [stdout] 564 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:577:16
[INFO] [stdout]     |
[INFO] [stdout] 577 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:595:16
[INFO] [stdout]     |
[INFO] [stdout] 595 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:617:16
[INFO] [stdout]     |
[INFO] [stdout] 617 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:629:16
[INFO] [stdout]     |
[INFO] [stdout] 629 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:641:16
[INFO] [stdout]     |
[INFO] [stdout] 641 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:651:16
[INFO] [stdout]     |
[INFO] [stdout] 651 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:662:16
[INFO] [stdout]     |
[INFO] [stdout] 662 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_test.rs:675:16
[INFO] [stdout]     |
[INFO] [stdout] 675 |     let (_dir, mut db) = new_db();
[INFO] [stdout]     |                ----^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/database.rs:311:17
[INFO] [stdout]     |
[INFO] [stdout] 311 |             let mut cursors = self.cursors.lock().unwrap();
[INFO] [stdout]     |                 ----^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/database.rs:487:37
[INFO] [stdout]     |
[INFO] [stdout] 487 |                         if let Some(mut full_log) = tm.take_undo_log(txn_id) {
[INFO] [stdout]     |                                     ----^^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upper`
[INFO] [stdout]     --> src/database.rs:1744:13
[INFO] [stdout]      |
[INFO] [stdout] 1744 |         let upper = text.to_uppercase();
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_upper`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `errors`
[INFO] [stdout]     --> tests/acid_compliance_test.rs:1434:13
[INFO] [stdout]      |
[INFO] [stdout] 1434 |         let errors = Arc::clone(&errors);
[INFO] [stdout]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_errors`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `value_eq` is never used
[INFO] [stdout]    --> src/executor/aggregate.rs:791:4
[INFO] [stdout]     |
[INFO] [stdout] 791 | fn value_eq(a: &Value, b: &Value) -> 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: field `distinct` is never read
[INFO] [stdout]    --> src/executor/aggregate.rs:928:36
[INFO] [stdout]     |
[INFO] [stdout] 928 |     Agg { func: String, arg: Expr, distinct: bool },
[INFO] [stdout]     |     --- field in this variant      ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StreamColDesc` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `send_result_set`, `build_column_definition`, and `find_column_index_by_name` are never used
[INFO] [stdout]    --> src/server/mysql_protocol.rs:385:8
[INFO] [stdout]     |
[INFO] [stdout] 184 | impl ConnectionHandler {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 385 |     fn send_result_set(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     fn build_column_definition(&self, col_name: &str, rows: &[Vec<Value>]) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     fn find_column_index_by_name(&self, _col_name: &str, _rows: &[Vec<Value>]) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TDS_PRELOGIN` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const TDS_PRELOGIN: u8 = 18;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TDS_LOGIN7` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TDS_LOGIN7: u8 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_INFO` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const TOKEN_INFO: u8 = 0xAB;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_DONEPROC` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const TOKEN_DONEPROC: u8 = 0xFE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_DONEINPROC` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const TOKEN_DONEINPROC: u8 = 0xFF;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOKEN_ORDER` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const TOKEN_ORDER: u8 = 0xA9;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DONE_MORE` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const DONE_MORE: u16 = 0x0001;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TDS_TYPE_BIGVARCHAR` is never used
[INFO] [stdout]   --> src/server/tds_protocol.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const TDS_TYPE_BIGVARCHAR: u8 = 0xA7;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse_login7_database` is never used
[INFO] [stdout]    --> src/server/tds_protocol.rs:369:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl TdsConnection {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     fn parse_login7_database(payload: &[u8]) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool_size` is never read
[INFO] [stdout]   --> src/storage/concurrent_bpm.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ConcurrentBufferPool {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pool_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `columns_sql` is never read
[INFO] [stdout]   --> src/database.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct PartitionMeta {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     columns_sql: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PartitionMeta` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]     --> src/sql/parser.rs:1349:32
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                     for dup in &arg_list.duplicate_treatment {
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]      |
[INFO] [stdout] 1349 -                     for dup in &arg_list.duplicate_treatment {
[INFO] [stdout] 1349 +                     while let Some(dup) = &arg_list.duplicate_treatment {
[INFO] [stdout]      |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]      |
[INFO] [stdout] 1349 -                     for dup in &arg_list.duplicate_treatment {
[INFO] [stdout] 1349 +                     if let Some(dup) = &arg_list.duplicate_treatment {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.55s
[INFO] running `Command { std: "docker" "inspect" "3091a87d9536c74ea8b7a2faca0935b66ab7c2816986a5b70564ff98e013c0d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3091a87d9536c74ea8b7a2faca0935b66ab7c2816986a5b70564ff98e013c0d8", kill_on_drop: false }`
[INFO] [stdout] 3091a87d9536c74ea8b7a2faca0935b66ab7c2816986a5b70564ff98e013c0d8
