- Notifications
You must be signed in to change notification settings - Fork515
Open
Description
I'm trying to get an array of enum, but it fails on deserialization. Array seems to work with other types, including Vec and even Vec.
use postgres_types::{ToSql, FromSql};use postgres::{Client, NoTls, Error};#[derive(Clone, Debug, ToSql, FromSql)]pub(crate) enum MyTag{ Happy, Nature,}fn main() -> Result<(), Error>{ let mut client = Client::connect("postgresql://postgres@localhost:5432/enum_test", NoTls)?; let mut tr = client.transaction()?; tr.batch_execute(" CREATE TYPE my_tag_type AS ENUM ('Happy', 'Squirrel', 'Nature'); CREATE TABLE test ( tags_str text[], tags_enum my_tag_type[] ); INSERT INTO test (tags_str, tags_enum) VALUES ( ARRAY['Happy', 'Squirrel'], ARRAY['Happy', 'Squirrel']::my_tag_type[] ); ")?; let results = tr.query("SELECT tags_str, tags_enum FROM test;", &[])?; for result in results { let tags_str: Vec<String> = result.get("tags_str"); println!("{:?}", tags_str); let tags_enum: Vec<MyTag> = result.get("tags_enum"); println!("{:?}", tags_enum); } tr.rollback()?; Ok(())}
["Happy", "Squirrel"]thread 'main' panicked at 'error retrieving column tags_enum:error deserializing column 1: cannot convert between the Rust type `alloc::vec::Vec<enum_test::MyTag>` and the Postgres type `_my_tag_type`',/home/vargad/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-postgres-0.7.6/src/row.rs:151:25
Metadata
Metadata
Assignees
Labels
No labels