Trait mysql_async::prelude::LocalInfileHandler [] [src]

pub trait LocalInfileHandler {
    fn handle(&self, file_name: &[u8]) -> Result<Box<Read>>;
}

Trait used to handle local infile requests.

Simple handler example:


struct ExampleHandler(&'static [u8]);

impl LocalInfileHandler for ExampleHandler {
    fn handle(&self, _: &[u8]) -> my::errors::Result<Box<io::Read>> {
        Ok(Box::new(self.0))
    }
}


let mut lp = Core::new().unwrap();

let mut opts = my::OptsBuilder::from_opts(&*database_url);
opts.local_infile_handler(Some(ExampleHandler(b"foobar")));

let pool = my::Pool::new(opts, &lp.handle());

let future = pool.get_conn()
    .and_then(|conn| conn.drop_query("CREATE TEMPORARY TABLE tmp (a TEXT);"))
    .and_then(|conn| conn.drop_query("LOAD DATA LOCAL INFILE 'baz' INTO TABLE tmp;"))
    .and_then(|conn| conn.prep_exec("SELECT * FROM tmp;", ()))
    .and_then(|result| result.map(|row| my::from_row::<(String,)>(row).0))
    .map(|(result, _ /* stmt */)| {
        assert_eq!(result.len(), 1);
        assert_eq!(result[0], "foobar");
    })
    .and_then(|_| pool.disconnect());

lp.run(future).unwrap();

Required Methods

file_name is the file name in LOAD DATA LOCAL INFILE '<file name>' INTO TABLE ...; query.

Implementors