|
1 | 1 | use futures::TryStreamExt;
|
2 |
| -use sqlx::{mysql::MySqlQueryAs, Connection, Executor, MySql, MySqlPool}; |
| 2 | +use sqlx::{mysql::MySqlQueryAs, Connection, Cursor, Executor, MySql, MySqlPool, Row}; |
3 | 3 | use sqlx_test::new;
|
4 | 4 | use std::time::Duration;
|
5 | 5 |
|
@@ -232,3 +232,37 @@ async fn test_fetch_one_and_ping() -> anyhow::Result<()> {
|
232 | 232 |
|
233 | 233 | Ok(())
|
234 | 234 | }
|
| 235 | + |
| 236 | +#[cfg_attr(feature = "runtime-async-std", async_std::test)] |
| 237 | +#[cfg_attr(feature = "runtime-tokio", tokio::test)] |
| 238 | +async fn test_row_columns() -> anyhow::Result<()> { |
| 239 | + let mut conn = new::<MySql>().await?; |
| 240 | + |
| 241 | + let _ = conn |
| 242 | + .execute( |
| 243 | + r#" |
| 244 | + CREATE TEMPORARY TABLE row_columns_test ( |
| 245 | + id int primary key auto_increment, |
| 246 | + name text not null, |
| 247 | + age int |
| 248 | + ); |
| 249 | +
|
| 250 | + INSERT INTO row_columns_test (name, age) VALUES ('James', 12); |
| 251 | + "#, |
| 252 | + ) |
| 253 | + .await?; |
| 254 | + |
| 255 | + let mut cursor = conn.fetch("SELECT * FROM row_columns_test"); |
| 256 | + let row = cursor.next().await?.unwrap(); |
| 257 | + let columns = row.columns(); |
| 258 | + |
| 259 | + assert_eq!(columns.len(), 3); |
| 260 | + assert_eq!(columns[0].name, Some("id")); |
| 261 | + assert_eq!(columns[0].type_info.is_some(), true); |
| 262 | + assert_eq!(columns[1].name, Some("name")); |
| 263 | + assert_eq!(columns[1].type_info.is_some(), true); |
| 264 | + assert_eq!(columns[2].name, Some("age")); |
| 265 | + assert_eq!(columns[2].type_info.is_some(), true); |
| 266 | + |
| 267 | + Ok(()) |
| 268 | +} |
0 commit comments