koka / odbc-rs Goto Github PK
View Code? Open in Web Editor NEWRust ODBC FFI binding
License: MIT License
Rust ODBC FFI binding
License: MIT License
Let's drop every use of direct odbc-sys calls in favor of odbc-safe crate (especially Statement related part).
Maybe a major API redesign is needed - in a more idiomatic way (with major version bump).
The problem doesn't happen every time. I just tested 5 times and I got ok, ok, err, err, err, ok, ok. Also it seems to only happen when I use bind_parameter
.
error
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: State: HY090, Native error: 0, Message: [FreeTDS][SQL Server]Invalid string or buffer length', /checkout/src/libcore/result.rs:860:4
create table
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[test](
[CODE] [int] NULL,
[VALUE] [varchar](15) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
insert data
INSERT INTO test
(CODE, VALUE)
VALUES (10605, 'a');
query
let stmt = stmt.prepare(r#"SELECT
CODE
FROM test
WHERE
CODE = ?;"#)?;
let code = 10605;
let stmt = stmt.bind_parameter(1, &code)?;
versions
rustc 1.21.0-nightly (ba1d065ff 2017-08-06)
odbc 0.9
Driver=FreeTDS
freetds 1.00.44-1
Arch Linux 64-bit
Microsoft SQL Server Standard Edition (64-bit) 9.00.3042.00
I tried to use tables_str to get all tables from a maria db.
It always returns an empty result. After some trying with odbc-c-binding and calling SQLTables with odbc-sys directly I found the solution.
If I passs null_mut() to SQLTables for catalog, schema and table, it works. So there has to be a way for tables / tables_str to provide null. Maybe with an Optional?
Don't know why the mariadb-driver handles this differently than other drivers (tried sqlite, which works if I use "%"-strings)
I am trying to connect to a sqlite3 database to query a table. In my project, the connection string gives me the error 'Diagnostics returned error for record number 2. Record numbers have to be at least 1.'
I decided to download the crate individually to see if I could run test examples and figure out what is wrong with my code. None of the tests pass.
My output is below:
cargo_test_output.txt
Also, is there a list of dependencies need for this repo? I got a linker error until I used "brew install libiodbc".
Passing mut enum across FFI boundaries causes UB in cases when ODBC driver returns value absent in enum. Details: https://users.rust-lang.org/t/undefined-behaviour-after-unsafe-enum-usage/15572
I saw custom_get_data.rs but would it be possible to have native Chrono support?
I'm thinking maybe it's not since ODBC can be used to query different sources which probably use differents datetime formats.
Looking at the docs it says that Send
and Sync
are not implemented for connection but in your r2d2-odbc crate it is "unsafely" implemented. Can they be implemented in this crate? Or do you allow it under r2d2 because it takes care not to share a connection amongst two threads?
I'm using a Japanese edition of Windows and MSSQL. When I call env.connect_with_connection_string
with an incorrect connection string, the function does not return an Err
, but causes following panick with Utf8Error
.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 33, error_len: Some(1) }', libcore\result.rs:1009:5
stack backtrace:
...
12: odbc::diagnostics::{{impl}}::fmt
at C:\Users\username\Project\rust\odbc_test\odbc-rs\src\diagnostics.rs:63
...
21: env_logger::fmt::DefaultFormat::write_args
at C:\Users\username\.cargo\registry\src\github.com-1ecc6299db9ec823\env_logger-0.6.0\src\fmt\mod.rs:290
...
28: log::__private_api_log
at C:\Users\username\.cargo\registry\src\github.com-1ecc6299db9ec823\log-0.4.6\src\lib.rs:1232
29: odbc::result::into_result<odbc_safe::data_source::DataSource<odbc_safe::data_source::connected::Connected>,odbc_safe::data_source::DataSource<odbc_safe::data_source::unconnected::Unconnected>>
at C:\Users\username\Project\rust\odbc_test\odbc-rs\src\result.rs:95
30: odbc::environment::Environment<odbc_safe::version::Odbc3>::connect_with_connection_string
at C:\Users\username\Project\rust\odbc_test\odbc-rs\src\connection.rs:40
...
41: main
...
error: process didn't exit successfully: `target\debug\odbc_test.exe` (exit code: 101)
This is because the ODBC driver returns messages in Shift_JIS (strictly speaking, it is Windows-31J) encoding, which is incompatible with UTF-8. As an experiment, I have rewrited using encoding_rs 0.8.15 odbc-rs/src/diagnostics.rs:63 as follows.
Line 63 in 3e8d207
encoding_rs::SHIFT_JIS.decode(message.to_bytes()).0
This rewriting passes connect_with_connection_string
and the function returns Err
correctly. The following message is the proper message in Shift_JIS, which causes Utf8Error panick above.
[2019-02-07T11:25:39Z ERROR odbc::result] State: IM002, Native error: 0, Message: [Microsoft][ODBC Driver Manager] デー タ ソース名および指定された既定のドライバーが見つかりません。
(FYI, this message says "The data source name and specified default driver is not found" in Japanese.)
Of course this rewriting is just an experimental code and can never be accepted as production code. I'm new to Rust and ODBC, but I think it is better to create some mechanisms to provide some way for users to change the conversion from std::ffi::CStr
to string.
Note: This problem seems to be common in CJK editions of Windows.
The default code page can surely be changed, but there are hardly any users change the setting, and even some CJK applications assume that the setting is not changed.
Hi, I wrote following code.
"params" is a values of the query parameter.
When I set japanese text into params, duplicate value used in SQL.
I think String.value_ptr sometimes return duplicate addresses in the bind_parameter function.
For example, I set 10 japanese words into params Vector.
Some value is duplicated.
(I paste println results of String.value_ptr later.)
I think it may only happen in the case of SJIS or multibyte.
I am using SQLServer2016 and collate is Japanese_CI_AS.
I created ODBC environment as create_environment_v3_with_os_db_encoding("utf8", "sjis").
Rust's version is 1.39.0 and MSVC toolchain.
Please check it, thank you.
pub fn query<T>(
&self,
sql: &str,
params: Vec<String>,
converter: impl Fn(Vec<Option<String>>) -> T,
) -> Result<Vec<T>, Box<dyn Error>> {
let mut conn = self.get_connection();
let stmt = Statement::with_parent(&conn)?;
let mut prepare_stmt = stmt.prepare(sql)?;
prepare_stmt = prepare_stmt.reset_parameters()?;
for (i, p) in params.iter().enumerate() {
//I will write results of println! below.
println!("value={} {:?}", p, (*p).value_ptr());
prepare_stmt = prepare_stmt.bind_parameter((i + 1) as u16, p)?;
}
let mut query_result = Vec::new();
if let Data(mut data) = prepare_stmt.execute()? {
let columns = data.num_result_cols()? as u16;
while let Some(mut cursor) = data.fetch()? {
let mut row = Vec::new();
for i in 1..=columns {
row.push(cursor.get_data::<String>(i)?);
}
query_result.push(converter(row));
}
data.close_cursor()?;
}
conn.commit()?;
Ok(query_result)
}
***** println results ************
//println!("value={} {:?}", p, (*p).value_ptr());
some value_ptr's results are duplicated!!!
value=あ 0x1c5f133cc50
value=い 0x1c5f133cbb0 <- duplicate case 1
value=う 0x1c5f133ca30 <- duplicate case 2
value=え 0x1c5f133cbb0 <- duplicate case 1
value=お 0x1c5f133ccf0
value=か 0x1c5f133ca30 <- duplicate case 2
value=き 0x1c5f133ca30 <- duplicate case 2
value=く 0x1c5f133ceb0 <- duplicate case 3
value=け 0x1c5f133ceb0 <- duplicate case 3
value=こ 0x1c5f133cbb0 <- duplicate case 1
For the low level stuff SUCCESS_WITH_INFO mostly happens if a buffer is truncated, which we can avoid entirely. Actually executing SQL Statements however is an entirely different matter. How do we handle ODBC notion of warnings (SQL_SUCCESS_WITH_INFO) with idomatic error handling in RUST which only knows Ok
and Error
?
error
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: State: HY004, Native error: 0, Message: [FreeTDS][SQL Server]Invalid data type', /checkout/src/libcore/result.rs:860
code
let param = "something";
let mut stmt = stmt.prepare("SELECT col1, col2 FROM table WHERE p = ?")?;
let stmt = stmt.bind_parameter(1, ¶m)?;
rustc 1.19.0-nightly (cfb5debbc 2017-06-12)
odbc b88e683
Driver=FreeTDS
freetds 1.00.40-1
Arch Linux 64-bit
This test fails on CI
I got "\u{0}" for some empty string.
odbc 0.14.0
I'm also using r2d2_odbc (that I updated to use odbc 0.14.0).
ODBCEnv(create_environment_v3_with_os_db_encoding("latin1", "latin1").unwrap());
I have some wireshark captures, not sure which parts I can send.
first mentioned on #113
Looks like SQLBindParam for strings is truncating them or something
Hi,
I am trying to use the odbc
crate to process some data in a SQL Server database.
During processing, I get null
values for some of the string fields that have a large amount of content in them. Is that a known bug? If yes, is there some workaround that I can use?
Thanks.
I'm connected to MS Access database using julia
odbc as below:
db=ODBC.DSN("Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:/Users/hasan.yousef/Documents/myDB.accdb")
I'm using evcxr_jupyter
How can I do the same using Rust.
Currently affected_row_count
method is available for direct query (Allocated
/Executed
) and Prepared
with HasResult
but not for prepared query with NoResult
.
If you run INSERT via prepared query you can't get the number of affected rows.
This looks all wrong to me though... Executed
is an alias Allocated
so you can't distinguish based on this on type system level. Also Prepared
has no concept of Executed
so you can only work with HasResult
/NoResult
on type system level. Ideally you could add another type parameter and have two pairs Direct
/Prepared
and Allocated
/Executed
so that you can implement affected_row_count
to any type that is Executed
and change Executed
to Allocated
with close_cursor
method.
The database returns a Chinese string. Running normally under linux, but compiling and running under windows will report the following error:
thread 'main' panicked at 'called Result::unwrap()on anErr value: Utf8Error { valid_up_to: 1, error_len: Some(1) }'
thread 'main' panicked at 'called
Result::unwrap()on an
Err value: Utf8Error { valid_up_to: 1, error_len: Some(1) }', src\libcore\result.rs:860
The database has german characters in it "üÜäÄöÖ".
this is how I try to get the data:
cursor.get_data::<String>(3)
is this a bug or should I use some other data type ?
New Rust user coming from Python. I need a Rust program that speaks odbc
and I stumbled upon this project. However, I think the example is out of date. I'm new to Rust so I don't think I can contribute to the code, but I'd love to help with the Documentation.
You need any help with that?
Hi,
although the docs claim that odbc_safe is re-exported, I don't see it in the code. The part of the docs says:
Re-exports:
pub extern crate odbc_safe;
--
pub use ResultSetState::*;
pub use odbc_safe as safe;
When I couldn't import the odbc_safe because it's private, I checked the actual crate code:
pub use diagnostics::{DiagnosticRecord, GetDiagRec};
pub use result::Result;
pub use environment::*;
pub use connection::Connection;
pub use statement::*;
use odbc_object::OdbcObject;
use raii::Raii;
use result::{Return, into_result, try_into_option};
use odbc_safe as safe;
Can you please check and fix? Right now, I have to use odbc_safe as additional dependency.
Thanks.
I've got unstable behaviour in our tests - they fail time to time with the following thread-related exception message:
running 12 tests
test not_read_only ... ok
test implicit_disconnect ... ok
test list_system_data_sources ... ok
test invalid_connection_string ... ok
libs-896b1f373715685b: pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed.
error: process didn't exit successfully: `/home/travis/build/Koka/odbc-rs/target/debug/deps/libs-896b1f373715685b` (signal: 6, SIGABRT: process abort signal)
Caused by:
process didn't exit successfully: `/home/travis/build/Koka/odbc-rs/target/debug/deps/libs-896b1f373715685b` (signal: 6, SIGABRT: process abort signal)
Quick googling suggests setting set Threading
param to 0
or 1
in odbcinst.ini
, but I'm not sure of consequences.
I tried running prepared statement insert into test (a) values (:?)
and stmt.execute returned resultsetstate with value as Data. Now I cannot resuse this prepare statement because , when I call stmt.close_cursor() vertica complains "Invalid cursor state". So how can I reuse the prepared statement again. Why is the stmt.execute gives me ResultsetState of Data in place of NoData.
Test project:
[package]
name = "odbc-test"
version = "0.1.0"
edition = "2018"
[dependencies]
odbc = "0.13.0"
Build fails but it was working before incompatible odbc-safe
update:
$ cargo check
Compiling odbc-sys v0.8.2
Compiling odbc-sys v0.6.3
Compiling log v0.4.8
Checking cfg-if v0.1.10
Checking odbc-safe v0.4.2
Checking odbc v0.13.0
error[E0107]: wrong number of type arguments: expected 1, found 0
--> /home/kazuya/.cargo/registry/src/github.com-1ecc6299db9ec823/odbc-0.13.0/src/connection.rs:7:11
|
7 | safe: safe::Connection<'env>,
| ^^^^^^^^^^^^^^^^^^^^^^ expected 1 type argument
error: aborting due to previous error
For more information about this error, try `rustc --explain E0107`.
error: could not compile `odbc`.
To learn more, run the command again with --verbose.
zsh: exit 101 cargo check
This breaks my crate odbc-iter
that uses this particular version.
Is it possible for you to yank responsible crate so the project adheres to SemVer again, please?
Should odbc-safe
version v0.4.2
be yanked and re-released as v0.5.0
?
Otherwise I don't know how to fix my projects without updating to latest odbc
version.
I am open a GitHub issue since this is probably the best way to have a public design discussion. During the last month I have been busy revisiting some of the design decisions in odbc-rs and did some iterating in a separate repository without worrying to much about breaking interfaces and tests. I did this not with use cases in mind and convenience in mind, but wanted to stay very truthful to the original ODBC C interface. You can have a look at the result of this at odbc-safe. Referring our design discussion in issue #14 [odbc-safe] is currently a merge of layers 2 and 3.
My suggestion is to rewrite odbc-rs in Terms of [odbc-safe]. This should allow us:
However, some breaking changes are likely to occur down this road. I've down little thinking on how exactly an idiomatic odbc library build on top of odbc-safe would look like, but I thought it is about time to discuss this with you and hear your general thoughts about the subject.
May safe code allow having multiple ODBC environments? This link claims there should only be one Environment per Application (aka process) (http://old.vk.pp.ru/docs/sybase-any/interfaces/00000034.htm). However I did not find any such requirement in the official ODBC Documentation. Or did I just miss it?
The postgres crate has a pretty simple API https://github.com/sfackler/rust-postgres/blob/master/README.md. It would be nice to have the same with odbc-rs.
I'm using mdbtools right now to query Microsoft Access files on *nix, but I want a more elegant solution that can work also on Windows. Can this crate be used to query .mdb files?
when i tried to get a blob data from oracle 11g, I ran into some problems. I googled it, but didn't have a solution. I need help.
My struct:
struct Template {
late_id: u32,
index_info: String,
id: u32,
lib: u8,
gender: u8,
region: u16,
year: u16,
template: Vec<u8>,
}
In the database, the template field corresponds to a blob filed。
Did i should get the blob field like this?if not, how can i get the blob field?
let mut lib: Vec<Template> = Vec::new();
while let Some(mut cursor) = stmt.fetch().unwrap() {
lib.push(Template {
template_id: cursor.get_data(1).unwrap().unwrap(),
index_info: cursor.get_data(2).unwrap().unwrap(),
id: cursor.get_data(4).unwrap().unwrap(),
lib: cursor.get_data(5).unwrap().unwrap(),
gender: cursor.get_data(6).unwrap().unwrap(),
region: cursor.get_data(7).unwrap().unwrap(),
year: cursor.get_data(9).unwrap().unwrap(),
template: cursor.get_data(11).unwrap().unwrap(),// here, i couldn't compile it
})
}
can somebody help me? thank you!
I'm hitting the following panic which I think relates to some DB2 related weirdness. I have a feeling it's returning no value for a column row.
Happy to submit a PR if someone can point me in the direction of where it possibly might be an issue:
thread 'tokio-runtime-worker-0' panicked at 'no more data but indicatior outside of data buffer', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/odbc-0.14.0/src/statement/output.rs:69:21
This relates to the following line:
odbc-rs/src/statement/output.rs
Line 69 in 97bdbe7
I am trying to insert a record in to table using select statement and I want to know how many records inserted. I am not able to get the results using cursor. Is there any other ways to get number of records affected in ODBC
I think we would benefit from structuring the API in seperate layers with dedicated responsibilities:
[5]. Potentially we could support a generic layer which uses to type information to provide ORM, but maybe that is there we pass the ball to crates like diesel
What do you think?
SELECT always returns -1,maybe not supported by driver?
UPDATE always return wrong number.....
I have tried flowing providers:
"Driver={SQL Server Native Client 10.0};Server={ip,port};Database=master;Uid=sa;Pwd=..."
and
"Driver={SQL Server};Server={ip,port};Database=master;Uid=sa;Pwd=..."
When attempting to compile the code in the Readme, I get the following error:
error[E0107]: wrong number of type arguments: expected 1, found 0
--> src\main.rs:30:35
|
30 | fn execute_statement<'env>(conn: &Connection<'env>) -> Result<()> {
| ^^^^^^^^^^^^^^^^ expected 1 type argument
I have added the following dependencies to the Cargo.toml file:
[dependencies]
odbc = "0.15.0"
log = "0.4.0"
env_logger = "0.7.1"
My main.rs is exactly the code in the Readme file.
Compiler version:
C:\dev\rust\playground
λ cargo --version
cargo 1.39.0 (1c6ec66d5 2019-09-30)
C:\dev\rust\playground
λ rustc --version
rustc 1.39.0 (4560ea788 2019-11-04)
I'm trying to connect to some weird database. It's called HFSQL. I'm able to connect to it with its 32 bit ODBC driver and MS Excel (32 bit). With Rust I'm trying with the 64 bit driver (I didn't test the driver with a 64 bit Excel yet).
I used the "WX230PACKODBC042u.exe" driver on the french https://www.pcsoft.fr/st/telec/modules-communs-23/wx23_42u.htm page.
odbc-rs bdc9294
nightly-x86_64-pc-windows-msvc (default)
rustc 1.29.0-nightly (1ecf6929d 2018-07-16)
Finished dev [unoptimized + debuginfo] target(s) in 0.18s
Running `target\debug\hfsql.exe`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: FromBytesWithNulError { kind: InteriorNul(113) }
', libcore\result.rs:945:5
stack backtrace:
0: std::sys::windows::backtrace::set_frames
at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:104
1: std::sys::windows::backtrace::set_frames
at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:104
2: std::sys_common::backtrace::_print
at C:\projects\rust\src\libstd\sys_common\backtrace.rs:71
3: std::sys_common::backtrace::_print
at C:\projects\rust\src\libstd\sys_common\backtrace.rs:71
4: std::panicking::default_hook::{{closure}}
at C:\projects\rust\src\libstd\panicking.rs:211
5: std::panicking::default_hook
at C:\projects\rust\src\libstd\panicking.rs:227
6: std::panicking::rust_panic_with_hook
at C:\projects\rust\src\libstd\panicking.rs:475
7: std::panicking::continue_panic_fmt
at C:\projects\rust\src\libstd\panicking.rs:390
8: std::panicking::rust_begin_panic
at C:\projects\rust\src\libstd\panicking.rs:325
9: core::panicking::panic_fmt
at C:\projects\rust\src\libcore\panicking.rs:77
10: core::result::unwrap_failed<std::ffi::c_str::FromBytesWithNulError>
at C:\projects\rust\src\libcore\macros.rs:26
11: core::result::Result<std::ffi::c_str::CStr*, std::ffi::c_str::FromBytesWithNulError>::unwrap<std::ffi::c_str::CStr
*,std::ffi::c_str::FromBytesWithNulError>
at C:\projects\rust\src\libcore\result.rs:782
12: odbc::diagnostics::{{impl}}::fmt
at C:\Users\bbigras\.cargo\git\checkouts\odbc-rs-a3733d8f7dfc02a2\bdc9294\src\diagnostics.rs:41
13: core::fmt::Formatter::run
at C:\projects\rust\src\libcore\fmt\mod.rs:1103
14: core::fmt::Formatter::run
at C:\projects\rust\src\libcore\fmt\mod.rs:1103
15: core::fmt::{{impl}}::fmt
at C:\projects\rust\src\libcore\fmt\mod.rs:448
16: core::fmt::{{impl}}::fmt
at C:\projects\rust\src\libcore\fmt\mod.rs:448
17: core::fmt::{{impl}}::fmt<core::fmt::Arguments>
at C:\projects\rust\src\libcore\fmt\mod.rs:1849
18: core::fmt::Formatter::run
at C:\projects\rust\src\libcore\fmt\mod.rs:1103
19: core::fmt::Formatter::run
at C:\projects\rust\src\libcore\fmt\mod.rs:1103
20: std::io::Write::write_fmt<env_logger::fmt::Formatter>
at C:\projects\rust\src\libstd\io\mod.rs:1182
21: env_logger::{{impl}}::into_boxed_fn::{{closure}}
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\env_logger-0.5.13\src\lib.rs:348
22: env_logger::{{impl}}::log::{{closure}}
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\env_logger-0.5.13\src\lib.rs:849
23: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<env_logger::fmt::Formatter>>>::try_with<core
::cell::RefCell<core::option::Option<env_logger::fmt::Formatter>>,closure,()>
at C:\projects\rust\src\libstd\thread\local.rs:294
24: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<env_logger::fmt::Formatter>>>::with<core::ce
ll::RefCell<core::option::Option<env_logger::fmt::Formatter>>,closure,()>
at C:\projects\rust\src\libstd\thread\local.rs:248
25: env_logger::{{impl}}::log
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\env_logger-0.5.13\src\lib.rs:820
26: log::__private_api_log
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\log-0.4.4\src\lib.rs:1232
27: odbc::result::into_result<odbc_safe::data_source::DataSource<odbc_safe::data_source::connected::Connected>,odbc_sa
fe::data_source::DataSource<odbc_safe::data_source::unconnected::Unconnected>>
at C:\Users\bbigras\.cargo\git\checkouts\odbc-rs-a3733d8f7dfc02a2\bdc9294\src\result.rs:95
28: odbc::environment::Environment<odbc_safe::version::Odbc3>::connect_with_connection_string
at C:\Users\bbigras\.cargo\git\checkouts\odbc-rs-a3733d8f7dfc02a2\bdc9294\src\connection.rs:40
29: hfsql::connect
at .\src\main.rs:51
30: hfsql::main
at .\src\main.rs:21
31: std::rt::lang_start::{{closure}}<()>
at C:\projects\rust\src\libstd\rt.rs:74
32: std::rt::lang_start_internal::{{closure}}
at C:\projects\rust\src\libstd\rt.rs:59
33: std::rt::lang_start_internal::{{closure}}
at C:\projects\rust\src\libstd\rt.rs:59
34: panic_unwind::__rust_maybe_catch_panic
at C:\projects\rust\src\libpanic_unwind\lib.rs:106
35: std::panicking::try
at C:\projects\rust\src\libstd\panicking.rs:289
36: std::panicking::try
at C:\projects\rust\src\libstd\panicking.rs:289
37: std::panicking::try
at C:\projects\rust\src\libstd\panicking.rs:289
38: std::rt::lang_start<()>
at C:\projects\rust\src\libstd\rt.rs:74
39: main
40: invoke_main
at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:78
41: invoke_main
at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:78
42: BaseThreadInitThunk
43: RtlUserThreadStart
error: process didn't exit successfully: `target\debug\hfsql.exe` (exit code: 101)
I am trying to get list all tables from database with Statement::tables function. But when I am trying to fetch the data, the 'fetch' function always returns None(Cursor).
What I've tried:
When checking out pyodbc source, I noticed they use SQLBindCol after calling SQLTables, which is not used in odbc-rs, could this be a problem?
I've tried this with multiple databases, first with MSSQL and SQLite3 on Windows and on Linux with SQLite3.
The SQLite3 odbc driver I used is this one
The Output
trait describes how a rust type can be derived from a query result value. However, it can only be implemented within the library itself.
This means, for example, that I can't query a datetime directly into a rust datetime value unless this library implements it. The postgres crate (https://github.com/sfackler/rust-postgres) does nice job with this, providing a trait that users can implement themselves (assuming they understand the postgres value encoding)
I was trying to evaluate the ODBC crate for a connection to Snowflake. This is behind a corporate firewall, so I've modified the path in the error message to not report sensitive info.
`$ cargo run
Compiling v0.1.0 (/Users/<my_user>/)
error: linking with cc failed: exit code: 1
|
= note: "cc" "-m64" "-L" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602.1qkl8d8wrzock9kb.rcgu.o" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602.3matjfnoj00r44h0.rcgu.o" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602.3ubgblp7dup27l4d.rcgu.o" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602.4m8v4wwyq571naim.rcgu.o" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602.5sji8ezxrldtah5.rcgu.o" "-o" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602" "/Users/<my_user>//target/debug/deps/-e6f4733065e2a602.5d0nec8rtamh45mt.rcgu.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/<my_user>//target/debug/deps" "-L" "/Users/<my_user>//target/debug/build/backtrace-sys-a847bb58001c105f/out" "-L" "/Users/<my_user>//target/debug/build/brotli-sys-b7227223821e7c65/out" "-L" "/Users/<my_user>//target/debug/build/miniz-sys-004c205c1662ced2/out" "-L" "/Users/<my_user>/Downloads/ImageMagick-7.0.8/lib/" "-L" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib" "-L" "/Users/<my_user>//target/debug/deps" "-L" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib" "-L" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib" "-L" "/Users/<my_user>/lib" "-L" "/usr/local/lib" "-L" "/usr/lib" "-L" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/<my_user>//target/debug/deps/libodbc-cfaeb7960856e69f.rlib" "/Users/<my_user>//target/debug/deps/libencoding_rs-2b35bc34cb8581ab.rlib" "/Users/<my_user>//target/debug/deps/libodbc_safe-9332b0a0585254e9.rlib" "/Users/<my_user>//target/debug/deps/libodbc_sys-93836ed7809c42ea.rlib" "/Users/<my_user>//target/debug/deps/liblog-e6341d4b68b4c0d2.rlib" "/Users/<my_user>//target/debug/deps/libcfg_if-a26a8e1aed04c8f0.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-cd43daae2cf7ddf1.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-8db2c641f3653a71.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libhashbrown-028605a5a8e4ba77.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_alloc-d8c165584b999613.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libbacktrace-8ca59077c26b8378.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libbacktrace_sys-9e5cb6a845ac1bcb.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_demangle-428f6f0ce2c8cd70.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-5b4e5f1e334da9a7.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcfg_if-0c3a77eecc027943.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-5ff1b410a39476d9.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-bc9ef7c32fbaa74f.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_core-3ee6ce2ac9d08f55.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-9b01ec0dd7c68c5f.rlib" "/Users/<my_user>/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-dae0483206048e13.rlib" "-lodbc" "-lSystem" "-lresolv" "-lc" "-lm"
= note: ld: warning: directory not found for option '-L/Users/<my_user>/lib'
ld: library not found for -lodbc
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: aborting due to previous error
error: could not compile .
To learn more, run the command again with --verbose.
Minimum repro main.rs
extern crate odbc;
fn main(){
}`
Minimum repro Cargo.toml
`[package]
name = ""
version = "0.1.0"
authors = [""]
edition = "2018"
[dependencies]
odbc = "0.14.0"`
OSX Version = 10.14.6
Rustc Version = rustc 1.40.0-nightly (1423bec54 2019-11-05)
(it's nightly because the rest of the project has deps that need nightly, but I'm able to reproduce the error in stable as well)
Cargo Version = cargo 1.40.0-nightly (5da4b4d47 2019-10-28)
One "error" was that if I did a SELECT on one column, the data didn't seems to match the real data but it looked familiar (like if I had parts of the data or if the rows weren't spitted correctly).
I've been able to reproduce this behavior. Sadly it only occurs on Linux using unix_odbc. I do not get this locally on my windows machine. Luckily for now I did not require MS SQL to reproduce this SQLite is quite enough. Now I only have to fix it...
Consider this code:
pub fn create_connection<'env>(config: &UpgradeConfig) ->Result<(Connection<'env>, Environment<Version3>)> {
let conn_str = build_connection_string(&config);
let env = create_environment_v3().map_err(|e| e.unwrap()).unwrap();
let conn = env.connect_with_connection_string(&conn_str);
(conn, env)
}
Because Connection is created within the scope of the method from a borrowed self, the original env reference is no longer valid, at least until conn is dropped. This means you can't move Connection out of that scope and can only go into inner scopes. This isn't necessarily ideal, as you can't even assign env/conn to struct fields.
I would suggest instead doing Connection::from_connection_string(&conn_str, &env). Env would only be borrowed for that scope of the method unless you borrow a field from Env for Conn.
We could add https://www.appveyor.com/ build to ensure this crate works well on windows environments (and add some tests for windows specific databases like MSSQL too)
Do you intentionally publish the documentation yourself? If not you might safe some work by just linking to https://docs.rs/odbc
I'm seeing a panic using odbc if the LANG
environment variable isn't set:
thread 'main' panicked at 'not yet implemented', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/odbc-0.14.0/src/statement/types.rs:176:31
This relates to the following portion of code:
fn convert(buffer: &'a [u8]) -> Self {
let cow = unsafe { ::environment::DB_ENCODING }.decode(buffer).0;
match cow {
Borrowed(strref) => strref,
Owned(_string) => unimplemented!(),
}
}
If I set LANG=en_US.UTF-8
this doesn't appear to trigger the unimplemented branch. Happy to submit a PR to implement it, but I'm not exactly sure what needs to happen in this case.
Basically some form of the output from SQLDescribeCol()
would be handy:
https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqldescribecol-function
I get this error while trying to read some non-utf8 data intro a Vec.
I'm not sure if I can provide a test case. I'm using a weird SQL server called hfsql.
I'm pretty sure I use the right indexes with get_data().
odbc 0.13.0
thread 'arbiter:3ce368fa-bd9e-4ec4-bef3-4d0227f66433:actix-net-worker-1' panicked at 'SQLGetData has already returned the colmun data', C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\output.rs:100:33
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
0: std::sys::windows::backtrace::set_frames
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys\windows\backtrace\mod.rs:95
1: std::sys::windows::backtrace::unwind_backtrace
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys\windows\backtrace\mod.rs:82
2: std::sys_common::backtrace::_print
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys_common\backtrace.rs:71
3: std::sys_common::backtrace::print
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys_common\backtrace.rs:59
4: std::panicking::default_hook::{{closure}}
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\panicking.rs:197
5: std::panicking::default_hook
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\panicking.rs:211
6: std::panicking::rust_panic_with_hook
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\panicking.rs:474
7: std::panicking::begin_panic<str*>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\panicking.rs:408
8: odbc::raii::Raii<odbc_sys::Stmt>::get_partial_data<alloc::vec::Vec<u8>>
at <::std::macros::panic macros>:3
9: odbc::raii::Raii<odbc_sys::Stmt>::get_data<alloc::vec::Vec<u8>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\output.rs:36
10: odbc::statement::output::{{impl}}::get_data<alloc::vec::Vec<u8>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\output.rs:23
11: odbc::statement::Cursor<odbc::statement::Allocated>::get_data<odbc::statement::Allocated,alloc::vec::Vec<u8>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\mod.rs:243
12: something::handle_this
at .\src\main.rs:1455
13: core::ops::function::Fn::call<fn((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)) -> core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>,((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>))>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libcore\ops\function.rs:69
14: actix_web::with::{{impl}}::create::{{closure}}<(actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>),something::AppState,fn((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)) -> core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:299
15: actix_web::with::{{impl}}::call_with<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>,closure>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:16
16: actix_web::with::{{impl}}::poll<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),something::AppState,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:141
17: actix_web::with::{{impl}}::poll<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),something::AppState,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:131
18: actix_web::with::{{impl}}::handle<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),something::AppState,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:87
19: actix_web::handler::{{impl}}::handle<something::AppState,actix_web::with::With<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)), something::AppState, core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>,actix_web::handler::AsyncResult<actix_web::httpresponse::HttpResponse, actix_web::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\handler.rs:449
20: actix_web::route::InnerHandler<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\route.rs:321
21: actix_web::route::Route<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\route.rs:53
22: actix_web::resource::Resource<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\resource.rs:302
23: actix_web::router::Router<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\router.rs:446
24: actix_web::application::{{impl}}::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\application.rs:40
25: actix_web::pipeline::StartMiddlewares<something::AppState, actix_web::application::Inner<something::AppState>>::init<something::AppState,actix_web::application::Inner<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\pipeline.rs:202
26: actix_web::pipeline::Pipeline<something::AppState, actix_web::application::Inner<something::AppState>>::new<something::AppState,actix_web::application::Inner<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\pipeline.rs:95
27: actix_web::application::{{impl}}::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\application.rs:87
28: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::parse<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:497
29: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::poll_io<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:348
30: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::poll_handler<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:376
31: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::poll<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:223
32: actix_web::server::channel::{{impl}}::poll<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\channel.rs:105
33: actix_web::server::channel::{{impl}}::poll<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\channel.rs:155
34: actix_net::service::map_err::{{impl}}::poll<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>,closure,()>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-net-0.2.6\src\service\map_err.rs:92
35: actix_net::service::and_then::{{impl}}::poll<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>,actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-net-0.2.6\src\service\and_then.rs:94
36: actix_web::server::acceptor::{{impl}}::poll<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\acceptor.rs:378
37: futures::future::either::{{impl}}::poll<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>,futures::future::result_::FutureResult<(), ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\either.rs:35
38: futures::future::either::{{impl}}::poll<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>,futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service
::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_web::server::acceptor::AcceptorTimeoutService<actix_web::server::acceptor::DefaultAcceptor>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\either.rs:35
39: futures::future::chain::Chain<futures::future::either::Either<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>, futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::And
Then<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_web::server::acceptor::AcceptorTimeoutService<actix_web::server::acceptor::DefaultAcceptor>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>>, futures::future::result_::FutureResult<(), ()>, closure>::poll<futures::future::either::Either<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(())
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\chain.rs:26
40: futures::future::then::{{impl}}::poll<futures::future::either::Either<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>, futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_t
hen::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_web::server::acceptor::AcceptorTimeoutService<actix_web::server::acceptor::DefaultAcceptor>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>>,core::result::Result<(), ()>,closure>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\then.rs:32
41: futures::future::{{impl}}::poll<Future>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\mod.rs:113
42: futures::task_impl::{{impl}}::poll_future_notify::{{closure}}<alloc::boxed::Box<Future>,tokio_current_thread::scheduler::Notify<tokio_reactor::Handle>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:329
43: futures::task_impl::{{impl}}::enter::{{closure}}<alloc::boxed::Box<Future>,closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:399
44: futures::task_impl::std::set<closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\std\mod.rs:78
45: futures::task_impl::Spawn<alloc::boxed::Box<Future>>::enter<alloc::boxed::Box<Future>,closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:399
46: futures::task_impl::Spawn<alloc::boxed::Box<Future>>::poll_fn_notify<alloc::boxed::Box<Future>,tokio_current_thread::scheduler::Notify<tokio_reactor::Handle>,closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:291
47: futures::task_impl::Spawn<alloc::boxed::Box<Future>>::poll_future_notify<alloc::boxed::Box<Future>,tokio_current_thread::scheduler::Notify<tokio_reactor::Handle>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:329
48: tokio_current_thread::scheduler::Scheduled<tokio_reactor::Handle>::tick<tokio_reactor::Handle>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\scheduler.rs:351
49: tokio_current_thread::scheduler::{{impl}}::tick::{{closure}}<tokio_reactor::Handle>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\scheduler.rs:330
50: tokio_current_thread::{{impl}}::enter::{{closure}}::{{closure}}<tokio_reactor::Handle,closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:788
51: tokio_current_thread::CurrentRunner::set_spawn<closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:825
52: tokio_current_thread::{{impl}}::enter::{{closure}}<tokio_reactor::Handle,closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:788
53: std::thread::local::LocalKey<tokio_current_thread::CurrentRunner>::try_with<tokio_current_thread::CurrentRunner,closure,bool>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
54: std::thread::local::LocalKey<tokio_current_thread::CurrentRunner>::with<tokio_current_thread::CurrentRunner,closure,bool>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
55: tokio_current_thread::Borrow<tokio_reactor::Handle>::enter<tokio_reactor::Handle,closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:786
56: tokio_current_thread::scheduler::Scheduler<tokio_reactor::Handle>::tick<tokio_reactor::Handle>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\scheduler.rs:330
57: tokio_current_thread::Entered<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>>::tick<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:612
58: tokio_current_thread::Entered<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>>::block_on<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>,futures::sync::oneshot::Receiver<i32>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:502
59: tokio::runtime::current_thread::runtime::{{impl}}::block_on::{{closure}}<futures::sync::oneshot::Receiver<i32>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:200
60: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}::{{closure}}::{{closure}}::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:241
61: tokio_executor::global::with_default::{{closure}}<tokio_current_thread::TaskExecutor,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-executor-0.1.7\src\global.rs:209
62: std::thread::local::LocalKey<core::cell::Cell<tokio_executor::global::State>>::try_with<core::cell::Cell<tokio_executor::global::State>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
63: std::thread::local::LocalKey<core::cell::Cell<tokio_executor::global::State>>::with<core::cell::Cell<tokio_executor::global::State>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
64: tokio_executor::global::with_default<tokio_current_thread::TaskExecutor,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-executor-0.1.7\src\global.rs:178
65: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}::{{closure}}::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:239
66: tokio_timer::timer::handle::with_default::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\timer\handle.rs:94
67: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>>::try_with<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
68: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>>::with<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
69: tokio_timer::timer::handle::with_default<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\timer\handle.rs:81
70: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:232
71: tokio_timer::clock::clock::with_default::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\clock\clock.rs:141
72: std::thread::local::LocalKey<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>>::try_with<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
73: std::thread::local::LocalKey<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>>::with<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
74: tokio_timer::clock::clock::with_default<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\clock\clock.rs:124
75: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:231
76: tokio_reactor::with_default::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-reactor-0.1.9\src\lib.rs:237
77: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>>::try_with<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
78: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>>::with<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
79: tokio_reactor::with_default<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-reactor-0.1.9\src\lib.rs:217
80: tokio::runtime::current_thread::runtime::Runtime::enter<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:230
81: tokio::runtime::current_thread::runtime::Runtime::block_on<futures::sync::oneshot::Receiver<i32>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:198
82: actix::arbiter::{{impl}}::new_with_builder::{{closure}}
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-0.7.9\src\arbiter.rs:116
thread 'arbiter:106f246b-fa00-4f11-8991-5ab53d57d30d:actix-net-worker-0' panicked at 'SQLGetData has already returned the colmun data', C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\output.rs:100:33
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
0: std::sys::windows::backtrace::set_frames
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys\windows\backtrace\mod.rs:95
1: std::sys::windows::backtrace::unwind_backtrace
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys\windows\backtrace\mod.rs:82
2: std::sys_common::backtrace::_print
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys_common\backtrace.rs:71
3: std::sys_common::backtrace::print
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\sys_common\backtrace.rs:59
4: std::panicking::default_hook::{{closure}}
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\panicking.rs:197
5: std::panicking::default_hook
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\panicking.rs:211
6: std::panicking::rust_panic_with_hook
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\/src\libstd\panicking.rs:474
7: std::panicking::begin_panic<str*>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\panicking.rs:408
8: odbc::raii::Raii<odbc_sys::Stmt>::get_partial_data<alloc::vec::Vec<u8>>
at <::std::macros::panic macros>:3
9: odbc::raii::Raii<odbc_sys::Stmt>::get_data<alloc::vec::Vec<u8>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\output.rs:36
10: odbc::statement::output::{{impl}}::get_data<alloc::vec::Vec<u8>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\output.rs:23
11: odbc::statement::Cursor<odbc::statement::Allocated>::get_data<odbc::statement::Allocated,alloc::vec::Vec<u8>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\odbc-0.13.0\src\statement\mod.rs:243
12: something::handle_this
at .\src\main.rs:1455
13: core::ops::function::Fn::call<fn((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)) -> core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>,((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>))>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libcore\ops\function.rs:69
14: actix_web::with::{{impl}}::create::{{closure}}<(actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>),something::AppState,fn((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)) -> core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:299
15: actix_web::with::{{impl}}::call_with<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>,closure>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:16
16: actix_web::with::{{impl}}::poll<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),something::AppState,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:141
17: actix_web::with::{{impl}}::poll<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),something::AppState,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:131
18: actix_web::with::{{impl}}::handle<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)),something::AppState,core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\with.rs:87
19: actix_web::handler::{{impl}}::handle<something::AppState,actix_web::with::With<((actix_web::httprequest::HttpRequest<something::AppState>, actix_web::extractor::Query<something::CamionsReq2>)), something::AppState, core::result::Result<actix_web::httpresponse::HttpResponse, failure::error::Error>>,actix_web::handler::AsyncResult<actix_web::httpresponse::HttpResponse, actix_web::error::Error>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\handler.rs:449
20: actix_web::route::InnerHandler<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\route.rs:321
21: actix_web::route::Route<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\route.rs:53
22: actix_web::resource::Resource<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\resource.rs:302
23: actix_web::router::Router<something::AppState>::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\router.rs:446
24: actix_web::application::{{impl}}::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\application.rs:40
25: actix_web::pipeline::StartMiddlewares<something::AppState, actix_web::application::Inner<something::AppState>>::init<something::AppState,actix_web::application::Inner<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\pipeline.rs:202
26: actix_web::pipeline::Pipeline<something::AppState, actix_web::application::Inner<something::AppState>>::new<something::AppState,actix_web::application::Inner<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\pipeline.rs:95
27: actix_web::application::{{impl}}::handle<something::AppState>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\application.rs:87
28: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::parse<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:497
29: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::poll_io<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:348
30: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::poll_handler<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:376
31: actix_web::server::h1::Http1Dispatcher<tokio_tcp::stream::TcpStream, actix_web::application::HttpApplication<something::AppState>>::poll<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\h1.rs:223
32: actix_web::server::channel::{{impl}}::poll<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\channel.rs:105
33: actix_web::server::channel::{{impl}}::poll<tokio_tcp::stream::TcpStream,actix_web::application::HttpApplication<something::AppState>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\channel.rs:155
34: actix_net::service::map_err::{{impl}}::poll<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>,closure,()>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-net-0.2.6\src\service\map_err.rs:92
35: actix_net::service::and_then::{{impl}}::poll<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>,actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-net-0.2.6\src\service\and_then.rs:94
36: actix_web::server::acceptor::{{impl}}::poll<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-web-0.7.19\src\server\acceptor.rs:378
37: futures::future::either::{{impl}}::poll<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>,futures::future::result_::FutureResult<(), ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\either.rs:35
38: futures::future::either::{{impl}}::poll<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>,futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service
::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_web::server::acceptor::AcceptorTimeoutService<actix_web::server::acceptor::DefaultAcceptor>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\either.rs:35
39: futures::future::chain::Chain<futures::future::either::Either<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>, futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::And
Then<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_web::server::acceptor::AcceptorTimeoutService<actix_web::server::acceptor::DefaultAcceptor>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>>, futures::future::result_::FutureResult<(), ()>, closure>::poll<futures::future::either::Either<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(())
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\chain.rs:26
40: futures::future::then::{{impl}}::poll<futures::future::either::Either<futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_then::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_net::service::map_err::MapErr<actix_web::server::acceptor::DefaultAcceptor, fn(()) -> actix_web::server::error::AcceptorError<()>, actix_web::server::error::AcceptorError<()>>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>, futures::future::either::Either<actix_web::server::acceptor::ServerMessageAcceptorServiceFut<actix_net::service::and_then::AndThen<actix_net::service::and_t
hen::AndThen<actix_net::service::map_err::MapErr<actix_web::server::acceptor::TcpAcceptorService<actix_web::server::acceptor::AcceptorTimeoutService<actix_web::server::acceptor::DefaultAcceptor>>, closure, ()>, actix_web::server::service::StreamConfigurationService<tokio_tcp::stream::TcpStream, ()>>, actix_net::service::map_err::MapErr<actix_web::server::service::HttpServiceHandler<actix_web::application::HttpApplication<something::AppState>, tokio_tcp::stream::TcpStream>, closure, ()>>>, futures::future::result_::FutureResult<(), ()>>>,core::result::Result<(), ()>,closure>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\then.rs:32
41: futures::future::{{impl}}::poll<Future>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\future\mod.rs:113
42: futures::task_impl::{{impl}}::poll_future_notify::{{closure}}<alloc::boxed::Box<Future>,tokio_current_thread::scheduler::Notify<tokio_reactor::Handle>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:329
43: futures::task_impl::{{impl}}::enter::{{closure}}<alloc::boxed::Box<Future>,closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:399
44: futures::task_impl::std::set<closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\std\mod.rs:78
45: futures::task_impl::Spawn<alloc::boxed::Box<Future>>::enter<alloc::boxed::Box<Future>,closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:399
46: futures::task_impl::Spawn<alloc::boxed::Box<Future>>::poll_fn_notify<alloc::boxed::Box<Future>,tokio_current_thread::scheduler::Notify<tokio_reactor::Handle>,closure,core::result::Result<futures::poll::Async<()>, ()>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:291
47: futures::task_impl::Spawn<alloc::boxed::Box<Future>>::poll_future_notify<alloc::boxed::Box<Future>,tokio_current_thread::scheduler::Notify<tokio_reactor::Handle>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-0.1.26\src\task_impl\mod.rs:329
48: tokio_current_thread::scheduler::Scheduled<tokio_reactor::Handle>::tick<tokio_reactor::Handle>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\scheduler.rs:351
49: tokio_current_thread::scheduler::{{impl}}::tick::{{closure}}<tokio_reactor::Handle>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\scheduler.rs:330
50: tokio_current_thread::{{impl}}::enter::{{closure}}::{{closure}}<tokio_reactor::Handle,closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:788
51: tokio_current_thread::CurrentRunner::set_spawn<closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:825
52: tokio_current_thread::{{impl}}::enter::{{closure}}<tokio_reactor::Handle,closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:788
53: std::thread::local::LocalKey<tokio_current_thread::CurrentRunner>::try_with<tokio_current_thread::CurrentRunner,closure,bool>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
54: std::thread::local::LocalKey<tokio_current_thread::CurrentRunner>::with<tokio_current_thread::CurrentRunner,closure,bool>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
55: tokio_current_thread::Borrow<tokio_reactor::Handle>::enter<tokio_reactor::Handle,closure,bool>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:786
56: tokio_current_thread::scheduler::Scheduler<tokio_reactor::Handle>::tick<tokio_reactor::Handle>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\scheduler.rs:330
57: tokio_current_thread::Entered<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>>::tick<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:612
58: tokio_current_thread::Entered<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>>::block_on<tokio_timer::timer::Timer<tokio_reactor::Reactor, tokio_timer::clock::clock::Clock>,futures::sync::oneshot::Receiver<i32>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-current-thread-0.1.6\src\lib.rs:502
59: tokio::runtime::current_thread::runtime::{{impl}}::block_on::{{closure}}<futures::sync::oneshot::Receiver<i32>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:200
60: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}::{{closure}}::{{closure}}::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:241
61: tokio_executor::global::with_default::{{closure}}<tokio_current_thread::TaskExecutor,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-executor-0.1.7\src\global.rs:209
62: std::thread::local::LocalKey<core::cell::Cell<tokio_executor::global::State>>::try_with<core::cell::Cell<tokio_executor::global::State>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
63: std::thread::local::LocalKey<core::cell::Cell<tokio_executor::global::State>>::with<core::cell::Cell<tokio_executor::global::State>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
64: tokio_executor::global::with_default<tokio_current_thread::TaskExecutor,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-executor-0.1.7\src\global.rs:178
65: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}::{{closure}}::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:239
66: tokio_timer::timer::handle::with_default::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\timer\handle.rs:94
67: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>>::try_with<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
68: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>>::with<core::cell::RefCell<core::option::Option<tokio_timer::timer::handle::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
69: tokio_timer::timer::handle::with_default<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\timer\handle.rs:81
70: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:232
71: tokio_timer::clock::clock::with_default::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\clock\clock.rs:141
72: std::thread::local::LocalKey<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>>::try_with<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
73: std::thread::local::LocalKey<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>>::with<core::cell::Cell<core::option::Option<const tokio_timer::clock::clock::Clock*>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
74: tokio_timer::clock::clock::with_default<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-timer-0.2.10\src\clock\clock.rs:124
75: tokio::runtime::current_thread::runtime::{{impl}}::enter::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:231
76: tokio_reactor::with_default::{{closure}}<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-reactor-0.1.9\src\lib.rs:237
77: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>>::try_with<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:299
78: std::thread::local::LocalKey<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>>::with<core::cell::RefCell<core::option::Option<tokio_reactor::HandlePriv>>,closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at /rustc/94fd0458951a4ff91c03366445f0e2e93b86bd2f\src\libstd\thread\local.rs:245
79: tokio_reactor::with_default<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-reactor-0.1.9\src\lib.rs:217
80: tokio::runtime::current_thread::runtime::Runtime::enter<closure,core::result::Result<i32, futures::sync::oneshot::Canceled>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:230
81: tokio::runtime::current_thread::runtime::Runtime::block_on<futures::sync::oneshot::Receiver<i32>>
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.1.19\src\runtime\current_thread\runtime.rs:198
82: actix::arbiter::{{impl}}::new_with_builder::{{closure}}
at C:\Users\bbigras\.cargo\registry\src\github.com-1ecc6299db9ec823\actix-0.7.9\src\arbiter.rs:116
[2019-06-26T19:07:00Z INFO actix_net::server::server] SIGINT received, exiting
Coveralls reports bad data for now. It's somehow related to travis build matrix I think. Will fix it later
Hi,
please be aware that 0.15 release broke 0.14 version:
Compiling odbc v0.14.0
error[E0107]: wrong number of type arguments: expected 1, found 0
--> /home/vsts/.cargo/registry/src/github.com-1ecc6299db9ec823/odbc-0.14.0/src/connection.rs:7:11
|
7 | safe: safe::Connection<'env>,
| ^^^^^^^^^^^^^^^^^^^^^^ expected 1 type argument
https://github.com/Koka/odbc-rs/blob/master/src/statement/output.rs#L115
It looks like this function doesn't expect the SQL_NO_TOTAL
case (-4) and it goes badly.
I don't know what SQL_NO_TOTAL means, but I can report that this happened when querying a column with large text values.
odbc-rs/src/statement/input.rs
Line 45 in d36276a
If I am not mistaken this resize call may deallocate and allocate new memory invalidating pointers passed to ffi::SQLBindParameter. Pointers passed to this functions must be valid until SQLExecute is called.
Note that I did not trigger any crash yet with this so I may be wrong here.
See this discussion:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a5e8b15e-c47e-479e-8bde-d6e493eea977/how-to-insert-a-null-in-a-sqltypetimestamp-column-?forum=sqldataaccess
An example would be a huge help!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.