[INFO] updating cached repository https://github.com/axel-kaliff/bf_to_c_compiler [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"` [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 194c9644ffcf57ac25bad56e895611887ed2a3b4 [INFO] checking axel-kaliff/bf_to_c_compiler against try#8a5e87609850cdd8679aada01eb0f3062f254ca8 for pr-71140 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faxel-kaliff%2Fbf_to_c_compiler" "/workspace/builds/worker-1/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/axel-kaliff/bf_to_c_compiler on toolchain 8a5e87609850cdd8679aada01eb0f3062f254ca8 [INFO] running `"/workspace/cargo-home/bin/cargo" "+8a5e87609850cdd8679aada01eb0f3062f254ca8" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/axel-kaliff/bf_to_c_compiler [INFO] finished tweaking git repo https://github.com/axel-kaliff/bf_to_c_compiler [INFO] tweaked toml for git repo https://github.com/axel-kaliff/bf_to_c_compiler written to /workspace/builds/worker-1/source/Cargo.toml [INFO] crate git repo https://github.com/axel-kaliff/bf_to_c_compiler already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+8a5e87609850cdd8679aada01eb0f3062f254ca8" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+8a5e87609850cdd8679aada01eb0f3062f254ca8" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 75df6fe3ad920c3fe80a1ae2cf1a5d7c4c5cc1612b8a1a061449d32520698db2 [INFO] running `"docker" "start" "-a" "75df6fe3ad920c3fe80a1ae2cf1a5d7c4c5cc1612b8a1a061449d32520698db2"` [INFO] [stderr] Checking rust_to_c_compiler v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking criterion v0.3.0 [INFO] [stderr] warning: unused import: `self::Token::*` [INFO] [stderr] --> src/token.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use self::Token::*; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `Read` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ help: to match on the variant, qualify the path: `token::Token::Read` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bindings_with_variant_name)]` on by default [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `Write` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ help: to match on the variant, qualify the path: `token::Token::Write` [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `BeginLoop` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ help: to match on the variant, qualify the path: `token::Token::BeginLoop` [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `EndLoop` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ help: to match on the variant, qualify the path: `token::Token::EndLoop` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 41 | Sub => { [INFO] [stderr] | ^^^ unreachable pattern [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 45 | Right => { [INFO] [stderr] | ^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 49 | Left => { [INFO] [stderr] | ^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Add` [INFO] [stderr] --> src/compiler.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_Add` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Sub` [INFO] [stderr] --> src/compiler.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | Sub => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_Sub` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Right` [INFO] [stderr] --> src/compiler.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | Right => { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Right` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Left` [INFO] [stderr] --> src/compiler.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | Left => { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_Left` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Read` [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_Read` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Write` [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Write` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `BeginLoop` [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_BeginLoop` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `EndLoop` [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_EndLoop` [INFO] [stderr] [INFO] [stderr] warning: variable `Add` should have a snake case name [INFO] [stderr] --> src/compiler.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | ^^^ help: convert the identifier to snake case: `add` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Sub` should have a snake case name [INFO] [stderr] --> src/compiler.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | Sub => { [INFO] [stderr] | ^^^ help: convert the identifier to snake case (notice the capitalization): `sub` [INFO] [stderr] [INFO] [stderr] warning: variable `Right` should have a snake case name [INFO] [stderr] --> src/compiler.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | Right => { [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `right` [INFO] [stderr] [INFO] [stderr] warning: variable `Left` should have a snake case name [INFO] [stderr] --> src/compiler.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | Left => { [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `left` [INFO] [stderr] [INFO] [stderr] warning: variable `Read` should have a snake case name [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `read` [INFO] [stderr] [INFO] [stderr] warning: variable `Write` should have a snake case name [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case (notice the capitalization): `write` [INFO] [stderr] [INFO] [stderr] warning: variable `BeginLoop` should have a snake case name [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `begin_loop` [INFO] [stderr] [INFO] [stderr] warning: variable `EndLoop` should have a snake case name [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `end_loop` [INFO] [stderr] [INFO] [stderr] warning: 28 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0170`. [INFO] [stderr] warning: unused import: `self::Token::*` [INFO] [stderr] --> src/token.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use self::Token::*; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `Read` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ help: to match on the variant, qualify the path: `token::Token::Read` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bindings_with_variant_name)]` on by default [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `Write` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ help: to match on the variant, qualify the path: `token::Token::Write` [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `BeginLoop` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ help: to match on the variant, qualify the path: `token::Token::BeginLoop` [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `EndLoop` is named the same as one of the variants of the type `token::Token` [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ help: to match on the variant, qualify the path: `token::Token::EndLoop` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 41 | Sub => { [INFO] [stderr] | ^^^ unreachable pattern [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 45 | Right => { [INFO] [stderr] | ^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 49 | Left => { [INFO] [stderr] | ^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | --- matches any value [INFO] [stderr] ... [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ unreachable pattern [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Add` [INFO] [stderr] --> src/compiler.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_Add` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Sub` [INFO] [stderr] --> src/compiler.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | Sub => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_Sub` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Right` [INFO] [stderr] --> src/compiler.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | Right => { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Right` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Left` [INFO] [stderr] --> src/compiler.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | Left => { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_Left` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Read` [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_Read` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Write` [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Write` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `BeginLoop` [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_BeginLoop` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `EndLoop` [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_EndLoop` [INFO] [stderr] [INFO] [stderr] warning: variable `Add` should have a snake case name [INFO] [stderr] --> src/compiler.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | Add => { [INFO] [stderr] | ^^^ help: convert the identifier to snake case: `add` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Sub` should have a snake case name [INFO] [stderr] --> src/compiler.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | Sub => { [INFO] [stderr] | ^^^ help: convert the identifier to snake case (notice the capitalization): `sub` [INFO] [stderr] [INFO] [stderr] warning: variable `Right` should have a snake case name [INFO] [stderr] --> src/compiler.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | Right => { [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `right` [INFO] [stderr] [INFO] [stderr] warning: variable `Left` should have a snake case name [INFO] [stderr] --> src/compiler.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | Left => { [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `left` [INFO] [stderr] [INFO] [stderr] warning: variable `Read` should have a snake case name [INFO] [stderr] --> src/compiler.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | Read => { [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `read` [INFO] [stderr] [INFO] [stderr] warning: variable `Write` should have a snake case name [INFO] [stderr] --> src/compiler.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | Write => { [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case (notice the capitalization): `write` [INFO] [stderr] [INFO] [stderr] warning: variable `BeginLoop` should have a snake case name [INFO] [stderr] --> src/compiler.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | BeginLoop => { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `begin_loop` [INFO] [stderr] [INFO] [stderr] warning: variable `EndLoop` should have a snake case name [INFO] [stderr] --> src/compiler.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | EndLoop => { [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `end_loop` [INFO] [stderr] [INFO] [stderr] warning: 28 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0170`. [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 6.61s [INFO] running `"docker" "inspect" "75df6fe3ad920c3fe80a1ae2cf1a5d7c4c5cc1612b8a1a061449d32520698db2"` [INFO] running `"docker" "rm" "-f" "75df6fe3ad920c3fe80a1ae2cf1a5d7c4c5cc1612b8a1a061449d32520698db2"` [INFO] [stdout] 75df6fe3ad920c3fe80a1ae2cf1a5d7c4c5cc1612b8a1a061449d32520698db2