1use byteorder::NetworkEndian;
4
5use super::query_builder::PgQueryBuilder;
6use super::PgMetadataLookup;
7use backend::*;
8use prelude::Queryable;
9use query_builder::bind_collector::RawBytesBindCollector;
10use sql_types::{Oid, TypeMetadata};
11
12#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
14pub struct Pg;
15
16#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Default)]
20pub struct PgTypeMetadata {
21 pub oid: u32,
25 pub array_oid: u32,
29}
30
31impl Queryable<(Oid, Oid), Pg> for PgTypeMetadata {
32 type Row = (u32, u32);
33
34 fn build((oid, array_oid): Self::Row) -> Self {
35 PgTypeMetadata { oid, array_oid }
36 }
37}
38
39impl Backend for Pg {
40 type QueryBuilder = PgQueryBuilder;
41 type BindCollector = RawBytesBindCollector<Pg>;
42 type RawValue = [u8];
43 type ByteOrder = NetworkEndian;
44}
45
46impl TypeMetadata for Pg {
47 type TypeMetadata = PgTypeMetadata;
48 type MetadataLookup = PgMetadataLookup;
49}
50
51impl SupportsReturningClause for Pg {}
52impl SupportsDefaultKeyword for Pg {}
53impl UsesAnsiSavepointSyntax for Pg {}