380380< a  href =#380  id =380  data-nosnippet > 380</ a >         snapshot_produce_operation: OP,
381381< a  href =#381  id =381  data-nosnippet > 381</ a >         process: MP,
382382< a  href =#382  id =382  data-nosnippet > 382</ a >     ) -> < span  class ="prelude-ty "> Result</ span > <ActionCommit> {
383- < a  href =#383  id =383  data-nosnippet > 383</ a >         < span  class ="kw "> let </ span > new_manifests  = < span  class ="self "> self
384- < a  href =#384  id =384  data-nosnippet > 384</ a >              </ span > .manifest_file( < span  class ="kw-2  " > & </ span > snapshot_produce_operation,  < span  class ="kw-2 " > & </ span > process) 
385- < a  href =#385  id =385  data-nosnippet > 385</ a >             . < span   class ="kw "> await </ span > < span  class ="question-mark " > ? </ span > ; 
386- < a  href =#386  id =386  data-nosnippet > 386</ a >         < span   class =" kw " > let  </ span > next_seq_num =  < span   class =" self " > self </ span > .table.metadata().next_sequence_number(); 
387- < a  href =#387  id =387  data-nosnippet > 387</ a > 
388- < a  href =#388  id =388  data-nosnippet > 388</ a >         < span   class =" kw " > let  </ span > summary =  < span   class =" self " > self </ span > .summary( < span   class =" kw-2 " > & </ span > snapshot_produce_operation).map_err(|err| { 
389- < a  href =#389  id =389  data-nosnippet > 389</ a >             Error::new(ErrorKind::Unexpected,  < span  class ="string " > "Failed to create snapshot summary." </ span > ).with_source(err) 
390- < a  href =#390  id =390  data-nosnippet > 390</ a >         }) < span  class ="question-mark " > ? </ span > ; 
391- < a  href =#391  id =391  data-nosnippet > 391</ a > 
392- < a  href =#392  id =392  data-nosnippet > 392</ a >         < span   class =" kw " > let  </ span > manifest_list_path =  < span   class =" self " > self </ span > .generate_manifest_list_file_path( < span   class =" number " > 0 </ span > ); 
393- < a  href =#393  id =393  data-nosnippet > 393</ a > 
394- < a  href =#394  id =394  data-nosnippet > 394</ a >         < span   class =" kw " > let  </ span > < span   class =" kw-2 " > mut  </ span > manifest_list_writer =  < span   class =" kw " > match  </ span > < span  class ="self "> self</ span > .table.metadata().format_version() { 
395- < a  href =#395  id =395  data-nosnippet > 395</ a >             FormatVersion::V1 => ManifestListWriter::v1( 
396- < a  href =#396  id =396  data-nosnippet > 396</ a >                 < span  class ="self " > self </ span > .table 
397- < a  href =#397  id =397  data-nosnippet > 397</ a >                     .file_io() 
398- < a  href =#398  id =398  data-nosnippet > 398</ a >                     .new_output(manifest_list_path.clone()) < span  class ="question-mark " > ? </ span > ,
399- < a  href =#399  id =399  data-nosnippet > 399</ a >                 < span   class =" self " > self </ span > .snapshot_id ,
400- < a  href =#400  id =400  data-nosnippet > 400</ a >                  < span   class =" self " > self </ span > .table.metadata().current_snapshot_id( ),
401- < a  href =#401  id =401  data-nosnippet > 401</ a >             ), 
402- < a  href =#402  id =402  data-nosnippet > 402</ a >             FormatVersion::V2 => ManifestListWriter::v2( 
403- < a  href =#403  id =403  data-nosnippet > 403</ a >                  < span   class =" self " > self </ span > .table 
404- < a  href =#404  id =404  data-nosnippet > 404</ a >                     .file_io() 
405- < a  href =#405  id =405  data-nosnippet > 405</ a >                     .new_output(manifest_list_path.clone()) < span   class =" question-mark " > ? </ span > , 
406- < a  href =#406  id =406  data-nosnippet > 406</ a >                  < span  class ="self "> self</ span > .snapshot_id, 
407- < a  href =#407  id =407  data-nosnippet > 407</ a >                  < span  class ="self " > self </ span > .table.metadata().current_snapshot_id(), 
408- < a  href =#408  id =408  data-nosnippet > 408</ a >                 next_seq_num, 
409- < a  href =#409  id =409  data-nosnippet > 409</ a >             ), 
410- < a  href =#410  id =410  data-nosnippet > 410</ a >         }; 
411- < a  href =#411  id =411  data-nosnippet > 411</ a >         manifest_list_writer.add_manifests(new_manifests.into_iter()) < span  class ="question-mark " > ? </ span > ; 
412- < a  href =#412  id =412  data-nosnippet > 412</ a >         manifest_list_writer.close() .< span  class ="kw "> await</ span > < span  class ="question-mark "> ?</ span > ;
383+ < a  href =#383  id =383  data-nosnippet > 383</ a >         < span  class ="kw "> let </ span > manifest_list_path  = < span  class ="self "> self</ span > .generate_manifest_list_file_path( < span   class =" number " > 0 </ span > ); 
384+ < a  href =#384  id =384  data-nosnippet > 384</ a >         < span  class ="kw " > let  </ span > next_seq_num =  < span  class ="self " > self </ span > .table.metadata().next_sequence_number(); 
385+ < a  href =#385  id =385  data-nosnippet > 385</ a >         < span   class =" kw " > let  </ span > < span   class =" kw-2 " > mut  </ span > manifest_list_writer =  < span   class ="kw "> match  </ span > < span  class ="self " > self </ span > .table.metadata().format_version() { 
386+ < a  href =#386  id =386  data-nosnippet > 386</ a >             FormatVersion::V1 => ManifestListWriter::v1( 
387+ < a  href =#387  id =387  data-nosnippet > 387</ a >                  < span   class =" self " > self </ span > .table 
388+ < a  href =#388  id =388  data-nosnippet > 388</ a >                     .file_io() 
389+ < a  href =#389  id =389  data-nosnippet > 389</ a >                     .new_output(manifest_list_path.clone()) < span  class ="question-mark " > ? </ span > , 
390+ < a  href =#390  id =390  data-nosnippet > 390</ a >                  < span  class ="self " > self </ span > .snapshot_id, 
391+ < a  href =#391  id =391  data-nosnippet > 391</ a >                  < span   class =" self " > self </ span > .table.metadata().current_snapshot_id(), 
392+ < a  href =#392  id =392  data-nosnippet > 392</ a >             ), 
393+ < a  href =#393  id =393  data-nosnippet > 393</ a >             FormatVersion::V2 => ManifestListWriter::v2( 
394+ < a  href =#394  id =394  data-nosnippet > 394</ a >                  < span  class ="self "> self</ span > .table
395+ < a  href =#395  id =395  data-nosnippet > 395</ a >                     .file_io() 
396+ < a  href =#396  id =396  data-nosnippet > 396</ a >                     .new_output(manifest_list_path.clone()) < span  class ="question-mark " > ? </ span > , 
397+ < a  href =#397  id =397  data-nosnippet > 397</ a >                 < span   class =" self " > self </ span > .snapshot_id, 
398+ < a  href =#398  id =398  data-nosnippet > 398</ a >                 < span  class ="self " > self </ span > .table.metadata().current_snapshot_id() ,
399+ < a  href =#399  id =399  data-nosnippet > 399</ a >                 next_seq_num ,
400+ < a  href =#400  id =400  data-nosnippet > 400</ a >             ),
401+ < a  href =#401  id =401  data-nosnippet > 401</ a >         }; 
402+ < a  href =#402  id =402  data-nosnippet > 402</ a > 
403+ < a  href =#403  id =403  data-nosnippet > 403</ a >         < span   class =" comment " > // Calling self.summary() before self.manifest_file() is important because  self.added_data_files 
404+ < a  href =#404  id =404  data-nosnippet > 404</ a >         // will be set to an empty vec after self.manifest_file() returns, resulting in an empty summary 
405+ < a  href =#405  id =405  data-nosnippet > 405</ a >         // being generated. 
406+ < a  href =#406  id =406  data-nosnippet > 406</ a >         </ span > < span   class =" kw " > let  </ span > summary =  < span  class ="self "> self</ span > .summary( < span   class =" kw-2 " > & </ span > snapshot_produce_operation).map_err(|err| { 
407+ < a  href =#407  id =407  data-nosnippet > 407</ a >             Error::new(ErrorKind::Unexpected,  < span  class ="string " > "Failed to create snapshot summary." </ span > ).with_source(err) 
408+ < a  href =#408  id =408  data-nosnippet > 408</ a >         }) < span   class =" question-mark " > ? </ span > ; 
409+ < a  href =#409  id =409  data-nosnippet > 409</ a > 
410+ < a  href =#410  id =410  data-nosnippet > 410</ a >         < span   class =" kw " > let  </ span > new_manifests =  < span   class =" self " > self 
411+ < a  href =#411  id =411  data-nosnippet > 411</ a >              </ span > .manifest_file( < span  class ="kw-2 " > & </ span > snapshot_produce_operation,  < span   class =" kw-2 " > & </ span > process) 
412+ < a  href =#412  id =412  data-nosnippet > 412</ a >              .< span  class ="kw "> await</ span > < span  class ="question-mark "> ?</ span > ;
413413< a  href =#413  id =413  data-nosnippet > 413</ a > 
414- < a  href =#414  id =414  data-nosnippet > 414</ a >         < span  class ="kw "> let </ span > commit_ts = chrono::Utc::now().timestamp_millis();
415- < a  href =#415  id =415  data-nosnippet > 415</ a >         < span  class ="kw "> let </ span > new_snapshot = Snapshot::builder()
416- < a  href =#416  id =416  data-nosnippet > 416</ a >             .with_manifest_list(manifest_list_path)
417- < a  href =#417  id =417  data-nosnippet > 417</ a >             .with_snapshot_id(< span  class ="self "> self</ span > .snapshot_id)
418- < a  href =#418  id =418  data-nosnippet > 418</ a >             .with_parent_snapshot_id(< span  class ="self "> self</ span > .table.metadata().current_snapshot_id())
419- < a  href =#419  id =419  data-nosnippet > 419</ a >             .with_sequence_number(next_seq_num)
420- < a  href =#420  id =420  data-nosnippet > 420</ a >             .with_summary(summary)
421- < a  href =#421  id =421  data-nosnippet > 421</ a >             .with_schema_id(< span  class ="self "> self</ span > .table.metadata().current_schema_id())
422- < a  href =#422  id =422  data-nosnippet > 422</ a >             .with_timestamp_ms(commit_ts)
423- < a  href =#423  id =423  data-nosnippet > 423</ a >             .build();
424- < a  href =#424  id =424  data-nosnippet > 424</ a > 
425- < a  href =#425  id =425  data-nosnippet > 425</ a >         < span  class ="kw "> let </ span > updates = < span  class ="macro "> vec!</ span > [
426- < a  href =#426  id =426  data-nosnippet > 426</ a >             TableUpdate::AddSnapshot {
427- < a  href =#427  id =427  data-nosnippet > 427</ a >                 snapshot: new_snapshot,
428- < a  href =#428  id =428  data-nosnippet > 428</ a >             },
429- < a  href =#429  id =429  data-nosnippet > 429</ a >             TableUpdate::SetSnapshotRef {
430- < a  href =#430  id =430  data-nosnippet > 430</ a >                 ref_name: MAIN_BRANCH.to_string(),
431- < a  href =#431  id =431  data-nosnippet > 431</ a >                 reference: SnapshotReference::new(
432- < a  href =#432  id =432  data-nosnippet > 432</ a >                     < span  class ="self "> self</ span > .snapshot_id,
433- < a  href =#433  id =433  data-nosnippet > 433</ a >                     SnapshotRetention::branch(< span  class ="prelude-val "> None</ span > , < span  class ="prelude-val "> None</ span > , < span  class ="prelude-val "> None</ span > ),
434- < a  href =#434  id =434  data-nosnippet > 434</ a >                 ),
435- < a  href =#435  id =435  data-nosnippet > 435</ a >             },
436- < a  href =#436  id =436  data-nosnippet > 436</ a >         ];
437- < a  href =#437  id =437  data-nosnippet > 437</ a > 
438- < a  href =#438  id =438  data-nosnippet > 438</ a >         < span  class ="kw "> let </ span > requirements = < span  class ="macro "> vec!</ span > [
439- < a  href =#439  id =439  data-nosnippet > 439</ a >             TableRequirement::UuidMatch {
440- < a  href =#440  id =440  data-nosnippet > 440</ a >                 uuid: < span  class ="self "> self</ span > .table.metadata().uuid(),
441- < a  href =#441  id =441  data-nosnippet > 441</ a >             },
442- < a  href =#442  id =442  data-nosnippet > 442</ a >             TableRequirement::RefSnapshotIdMatch {
443- < a  href =#443  id =443  data-nosnippet > 443</ a >                 r#ref: MAIN_BRANCH.to_string(),
444- < a  href =#444  id =444  data-nosnippet > 444</ a >                 snapshot_id: < span  class ="self "> self</ span > .table.metadata().current_snapshot_id(),
445- < a  href =#445  id =445  data-nosnippet > 445</ a >             },
446- < a  href =#446  id =446  data-nosnippet > 446</ a >         ];
447- < a  href =#447  id =447  data-nosnippet > 447</ a > 
448- < a  href =#448  id =448  data-nosnippet > 448</ a >         < span  class ="prelude-val "> Ok</ span > (ActionCommit::new(updates, requirements))
449- < a  href =#449  id =449  data-nosnippet > 449</ a >     }
450- < a  href =#450  id =450  data-nosnippet > 450</ a > }</ code > </ pre > </ div > </ section > </ main > </ body > </ html > 
414+ < a  href =#414  id =414  data-nosnippet > 414</ a >         manifest_list_writer.add_manifests(new_manifests.into_iter())< span  class ="question-mark "> ?</ span > ;
415+ < a  href =#415  id =415  data-nosnippet > 415</ a >         manifest_list_writer.close().< span  class ="kw "> await</ span > < span  class ="question-mark "> ?</ span > ;
416+ < a  href =#416  id =416  data-nosnippet > 416</ a > 
417+ < a  href =#417  id =417  data-nosnippet > 417</ a >         < span  class ="kw "> let </ span > commit_ts = chrono::Utc::now().timestamp_millis();
418+ < a  href =#418  id =418  data-nosnippet > 418</ a >         < span  class ="kw "> let </ span > new_snapshot = Snapshot::builder()
419+ < a  href =#419  id =419  data-nosnippet > 419</ a >             .with_manifest_list(manifest_list_path)
420+ < a  href =#420  id =420  data-nosnippet > 420</ a >             .with_snapshot_id(< span  class ="self "> self</ span > .snapshot_id)
421+ < a  href =#421  id =421  data-nosnippet > 421</ a >             .with_parent_snapshot_id(< span  class ="self "> self</ span > .table.metadata().current_snapshot_id())
422+ < a  href =#422  id =422  data-nosnippet > 422</ a >             .with_sequence_number(next_seq_num)
423+ < a  href =#423  id =423  data-nosnippet > 423</ a >             .with_summary(summary)
424+ < a  href =#424  id =424  data-nosnippet > 424</ a >             .with_schema_id(< span  class ="self "> self</ span > .table.metadata().current_schema_id())
425+ < a  href =#425  id =425  data-nosnippet > 425</ a >             .with_timestamp_ms(commit_ts)
426+ < a  href =#426  id =426  data-nosnippet > 426</ a >             .build();
427+ < a  href =#427  id =427  data-nosnippet > 427</ a > 
428+ < a  href =#428  id =428  data-nosnippet > 428</ a >         < span  class ="kw "> let </ span > updates = < span  class ="macro "> vec!</ span > [
429+ < a  href =#429  id =429  data-nosnippet > 429</ a >             TableUpdate::AddSnapshot {
430+ < a  href =#430  id =430  data-nosnippet > 430</ a >                 snapshot: new_snapshot,
431+ < a  href =#431  id =431  data-nosnippet > 431</ a >             },
432+ < a  href =#432  id =432  data-nosnippet > 432</ a >             TableUpdate::SetSnapshotRef {
433+ < a  href =#433  id =433  data-nosnippet > 433</ a >                 ref_name: MAIN_BRANCH.to_string(),
434+ < a  href =#434  id =434  data-nosnippet > 434</ a >                 reference: SnapshotReference::new(
435+ < a  href =#435  id =435  data-nosnippet > 435</ a >                     < span  class ="self "> self</ span > .snapshot_id,
436+ < a  href =#436  id =436  data-nosnippet > 436</ a >                     SnapshotRetention::branch(< span  class ="prelude-val "> None</ span > , < span  class ="prelude-val "> None</ span > , < span  class ="prelude-val "> None</ span > ),
437+ < a  href =#437  id =437  data-nosnippet > 437</ a >                 ),
438+ < a  href =#438  id =438  data-nosnippet > 438</ a >             },
439+ < a  href =#439  id =439  data-nosnippet > 439</ a >         ];
440+ < a  href =#440  id =440  data-nosnippet > 440</ a > 
441+ < a  href =#441  id =441  data-nosnippet > 441</ a >         < span  class ="kw "> let </ span > requirements = < span  class ="macro "> vec!</ span > [
442+ < a  href =#442  id =442  data-nosnippet > 442</ a >             TableRequirement::UuidMatch {
443+ < a  href =#443  id =443  data-nosnippet > 443</ a >                 uuid: < span  class ="self "> self</ span > .table.metadata().uuid(),
444+ < a  href =#444  id =444  data-nosnippet > 444</ a >             },
445+ < a  href =#445  id =445  data-nosnippet > 445</ a >             TableRequirement::RefSnapshotIdMatch {
446+ < a  href =#446  id =446  data-nosnippet > 446</ a >                 r#ref: MAIN_BRANCH.to_string(),
447+ < a  href =#447  id =447  data-nosnippet > 447</ a >                 snapshot_id: < span  class ="self "> self</ span > .table.metadata().current_snapshot_id(),
448+ < a  href =#448  id =448  data-nosnippet > 448</ a >             },
449+ < a  href =#449  id =449  data-nosnippet > 449</ a >         ];
450+ < a  href =#450  id =450  data-nosnippet > 450</ a > 
451+ < a  href =#451  id =451  data-nosnippet > 451</ a >         < span  class ="prelude-val "> Ok</ span > (ActionCommit::new(updates, requirements))
452+ < a  href =#452  id =452  data-nosnippet > 452</ a >     }
453+ < a  href =#453  id =453  data-nosnippet > 453</ a > }</ code > </ pre > </ div > </ section > </ main > </ body > </ html > 
0 commit comments