use crate::api::Descriptor;
use crate::attr::{Attr, AttrGet, AttrLen, AttrSet};
use crate::c_types::CScalar;
use crate::env::{OdbcVersion, SQL_OV_ODBC3, SQL_OV_ODBC3_80, SQL_OV_ODBC4};
use crate::handle::{RefSQLHDESC, RefUnsafeSQLHDESC, UnsafeSQLHDESC, SQLHDESC};
use crate::str::{OdbcChar, OdbcStr};
use crate::{
Ident, OdbcBool, OdbcDefined, Scalar, SQLCHAR, SQLINTEGER, SQLSMALLINT, SQLUINTEGER, SQLULEN,
SQLWCHAR,
};
use core::{cell::UnsafeCell, marker::PhantomData, mem::MaybeUninit};
use rs_odbc_derive::{odbc_type, Ident};
pub trait DescType<'buf> {}
pub trait DescField<'buf, D: Descriptor<'buf, DT, V>, DT, A: Ident, V: OdbcVersion>:
Attr<A> + AttrLen<Self::DefinedBy, SQLINTEGER>
where
D: ?Sized,
{
fn update_handle(&self, _: &D)
where
Self: AttrSet<A>,
{
}
}
#[derive(Debug)]
pub struct AppDesc<'buf> {
pub(crate) rows_processed: PhantomData<&'buf ()>,
pub(crate) data_ptrs: PhantomData<&'buf ()>,
}
#[derive(Debug)]
pub enum IRD {}
#[derive(Debug)]
pub enum IPD {}
impl<'buf> DescType<'buf> for AppDesc<'buf> {}
impl DescType<'_> for IPD {}
impl DescType<'_> for IRD {}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, SQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for T
where
T: DescField<
'buf,
SQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, SQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for T
where
T: DescField<
'buf,
SQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, SQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for [T]
where
[T]: DescField<
'buf,
SQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, SQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for [T]
where
[T]: DescField<
'buf,
SQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, SQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
SQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, SQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
SQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, UnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for T
where
T: DescField<
'buf,
UnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, UnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for T
where
T: DescField<
'buf,
UnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, UnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for [T]
where
[T]: DescField<
'buf,
UnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, UnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for [T]
where
[T]: DescField<
'buf,
UnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, UnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80>
for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
UnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, UnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
UnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for T
where
T: DescField<
'buf,
RefSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for T
where
T: DescField<
'buf,
RefSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for [T]
where
[T]: DescField<
'buf,
RefSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for [T]
where
[T]: DescField<
'buf,
RefSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, RefSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
RefSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, RefSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
RefSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefUnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for T
where
T: DescField<
'buf,
RefUnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefUnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for T
where
T: DescField<
'buf,
RefUnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefUnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80> for [T]
where
[T]: DescField<
'buf,
RefUnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, T: Scalar>
DescField<'buf, RefUnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for [T]
where
[T]: DescField<
'buf,
RefUnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, RefUnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC3_80>, DT, A, SQL_OV_ODBC3_80>
for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
RefUnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC3_80 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'conn, 'buf, DT: DescType<'buf>, A: Ident, CH: OdbcChar>
DescField<'buf, RefUnsafeSQLHDESC<'conn, DT, SQL_OV_ODBC4>, DT, A, SQL_OV_ODBC4> for OdbcStr<CH>
where
OdbcStr<CH>: DescField<
'buf,
RefUnsafeSQLHDESC<'conn, DT, <SQL_OV_ODBC4 as OdbcVersion>::PrevVersion>,
DT,
A,
<SQL_OV_ODBC4 as OdbcVersion>::PrevVersion,
>,
{
}
impl<'buf, D: Descriptor<'buf, DT, V>, DT, A: Ident, T: Scalar, V: OdbcVersion>
DescField<'buf, D, DT, A, V> for MaybeUninit<T>
where
T: DescField<'buf, D, DT, A, V> + AttrGet<A>,
Self: AttrLen<Self::DefinedBy, SQLINTEGER>,
{
}
impl<'buf, D: Descriptor<'buf, DT, V>, DT, A: Ident, T: Scalar, V: OdbcVersion>
DescField<'buf, D, DT, A, V> for [MaybeUninit<T>]
where
[T]: DescField<'buf, D, DT, A, V> + AttrGet<A>,
Self: AttrLen<Self::DefinedBy, SQLINTEGER>,
{
}
impl<'buf, D: Descriptor<'buf, DT, V>, A: Ident, DT, V: OdbcVersion> DescField<'buf, D, DT, A, V>
for OdbcStr<MaybeUninit<SQLCHAR>>
where
OdbcStr<SQLCHAR>: DescField<'buf, D, DT, A, V> + AttrGet<A>,
{
}
impl<'buf, D: Descriptor<'buf, DT, V>, DT, A: Ident, V: OdbcVersion> DescField<'buf, D, DT, A, V>
for OdbcStr<MaybeUninit<SQLWCHAR>>
where
OdbcStr<SQLWCHAR>: DescField<'buf, D, DT, A, V> + AttrGet<A>,
{
}
impl<'buf, D: Descriptor<'buf, DT, V>, DT, A: Ident, T: Scalar, V: OdbcVersion>
DescField<'buf, D, DT, A, V> for &[T]
where
[T]: DescField<'buf, D, DT, A, V>,
Self: AttrSet<A>,
{
}
impl<'buf, D: Descriptor<'buf, DT, V>, DT, A: Ident, CH: OdbcChar, V: OdbcVersion>
DescField<'buf, D, DT, A, V> for &OdbcStr<CH>
where
OdbcStr<CH>: DescField<'buf, D, DT, A, V>,
Self: AttrSet<A>,
{
}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1099)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_ALLOC_TYPE;
unsafe impl Attr<SQL_DESC_ALLOC_TYPE> for AllocType {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, DT, SQL_OV_ODBC3>, DT>
DescField<'buf, D, DT, SQL_DESC_ALLOC_TYPE, SQL_OV_ODBC3> for AllocType
{
}
unsafe impl AttrGet<SQL_DESC_ALLOC_TYPE> for AllocType {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 20)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_ARRAY_SIZE;
unsafe impl Attr<SQL_DESC_ARRAY_SIZE> for SQLULEN {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, AppDesc<'buf>, SQL_OV_ODBC3>>
DescField<'buf, D, AppDesc<'buf>, SQL_DESC_ARRAY_SIZE, SQL_OV_ODBC3> for SQLULEN
{
}
unsafe impl AttrGet<SQL_DESC_ARRAY_SIZE> for SQLULEN {}
unsafe impl AttrSet<SQL_DESC_ARRAY_SIZE> for SQLULEN {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 25)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_BIND_TYPE;
unsafe impl Attr<SQL_DESC_BIND_TYPE> for BindType {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, AppDesc<'buf>, SQL_OV_ODBC3>>
DescField<'buf, D, AppDesc<'buf>, SQL_DESC_BIND_TYPE, SQL_OV_ODBC3> for BindType
{
}
unsafe impl AttrGet<SQL_DESC_BIND_TYPE> for BindType {}
unsafe impl AttrSet<SQL_DESC_BIND_TYPE> for BindType {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1001)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_COUNT;
unsafe impl Attr<SQL_DESC_COUNT> for SQLSMALLINT {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, DT, SQL_OV_ODBC3>, DT>
DescField<'buf, D, DT, SQL_DESC_COUNT, SQL_OV_ODBC3> for SQLSMALLINT
{
}
unsafe impl AttrGet<SQL_DESC_COUNT> for SQLSMALLINT {}
unsafe impl AttrSet<SQL_DESC_COUNT> for SQLSMALLINT {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 34)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_ROWS_PROCESSED_PTR;
unsafe impl Attr<SQL_DESC_ROWS_PROCESSED_PTR> for [UnsafeCell<SQLUINTEGER>] {
type DefinedBy = OdbcDefined;
}
unsafe impl Attr<SQL_DESC_ROWS_PROCESSED_PTR> for [UnsafeCell<SQLULEN>] {
type DefinedBy = OdbcDefined;
}
impl<'conn, 'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>>
DescField<'buf, D, IRD, SQL_DESC_ROWS_PROCESSED_PTR, SQL_OV_ODBC3> for [UnsafeCell<SQLULEN>]
{
#[cfg(feature = "odbc_debug")]
fn update_handle<V: OdbcVersion>(&self, DescriptorHandle: &UnsafeSQLHDESC<'conn, IRD, V>) {
unimplemented!()
}
}
impl<'buf, D: Descriptor<'buf, IPD, SQL_OV_ODBC3>>
DescField<'buf, D, IPD, SQL_DESC_ROWS_PROCESSED_PTR, SQL_OV_ODBC3>
for [UnsafeCell<SQLUINTEGER>]
{
#[cfg(feature = "odbc_debug")]
fn update_handle<V: OdbcVersion>(&self, DescriptorHandle: &UnsafeSQLHDESC<'conn, IPD, V>) {
unimplemented!()
}
}
unsafe impl AttrGet<SQL_DESC_ROWS_PROCESSED_PTR> for [UnsafeCell<SQLUINTEGER>] {}
unsafe impl AttrGet<SQL_DESC_ROWS_PROCESSED_PTR> for [UnsafeCell<SQLULEN>] {}
unsafe impl AttrSet<SQL_DESC_ROWS_PROCESSED_PTR> for &[UnsafeCell<SQLUINTEGER>] {}
unsafe impl AttrSet<SQL_DESC_ROWS_PROCESSED_PTR> for &[UnsafeCell<SQLULEN>] {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 11)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_AUTO_UNIQUE_VALUE;
unsafe impl Attr<SQL_DESC_AUTO_UNIQUE_VALUE> for OdbcBool {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>>
DescField<'buf, D, IRD, SQL_DESC_AUTO_UNIQUE_VALUE, SQL_OV_ODBC3> for OdbcBool
{
}
unsafe impl AttrGet<SQL_DESC_AUTO_UNIQUE_VALUE> for OdbcBool {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 22)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_BASE_COLUMN_NAME;
unsafe impl<CH: OdbcChar> Attr<SQL_DESC_BASE_COLUMN_NAME> for OdbcStr<CH> {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>, CH: OdbcChar>
DescField<'buf, D, IRD, SQL_DESC_BASE_COLUMN_NAME, SQL_OV_ODBC3> for OdbcStr<CH>
{
}
unsafe impl<CH: OdbcChar> AttrGet<SQL_DESC_BASE_COLUMN_NAME> for OdbcStr<CH> {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 23)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_BASE_TABLE_NAME;
unsafe impl<CH: OdbcChar> Attr<SQL_DESC_BASE_TABLE_NAME> for OdbcStr<CH> {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>, CH: OdbcChar>
DescField<'buf, D, IRD, SQL_DESC_BASE_TABLE_NAME, SQL_OV_ODBC3> for OdbcStr<CH>
{
}
unsafe impl<CH: OdbcChar> AttrGet<SQL_DESC_BASE_TABLE_NAME> for OdbcStr<CH> {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 12)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_CASE_SENSITIVE;
unsafe impl Attr<SQL_DESC_CASE_SENSITIVE> for OdbcBool {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>>
DescField<'buf, D, IRD, SQL_DESC_CASE_SENSITIVE, SQL_OV_ODBC3> for OdbcBool
{
}
unsafe impl AttrGet<SQL_DESC_CASE_SENSITIVE> for OdbcBool {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 17)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_CATALOG_NAME;
unsafe impl<CH: OdbcChar> Attr<SQL_DESC_CATALOG_NAME> for OdbcStr<CH> {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>, CH: OdbcChar>
DescField<'buf, D, IRD, SQL_DESC_CATALOG_NAME, SQL_OV_ODBC3> for OdbcStr<CH>
{
}
unsafe impl<CH: OdbcChar> AttrGet<SQL_DESC_CATALOG_NAME> for OdbcStr<CH> {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1010)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_DATA_PTR;
unsafe impl<T> Attr<SQL_DESC_DATA_PTR> for UnsafeCell<T> {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IPD, SQL_OV_ODBC3>, T: CScalar>
DescField<'buf, D, IPD, SQL_DESC_DATA_PTR, SQL_OV_ODBC3> for UnsafeCell<T>
{
}
impl<'buf, D: Descriptor<'buf, AppDesc<'buf>, SQL_OV_ODBC3>, T: CScalar>
DescField<'buf, D, AppDesc<'buf>, SQL_DESC_DATA_PTR, SQL_OV_ODBC3> for UnsafeCell<T>
{
}
unsafe impl<T: CScalar> AttrGet<SQL_DESC_DATA_PTR> for UnsafeCell<T> {}
unsafe impl<T: CScalar> AttrSet<SQL_DESC_DATA_PTR> for &UnsafeCell<T> {}
unsafe impl<T> Attr<SQL_DESC_DATA_PTR> for [UnsafeCell<T>] {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, DT, SQL_OV_ODBC3>, DT, T>
DescField<'buf, D, DT, SQL_DESC_DATA_PTR, SQL_OV_ODBC3> for [UnsafeCell<T>]
{
}
unsafe impl<T> AttrGet<SQL_DESC_DATA_PTR> for [UnsafeCell<T>] {}
unsafe impl<T> AttrSet<SQL_DESC_DATA_PTR> for &[UnsafeCell<T>] {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 6)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_DISPLAY_SIZE;
unsafe impl Attr<SQL_DESC_DISPLAY_SIZE> for SQLINTEGER {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>>
DescField<'buf, D, IRD, SQL_DESC_DISPLAY_SIZE, SQL_OV_ODBC3> for SQLINTEGER
{
}
unsafe impl AttrGet<SQL_DESC_DISPLAY_SIZE> for SQLINTEGER {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 9)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_FIXED_PREC_SCALE;
unsafe impl Attr<SQL_DESC_FIXED_PREC_SCALE> for OdbcBool {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, IRD, SQL_OV_ODBC3>>
DescField<'buf, D, IRD, SQL_DESC_FIXED_PREC_SCALE, SQL_OV_ODBC3> for OdbcBool
{
}
impl<'buf, D: Descriptor<'buf, IPD, SQL_OV_ODBC3>>
DescField<'buf, D, IPD, SQL_DESC_FIXED_PREC_SCALE, SQL_OV_ODBC3> for OdbcBool
{
}
unsafe impl AttrGet<SQL_DESC_FIXED_PREC_SCALE> for OdbcBool {}
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1004)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_OCTET_LENGTH_PTR;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 33)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_PARAMETER_TYPE;
#[cfg(feature = "v3_5")]
#[derive(Ident)]
#[identifier(SQLSMALLINT, 35)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_ROWVER;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1012)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_UNNAMED;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1002)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_TYPE;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1003)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_LENGTH;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1005)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_PRECISION;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1006)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_SCALE;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1008)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_NULLABLE;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1011)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_NAME;
#[derive(Ident)]
#[identifier(SQLSMALLINT, 1013)]
#[allow(non_camel_case_types)]
pub struct SQL_DESC_OCTET_LENGTH;
unsafe impl Attr<SQL_DESC_OCTET_LENGTH> for OdbcBool {
type DefinedBy = OdbcDefined;
}
impl<'buf, D: Descriptor<'buf, DT, SQL_OV_ODBC3>, DT>
DescField<'buf, D, DT, SQL_DESC_OCTET_LENGTH, SQL_OV_ODBC3> for OdbcBool
{
}
unsafe impl AttrGet<SQL_DESC_OCTET_LENGTH> for OdbcBool {}
#[odbc_type(SQLSMALLINT)]
pub struct AllocType;
pub const SQL_DESC_ALLOC_AUTO: AllocType = AllocType(1);
pub const SQL_DESC_ALLOC_USER: AllocType = AllocType(2);
#[odbc_type(SQLUINTEGER)]
pub struct BindType;
pub const SQL_BIND_BY_COLUMN: BindType = BindType(1);