@@ -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-
1072970pub 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