Skip to content

Commit d809bca

Browse files
authored
Merge pull request #54 from GiGainfosystems/bump/oracle_0_6_0
Bump oracle version to 0.6.0
2 parents b1e4a88 + a54bf12 commit d809bca

File tree

4 files changed

+29
-26
lines changed

4 files changed

+29
-26
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ jobs:
6666
curl -Lo basic.zip https://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linuxx64.zip
6767
curl -Lo sqlplus.zip https://download.oracle.com/otn_software/linux/instantclient/instantclient-sqlplus-linuxx64.zip
6868
mkdir linux
69-
unzip basic.zip -d linux
70-
unzip sqlplus.zip -d linux
69+
unzip -o basic.zip -d linux
70+
unzip -o sqlplus.zip -d linux
7171
IC_DIR=$PWD/$(ls -d linux/instantclient*)
7272
mkdir windows
7373
echo LD_LIBRARY_PATH=$IC_DIR:$LD_LIBRARY_PATH >> $GITHUB_ENV

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repository = "https://github.com/GiGainfosystems/diesel-oci/"
1616
documentation = "https://docs.rs/diesel-oci"
1717

1818
[dependencies]
19-
oracle = {version = "0.5.6", features = ["chrono"]}
19+
oracle = {version = "0.6.0", features = ["chrono"]}
2020
url = "2"
2121
percent-encoding = "2"
2222

src/oracle/connection/mod.rs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ use diesel::query_builder::{InsertStatement, QueryId, ValuesClause};
2323
use diesel::sql_types::HasSqlType;
2424
use diesel::RunQueryDsl;
2525
use diesel::{result::*, Table};
26+
use oracle::ErrorKind;
2627

2728
mod oracle_value;
2829
pub(crate) use self::oracle_value::InnerValue;
@@ -161,51 +162,49 @@ impl From<oracle::Error> for ErrorHelper {
161162

162163
impl From<ErrorHelper> for diesel::result::Error {
163164
fn from(ErrorHelper(e): ErrorHelper) -> Self {
164-
match e {
165-
oracle::Error::OciError(_) => {
165+
match (e.kind(), e.db_error()) {
166+
(ErrorKind::OciError, _) => {
166167
// TODO: better handling here
167168
diesel::result::Error::QueryBuilderError(e.into())
168169
}
169-
oracle::Error::DpiError(_) => {
170+
(ErrorKind::DpiError, _) => {
170171
// TODO: better handling here
171172
diesel::result::Error::QueryBuilderError(e.into())
172173
}
173-
oracle::Error::NullValue => diesel::result::Error::DeserializationError(
174+
(ErrorKind::NullValue, _) => diesel::result::Error::DeserializationError(
174175
diesel::result::UnexpectedNullError.into(),
175176
),
176-
oracle::Error::ParseError(e) => diesel::result::Error::SerializationError(e),
177-
oracle::Error::OutOfRange(e) => diesel::result::Error::DeserializationError(e.into()),
178-
oracle::Error::InvalidTypeConversion(from, to) => {
179-
diesel::result::Error::DeserializationError(
180-
format!("Cannot convert from {} to {}", from, to).into(),
181-
)
177+
(ErrorKind::ParseError, _) => diesel::result::Error::SerializationError(e.into()),
178+
(ErrorKind::OutOfRange | ErrorKind::InvalidTypeConversion, _) => {
179+
diesel::result::Error::DeserializationError(e.into())
182180
}
183-
oracle::Error::InvalidBindIndex(e) => diesel::result::Error::QueryBuilderError(
181+
(ErrorKind::InvalidBindIndex, Some(e)) => diesel::result::Error::QueryBuilderError(
184182
format!("Invalid bind with index: {}", e).into(),
185183
),
186-
oracle::Error::InvalidBindName(e) => diesel::result::Error::QueryBuilderError(
184+
(ErrorKind::InvalidBindName, Some(e)) => diesel::result::Error::QueryBuilderError(
187185
format!("Invalid bind with name: {}", e).into(),
188186
),
189-
oracle::Error::InvalidColumnIndex(_) => diesel::result::Error::DeserializationError(
187+
(ErrorKind::InvalidColumnIndex, _) => diesel::result::Error::DeserializationError(
190188
diesel::result::UnexpectedEndOfRow.into(),
191189
),
192-
oracle::Error::InvalidColumnName(c) => diesel::result::Error::DeserializationError(
193-
format!("Invalid column name: {}", c).into(),
190+
(ErrorKind::InvalidColumnName, _) => diesel::result::Error::DeserializationError(
191+
format!("Invalid column name: {}", e).into(),
194192
),
195-
oracle::Error::InvalidAttributeName(e) => diesel::result::Error::QueryBuilderError(
193+
(ErrorKind::InvalidAttributeName, _) => diesel::result::Error::QueryBuilderError(
196194
format!("Invalid attribute name: {}", e).into(),
197195
),
198-
oracle::Error::InvalidOperation(e) => {
196+
(ErrorKind::InvalidOperation, _) => {
199197
diesel::result::Error::QueryBuilderError(format!("Invalid operation: {}", e).into())
200198
}
201-
oracle::Error::UninitializedBindValue => {
199+
(ErrorKind::UninitializedBindValue, _) => {
202200
diesel::result::Error::QueryBuilderError("Uninitialized bind value".into())
203201
}
204-
oracle::Error::NoDataFound => diesel::result::Error::NotFound,
205-
oracle::Error::InternalError(e) => diesel::result::Error::QueryBuilderError(e.into()),
206-
oracle::Error::BatchErrors(_e) => {
202+
(ErrorKind::NoDataFound, _) => diesel::result::Error::NotFound,
203+
(ErrorKind::InternalError, _) => diesel::result::Error::QueryBuilderError(e.into()),
204+
(ErrorKind::BatchErrors, _) => {
207205
diesel::result::Error::QueryBuilderError("Batch error".into())
208206
}
207+
_ => unimplemented!(),
209208
}
210209
}
211210
}
@@ -405,7 +404,7 @@ impl OciConnection {
405404
fn with_prepared_statement<'conn, 'query, T, R>(
406405
&'conn mut self,
407406
query: &T,
408-
callback: impl FnOnce(oracle::Statement<'conn>, OracleBindCollector) -> QueryResult<R>,
407+
callback: impl FnOnce(oracle::Statement, OracleBindCollector) -> QueryResult<R>,
409408
) -> Result<R, Error>
410409
where
411410
T: QueryFragment<Oracle> + QueryId + 'query,

src/oracle/connection/oracle_value.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub struct OracleValue<'a> {
99
#[derive(Debug, Clone)]
1010
pub(crate) enum InnerValue<'a> {
1111
Raw {
12-
raw_value: &'a oracle::SqlValue,
12+
raw_value: &'a oracle::SqlValue<'a>,
1313
tpe: oracle::sql_type::OracleType,
1414
},
1515
SmallInt(i16),
@@ -172,6 +172,10 @@ impl<'a> OracleValue<'a> {
172172
| Raw {
173173
tpe: oracle::sql_type::OracleType::Json,
174174
..
175+
}
176+
| Raw {
177+
tpe: oracle::sql_type::OracleType::Xml,
178+
..
175179
} => unimplemented!(),
176180
// e =>
177181
// {

0 commit comments

Comments
 (0)