- Notifications
You must be signed in to change notification settings - Fork515
Closed
Description
Execute the following transaction on a PostgreSQL database:
BEGIN;CREATETYPEfooAS (xinteger);CREATEDOMAINbarAS fooNOT NULL;CREATETYPEfizzAS (y bar);CREATETABLEbuzz(z fizzNOT NULL);INSERT INTO buzzVALUES (ROW(ROW(1)));COMMIT;
Now compile and run the following Rust program:
#![expect( clippy::trait_duplication_in_bounds, reason ="can't fix since part of ToSql macro")]use core::{ net::{IpAddr,Ipv6Addr}, time::Duration,};use postgres_types::{FromSql,ToSql};use tokio::runtime::Builder;use tokio_postgres::{ config::{ChannelBinding,Config,LoadBalanceHosts,SslMode,TargetSessionAttrs}, tls::NoTls,IsolationLevel,};#[derive(Debug,FromSql,ToSql)]#[postgres(name ="foo")]structFoo{x:i32,}#[derive(FromSql)]#[postgres(name ="bar")]structBar(Foo);#[derive(FromSql)]#[postgres(name ="fizz")]structFizz{y:Bar,}fnmain(){Builder::new_current_thread().enable_all().build().unwrap().block_on(async{letmut config =Config::new();let c = config.application_name("bug").channel_binding(ChannelBinding::Disable).connect_timeout(Duration::from_secs(10)).dbname("example").host("").hostaddr(IpAddr::V6(Ipv6Addr::LOCALHOST)).keepalives(true).keepalives_idle(Duration::from_secs(300)).load_balance_hosts(LoadBalanceHosts::Disable).password(b"password").port(5432).ssl_mode(SslMode::Disable).target_session_attrs(TargetSessionAttrs::Any).user("example");let(mut client, con) = c.connect(NoTls).await.unwrap(); tokio::spawn(asyncmove{ con.await.unwrap();});let txn = client.build_transaction().isolation_level(IsolationLevel::Serializable).read_only(true).start().await.unwrap();let stmt = txn.prepare_typed("SELECT z FROM buzz;",[].as_slice()).await.unwrap();let row = txn.query_one(&stmt,&[]).await.unwrap();// The `panic` occurs on the below line.let col1 = row.get::<'_,_,Fizz>(0);println!("{}", col1.y.0.x); txn.commit().await.unwrap();});}
[zack@laptop bug]$export RUST_BACKTRACE=full&& cargo run Updating crates.io index Locking 98 packages to latest compatible versions Adding fallible-iterator v0.2.0 (latest: v0.3.0) Adding generic-array v0.14.7 (latest: v1.1.0) Adding hermit-abi v0.3.9 (latest: v0.4.0) Adding siphasher v0.3.11 (latest: v1.0.1) Adding wasi v0.11.0+wasi-snapshot-preview1 (latest: v0.13.3+wasi-0.2.2) Adding windows-sys v0.52.0 (latest: v0.59.0) Adding zerocopy v0.7.35 (latest: v0.8.10) Adding zerocopy-derive v0.7.35 (latest: v0.8.10) Compiling proc-macro2 v1.0.89 Compiling unicode-ident v1.0.13 Compiling libc v0.2.164 Compiling typenum v1.17.0 Compiling version_check v0.9.5 Compiling cfg-if v1.0.0 Compiling autocfg v1.4.0 Compiling byteorder v1.5.0 Compiling subtle v2.6.1 Compiling tinyvec_macros v0.1.1 Compiling bytes v1.8.0 Compiling unicode-bidi v0.3.17 Compiling unicode-properties v0.1.3 Compiling tinyvec v1.8.0 Compiling futures-sink v0.3.31 Compiling pin-project-lite v0.2.15 Compiling parking_lot_core v0.9.10 Compiling futures-core v0.3.31 Compiling cpufeatures v0.2.15 Compiling memchr v2.7.4 Compiling base64 v0.22.1 Compiling smallvec v1.13.2 Compiling generic-array v0.14.7 Compiling fallible-iterator v0.2.0 Compiling siphasher v0.3.11 Compiling slab v0.4.9 Compiling lock_api v0.4.12 Compiling heck v0.5.0 Compiling scopeguard v1.2.0 Compiling phf_shared v0.11.2 Compiling futures-task v0.3.31 Compiling quote v1.0.37 Compiling unicode-normalization v0.1.24 Compiling pin-utils v0.1.0 Compiling phf v0.11.2 Compiling futures-channel v0.3.31 Compiling log v0.4.22 Compiling whoami v1.5.2 Compiling getrandom v0.2.15 Compiling socket2 v0.5.7 Compiling mio v1.0.2 Compiling syn v2.0.87 Compiling rand_core v0.6.4 Compiling percent-encoding v2.3.1 Compiling tokio v1.41.1 Compiling parking_lot v0.12.3 Compiling stringprep v0.1.5 Compiling crypto-common v0.1.6 Compiling block-buffer v0.10.4 Compiling digest v0.10.7 Compiling md-5 v0.10.6 Compiling sha2 v0.10.8 Compiling hmac v0.12.1 Compiling zerocopy-derive v0.7.35 Compiling futures-macro v0.3.31 Compiling postgres-derive v0.4.6 Compiling async-trait v0.1.83 Compiling tokio-util v0.7.12 Compiling zerocopy v0.7.35 Compiling futures-util v0.3.31 Compiling ppv-lite86 v0.2.20 Compiling rand_chacha v0.3.1 Compiling rand v0.8.5 Compiling postgres-protocol v0.6.7 Compiling postgres-types v0.2.8 Compiling tokio-postgres v0.7.12 Compiling bug v0.1.0 (/home/zack/projects/bug) Finished`dev` profile [unoptimized + debuginfo] target(s)in 6.81s Running`target/debug/bug`thread'main' panicked at src/main.rs:16:17:internal error: entered unreachable codestack backtrace: 0: 0x5b8541de129a - std::backtrace_rs::backtrace::libunwind::trace::h99efb0985cae5d78 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5 1: 0x5b8541de129a - std::backtrace_rs::backtrace::trace_unsynchronized::he2c1aa63b3f7fad8 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x5b8541de129a - std::sys::backtrace::_print_fmt::h8a221d40f5e0f88b at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:66:9 3: 0x5b8541de129a -<std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h304520fd6a30aa07 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:39:26 4: 0x5b8541e00cfb - core::fmt::rt::Argument::fmt::h5da9c218ec984eaf at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/fmt/rt.rs:177:76 5: 0x5b8541e00cfb - core::fmt::write::hf5713710ce10ff22 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/fmt/mod.rs:1178:21 6: 0x5b8541dde1f3 - std::io::Write::write_fmt::hda708db57927dacf at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/io/mod.rs:1823:15 7: 0x5b8541de2442 - std::sys::backtrace::BacktraceLock::print::hbcdbec4d97c91528 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:42:9 8: 0x5b8541de2442 - std::panicking::default_hook::{{closure}}::he1ad87607d0c11c5 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:266:22 9: 0x5b8541de20ae - std::panicking::default_hook::h81c8cd2e7c59ee33 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:293:9 10: 0x5b8541de2ccf - std::panicking::rust_panic_with_hook::had2118629c312a4a at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:797:13 11: 0x5b8541de2983 - std::panicking::begin_panic_handler::{{closure}}::h7fa5985d111bafa2 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:664:13 12: 0x5b8541de1779 - std::sys::backtrace::__rust_end_short_backtrace::h704d151dbefa09c5 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:170:18 13: 0x5b8541de2644 - rust_begin_unwind at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:662:5 14: 0x5b8541c24ba3 - core::panicking::panic_fmt::h3eea515d05f7a35e at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/panicking.rs:74:14 15: 0x5b8541c24c2c - core::panicking::panic::h102d65dbfa674afe at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/panicking.rs:148:5 16: 0x5b8541c65f92 -<bug::Foo as postgres_types::FromSql>::from_sql::h43e1abeab9a3c013 at /home/zack/projects/bug/src/main.rs:16:17 17: 0x5b8541c66626 -<bug::Bar as postgres_types::FromSql>::from_sql::h3bf354d1b63b138d at /home/zack/projects/bug/src/main.rs:21:17 18: 0x5b8541c49be0 - postgres_types::FromSql::from_sql_nullable::heb890c98a7575749 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/postgres-types-0.2.8/src/lib.rs:553:26 19: 0x5b8541c3a5b6 - postgres_types::private::read_value::h60ed5086d229f1fd at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/postgres-types-0.2.8/src/private.rs:33:5 20: 0x5b8541c66c04 -<bug::Fizz as postgres_types::FromSql>::from_sql::hd1e47626297d0f67 at /home/zack/projects/bug/src/main.rs:24:17 21: 0x5b8541c49b60 - postgres_types::FromSql::from_sql_nullable::h8b6560ee4998bc3c at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/postgres-types-0.2.8/src/lib.rs:553:26 22: 0x5b8541c3ff59 - tokio_postgres::row::Row::get_inner::hbdb55d077f4a2675 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-postgres-0.7.12/src/row.rs:184:9 23: 0x5b8541c3fb8e - tokio_postgres::row::Row::get::h51f09083614dfe15 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-postgres-0.7.12/src/row.rs:151:15 24: 0x5b8541c4ac65 - bug::main::{{closure}}::hec6cf66abc2b37c0 at /home/zack/projects/bug/src/main.rs:67:24 25: 0x5b8541c3a1fd -<core::pin::Pin<P> as core::future::future::Future>::poll::h5b0901c32bd73ba6 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9 26: 0x5b8541c3a2bd -<core::pin::Pin<P> as core::future::future::Future>::poll::hcf178ea35cd368f9 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9 27: 0x5b8541c34bff - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::h5c8ff6977dfd5361 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:729:57 28: 0x5b8541c34b25 - tokio::runtime::coop::with_budget::h79f7fee45e1fa95c at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/coop.rs:107:5 29: 0x5b8541c34b25 - tokio::runtime::coop::budget::ha98b8bca93bacaa2 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/coop.rs:73:5 30: 0x5b8541c34b25 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::h1c41bed8d6c2e705 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:729:25 31: 0x5b8541c324b0 - tokio::runtime::scheduler::current_thread::Context::enter::h75f2cabd0440a202 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:428:19 32: 0x5b8541c3420b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::hd312ed3b2fc5c4b0 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:728:36 33: 0x5b8541c336a4 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hfcbec99e2427c975 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:807:68 34: 0x5b8541c66f9b - tokio::runtime::context::scoped::Scoped<T>::set::hfd7dc621c1a86dd6 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/context/scoped.rs:40:9 35: 0x5b8541c3e469 - tokio::runtime::context::set_scheduler::{{closure}}::he0284573d5eb0ca5 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/context.rs:180:26 36: 0x5b8541c5c65a - std::thread::local::LocalKey<T>::try_with::h705fa3e9e86b8046 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/thread/local.rs:283:12 37: 0x5b8541c5bc2a - std::thread::local::LocalKey<T>::with::hcbecfc679dd67832 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/thread/local.rs:260:9 38: 0x5b8541c3e3dd - tokio::runtime::context::set_scheduler::hac0d58a5dc54ad36 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/context.rs:180:9 39: 0x5b8541c33430 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::h1e18d6ebd2188d54 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:807:27 40: 0x5b8541c33723 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::hf8078cbf5b28f26c at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:716:19 41: 0x5b8541c30efd - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::ha66859ddb7d9bad0 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:196:28 42: 0x5b8541c2a527 - tokio::runtime::context::runtime::enter_runtime::hae321f8f5ba61d93 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/context/runtime.rs:65:16 43: 0x5b8541c30bd3 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h14c83c76c10473e3 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/scheduler/current_thread/mod.rs:184:9 44: 0x5b8541c2ab10 - tokio::runtime::runtime::Runtime::block_on_inner::h28918626ddecdeee at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/runtime.rs:368:47 45: 0x5b8541c2aefe - tokio::runtime::runtime::Runtime::block_on::h751fbbf92aa61924 at /home/zack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.41.1/src/runtime/runtime.rs:340:13 46: 0x5b8541c65e4c - bug::main::ha7253ccdcb8d6d35 at /home/zack/projects/bug/src/main.rs:30:5 47: 0x5b8541c25b4b - core::ops::function::FnOnce::call_once::h9f3bb0ebd6d37fd7 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/ops/function.rs:250:5 48: 0x5b8541c5cd7e - std::sys::backtrace::__rust_begin_short_backtrace::h0b49c9502cd6f287 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:154:18 49: 0x5b8541c2a081 - std::rt::lang_start::{{closure}}::hc1d9acf0009135ce at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:164:18 50: 0x5b8541ddae40 - core::ops::function::impls::<impl core::ops::function::FnOnce<A>for&F>::call_once::h08ecba131ab90ec4 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/ops/function.rs:284:13 51: 0x5b8541ddae40 - std::panicking::try::do_call::hf33a59fd8ce953f4 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:554:40 52: 0x5b8541ddae40 - std::panicking::try::h5005ce80ce949fd8 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:518:19 53: 0x5b8541ddae40 - std::panic::catch_unwind::hfbae19e2e2c5b7ed at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panic.rs:345:14 54: 0x5b8541ddae40 - std::rt::lang_start_internal::{{closure}}::ha0331c3690741813 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:143:48 55: 0x5b8541ddae40 - std::panicking::try::do_call::hcdcbdb616b4d0295 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:554:40 56: 0x5b8541ddae40 - std::panicking::try::h3f2f1725a07d2256 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:518:19 57: 0x5b8541ddae40 - std::panic::catch_unwind::h51869e04b56b2dc3 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panic.rs:345:14 58: 0x5b8541ddae40 - std::rt::lang_start_internal::h4d90db0530245041 at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:143:20 59: 0x5b8541c2a05a - std::rt::lang_start::h0c5b3abe1e928f3c at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:163:17 60: 0x5b8541c66d8e - main 61: 0x747cf2318e08 -<unknown> 62: 0x747cf2318ecc - __libc_start_main 63: 0x5b8541c255f5 - _start 64: 0x0 -<unknown>
Additional information:
[zack@laptop bug]$ cat Cargo.toml[package]name ="bug"version ="0.1.0"edition ="2021"[dependencies]postgres-types = { version ="0.2.8", default-features = false, features = ["derive"] }tokio = { version ="1.41.1", default-features = false, features = ["rt"] }tokio-postgres = { version ="0.7.12", default-features = false, features = ["runtime"] }[zack@laptop bug]$ rustc --versionrustc 1.82.0 (f6e511eec 2024-10-15)[zack@laptop bug]$ postgres --versionpostgres (PostgreSQL) 16.3[zack@laptop bug]$ uname -aLinux laptop 6.11.7-arch1-1#1 SMP PREEMPT_DYNAMIC Fri, 08 Nov 2024 17:57:56 +0000 x86_64 GNU/Linux
Metadata
Metadata
Assignees
Labels
No labels