Breaking changes:
- Add [
#[non_exhaustive]] attribute to [OracleType] - Change string form of [
Timestamp] when precisions or “alternate” form is specified."{:.n}"wherenis 0~9 specifies the number of fractional seconds displayed."{:#}"formats timestamps in ISO 8601 extended format."{:-#}"formats timestamps in ISO 8601 basic format.
[Possibly-breaking changings]:
- Bump MSRV (minimum supported rust version) to 1.68.0
New features:
- Support VECTOR data type
- Add [
OracleType::Vector] variant - Add [
InnerValue::Vector] variant - Add [
VecFmt] enum type - Add [
VecRef] enum type to set rust values to Oracle VECTOR data type - Add [
Vector] struct to get rust values from Oracle VECTOR data type - Add [
VectorFormat] trait type - impl
FromSqlforVec<f32>,Vec<f64>,Vec<i8>andVec<u8>to get values from Oracle VECTOR data type
- Add [
New features:
- Add [
Connection::info()], [conn::Info] and [conn::ServerType] to get connection information - Add [
Error::new()], [Error::add_source()], [Error::with_source()] and [Error::into_source()] - Add [
InnerValue] and [SqlValue::as_inner_value()] - impl
DefaultforInitParamsandPoolOptions
Fixed Issues:
- Fix panic when invalid argument Error is displayed
Internal Changes:
- Update ODPI-C from 5.2.0 to 5.4.1. (see [ODPI-C release notes])
- Improve performance of fetching numeric types when number column definition is out of range of i64. See #89 (comment)
- Improve performance of fetching number columns by skipping UTF-8 validation
Fixed Issues:
- Fix memory leaks when [
Batch] is explicitly closed by [close()][Batch::close()].
New features:
- Add [
InitParams] to initialize the Oracle client library explicitly - Add [
DbError::is_recoverable()] and [DbError::is_warning()]
Non-breaking Changes:
DbError::new()uses generics, which supports old types.
Internal Changes:
- Improve performance of iterator for [
ResultSet<T>][ResultSet] where T is [Row] by sharing an internal fetch array buffer. Before this change, one row in the buffer is copied toRowfor each iteration. After this, new fetch array buffer is allocated when more rows must be fetched into a buffer but the buffer is referenced byRows.
Breaking changes:
- Remove the lifetype parameter
'connfrom [Statement] and removestmt_without_lifetimefeature added at 0.5.7 - Add a new variant [
OracleType::Xml] - Add a lifetime parameter to [
SqlValue] - Change the return type of [
Timestamp::new()], [Timestamp::and_tz_offset()], [Timestamp::and_tz_hm_offset()], and [Timestamp::and_prec()] to check the arguments - Change the return type of [
IntervalDS::new()] and [IntervalDS::and_prec()] to check the arguments - Change the return type of [
IntervalYM::new()] and [IntervalYM::and_prec()] to check the arguments - Remove [
SqlValue::dup] - Add [
#[non_exhaustive]] to [Error] - Remove deprecated trait method [
Error::description] for [Error] - Remove [
Connection::prepare()] and [StmtParam]
Deprecated:
- All variants in [
Error] enum are deprecated. The enum will be changed to struct in the future.
New features:
- Add [
Row::column_info()] to tell column names and types in [RowValue::get()] - Change the lifetime parameter of [
ResultSet] to'staticwhen it is created by query methods of [Connection] or into_result_set methods of [Statement]. Sendis implemented for the following types:- [
Statement] - [
ResultSet<'static, T>][ResultSet] - [
Row] - [
SqlValue] - [
Object] - [
Collection]
- [
Changes:
- Error messages are changed to follow "Error messages are typically concise lowercase sentences without trailing punctuation"
- Update ODPI-C to 5.2.0. (see [ODPI-C release notes])
- Update minimum supported Rust version to 1.60.0
- Update rust edition to 2021
- Change a undocumented method of the sealed trait [
ColumnIndex] - Add
#[drive(Debug)]for [Error] instead of explicitly implementingDebugforError - Implement
Error::sourceforError
New features:
- Add
stmt_without_lifetimefeature flag. - Add [
ObjectType::package_name()] - Add [
Statement::last_row_id()] - Add [
Connection::last_warning()] - Add [
iter()][Collection::iter()], [indices()][Collection::indices()] and [values()][Collection::values()] methods, which creates iterators over [Collection] elements.
Fixed Issues:
- [
FromSql::from_sql] for chrono data types returns [Error::OutOfRange] instead of panics when an invalid timestamp is retrieved from Oracle.
Changes:
- The [
Eq] trait was implemented for enum types.
Internal Changes:
- Update ODPI-C to 4.6.0. (see [ODPI-C release notes])
Fixed Issues:
- Fix RowValue which can reference an invalid Ok that defined outside (contributed by GH-62)
Changes:
- [
Connection::prepare()] was marked as deprecated.
Internal Changes:
- Update ODPI-C to 4.4.1. (see [ODPI-C release notes])
- Suppress 'cargo clippy' warnings
- Use atomic types instead of RefCell and Mutex
New features:
- [
RowValuederive macro] (contributed by GH-49) - Add query methods for Statement which take ownership (contributed by GH-50)
- Support connection pooling
- [
pool] - [
Connection::close_with_mode()] - [
Connection::tag()] - [
Connection::tag_found()] - [
Connection::is_new_connection()]
- [
- Add methods related to statement caching
- [
Connector::stmt_cache_size()] - [
StatementBuilder::exclude_from_cache()] - [
StatementBuilder::tag()]
- [
- Support Advanced Queuing experimentally when
aq_unstablefeature is enabled Breaking changes may be introduced by a minor release.
Fixed bugs:
- Fix resource leaks when statement are explicitly closed by [
Statement::close()]. - Fix syntax typo in doc comment about [
Row::get_as()] (GH-54)
Internal Changes:
- Update ODPI-C to 4.3.0. (see ODPI-C release notes: 4.3.0)
Fixed bugs:
- Fix resource leaks when Oracle object datatypes are used. (GH-48)
New features:
- Add [
Connection::statement()][] and [StatementBuilder][] to create [Statement][] and deprecate [Connection::prepare()][]. - Customize prefetch row size ([
StatementBuilder::prefetch_rows()]) GH-40 - Read/Write LOBs as streams ([
sql_type::Lob][], [sql_type::Clob][], [sql_type::Nclob][] and [sql_type::Blob][]) - Ref cursors including implicit statement results ([
sql_type::RefCursor][]) GH-38 - Add [
Connection::oci_attr][], [Connection::set_oci_attr][], [Statement::oci_attr][] and [Statement::oci_attr][] to support OCI handle attributes. Impl ToSql for &'a [u8; N]
Internal Changes:
- Bind LOB columns as string or binary by default
- Update ODPI-C to 4.2.1. (see ODPI-C release notes: 4.2.0 and 4.2.1)
- Make it possible to get rowid as string (GH-36)
- Make it possible to bind boolean values (PL/SQL only)
- Add [Batch DML][
Batch] feature (GH-29) - Implement
FromStrforVersion. - Add
OracleType::Jsonvariant. (Note: JSON data type has not been supported yet.)
Changes:
- Based on ODPI-C 4.1.0
- The return value of [
DbError::offset()][] was changed from u16 to u32.
Changes:
- Add new methods [
Connection::call_timeout()][] and [Connection::set_call_timeout()][]
Changes:
-
Fix SEGV while getting Object type's FLOAT data type attributes. (GH-19)
-
Add workaround to use with tracing-core. (GH-18)
Changes:
- Add a new method [
Connection::status()][] and a new enum [ConnStatus][] to get the status of the connection.
Incompatible changes:
-
Remove
ConnParamenum and addConnectorstruct to use builder pattern.- The fourth argument of
Connection::connectwas removed.
From:To:let conn = Connection::connect(username, password, connect_string, &[])?;
let conn = Connection::connect(username, password, connect_string)?;
- Use
Connectorto use additional parameters.
From:To:let conn = Connection::connect(username, password, connect_string, &[ConnParam::Sysdba])?;
orlet conn = Connector::new(username, password, connect_string).privilege(Privilege::Sysdba).connect()?;
let mut connector = Connector::new(username, password, connect_string); connector.privilege(Privilege::Sysdba); let conn = connector.connect().unwrap();
- The fourth argument of
-
Add a new submodule
sql_typeand move the following structs, enums and traits from the root module to the submodule.CollectionIntervalDSIntervalYMObjectObjectTypeObjectTypeAttrOracleTypeTimestampFromSqlToSqlToSqlNull
-
Remove
client_version()method and addVersion::client()method instead. -
Remove the associated type
ItemfromRowValuetrait. -
Add
&Connectionargument to trait methods:ToSql::oratypeandToSqlNull::oratype_for_null. -
Iterator for
&ResultSet<T>was removed and that forResultSet<T>was added again for better ergonomics. Changefor row_result in &result_set {...}to eitherfor row_result in result_set {...}if theResultSetcan be consumed or tofor row_result in result_set.by_ref() {...}otherwise.
Changes:
- Implement
FusedIteratorforResultSet. - The return value of [
Connection::object_type()][] is cached in the connection.
When "CREATE TYPE", "ALTER TYPE" or "DROP TYPE" is executed, the cache clears. - Add
Connection.clear_object_type_cache(). - Update ODPI-C to version 3.2.2.
- Implement
SyncandSendforConnection. (GH-14)
Changes:
- Fix memory corruption when using object and collection data types.
- Update ODPI-C to version 3.1.3.
Incompatible changes:
- Make errors usable across threads (GH-6)
Changes:
-
Change the license to the Universal Permissive License v 1.0 and/or the Apache License v 2.0.
-
Update ODPI-C to 3.0.0, which includes support for Oracle 18c client.
-
New methods
- [
Statement::row_count()][]
- [
Changes:
- Allow fetching BLOB data as
Vec<u8>. - Implement
ToSqlandToSqlNullfor&[u8]. - Implement
DebugforConnection,Statementand so on. - Update ODPI-C to version 2.4.2.
Changes:
- New methods
- [
Statement::is_query()][] - [
Statement::is_plsql()][] - [
Statement::is_ddl()][] - [
Statement::is_dml()][]
- [
Incompatible changes:
- Iterator for
ResultSet<T>was removed and that for&ResultSet<T>was added in order not to consumeResultSet<T>by for-loop.
Changefor row_result in result_set {...}tofor row_result in &result_set {...}.
Fixed bugs:
- Fix an error when a column value converted from the database character set to UTF-8 becomes longer than the column size. (GH-3)
Incompatible changes:
-
BindIndex and ColumnIndex were sealed and cannot be implemented for types outside of the crate.
-
The
Othervariant of [StatetmentType][] enum was removed.Commit,Rollback,ExplainPlan,CallandUnknownvariants were added to the enum. -
Change the return type of [
ObjectType::new_object()][] fromOption<Object>toResult<Object>. -
Change the return type of [
ObjectType::new_collection()][] fromOption<Collection>toResult<Collection>.
The method to prepare statements was changed for future extension.
Changes:
- New methods and structs
- [
Statement::returned_values()][] to support RETURNING INTO clause. - [
StmtParam][] struct to specify prepared statement parameters.
- [
Incompatible changes:
-
Changed Methods
- [
Connection::prepare()][]. Theparamsargument was added.
- [
-
Removed methods
Statement::set_fetch_array_size(). Use [StmtParam::FetchArraySize][] instead.
Methods for establishing connections were changed in order to avoid incompatible changes when connection pooling is supported in future.
Changes:
-
New methods and enums.
- [
Connection::connect()][] - [
ConnParam][]
- [
-
Deprecated methods.
Connnection::new(). Use [Connection::connect()][] instead.
Incompatible changes:
- Renamed variants.
Error::NoMoreData→ [Error::NoDataFound][]
- Removed structs and enums.
Connector(connection builder). Use [ConnParam][] in order to specify extra connection parameters instead.AuthMode. Use [ConnParam][] to specify authentication mode instead.
- Methods whose return type was changed from
&Stringto&str.- [
Connection::tag()][] - [
ColumnInfo::name()][] - [
DbError::message()][] - [
DbError::fn_name()][] - [
DbError::action()][] - [
ObjectType::schema()][] - [
ObjectType::name()][] - [
ObjectTypeAttr::name()][]
- [
- Methods whose return type was changed from
&Vec<...>to&[...].- [
Row::sql_values()][] - [
ResultSet::column_info()][] - [
ObjectType::attributes()][]
- [
New features:
- Add query methods to
Connectionto fetch rows without usingStatement.- [
Connection::query()][] - [
Connection::query_named()][] - [
Connection::query_as()][] - [
Connection::query_as_named()][]
- [
- Add query_row methods to
Statementto fetch a first row without usingResultSet.- [
Statement::query_row()][] - [
Statement::query_row_named()][] - [
Statement::query_row_as()][] - [
Statement::query_row_as_named()][]
- [
Incompatible changes:
- Merge
RowResultSetstruct intoRowValueResultSetand rename it toResultSet.
New features:
- Add query methods to
Statementto fetch rows as iterator.- [
Statement::query()][] - [
Statement::query_named()][] - [
Statement::query_as()][] - [
Statement::query_as_named()][]
- [
- Add query_row methods to
Connectionto fetch a first row without usingStatement.- [
Connection::query_row()][] - [
Connection::query_row_named()][] - [
Connection::query_row_as()][] - [
Connection::query_row_as_named()][]
- [
- Autocommit mode.
Incompatible changes:
- Execute methods fail for select statements. Use query methods instead.
- [
Connection::execute()][] - [
Connection::execute_named()][] - [
Statement::execute()][] - [
Statement::execute_named()][]
- [
- Renamed traits, methods and variants.
ColumnValues→ [RowValue][]Row::values()→ [Row::get_as()][]Row::columns()→ [Row::sql_values()][]Error::Overflow→ [Error::OutOfRange][]
- Removed methods.
- Statement::column_count()
- Statement::column_names()
- Statement::column_info()
- Statement::fetch()
- SqlValue::clone()
[#[non_exhaustive]]: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute
[Error::description]: https://doc.rust-lang.org/std/error/trait.Error.html#method.description
[Error::source]: https://doc.rust-lang.org/std/error/trait.Error.html#method.source
[pool]: https://www.jiubao.org/rust-oracle/oracle/pool/index.html
[Batch]: https://www.jiubao.org/rust-oracle/oracle/struct.Batch.html
[Batch::close()]: https://www.jiubao.org/rust-oracle/oracle/struct.Batch.html#method.close
[Collection]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Collection.html
[Collection::indices()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Collection.html#method.indices
[Collection::iter()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Collection.html#method.iter
[Collection::values()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Collection.html#method.values
[ColumnIndex]: https://www.jiubao.org/rust-oracle/oracle/trait.ColumnIndex.html
[ColumnInfo::name()]: https://www.jiubao.org/rust-oracle/oracle/struct.ColumnInfo.html#method.name
[conn::Info]: https://www.jiubao.org/rust-oracle/oracle/conn/struct.Info.html
[conn::ServerType]: https://www.jiubao.org/rust-oracle/oracle/conn/enum.ServerType.html
[Connection]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html
[Connection::connect()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.connect
[Connection::call_timeout()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.call_timeout
[Connection::close_with_mode()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.close_with_mode
[Connection::execute()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.execute
[Connection::execute_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.execute_named
[Connection::info()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.info
[Connection::is_new_connection()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.is_new_connection
[Connection::last_warning()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.last_warning
[Connection::object_type()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.object_type
[Connection::prepare()]: https://docs.rs/oracle/0.5.*/oracle/struct.Connection.html#method.prepare
[Connection::query()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query
[Connection::query_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_named
[Connection::query_as()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_as
[Connection::query_as_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_as_named
[Connection::query_row()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_row
[Connection::query_row_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_row_named
[Connection::query_row_as()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_row_as
[Connection::query_row_as_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.query_row_as_named
[Connection::statement()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.statement
[Connection::status()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.status
[Connection::set_call_timeout()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.set_call_timeout
[Connection::tag()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.tag
[Connection::tag_found()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connection.html#method.tag_found
[Connector::stmt_cache_size()]: https://www.jiubao.org/rust-oracle/oracle/struct.Connector.html#method.stmt_cache_size
[ConnParam]: https://docs.rs/oracle/0.2.*/oracle/enum.ConnParam.html
[ConnStatus]: https://www.jiubao.org/rust-oracle/oracle/enum.ConnStatus.html
[DbError::action()]: https://www.jiubao.org/rust-oracle/oracle/struct.DbError.html#method.action
[DbError::fn_name()]: https://www.jiubao.org/rust-oracle/oracle/struct.DbError.html#method.fn_name
[DbError::is_recoverable()]: https://www.jiubao.org/rust-oracle/oracle/struct.DbError.html#method.is_recoverable
[DbError::is_warning()]: https://www.jiubao.org/rust-oracle/oracle/struct.DbError.html#method.is_warning
[DbError::message()]: https://www.jiubao.org/rust-oracle/oracle/struct.DbError.html#method.message
[DbError::offset()]: https://www.jiubao.org/rust-oracle/oracle/struct.DbError.html#method.offset
[Eq]: https://doc.rust-lang.org/std/cmp/trait.Eq.html
[Error]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html
[Error::NoDataFound]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html#variant.NoDataFound
[Error::OutOfRange]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html#variant.OutOfRange
[Error::add_source()]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html#method.add_source
[Error::into_source()]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html#method.into_source
[Error::new()]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html#method.new
[Error::with_source()]: https://www.jiubao.org/rust-oracle/oracle/enum.Error.html#method.with_source
[FromSql::from_sql]: https://www.jiubao.org/rust-oracle/oracle/sql_type/trait.FromSql.html#method.from_sql
[InitParams]: https://www.jiubao.org/rust-oracle/oracle/struct.InitParams.html
[InnerValue]: https://www.jiubao.org/rust-oracle/oracle/sql_type/enum.InnerValue.html
[InnerValue::Vector]: https://www.jiubao.org/rust-oracle/oracle/sql_type/enum.InnerValue.html#variant.Vector
[IntervalDS::and_prec()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.IntervalDS.html#method.and_prec
[IntervalDS::new()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.IntervalDS.html#method.new
[IntervalYM::and_prec()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.IntervalYM.html#method.and_prec
[IntervalYM::new()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.IntervalYM.html#method.new
[Object]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Object.html
[ObjectType::attributes()]: https://docs.rs/oracle/0.2.*/oracle/struct.ObjectType.html#method.attributes
[ObjectType::name()]: https://docs.rs/oracle/0.2.*/oracle/struct.ObjectType.html#method.name
[ObjectType::new_collection()]: https://docs.rs/oracle/0.2.*/oracle/struct.ObjectType.html#method.new_collection
[ObjectType::new_object()]: https://docs.rs/oracle/0.2.*/oracle/struct.ObjectType.html#method.new_object
[ObjectType::schema()]: https://docs.rs/oracle/0.2.*/oracle/struct.ObjectType.html#method.schema
[ObjectType::package_name()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.ObjectType.html#method.package_name
[ObjectTypeAttr::name()]: https://docs.rs/oracle/0.2.*/oracle/struct.ObjectTypeAttr.html#method.name
[ODPI-C release notes]: https://oracle.github.io/odpi/doc/releasenotes.html
[OracleType]: https://www.jiubao.org/rust-oracle/oracle/sql_type/enum.OracleType.html
[OracleType::Vector]: https://www.jiubao.org/rust-oracle/oracle/sql_type/enum.OracleType.html#variant.Vector
[OracleType::Xml]: https://www.jiubao.org/rust-oracle/oracle/sql_type/enum.OracleType.html#variant.Xml
[ResultSet]: https://www.jiubao.org/rust-oracle/oracle/struct.ResultSet.html
[ResultSet::column_info()]: https://www.jiubao.org/rust-oracle/oracle/struct.ResultSet.html#method.column_info
[Row]: https://www.jiubao.org/rust-oracle/oracle/struct.Row.html
[Row::column_info()]: https://www.jiubao.org/rust-oracle/oracle/struct.Row.html#method.column_info
[Row::sql_values()]: https://www.jiubao.org/rust-oracle/oracle/struct.Row.html#method.sql_values
[Row::get_as()]: https://www.jiubao.org/rust-oracle/oracle/struct.Row.html#method.get_as
[RowValue]: https://www.jiubao.org/rust-oracle/oracle/trait.RowValue.html
[RowValue::get()]: https://www.jiubao.org/rust-oracle/oracle/trait.RowValue.html#tymethod.get
[RowValue derive macro]: https://www.jiubao.org/rust-oracle/oracle/derive.RowValue.html
[SqlValue]: https://www.jiubao.org/rust-oracle/oracle/struct.SqlValue.html
[SqlValue::dup]: https://docs.rs/oracle/0.5.7/oracle/struct.SqlValue.html#method.dup
[SqlValue::as_inner_value()]: https://docs.rs/oracle/0.5.7/oracle/struct.SqlValue.html#method.as_inner_value
[Statement]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html
[Statement::close()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.close
[Statement::last_row_id()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.last_row_id
[Statement::execute()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.execute
[Statement::execute_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.execute_named
[Statement::query()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query
[Statement::query_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_named
[Statement::query_as()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_as
[Statement::query_as_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_as_named
[Statement::query_row()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_row
[Statement::query_row_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_row_named
[Statement::query_row_as()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_row_as
[Statement::query_row_as_named()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.query_row_as_named
[Statement::returned_values()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.returned_values
[Statement::row_count()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.row_count
[Statement::is_query()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.is_query
[Statement::is_plsql()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.is_plsql
[Statement::is_ddl()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.is_ddl
[Statement::is_dml()]: https://www.jiubao.org/rust-oracle/oracle/struct.Statement.html#method.id_dml
[StatementBuilder]: https://www.jiubao.org/rust-oracle/oracle/struct.StatementBuilder.html
[StatementBuilder::exclude_from_cache()]: https://www.jiubao.org/rust-oracle/oracle/struct.StatementBuilder.html#method.exclude_from_cache
[StatementBuilder::prefetch_rows()]: https://www.jiubao.org/rust-oracle/oracle/struct.StatementBuilder.html#method.prefetch_rows
[StatementBuilder::tag()]: https://www.jiubao.org/rust-oracle/oracle/struct.StatementBuilder.html#method.tag
[StmtParam]: https://docs.rs/oracle/0.5.*/oracle/enum.StmtParam.html
[StmtParam::FetchArraySize]: https://docs.rs/oracle/0.5.*/oracle/enum.StmtParam.html#variant.FetchArraySize
[Timestamp]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Timestamp.html
[Timestamp::and_prec()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Timestamp.html#method.and_prec
[Timestamp::and_tz_hm_offset()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Timestamp.html#method.and_tz_hm_offset
[Timestamp::and_tz_offset()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Timestamp.html#method.and_tz_offset
[Timestamp::new()]: https://www.jiubao.org/rust-oracle/oracle/sql_type/struct.Timestamp.html#method.new
[VecFmt]: https://www.jiubao.org/rust-oracle/oracle/sql_type/vector/enum.VecFmt.html
[VecRef]: https://www.jiubao.org/rust-oracle/oracle/sql_type/vector/enum.VecRef.html
[Vector]: https://www.jiubao.org/rust-oracle/oracle/sql_type/vector/struct.Vector.html
[VectorFormat]: https://www.jiubao.org/rust-oracle/oracle/sql_type/vector/trait.VectorFormat.html
[Possibly-breaking changings]: https://doc.rust-lang.org/cargo/reference/semver.html#change-categories