IOdbcService class abstract
Interface for ODBC service operations.
Allows decorators and alternative implementations to be used interchangeably via dependency injection.
Aggregates four narrower sub-interfaces:
- IQueryService — query / stream operations.
- ITransactionService — local 2PC + XA lifecycle.
- IPoolService — connection pool management.
- IAdminService — initialization, metrics, capabilities.
New consumers are encouraged to depend on the narrowest sub-interface
they need (Interface Segregation Principle). Existing code that types
against IOdbcService keeps working unchanged because every member
stays declared at the aggregate level.
- Implemented types
- Implementers
- Available extensions
Constructors
Properties
-
events
→ Stream<
OdbcEvent> -
Broadcast stream of connection-lifecycle events emitted by the
runtime (connection lost, worker recovered, pool resized, etc.).
no setteroverride
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
asyncCancel(
int requestId) → Future< Result< void> > -
asyncFree(
int requestId) → Future< Result< void> > -
asyncGetResult(
int requestId, {int? maxBufferBytes}) → Future< Result< QueryResult> > -
asyncPoll(
int requestId) → Future< Result< int> > -
beginTransaction(
String connectionId, {IsolationLevel? isolationLevel, SavepointDialect? savepointDialect, TransactionAccessMode? accessMode, Duration? lockTimeout}) → Future< Result< int> > -
override
-
beginTransactionFor(
Connection conn, {IsolationLevel? isolationLevel, SavepointDialect? savepointDialect, TransactionAccessMode? accessMode, Duration? lockTimeout}) → Future< Result< int> > -
Available on ITransactionService, provided by the ITransactionServiceConnectionOverloads extension
beginTransactionoverload that accepts a Connection. -
bulkInsert(
String connectionId, String table, List< String> columns, List<int> dataBuffer, int rowCount) → Future<Result< int> > -
bulkInsertParallel(
int poolId, String table, List< String> columns, List<int> dataBuffer, int rowCount, {int parallelism = 0}) → Future<Result< int> > -
cancelStatement(
String connectionId, int stmtId) → Future< Result< void> > -
cancelStream(
int streamId) → Future< Result< void> > -
catalogColumns(
String connectionId, String table) → Future< Result< QueryResult> > -
catalogForeignKeys(
String connectionId, String table) → Future< Result< QueryResult> > -
catalogIndexes(
String connectionId, String table) → Future< Result< QueryResult> > -
catalogPrimaryKeys(
String connectionId, String table) → Future< Result< QueryResult> > -
catalogTables(
{required String connectionId, String catalog = '', String schema = ''}) → Future< Result< QueryResult> > -
catalogTypeInfo(
String connectionId) → Future< Result< QueryResult> > -
clearAllStatements(
) → Future< Result< void> > -
clearAuditEvents(
) → Future< Result< void> > -
clearMetadataCache(
) → Future< Result< void> > -
clearStatementCache(
) → Future< Result< void> > -
closeStatement(
String connectionId, int stmtId) → Future< Result< void> > -
commitTransaction(
String connectionId, int txnId) → Future< Result< void> > -
override
-
connect(
String connectionString, {ConnectionOptions? options}) → Future< Result< Connection> > -
override
-
createSavepoint(
String connectionId, int txnId, String name) → Future< Result< void> > -
detectDriver(
String connectionString) → Future< String?> -
disconnect(
String connectionId) → Future< Result< void> > -
override
-
dispose(
) → void -
executeAsyncStart(
String connectionId, String sql) → Future< Result< int> > -
executePrepared(
String connectionId, int stmtId, List? params, StatementOptions? options) → Future< Result< QueryResult> > -
executePreparedNamed(
String connectionId, int stmtId, Map< String, Object?> namedParams, StatementOptions? options) → Future<Result< QueryResult> > -
executeQuery(
String sql, {List? params, String? connectionId}) → Future< Result< QueryResult> > -
override
-
executeQueryColumnar(
String connectionId, String sql, {List? params}) → Future< Result< TypedColumnarResult> > -
Column-major opt-in variant of executeQueryParams.
override
-
executeQueryColumnarFor(
Connection conn, String sql, {List? params}) → Future< Result< TypedColumnarResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
executeQueryColumnaroverload that accepts a Connection. -
executeQueryDirectedParams(
String connectionId, String sql, List< DirectedParam> params) → Future<Result< QueryResult> > -
Like executeQueryParams for
OUT/INOUT(DRT1 on the wire).override -
executeQueryFor(
Connection conn, String sql, {List? params}) → Future< Result< QueryResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
executeQueryoverload that accepts a Connection. -
executeQueryMulti(
String connectionId, String sql) → Future< Result< QueryResult> > -
executeQueryMultiFull(
String connectionId, String sql) → Future< Result< QueryResultMulti> > -
executeQueryMultiParams(
String connectionId, String sql, List params) → Future< Result< QueryResultMulti> > - Executes a parameterised batch SQL and returns all multi-result items.
-
executeQueryNamed(
String connectionId, String sql, Map< String, Object?> namedParams) → Future<Result< QueryResult> > -
override
-
executeQueryNamedFor(
Connection conn, String sql, Map< String, Object?> namedParams) → Future<Result< QueryResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
executeQueryNamedoverload that accepts a Connection. -
executeQueryParams(
String connectionId, String sql, List params, {ResultEncoding resultEncoding = ResultEncoding.rowMajor}) → Future< Result< QueryResult> > -
override
-
executeQueryParamsFor(
Connection conn, String sql, List params, {ResultEncoding resultEncoding = ResultEncoding.rowMajor}) → Future< Result< QueryResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
executeQueryParamsoverload that accepts a Connection. -
getAsyncWorkerPoolStats(
) → Future< Result< AsyncWorkerPoolStats> > -
getAuditEvents(
{int limit = 0}) → Future< Result< List< >Map< >String, Object?> > -
getAuditStatus(
) → Future< Result< Map< >String, Object?> > -
getConnectionDbmsInfo(
String connectionId) → Future< Result< DbmsInfo> > -
getDriverCapabilities(
String connectionString) → Future< Result< Map< >String, Object?> > -
override
-
getMetrics(
) → Future< Result< OdbcMetrics> > -
override
-
getPreparedStatementsMetrics(
) → Future< Result< PreparedStatementMetrics> > -
getVersion(
) → Future< Result< Map< >String, String> > -
getWorkerPoolStats(
) → Future< AsyncWorkerPoolStats?> -
Returns Dart-side worker-pool statistics when the underlying
connection runs in async mode (P95 latency, fallbacks to blocking,
queue depth, etc.). Returns
nullin sync mode where no worker pool exists.override -
initialize(
) → Future< Result< void> > -
override
-
isInitialized(
) → bool -
metadataCacheEnable(
{required int maxEntries, required int ttlSeconds}) → Future< Result< void> > -
metadataCacheStats(
) → Future< Result< Map< >String, Object?> > -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
poolClose(
int poolId) → Future< Result< void> > -
override
-
poolCreate(
String connectionString, int maxSize, {PoolOptions? options}) → Future< Result< int> > -
override
-
poolGetConnection(
int poolId) → Future< Result< Connection> > -
override
-
poolGetState(
int poolId) → Future< Result< PoolState> > -
poolGetStateDetailed(
int poolId) → Future< Result< Map< >String, Object?> > -
poolHealthCheck(
int poolId) → Future< Result< bool> > -
override
-
poolReleaseConnection(
String connectionId) → Future< Result< void> > -
override
-
poolSetSize(
int poolId, int newMaxSize) → Future< Result< void> > -
override
-
prepare(
String connectionId, String sql, {int timeoutMs = 0}) → Future< Result< int> > -
prepareNamed(
String connectionId, String sql, {int timeoutMs = 0}) → Future< Result< int> > -
releaseSavepoint(
String connectionId, int txnId, String name) → Future< Result< void> > -
rollbackToSavepoint(
String connectionId, int txnId, String name) → Future< Result< void> > -
rollbackTransaction(
String connectionId, int txnId) → Future< Result< void> > -
override
-
runInTransaction<
T extends Object> (String connectionId, Future< Result< action(int txnId), {IsolationLevel? isolationLevel, SavepointDialect? savepointDialect, TransactionAccessMode? accessMode, Duration? lockTimeout}) → Future<T> >Result< T> > -
Runs
actioninside a transaction with automatic commit on success and rollback on any failure (returnedFailureor thrown exception).override -
runInTransactionFor<
T extends Object> (Connection conn, Future< Result< action(int txnId), {IsolationLevel? isolationLevel, SavepointDialect? savepointDialect, TransactionAccessMode? accessMode, Duration? lockTimeout}) → Future<T> >Result< T> > -
Available on ITransactionService, provided by the ITransactionServiceConnectionOverloads extension
runInTransactionoverload that accepts a Connection. -
runInXaTransaction<
T extends Object> (String connectionId, Xid xid, Future< Result< action(XaTransactionHandle xa), {bool onePhase = false}) → Future<T> >Result< T> > -
Runs
actioninside a distributed XA / 2PC branch onconnectionId. -
setAuditEnabled(
{required bool enabled}) → Future< Result< void> > -
setLogLevel(
int level) → Future< Result< void> > -
streamPollAsync(
int streamId) → Future< Result< int> > -
streamQuery(
String connectionId, String sql) → Stream< Result< QueryResult> > -
override
-
streamQueryColumnar(
String connectionId, String sql) → Stream< Result< TypedColumnarResult> > -
Stream-shaped sibling of executeQueryColumnar. Each emitted item
is a complete TypedColumnarResult (a single chunk for the named
query API; multiple chunks when the underlying engine streams).
override
-
streamQueryColumnarFor(
Connection conn, String sql) → Stream< Result< TypedColumnarResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
streamQueryColumnaroverload that accepts a Connection. -
streamQueryFor(
Connection conn, String sql) → Stream< Result< QueryResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
streamQueryoverload that accepts a Connection. -
streamQueryMulti(
String connectionId, String sql) → Stream< Result< QueryResultMultiItem> > -
Streams a multi-result batch one item at a time. New in v3.3.0 (M8).
override
-
streamQueryNamed(
String connectionId, String sql, Map< String, Object?> namedParams) → Stream<Result< QueryResult> > -
Executes a named-parameter query and returns results as a stream.
override
-
streamQueryNamedFor(
Connection conn, String sql, Map< String, Object?> namedParams) → Stream<Result< QueryResult> > -
Available on IQueryService, provided by the IQueryServiceConnectionOverloads extension
streamQueryNamedoverload that accepts a Connection. -
streamStartAsync(
String connectionId, String sql, {int fetchSize = 1000, int chunkSize = 64 * 1024}) → Future< Result< int> > -
toString(
) → String -
A string representation of this object.
inherited
-
validateConnectionString(
String connectionString) → Future< Result< void> > -
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited