Skip to content

Commit 59288cb

Browse files
committed
Move collecting function to the end
1 parent 929cf7b commit 59288cb

1 file changed

Lines changed: 102 additions & 102 deletions

File tree

crates/nu-engine/src/eval.rs

Lines changed: 102 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -967,108 +967,6 @@ pub fn eval_block_with_early_return(
967967
}
968968
}
969969

970-
#[allow(clippy::too_many_arguments)]
971-
fn collect_profiling_metadata(
972-
pipeline_idx: usize,
973-
element_idx: usize,
974-
element_str: String,
975-
element_span: Span,
976-
start_time: Instant,
977-
end_time: Instant,
978-
profiling_config: &ProfilingConfig,
979-
eval_result: &Result<(PipelineData, bool), ShellError>,
980-
input_metadata: &mut PipelineMetadata,
981-
) {
982-
let element_str = Value::string(element_str, element_span);
983-
let time_ns = (end_time - start_time).as_nanos() as i64;
984-
985-
let mut cols = vec![
986-
"pipeline_idx".to_string(),
987-
"element_idx".to_string(),
988-
"depth".to_string(),
989-
"span".to_string(),
990-
];
991-
992-
let mut vals = vec![
993-
Value::int(pipeline_idx as i64, element_span),
994-
Value::int(element_idx as i64, element_span),
995-
Value::int(profiling_config.depth, element_span),
996-
Value::record(
997-
vec!["start".to_string(), "end".to_string()],
998-
vec![
999-
Value::int(element_span.start as i64, element_span),
1000-
Value::int(element_span.end as i64, element_span),
1001-
],
1002-
element_span,
1003-
),
1004-
];
1005-
1006-
if profiling_config.collect_source {
1007-
cols.push("source".to_string());
1008-
vals.push(element_str);
1009-
}
1010-
1011-
if profiling_config.collect_values {
1012-
let value = match &eval_result {
1013-
Ok((PipelineData::Value(val, ..), ..)) => val.clone(),
1014-
Ok((PipelineData::ListStream(..), ..)) => Value::string("list stream", element_span),
1015-
Ok((PipelineData::ExternalStream { .. }, ..)) => {
1016-
Value::string("raw stream", element_span)
1017-
}
1018-
Ok((PipelineData::Empty, ..)) => Value::Nothing { span: element_span },
1019-
Err(err) => Value::Error { error: err.clone() },
1020-
};
1021-
1022-
cols.push("value".to_string());
1023-
vals.push(value);
1024-
}
1025-
1026-
cols.push("time".to_string());
1027-
vals.push(Value::Duration {
1028-
val: time_ns,
1029-
span: element_span,
1030-
});
1031-
1032-
let record = Value::Record {
1033-
cols,
1034-
vals,
1035-
span: element_span,
1036-
};
1037-
1038-
let element_metadata = if let Ok((pipeline_data, ..)) = &eval_result {
1039-
pipeline_data.metadata()
1040-
} else {
1041-
None
1042-
};
1043-
1044-
if let PipelineMetadata {
1045-
data_source: DataSource::Profiling(tgt_vals),
1046-
} = input_metadata
1047-
{
1048-
tgt_vals.push(record);
1049-
} else {
1050-
*input_metadata = PipelineMetadata {
1051-
data_source: DataSource::Profiling(vec![record]),
1052-
};
1053-
}
1054-
1055-
if let Some(PipelineMetadata {
1056-
data_source: DataSource::Profiling(element_vals),
1057-
}) = element_metadata.map(|m| *m)
1058-
{
1059-
if let PipelineMetadata {
1060-
data_source: DataSource::Profiling(tgt_vals),
1061-
} = input_metadata
1062-
{
1063-
tgt_vals.extend(element_vals);
1064-
} else {
1065-
*input_metadata = PipelineMetadata {
1066-
data_source: DataSource::Profiling(element_vals),
1067-
};
1068-
}
1069-
}
1070-
}
1071-
1072970
pub fn eval_block(
1073971
engine_state: &EngineState,
1074972
stack: &mut Stack,
@@ -1471,3 +1369,105 @@ fn compute(size: i64, unit: Unit, span: Span) -> Value {
14711369
},
14721370
}
14731371
}
1372+
1373+
#[allow(clippy::too_many_arguments)]
1374+
fn collect_profiling_metadata(
1375+
pipeline_idx: usize,
1376+
element_idx: usize,
1377+
element_str: String,
1378+
element_span: Span,
1379+
start_time: Instant,
1380+
end_time: Instant,
1381+
profiling_config: &ProfilingConfig,
1382+
eval_result: &Result<(PipelineData, bool), ShellError>,
1383+
input_metadata: &mut PipelineMetadata,
1384+
) {
1385+
let element_str = Value::string(element_str, element_span);
1386+
let time_ns = (end_time - start_time).as_nanos() as i64;
1387+
1388+
let mut cols = vec![
1389+
"pipeline_idx".to_string(),
1390+
"element_idx".to_string(),
1391+
"depth".to_string(),
1392+
"span".to_string(),
1393+
];
1394+
1395+
let mut vals = vec![
1396+
Value::int(pipeline_idx as i64, element_span),
1397+
Value::int(element_idx as i64, element_span),
1398+
Value::int(profiling_config.depth, element_span),
1399+
Value::record(
1400+
vec!["start".to_string(), "end".to_string()],
1401+
vec![
1402+
Value::int(element_span.start as i64, element_span),
1403+
Value::int(element_span.end as i64, element_span),
1404+
],
1405+
element_span,
1406+
),
1407+
];
1408+
1409+
if profiling_config.collect_source {
1410+
cols.push("source".to_string());
1411+
vals.push(element_str);
1412+
}
1413+
1414+
if profiling_config.collect_values {
1415+
let value = match &eval_result {
1416+
Ok((PipelineData::Value(val, ..), ..)) => val.clone(),
1417+
Ok((PipelineData::ListStream(..), ..)) => Value::string("list stream", element_span),
1418+
Ok((PipelineData::ExternalStream { .. }, ..)) => {
1419+
Value::string("raw stream", element_span)
1420+
}
1421+
Ok((PipelineData::Empty, ..)) => Value::Nothing { span: element_span },
1422+
Err(err) => Value::Error { error: err.clone() },
1423+
};
1424+
1425+
cols.push("value".to_string());
1426+
vals.push(value);
1427+
}
1428+
1429+
cols.push("time".to_string());
1430+
vals.push(Value::Duration {
1431+
val: time_ns,
1432+
span: element_span,
1433+
});
1434+
1435+
let record = Value::Record {
1436+
cols,
1437+
vals,
1438+
span: element_span,
1439+
};
1440+
1441+
let element_metadata = if let Ok((pipeline_data, ..)) = &eval_result {
1442+
pipeline_data.metadata()
1443+
} else {
1444+
None
1445+
};
1446+
1447+
if let PipelineMetadata {
1448+
data_source: DataSource::Profiling(tgt_vals),
1449+
} = input_metadata
1450+
{
1451+
tgt_vals.push(record);
1452+
} else {
1453+
*input_metadata = PipelineMetadata {
1454+
data_source: DataSource::Profiling(vec![record]),
1455+
};
1456+
}
1457+
1458+
if let Some(PipelineMetadata {
1459+
data_source: DataSource::Profiling(element_vals),
1460+
}) = element_metadata.map(|m| *m)
1461+
{
1462+
if let PipelineMetadata {
1463+
data_source: DataSource::Profiling(tgt_vals),
1464+
} = input_metadata
1465+
{
1466+
tgt_vals.extend(element_vals);
1467+
} else {
1468+
*input_metadata = PipelineMetadata {
1469+
data_source: DataSource::Profiling(element_vals),
1470+
};
1471+
}
1472+
}
1473+
}

0 commit comments

Comments
 (0)