(
reader: &mut BenchmarkFileReader,
sql: &str,
header: &str,
)
| 1414 | } |
| 1415 | |
| 1416 | fn read_query_from_reader( |
| 1417 | reader: &mut BenchmarkFileReader, |
| 1418 | sql: &str, |
| 1419 | header: &str, |
| 1420 | ) -> Result<BenchmarkQuery> { |
| 1421 | let column_count = header.len(); |
| 1422 | let mut expected_result = vec![]; |
| 1423 | let mut line = String::new(); |
| 1424 | let mut reader_result = reader.read_line(&mut line); |
| 1425 | |
| 1426 | loop { |
| 1427 | match reader_result { |
| 1428 | Some(Ok(_)) => { |
| 1429 | if is_comment_line(&line) { |
| 1430 | // comment, ignore |
| 1431 | } else if is_blank_line(&line) { |
| 1432 | break; |
| 1433 | } else { |
| 1434 | let result_splits: Vec<&str> = line.split(['\t', '|']).collect(); |
| 1435 | |
| 1436 | if result_splits.len() != column_count { |
| 1437 | return Err(exec_datafusion_err!( |
| 1438 | "{} {line}", |
| 1439 | reader.format_exception(&format!( |
| 1440 | "expected {} values but got {}", |
| 1441 | column_count, |
| 1442 | result_splits.len(), |
| 1443 | )) |
| 1444 | )); |
| 1445 | } |
| 1446 | |
| 1447 | expected_result |
| 1448 | .push(result_splits.into_iter().map(|s| s.to_string()).collect()); |
| 1449 | } |
| 1450 | } |
| 1451 | Some(Err(e)) => return Err(e), |
| 1452 | None => break, |
| 1453 | } |
| 1454 | |
| 1455 | // Clear the line buffer for the next iteration. |
| 1456 | line.clear(); |
| 1457 | reader_result = reader.read_line(&mut line); |
| 1458 | } |
| 1459 | |
| 1460 | Ok(BenchmarkQuery { |
| 1461 | path: None, |
| 1462 | query: sql.to_string(), |
| 1463 | column_count, |
| 1464 | expected_result, |
| 1465 | }) |
| 1466 | } |
| 1467 | |
| 1468 | async fn read_query_from_file( |
| 1469 | ctx: &SessionContext, |
no test coverage detected
searching dependent graphs…