#![warn(missing_docs)]
#![deny(unsafe_code)]
pub mod blob;
pub mod bulk;
pub mod cancel;
pub mod change_tracking;
pub mod client;
pub(crate) mod column_parser;
pub mod config;
pub mod encryption;
pub mod error;
pub mod from_row;
pub mod instrumentation;
pub mod query;
pub mod row;
pub mod state;
pub mod statement_cache;
pub mod stream;
pub mod to_params;
pub mod transaction;
pub mod tvp;
pub use bulk::{BulkColumn, BulkInsert, BulkInsertBuilder, BulkInsertResult, BulkOptions};
pub use cancel::CancelHandle;
pub use client::Client;
pub use config::{Config, RedirectConfig, RetryPolicy, TimeoutConfig};
pub use error::{Error, SharedIoError};
pub use from_row::{FromRow, MapRows, RowIteratorExt};
pub use mssql_auth::Credentials;
pub use tds_protocol::version::TdsVersion;
#[cfg(feature = "zeroize")]
pub use mssql_auth::{SecretString, SecureCredentials};
pub use mssql_types::{FromSql, SqlValue, ToSql};
pub use query::Query;
pub use row::{Column, Row};
pub use state::{
Connected, ConnectionState, Disconnected, InTransaction, ProtocolState, Ready, Streaming,
};
pub use statement_cache::{PreparedStatement, StatementCache, StatementCacheConfig};
pub use stream::{ExecuteResult, MultiResultStream, OutputParam, QueryStream, ResultSet};
pub use to_params::{NamedParam, ParamList, ToParams};
pub use transaction::{IsolationLevel, SavePoint, Transaction};
pub use tvp::{Tvp, TvpColumn, TvpRow, TvpValue};
#[cfg(feature = "always-encrypted")]
pub use encryption::EncryptionContext;
pub use encryption::{
EncryptionConfig, ParameterCryptoInfo, ParameterEncryptionInfo, ResultSetEncryptionInfo,
};
pub use instrumentation::{
DatabaseMetrics, OperationTimer, SanitizationConfig, attributes, metric_names, span_names,
};
pub use change_tracking::{
ChangeMetadata, ChangeOperation, ChangeTracking, ChangeTrackingQuery, SyncVersionStatus,
};
#[cfg(test)]
mod auto_trait_tests {
use super::*;
fn assert_send<T: Send>() {}
fn assert_sync<T: Sync>() {}
#[test]
fn client_ready_is_send_sync() {
assert_send::<Client<Ready>>();
assert_sync::<Client<Ready>>();
}
#[test]
fn client_in_transaction_is_send_sync() {
assert_send::<Client<InTransaction>>();
assert_sync::<Client<InTransaction>>();
}
#[test]
fn client_disconnected_is_send_sync() {
assert_send::<Client<Disconnected>>();
assert_sync::<Client<Disconnected>>();
}
#[test]
fn client_connected_is_send_sync() {
assert_send::<Client<Connected>>();
assert_sync::<Client<Connected>>();
}
#[test]
fn client_streaming_is_send_sync() {
assert_send::<Client<Streaming>>();
assert_sync::<Client<Streaming>>();
}
#[test]
fn config_is_send_sync() {
assert_send::<Config>();
assert_sync::<Config>();
}
#[test]
fn query_stream_is_send_sync() {
assert_send::<QueryStream<'_>>();
assert_sync::<QueryStream<'_>>();
}
#[test]
fn multi_result_stream_is_send_sync() {
assert_send::<MultiResultStream<'_>>();
assert_sync::<MultiResultStream<'_>>();
}
#[test]
fn result_set_is_send_sync() {
assert_send::<ResultSet>();
assert_sync::<ResultSet>();
}
#[test]
fn execute_result_is_send_sync() {
assert_send::<ExecuteResult>();
assert_sync::<ExecuteResult>();
}
#[test]
fn bulk_insert_is_send_sync() {
assert_send::<BulkInsert>();
assert_sync::<BulkInsert>();
}
#[test]
fn bulk_insert_builder_is_send_sync() {
assert_send::<BulkInsertBuilder>();
assert_sync::<BulkInsertBuilder>();
}
#[test]
fn bulk_options_is_send_sync() {
assert_send::<BulkOptions>();
assert_sync::<BulkOptions>();
}
#[test]
fn cancel_handle_is_send_sync() {
assert_send::<CancelHandle>();
assert_sync::<CancelHandle>();
}
#[test]
fn row_is_send_sync() {
assert_send::<Row>();
assert_sync::<Row>();
}
#[test]
fn column_is_send_sync() {
assert_send::<Column>();
assert_sync::<Column>();
}
#[test]
fn statement_cache_is_send_sync() {
assert_send::<StatementCache>();
assert_sync::<StatementCache>();
}
#[test]
fn error_is_send_sync() {
assert_send::<Error>();
assert_sync::<Error>();
}
}