[INFO] updating cached repository https://github.com/ivanceras/inquerest [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/big/crater/work/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] 7874ca9c8566f4d4ed65a74f78081921bcce4242 [INFO] testing ivanceras/inquerest against beta-2019-09-28 for beta-1.39-1 [INFO] running `"git" "clone" "work/cache/git-repos/https%3A%2F%2Fgithub.com%2Fivanceras%2Finquerest" "work/builds/worker-3/source"` [INFO] [stderr] Cloning into 'work/builds/worker-3/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/ivanceras/inquerest on toolchain beta-2019-09-28 [INFO] running `"/big/crater/work/cargo-home/bin/cargo" "+beta-2019-09-28" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/ivanceras/inquerest [INFO] finished tweaking git repo https://github.com/ivanceras/inquerest [INFO] tweaked toml for git repo https://github.com/ivanceras/inquerest written to work/builds/worker-3/source/Cargo.toml [INFO] crate git repo https://github.com/ivanceras/inquerest already has a lockfile, it will not be regenerated [INFO] running `"/big/crater/work/cargo-home/bin/cargo" "+beta-2019-09-28" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/big/crater/work/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/big/crater/work/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-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" "+beta-2019-09-28" "build" "--frozen"` [INFO] [stdout] 9d234594bf463557fdfb9e154dc030ea46729b8b631fcbb4e7453844ca9e25d5 [INFO] running `"docker" "start" "-a" "9d234594bf463557fdfb9e154dc030ea46729b8b631fcbb4e7453844ca9e25d5"` [INFO] [stderr] Compiling inquerest v0.2.2 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/lib.rs:352:1 [INFO] [stderr] | [INFO] [stderr] 352 | / /// hard to distinguest `column.direction` from `table.column` [INFO] [stderr] 353 | | /// i.e: `person.age` and `age.desc` [INFO] [stderr] 354 | | /// use strict `column_only` instead, which doesn't include `.` [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] 355 | / named!(pub order , [INFO] [stderr] 356 | | do_parse!( [INFO] [stderr] 357 | | col: column_only >> [INFO] [stderr] 358 | | dir: opt!(complete!(preceded!(tag!("."), direction))) >> [INFO] [stderr] ... | [INFO] [stderr] 365 | | ) [INFO] [stderr] 366 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:9 [INFO] [stderr] | [INFO] [stderr] 1 | #![deny(warnings)] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: `#[warn(unused_doc_comments)]` implied by `#[warn(warnings)]` [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.47s [INFO] running `"docker" "inspect" "9d234594bf463557fdfb9e154dc030ea46729b8b631fcbb4e7453844ca9e25d5"` [INFO] running `"docker" "rm" "-f" "9d234594bf463557fdfb9e154dc030ea46729b8b631fcbb4e7453844ca9e25d5"` [INFO] [stdout] 9d234594bf463557fdfb9e154dc030ea46729b8b631fcbb4e7453844ca9e25d5 [INFO] running `"docker" "create" "-v" "/big/crater/work/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/big/crater/work/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-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" "+beta-2019-09-28" "test" "--frozen" "--no-run"` [INFO] [stdout] 9275ebe2133ec10b8f7c5648a3aa074aff870c2e1cd91324fa7482178d303adf [INFO] running `"docker" "start" "-a" "9275ebe2133ec10b8f7c5648a3aa074aff870c2e1cd91324fa7482178d303adf"` [INFO] [stderr] Compiling inquerest v0.2.2 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/lib.rs:352:1 [INFO] [stderr] | [INFO] [stderr] 352 | / /// hard to distinguest `column.direction` from `table.column` [INFO] [stderr] 353 | | /// i.e: `person.age` and `age.desc` [INFO] [stderr] 354 | | /// use strict `column_only` instead, which doesn't include `.` [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] 355 | / named!(pub order , [INFO] [stderr] 356 | | do_parse!( [INFO] [stderr] 357 | | col: column_only >> [INFO] [stderr] 358 | | dir: opt!(complete!(preceded!(tag!("."), direction))) >> [INFO] [stderr] ... | [INFO] [stderr] 365 | | ) [INFO] [stderr] 366 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:9 [INFO] [stderr] | [INFO] [stderr] 1 | #![deny(warnings)] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: `#[warn(unused_doc_comments)]` implied by `#[warn(warnings)]` [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_table_column_order` [INFO] [stderr] --> tests/test_order.rs:32:1 [INFO] [stderr] | [INFO] [stderr] 32 | fn test_table_column_order(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_order_by4` [INFO] [stderr] --> tests/test_order.rs:96:1 [INFO] [stderr] | [INFO] [stderr] 96 | fn test_order_by4(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_function` [INFO] [stderr] --> tests/test_condition.rs:97:1 [INFO] [stderr] | [INFO] [stderr] 97 | fn test_function(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `enclosed_and_filter` [INFO] [stderr] --> tests/test_filter.rs:61:1 [INFO] [stderr] | [INFO] [stderr] 61 | fn enclosed_and_filter(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `enclosed_or_filter` [INFO] [stderr] --> tests/test_filter.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | fn enclosed_or_filter(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `enclosed_or_and_filter` [INFO] [stderr] --> tests/test_filter.rs:378:1 [INFO] [stderr] | [INFO] [stderr] 378 | fn enclosed_or_and_filter(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `enclosed_or_and_filter2` [INFO] [stderr] --> tests/test_filter.rs:416:1 [INFO] [stderr] | [INFO] [stderr] 416 | fn enclosed_or_and_filter2(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `equal_and_and` [INFO] [stderr] --> tests/test_filter.rs:497:1 [INFO] [stderr] | [INFO] [stderr] 497 | fn equal_and_and(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `equal_or_or` [INFO] [stderr] --> tests/test_filter.rs:502:1 [INFO] [stderr] | [INFO] [stderr] 502 | fn equal_or_or(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `equal_enclosed_or` [INFO] [stderr] --> tests/test_filter.rs:508:1 [INFO] [stderr] | [INFO] [stderr] 508 | fn equal_enclosed_or(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `equal_enclosed_and` [INFO] [stderr] --> tests/test_filter.rs:513:1 [INFO] [stderr] | [INFO] [stderr] 513 | fn equal_enclosed_and(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_limit_only` [INFO] [stderr] --> tests/test_query.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | fn test_limit_only(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_limit_and_offset` [INFO] [stderr] --> tests/test_query.rs:27:1 [INFO] [stderr] | [INFO] [stderr] 27 | fn test_limit_and_offset(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 5.28s [INFO] running `"docker" "inspect" "9275ebe2133ec10b8f7c5648a3aa074aff870c2e1cd91324fa7482178d303adf"` [INFO] running `"docker" "rm" "-f" "9275ebe2133ec10b8f7c5648a3aa074aff870c2e1cd91324fa7482178d303adf"` [INFO] [stdout] 9275ebe2133ec10b8f7c5648a3aa074aff870c2e1cd91324fa7482178d303adf [INFO] running `"docker" "create" "-v" "/big/crater/work/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/big/crater/work/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-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" "+beta-2019-09-28" "test" "--frozen"` [INFO] [stdout] fc9d19abcb903b5fa9ec727f973e5792084f6e0a4f8c06ae681b58bc189087c3 [INFO] running `"docker" "start" "-a" "fc9d19abcb903b5fa9ec727f973e5792084f6e0a4f8c06ae681b58bc189087c3"` [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.02s [INFO] [stderr] Running /opt/rustwide/target/debug/deps/inquerest-2d7624e323d38cdd [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test test_boolean_true ... ok [INFO] [stdout] test test_boolean_false ... ok [INFO] [stdout] test test_column ... ok [INFO] [stdout] test test_condition ... ok [INFO] [stdout] test test_equation ... ok [INFO] [stdout] test test_equation_preceded ... ok [INFO] [stdout] test test_function ... ok [INFO] [stdout] test test_euqation ... ok [INFO] [stdout] test test_from ... ok [INFO] [stdout] test test_filter ... ok [INFO] [stdout] test test_equation_focused_record ... ok [INFO] [stdout] test test_order ... ok [INFO] [stdout] test test_number ... ok [INFO] [stdout] test test_left_join ... ok [INFO] [stdout] test test_join ... ok [INFO] [stdout] test test_percent20 ... ok [INFO] [stdout] test test_starts_with ... ok [INFO] [stdout] test test_table_column ... ok [INFO] [stdout] test test_query ... ok [INFO] [stdout] test test_join_without_on ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_condition-eceb940d5a0df018 [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_eq ... ok [INFO] [stdout] test test_gte ... ok [INFO] [stdout] test test_gt ... ok [INFO] [stdout] test test_lt ... ok [INFO] [stdout] test test_lte ... ok [INFO] [stdout] test test_neq ... ok [INFO] [stdout] test test_ltee ... ok [INFO] [stdout] test test_lgee ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_filter-57e94019150c88d5 [INFO] [stdout] [INFO] [stdout] running 13 tests [INFO] [stdout] test and_filter ... ok [INFO] [stdout] test and_and_filter ... ok [INFO] [stdout] test function_filter ... ok [INFO] [stdout] test equal_filter ... ok [INFO] [stdout] test and_or_filter ... ok [INFO] [stdout] test or_and_filter ... ok [INFO] [stdout] test or_filter ... ok [INFO] [stdout] test or_and_filter_with_function ... ok [INFO] [stdout] test test_enclosed ... ok [INFO] [stdout] test recursive_function_filter ... ok [INFO] [stdout] test test_simple ... ok [INFO] [stdout] test or_or_filter ... ok [INFO] [stdout] test enclosed_or_filter2 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_function-e068724625c1e5d4 [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test test_max ... ok [INFO] [stdout] test test_max_sum ... ok [INFO] [stdout] test test_min ... ok [INFO] [stdout] test test_sum ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_group_by-fb556fd355e3ef77 [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test test_group ... ok [INFO] [stdout] test test_group2 ... ok [INFO] [stdout] test test_group3 ... ok [INFO] [stdout] test test_group_sum ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_operand-1dfac1a089947204 [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test test_column ... ok [INFO] [stdout] test test_number ... ok [INFO] [stdout] test test_function ... ok [INFO] [stdout] test test_table_column ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_order-3cf6c9a0e8375472 [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test test_desc ... ok [INFO] [stdout] test test_asc ... ok [INFO] [stdout] test test_order_by ... ok [INFO] [stdout] test test_order_by2 ... ok [INFO] [stdout] test test_order_by3 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/test_query-2c5ed78ab93377a7 [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test test_equations_filter_groupby_orderby ... ok [INFO] [stdout] test test_equations_filter_groupby_having_orderby_limit ... ok [INFO] [stdout] test test_equations_filter_groupby_having_orderby ... ok [INFO] [stdout] test test_equations_filter_groupby_having_orderby_page ... ok [INFO] [stdout] test test_focused ... ok [INFO] [stdout] test test_one_equation_only ... ok [INFO] [stdout] test test_valid_operand_qouted ... ok [INFO] [stdout] test test_orderby ... FAILED [INFO] [stdout] test test_orderby2 ... FAILED [INFO] [stdout] test test_filter_groupby_orderby ... FAILED [INFO] [stdout] test test_groupby ... FAILED [INFO] [stdout] test test_groupby_orderby ... FAILED [INFO] [stdout] test test_groupby2 ... FAILED [INFO] [stdout] test test_orderby_nullsfirst ... FAILED [INFO] [stdout] test test_filter_orderby ... FAILED [INFO] [stdout] test test_equations_from_join_filter_groupby_having_orderby_limit ... FAILED [INFO] [stdout] test test_filters ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- test_orderby stdout ---- [INFO] [stdout] thread 'test_orderby' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [Order { operand: Column("height"), direction: Some(ASC), nulls_where: None }], range: None, equations: [] })`, [INFO] [stdout] right: `Done([], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [Equation { left: Column("order_by"), right: Column("height.asc") }] })`', tests/test_query.rs:279:5 [INFO] [stdout] [INFO] [stdout] ---- test_orderby2 stdout ---- [INFO] [stdout] thread 'test_orderby2' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [Order { operand: Column("height"), direction: Some(ASC), nulls_where: None }, Order { operand: Column("grade"), direction: Some(DESC), nulls_where: None }], range: None, equations: [] })`, [INFO] [stdout] right: `Done([44, 103, 114, 97, 100, 101, 46, 100, 101, 115, 99], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [Equation { left: Column("order_by"), right: Column("height.asc") }] })`', tests/test_query.rs:303:5 [INFO] [stdout] [INFO] [stdout] ---- test_filter_groupby_orderby stdout ---- [INFO] [stdout] thread 'test_filter_groupby_orderby' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [Filter { connector: None, condition: Condition { left: Column("age"), equality: LT, right: Number(13.0) }, sub_filters: [Filter { connector: Some(AND), condition: Condition { left: Column("student"), equality: EQ, right: Boolean(true) }, sub_filters: [] }, Filter { connector: Some(OR), condition: Condition { left: Column("gender"), equality: EQ, right: Column("M") }, sub_filters: [] }] }], group_by: [Function(Function { function: "sum", params: [Column("age")] }), Column("grade"), Column("gender")], having: [], order_by: [Order { operand: Column("age"), direction: Some(DESC), nulls_where: None }, Order { operand: Column("height"), direction: Some(ASC), nulls_where: None }], range: None, equations: [] })`, [INFO] [stdout] right: `Incomplete(Size(98))`', tests/test_query.rs:147:5 [INFO] [stdout] note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace. [INFO] [stdout] [INFO] [stdout] ---- test_groupby stdout ---- [INFO] [stdout] thread 'test_groupby' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [], group_by: [Column("height")], having: [], order_by: [], range: None, equations: [] })`, [INFO] [stdout] right: `Done([], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [Equation { left: Column("group_by"), right: Column("height") }] })`', tests/test_query.rs:320:5 [INFO] [stdout] [INFO] [stdout] ---- test_groupby_orderby stdout ---- [INFO] [stdout] thread 'test_groupby_orderby' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [], group_by: [Function(Function { function: "avg", params: [Column("grade")] }), Column("height")], having: [], order_by: [Order { operand: Column("height"), direction: Some(ASC), nulls_where: None }, Order { operand: Column("grade"), direction: Some(DESC), nulls_where: None }], range: None, equations: [] })`, [INFO] [stdout] right: `Done([44, 104, 101, 105, 103, 104, 116, 38, 111, 114, 100, 101, 114, 95, 98, 121, 61, 104, 101, 105, 103, 104, 116, 46, 97, 115, 99, 44, 103, 114, 97, 100, 101, 46, 100, 101, 115, 99], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [Equation { left: Column("group_by"), right: Function(Function { function: "avg", params: [Column("grade")] }) }] })`', tests/test_query.rs:354:5 [INFO] [stdout] [INFO] [stdout] ---- test_groupby2 stdout ---- [INFO] [stdout] thread 'test_groupby2' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [], group_by: [Function(Function { function: "avg", params: [Column("grade")] }), Column("height")], having: [], order_by: [], range: None, equations: [] })`, [INFO] [stdout] right: `Done([44, 104, 101, 105, 103, 104, 116], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [Equation { left: Column("group_by"), right: Function(Function { function: "avg", params: [Column("grade")] }) }] })`', tests/test_query.rs:333:5 [INFO] [stdout] [INFO] [stdout] ---- test_orderby_nullsfirst stdout ---- [INFO] [stdout] thread 'test_orderby_nullsfirst' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [Order { operand: Column("height"), direction: Some(ASC), nulls_where: Some(FIRST) }], range: None, equations: [] })`, [INFO] [stdout] right: `Done([], Select { from: [], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [Equation { left: Column("order_by"), right: Column("height.asc.nullsfirst") }] })`', tests/test_query.rs:291:5 [INFO] [stdout] [INFO] [stdout] ---- test_filter_orderby stdout ---- [INFO] [stdout] thread 'test_filter_orderby' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [Filter { connector: None, condition: Condition { left: Column("age"), equality: LT, right: Number(13.0) }, sub_filters: [Filter { connector: Some(AND), condition: Condition { left: Column("student"), equality: EQ, right: Boolean(true) }, sub_filters: [Filter { connector: Some(OR), condition: Condition { left: Column("gender"), equality: EQ, right: Column("M") }, sub_filters: [] }] }] }], group_by: [], having: [], order_by: [Order { operand: Column("age"), direction: Some(DESC), nulls_where: None }, Order { operand: Column("height"), direction: Some(ASC), nulls_where: None }], range: None, equations: [] })`, [INFO] [stdout] right: `Done([38, 40, 115, 116, 117, 100, 101, 110, 116, 61, 101, 113, 46, 116, 114, 117, 101, 124, 103, 101, 110, 100, 101, 114, 61, 101, 113, 46, 77, 41, 38, 111, 114, 100, 101, 114, 95, 98, 121, 61, 97, 103, 101, 46, 100, 101, 115, 99, 44, 104, 101, 105, 103, 104, 116, 46, 97, 115, 99], Select { from: [], join: [], filters: [Filter { connector: None, condition: Condition { left: Column("age"), equality: LT, right: Number(13.0) }, sub_filters: [] }], group_by: [], having: [], order_by: [], range: None, equations: [] })`', tests/test_query.rs:94:5 [INFO] [stdout] [INFO] [stdout] ---- test_equations_from_join_filter_groupby_having_orderby_limit stdout ---- [INFO] [stdout] Done( [INFO] [stdout] [ [INFO] [stdout] 44, [INFO] [stdout] 115, [INFO] [stdout] 116, [INFO] [stdout] 117, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 116, [INFO] [stdout] 38, [INFO] [stdout] 108, [INFO] [stdout] 101, [INFO] [stdout] 102, [INFO] [stdout] 116, [INFO] [stdout] 95, [INFO] [stdout] 106, [INFO] [stdout] 111, [INFO] [stdout] 105, [INFO] [stdout] 110, [INFO] [stdout] 61, [INFO] [stdout] 112, [INFO] [stdout] 101, [INFO] [stdout] 114, [INFO] [stdout] 115, [INFO] [stdout] 111, [INFO] [stdout] 110, [INFO] [stdout] 95, [INFO] [stdout] 115, [INFO] [stdout] 116, [INFO] [stdout] 117, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 116, [INFO] [stdout] 38, [INFO] [stdout] 111, [INFO] [stdout] 110, [INFO] [stdout] 61, [INFO] [stdout] 115, [INFO] [stdout] 116, [INFO] [stdout] 117, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 116, [INFO] [stdout] 46, [INFO] [stdout] 105, [INFO] [stdout] 100, [INFO] [stdout] 61, [INFO] [stdout] 112, [INFO] [stdout] 101, [INFO] [stdout] 114, [INFO] [stdout] 115, [INFO] [stdout] 111, [INFO] [stdout] 110, [INFO] [stdout] 46, [INFO] [stdout] 115, [INFO] [stdout] 116, [INFO] [stdout] 117, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 116, [INFO] [stdout] 95, [INFO] [stdout] 105, [INFO] [stdout] 100, [INFO] [stdout] 38, [INFO] [stdout] 97, [INFO] [stdout] 103, [INFO] [stdout] 101, [INFO] [stdout] 61, [INFO] [stdout] 108, [INFO] [stdout] 116, [INFO] [stdout] 46, [INFO] [stdout] 49, [INFO] [stdout] 51, [INFO] [stdout] 38, [INFO] [stdout] 115, [INFO] [stdout] 116, [INFO] [stdout] 117, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 116, [INFO] [stdout] 61, [INFO] [stdout] 101, [INFO] [stdout] 113, [INFO] [stdout] 46, [INFO] [stdout] 116, [INFO] [stdout] 114, [INFO] [stdout] 117, [INFO] [stdout] 101, [INFO] [stdout] 124, [INFO] [stdout] 103, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 114, [INFO] [stdout] 61, [INFO] [stdout] 101, [INFO] [stdout] 113, [INFO] [stdout] 46, [INFO] [stdout] 77, [INFO] [stdout] 38, [INFO] [stdout] 103, [INFO] [stdout] 114, [INFO] [stdout] 111, [INFO] [stdout] 117, [INFO] [stdout] 112, [INFO] [stdout] 95, [INFO] [stdout] 98, [INFO] [stdout] 121, [INFO] [stdout] 61, [INFO] [stdout] 115, [INFO] [stdout] 117, [INFO] [stdout] 109, [INFO] [stdout] 40, [INFO] [stdout] 97, [INFO] [stdout] 103, [INFO] [stdout] 101, [INFO] [stdout] 41, [INFO] [stdout] 44, [INFO] [stdout] 103, [INFO] [stdout] 114, [INFO] [stdout] 97, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 44, [INFO] [stdout] 103, [INFO] [stdout] 101, [INFO] [stdout] 110, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 114, [INFO] [stdout] 38, [INFO] [stdout] 104, [INFO] [stdout] 97, [INFO] [stdout] 118, [INFO] [stdout] 105, [INFO] [stdout] 110, [INFO] [stdout] 103, [INFO] [stdout] 61, [INFO] [stdout] 109, [INFO] [stdout] 105, [INFO] [stdout] 110, [INFO] [stdout] 40, [INFO] [stdout] 97, [INFO] [stdout] 103, [INFO] [stdout] 101, [INFO] [stdout] 41, [INFO] [stdout] 61, [INFO] [stdout] 103, [INFO] [stdout] 116, [INFO] [stdout] 46, [INFO] [stdout] 49, [INFO] [stdout] 51, [INFO] [stdout] 38, [INFO] [stdout] 111, [INFO] [stdout] 114, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 114, [INFO] [stdout] 95, [INFO] [stdout] 98, [INFO] [stdout] 121, [INFO] [stdout] 61, [INFO] [stdout] 97, [INFO] [stdout] 103, [INFO] [stdout] 101, [INFO] [stdout] 46, [INFO] [stdout] 100, [INFO] [stdout] 101, [INFO] [stdout] 115, [INFO] [stdout] 99, [INFO] [stdout] 44, [INFO] [stdout] 104, [INFO] [stdout] 101, [INFO] [stdout] 105, [INFO] [stdout] 103, [INFO] [stdout] 104, [INFO] [stdout] 116, [INFO] [stdout] 46, [INFO] [stdout] 97, [INFO] [stdout] 115, [INFO] [stdout] 99, [INFO] [stdout] 38, [INFO] [stdout] 108, [INFO] [stdout] 105, [INFO] [stdout] 109, [INFO] [stdout] 105, [INFO] [stdout] 116, [INFO] [stdout] 61, [INFO] [stdout] 49, [INFO] [stdout] 48, [INFO] [stdout] 48, [INFO] [stdout] 38, [INFO] [stdout] 111, [INFO] [stdout] 102, [INFO] [stdout] 102, [INFO] [stdout] 115, [INFO] [stdout] 101, [INFO] [stdout] 116, [INFO] [stdout] 61, [INFO] [stdout] 50, [INFO] [stdout] 53, [INFO] [stdout] 38, [INFO] [stdout] 120, [INFO] [stdout] 61, [INFO] [stdout] 49, [INFO] [stdout] 50, [INFO] [stdout] 51, [INFO] [stdout] 38, [INFO] [stdout] 121, [INFO] [stdout] 61, [INFO] [stdout] 52, [INFO] [stdout] 53, [INFO] [stdout] 54, [INFO] [stdout] ], [INFO] [stdout] Select { [INFO] [stdout] from: [ [INFO] [stdout] Column( [INFO] [stdout] "bazaar.person", [INFO] [stdout] ), [INFO] [stdout] ], [INFO] [stdout] join: [], [INFO] [stdout] filters: [], [INFO] [stdout] group_by: [], [INFO] [stdout] having: [], [INFO] [stdout] order_by: [], [INFO] [stdout] range: None, [INFO] [stdout] equations: [], [INFO] [stdout] }, [INFO] [stdout] ) [INFO] [stdout] thread 'test_equations_from_join_filter_groupby_having_orderby_limit' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [Column("bazaar.person"), Column("student")], join: [Join { modifier: Some(LEFT), join_type: None, table: Column("person_student"), column1: ["student.id"], column2: ["person.student_id"] }], filters: [Filter { connector: None, condition: Condition { left: Column("age"), equality: LT, right: Number(13.0) }, sub_filters: [Filter { connector: Some(AND), condition: Condition { left: Column("student"), equality: EQ, right: Boolean(true) }, sub_filters: [] }, Filter { connector: Some(OR), condition: Condition { left: Column("gender"), equality: EQ, right: Value("M") }, sub_filters: [] }] }], group_by: [Function(Function { function: "sum", params: [Column("age")] }), Column("grade"), Column("gender")], having: [Filter { connector: None, condition: Condition { left: Function(Function { function: "min", params: [Column("age")] }), equality: GT, right: Number(13.0) }, sub_filters: [] }], order_by: [Order { operand: Column("age"), direction: Some(DESC), nulls_where: None }, Order { operand: Column("height"), direction: Some(ASC), nulls_where: None }], range: Some(Limit(Limit { limit: 100, offset: Some(25) })), equations: [Equation { left: Column("x"), right: Number(123.0) }, Equation { left: Column("y"), right: Number(456.0) }] })`, [INFO] [stdout] right: `Done([44, 115, 116, 117, 100, 101, 110, 116, 38, 108, 101, 102, 116, 95, 106, 111, 105, 110, 61, 112, 101, 114, 115, 111, 110, 95, 115, 116, 117, 100, 101, 110, 116, 38, 111, 110, 61, 115, 116, 117, 100, 101, 110, 116, 46, 105, 100, 61, 112, 101, 114, 115, 111, 110, 46, 115, 116, 117, 100, 101, 110, 116, 95, 105, 100, 38, 97, 103, 101, 61, 108, 116, 46, 49, 51, 38, 115, 116, 117, 100, 101, 110, 116, 61, 101, 113, 46, 116, 114, 117, 101, 124, 103, 101, 110, 100, 101, 114, 61, 101, 113, 46, 77, 38, 103, 114, 111, 117, 112, 95, 98, 121, 61, 115, 117, 109, 40, 97, 103, 101, 41, 44, 103, 114, 97, 100, 101, 44, 103, 101, 110, 100, 101, 114, 38, 104, 97, 118, 105, 110, 103, 61, 109, 105, 110, 40, 97, 103, 101, 41, 61, 103, 116, 46, 49, 51, 38, 111, 114, 100, 101, 114, 95, 98, 121, 61, 97, 103, 101, 46, 100, 101, 115, 99, 44, 104, 101, 105, 103, 104, 116, 46, 97, 115, 99, 38, 108, 105, 109, 105, 116, 61, 49, 48, 48, 38, 111, 102, 102, 115, 101, 116, 61, 50, 53, 38, 120, 61, 49, 50, 51, 38, 121, 61, 52, 53, 54], Select { from: [Column("bazaar.person")], join: [], filters: [], group_by: [], having: [], order_by: [], range: None, equations: [] })`', tests/test_query.rs:635:5 [INFO] [stdout] [INFO] [stdout] ---- test_filters stdout ---- [INFO] [stdout] thread 'test_filters' panicked at 'assertion failed: `(left == right)` [INFO] [stdout] left: `Done([], Select { from: [], join: [], filters: [Filter { connector: None, condition: Condition { left: Column("age"), equality: LT, right: Number(13.0) }, sub_filters: [Filter { connector: Some(AND), condition: Condition { left: Column("student"), equality: EQ, right: Boolean(true) }, sub_filters: [] }, Filter { connector: Some(OR), condition: Condition { left: Column("gender"), equality: EQ, right: Column("M") }, sub_filters: [] }] }], group_by: [], having: [], order_by: [], range: None, equations: [] })`, [INFO] [stdout] right: `Incomplete(Size(38))`', tests/test_query.rs:46:5 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5593b50857f4 - backtrace::backtrace::libunwind::trace::hf625d18232cbbbd4 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/libunwind.rs:88 [INFO] [stdout] 1: 0x5593b50857f4 - backtrace::backtrace::trace_unsynchronized::h41d74150fc6ff542 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/mod.rs:66 [INFO] [stdout] 2: 0x5593b50857f4 - std::sys_common::backtrace::_print_fmt::h85d37830c667a1f9 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:76 [INFO] [stdout] 3: 0x5593b50857f4 - ::fmt::h2b7ac01d5feaf9b2 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:60 [INFO] [stdout] 4: 0x5593b50a542c - core::fmt::write::h7fd0d904495c035f [INFO] [stdout] at src/libcore/fmt/mod.rs:1030 [INFO] [stdout] 5: 0x5593b4fd5cc5 - std::io::Write::write_fmt::h424452e6ba861394 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/io/mod.rs:1412 [INFO] [stdout] 6: 0x5593b5081451 - std::io::impls::>::write_fmt::h814a51d8ae1dee4a [INFO] [stdout] at src/libstd/io/impls.rs:141 [INFO] [stdout] 7: 0x5593b5087d05 - std::sys_common::backtrace::_print::h4c743f7c274a5a74 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:64 [INFO] [stdout] 8: 0x5593b5087d05 - std::sys_common::backtrace::print::ha5c4f4bf03800d4d [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:49 [INFO] [stdout] 9: 0x5593b5087d05 - std::panicking::default_hook::{{closure}}::h8b842185774c09e6 [INFO] [stdout] at src/libstd/panicking.rs:196 [INFO] [stdout] 10: 0x5593b508798c - std::panicking::default_hook::hd8ec13ee1bc2a65a [INFO] [stdout] at src/libstd/panicking.rs:207 [INFO] [stdout] 11: 0x5593b5088405 - std::panicking::rust_panic_with_hook::hf3b27166e5f403e7 [INFO] [stdout] at src/libstd/panicking.rs:473 [INFO] [stdout] 12: 0x5593b5087fa2 - std::panicking::continue_panic_fmt::hd961751be84a6f83 [INFO] [stdout] at src/libstd/panicking.rs:380 [INFO] [stdout] 13: 0x5593b5087efc - std::panicking::begin_panic_fmt::h23ef54e17e5a13fa [INFO] [stdout] at src/libstd/panicking.rs:335 [INFO] [stdout] 14: 0x5593b4fbb12b - test_query::test_filters::ha4571aec48bc4975 [INFO] [stdout] at tests/test_query.rs:46 [INFO] [stdout] 15: 0x5593b4fba61a - test_query::test_filters::{{closure}}::hd694410a33e48d6d [INFO] [stdout] at tests/test_query.rs:45 [INFO] [stdout] 16: 0x5593b4fd2b5e - core::ops::function::FnOnce::call_once::h1aad8b997657633b [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libcore/ops/function.rs:227 [INFO] [stdout] 17: 0x5593b4fdfbbf - as core::ops::function::FnOnce>::call_once::h8b428e8a43aaf8e9 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/liballoc/boxed.rs:922 [INFO] [stdout] 18: 0x5593b508ab0a - __rust_maybe_catch_panic [INFO] [stdout] at src/libpanic_unwind/lib.rs:80 [INFO] [stdout] 19: 0x5593b4ffa3ce - std::panicking::try::heccce20d527a3513 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/panicking.rs:271 [INFO] [stdout] 20: 0x5593b4ffa3ce - std::panic::catch_unwind::h7fd8f5d3271f1692 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/panic.rs:394 [INFO] [stdout] 21: 0x5593b4ffa3ce - test::run_test::run_test_inner::{{closure}}::h88b46e5c359957e5 [INFO] [stdout] at src/libtest/lib.rs:1413 [INFO] [stdout] 22: 0x5593b4fd5435 - std::sys_common::backtrace::__rust_begin_short_backtrace::h00847676c8212941 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/sys_common/backtrace.rs:126 [INFO] [stdout] 23: 0x5593b4fd95c5 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h5dd37acd2295488e [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/thread/mod.rs:470 [INFO] [stdout] 24: 0x5593b4fd95c5 - as core::ops::function::FnOnce<()>>::call_once::h9d32b103da0b97c6 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/panic.rs:315 [INFO] [stdout] 25: 0x5593b4fd95c5 - std::panicking::try::do_call::h2bd819a3056c57cd [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/panicking.rs:292 [INFO] [stdout] 26: 0x5593b508ab0a - __rust_maybe_catch_panic [INFO] [stdout] at src/libpanic_unwind/lib.rs:80 [INFO] [stdout] 27: 0x5593b4fd9b72 - std::panicking::try::h243a25457a848a1a [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/panicking.rs:271 [INFO] [stdout] 28: 0x5593b4fd9b72 - std::panic::catch_unwind::h74b81f55e55e757c [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/panic.rs:394 [INFO] [stdout] 29: 0x5593b4fd9b72 - std::thread::Builder::spawn_unchecked::{{closure}}::h4c2d214a2cffa6cf [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libstd/thread/mod.rs:469 [INFO] [stdout] 30: 0x5593b4fd9b72 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h8a8a187b3fb58e53 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/libcore/ops/function.rs:227 [INFO] [stdout] 31: 0x5593b507deaf - as core::ops::function::FnOnce>::call_once::h3cdef3b7ea22cd61 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/liballoc/boxed.rs:922 [INFO] [stdout] 32: 0x5593b508a260 - as core::ops::function::FnOnce>::call_once::hc8f25720bf0d5424 [INFO] [stdout] at /rustc/5752b6348ee6971573b278c315a02193c847ee32/src/liballoc/boxed.rs:922 [INFO] [stdout] 33: 0x5593b508a260 - std::sys_common::thread::start_thread::h7e8885ccfd5d1932 [INFO] [stdout] at src/libstd/sys_common/thread.rs:13 [INFO] [stdout] 34: 0x5593b508a260 - std::sys::unix::thread::Thread::new::thread_start::h5d24df932d688baf [INFO] [stdout] at src/libstd/sys/unix/thread.rs:79 [INFO] [stdout] 35: 0x7f32d05276db - start_thread [INFO] [stdout] 36: 0x7f32d003888f - __clone [INFO] [stdout] 37: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] test_equations_from_join_filter_groupby_having_orderby_limit [INFO] [stdout] test_filter_groupby_orderby [INFO] [stdout] test_filter_orderby [INFO] [stdout] test_filters [INFO] [stdout] test_groupby [INFO] [stdout] test_groupby2 [INFO] [stdout] test_groupby_orderby [INFO] [stdout] test_orderby [INFO] [stdout] test_orderby2 [INFO] [stdout] test_orderby_nullsfirst [INFO] [stdout] [INFO] [stdout] test result: FAILED. 7 passed; 10 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass '--test test_query' [INFO] running `"docker" "inspect" "fc9d19abcb903b5fa9ec727f973e5792084f6e0a4f8c06ae681b58bc189087c3"` [INFO] running `"docker" "rm" "-f" "fc9d19abcb903b5fa9ec727f973e5792084f6e0a4f8c06ae681b58bc189087c3"` [INFO] [stdout] fc9d19abcb903b5fa9ec727f973e5792084f6e0a4f8c06ae681b58bc189087c3