|
1 | 1 | #[cfg(test)] |
2 | 2 | #[allow(unused_imports)] |
3 | 3 | pub mod tests { |
4 | | - /// Non panicking Slice::split_at |
5 | | - macro_rules! split_at_or_err { |
6 | | - ($reader:expr, $at:expr, $msg:expr) => { |
7 | | - if $reader.len() >= $at { |
8 | | - Ok($reader.split_at($at)) |
9 | | - } else { |
10 | | - Err(io::Error::new(io::ErrorKind::UnexpectedEof, $msg)) |
11 | | - } |
12 | | - }; |
13 | | - } |
14 | | - |
15 | 4 | /// Reads MySql's length-encoded string |
16 | 5 | #[macro_export] |
17 | 6 | macro_rules! read_lenenc_str { |
@@ -119,136 +108,4 @@ pub mod tests { |
119 | 108 | } |
120 | 109 |
|
121 | 110 | impl<T> WriteMysqlExt for T where T: WriteBytesExt {} |
122 | | - |
123 | | - /// Reads value in binary format. |
124 | | - pub fn read_bin_value( |
125 | | - input: &mut &[u8], |
126 | | - column_type: ColumnType, |
127 | | - unsigned: bool, |
128 | | - ) -> io::Result<Value> { |
129 | | - read_bin(input, column_type, unsigned) |
130 | | - } |
131 | | - |
132 | | - /// Reads value in text format. |
133 | | - pub fn read_text_value(input: &mut &[u8]) -> io::Result<Value> { |
134 | | - read_text(input) |
135 | | - } |
136 | | - |
137 | | - fn read_text(input: &mut &[u8]) -> io::Result<Value> { |
138 | | - if input.is_empty() { |
139 | | - Err(io::Error::new( |
140 | | - io::ErrorKind::UnexpectedEof, |
141 | | - "Unexpected EOF while reading Value", |
142 | | - )) |
143 | | - } else if input[0] == 0xfb { |
144 | | - let _ = input.read_u8(); |
145 | | - Ok(Value::NULL) |
146 | | - } else { |
147 | | - Ok(Value::Bytes(read_lenenc_str!(input)?.into())) |
148 | | - } |
149 | | - } |
150 | | - |
151 | | - fn read_bin(input: &mut &[u8], column_type: ColumnType, unsigned: bool) -> io::Result<Value> { |
152 | | - match column_type { |
153 | | - ColumnType::MYSQL_TYPE_STRING |
154 | | - | ColumnType::MYSQL_TYPE_VAR_STRING |
155 | | - | ColumnType::MYSQL_TYPE_BLOB |
156 | | - | ColumnType::MYSQL_TYPE_TINY_BLOB |
157 | | - | ColumnType::MYSQL_TYPE_MEDIUM_BLOB |
158 | | - | ColumnType::MYSQL_TYPE_LONG_BLOB |
159 | | - | ColumnType::MYSQL_TYPE_SET |
160 | | - | ColumnType::MYSQL_TYPE_ENUM |
161 | | - | ColumnType::MYSQL_TYPE_DECIMAL |
162 | | - | ColumnType::MYSQL_TYPE_VARCHAR |
163 | | - | ColumnType::MYSQL_TYPE_BIT |
164 | | - | ColumnType::MYSQL_TYPE_NEWDECIMAL |
165 | | - | ColumnType::MYSQL_TYPE_GEOMETRY |
166 | | - | ColumnType::MYSQL_TYPE_JSON => Ok(Bytes(read_lenenc_str!(input)?.into())), |
167 | | - ColumnType::MYSQL_TYPE_TINY => { |
168 | | - if unsigned { |
169 | | - Ok(Int(input.read_u8()?.into())) |
170 | | - } else { |
171 | | - Ok(Int(input.read_i8()?.into())) |
172 | | - } |
173 | | - } |
174 | | - ColumnType::MYSQL_TYPE_SHORT | ColumnType::MYSQL_TYPE_YEAR => { |
175 | | - if unsigned { |
176 | | - Ok(Int(input.read_u16::<LE>()?.into())) |
177 | | - } else { |
178 | | - Ok(Int(input.read_i16::<LE>()?.into())) |
179 | | - } |
180 | | - } |
181 | | - ColumnType::MYSQL_TYPE_LONG | ColumnType::MYSQL_TYPE_INT24 => { |
182 | | - if unsigned { |
183 | | - Ok(Int(input.read_u32::<LE>()?.into())) |
184 | | - } else { |
185 | | - Ok(Int(input.read_i32::<LE>()?.into())) |
186 | | - } |
187 | | - } |
188 | | - ColumnType::MYSQL_TYPE_LONGLONG => { |
189 | | - if unsigned { |
190 | | - Ok(UInt(input.read_u64::<LE>()?)) |
191 | | - } else { |
192 | | - Ok(Int(input.read_i64::<LE>()?)) |
193 | | - } |
194 | | - } |
195 | | - ColumnType::MYSQL_TYPE_FLOAT => Ok(Float(input.read_f32::<LE>()?)), |
196 | | - ColumnType::MYSQL_TYPE_DOUBLE => Ok(Double(input.read_f64::<LE>()?)), |
197 | | - ColumnType::MYSQL_TYPE_TIMESTAMP |
198 | | - | ColumnType::MYSQL_TYPE_DATE |
199 | | - | ColumnType::MYSQL_TYPE_DATETIME => { |
200 | | - let len = input.read_u8()?; |
201 | | - let mut year = 0u16; |
202 | | - let mut month = 0u8; |
203 | | - let mut day = 0u8; |
204 | | - let mut hour = 0u8; |
205 | | - let mut minute = 0u8; |
206 | | - let mut second = 0u8; |
207 | | - let mut micro_second = 0u32; |
208 | | - if len >= 4u8 { |
209 | | - year = input.read_u16::<LE>()?; |
210 | | - month = input.read_u8()?; |
211 | | - day = input.read_u8()?; |
212 | | - } |
213 | | - if len >= 7u8 { |
214 | | - hour = input.read_u8()?; |
215 | | - minute = input.read_u8()?; |
216 | | - second = input.read_u8()?; |
217 | | - } |
218 | | - if len == 11u8 { |
219 | | - micro_second = input.read_u32::<LE>()?; |
220 | | - } |
221 | | - Ok(Date(year, month, day, hour, minute, second, micro_second)) |
222 | | - } |
223 | | - ColumnType::MYSQL_TYPE_TIME => { |
224 | | - let len = input.read_u8()?; |
225 | | - let mut is_negative = false; |
226 | | - let mut days = 0u32; |
227 | | - let mut hours = 0u8; |
228 | | - let mut minutes = 0u8; |
229 | | - let mut seconds = 0u8; |
230 | | - let mut micro_seconds = 0u32; |
231 | | - if len >= 8u8 { |
232 | | - is_negative = input.read_u8()? == 1u8; |
233 | | - days = input.read_u32::<LE>()?; |
234 | | - hours = input.read_u8()?; |
235 | | - minutes = input.read_u8()?; |
236 | | - seconds = input.read_u8()?; |
237 | | - } |
238 | | - if len == 12u8 { |
239 | | - micro_seconds = input.read_u32::<LE>()?; |
240 | | - } |
241 | | - Ok(Time( |
242 | | - is_negative, |
243 | | - days, |
244 | | - hours, |
245 | | - minutes, |
246 | | - seconds, |
247 | | - micro_seconds, |
248 | | - )) |
249 | | - } |
250 | | - ColumnType::MYSQL_TYPE_NULL => Ok(NULL), |
251 | | - x => unimplemented!("Unsupported column type {:?}", x), |
252 | | - } |
253 | | - } |
254 | 111 | } |
0 commit comments