@@ -6,43 +6,19 @@ use crate::{
66 page_alloc, page_alloc_init_forknum, page_write, PageFlags , VirtualPageWriter ,
77 METAPAGE_BLKNO ,
88 } ,
9- segment:: {
10- builder:: IndexBuilder ,
11- meta:: { MetaPageData , META_VERSION } ,
12- sealed:: SealedSegmentData ,
13- } ,
9+ segment:: { builder:: IndexBuilder , meta:: MetaPageData } ,
1410} ;
1511
1612#[ pgrx:: pg_guard]
1713pub extern "C-unwind" fn ambuildempty ( index : pgrx:: pg_sys:: Relation ) {
1814 let mut meta_page = page_alloc_init_forknum ( index, PageFlags :: META ) ;
1915 assert_eq ! ( meta_page. blkno( ) , METAPAGE_BLKNO ) ;
20- let field_norm_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: FIELD_NORM ) ;
21- let term_stat_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: TERM_STATISTIC ) ;
22- let payload_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: PAYLOAD ) ;
23- let delete_bitmap_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: DELETE ) ;
2416
25- let ptr = meta_page. content . as_mut_ptr ( ) as * mut MetaPageData ;
26- unsafe {
27- ptr. write ( MetaPageData {
28- version : META_VERSION ,
29- doc_cnt : 0 ,
30- doc_term_cnt : 0 ,
31- term_id_cnt : 0 ,
32- field_norm_blkno,
33- payload_blkno,
34- term_stat_blkno,
35- delete_bitmap_blkno,
36- current_doc_id : 0 ,
37- sealed_doc_id : 0 ,
38- growing_segment : None ,
39- sealed_segment : SealedSegmentData {
40- term_info_blkno : pgrx:: pg_sys:: InvalidBlockNumber ,
41- term_id_cnt : 0 ,
42- } ,
43- } ) ;
44- meta_page. header . pd_lower += std:: mem:: size_of :: < MetaPageData > ( ) as u16 ;
45- }
17+ let meta: & mut MetaPageData = meta_page. init_mut ( ) ;
18+ meta. field_norm_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: FIELD_NORM ) ;
19+ meta. term_stat_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: TERM_STATISTIC ) ;
20+ meta. payload_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: PAYLOAD ) ;
21+ meta. delete_bitmap_blkno = VirtualPageWriter :: init_fork ( index, PageFlags :: DELETE ) ;
4622}
4723
4824struct BuildState {
@@ -114,29 +90,14 @@ fn write_down(state: &BuildState) {
11490 let doc_cnt = state. builder . doc_cnt ( ) ;
11591 let doc_term_cnt = state. builder . doc_term_cnt ( ) ;
11692 let term_id_cnt = state. builder . term_id_cnt ( ) ;
93+
11794 let mut meta_page = page_write ( state. index , METAPAGE_BLKNO ) ;
118- let ptr = meta_page. content . as_mut_ptr ( ) as * mut MetaPageData ;
119- unsafe {
120- ptr. write ( MetaPageData {
121- version : META_VERSION ,
122- doc_cnt,
123- doc_term_cnt,
124- term_id_cnt,
125- field_norm_blkno : pgrx:: pg_sys:: InvalidBlockNumber ,
126- payload_blkno : pgrx:: pg_sys:: InvalidBlockNumber ,
127- term_stat_blkno : pgrx:: pg_sys:: InvalidBlockNumber ,
128- delete_bitmap_blkno : pgrx:: pg_sys:: InvalidBlockNumber ,
129- current_doc_id : doc_cnt,
130- sealed_doc_id : doc_cnt,
131- growing_segment : None ,
132- sealed_segment : SealedSegmentData {
133- term_info_blkno : pgrx:: pg_sys:: InvalidBlockNumber ,
134- term_id_cnt,
135- } ,
136- } ) ;
137- meta_page. header . pd_lower += std:: mem:: size_of :: < MetaPageData > ( ) as u16 ;
138- }
139- let meta: & mut MetaPageData = meta_page. as_mut ( ) ;
95+ let meta: & mut MetaPageData = meta_page. init_mut ( ) ;
96+ meta. doc_cnt = doc_cnt;
97+ meta. doc_term_cnt = doc_term_cnt;
98+ meta. term_id_cnt = term_id_cnt;
99+ meta. current_doc_id = doc_cnt;
100+ meta. sealed_doc_id = doc_cnt;
140101
141102 // delete bitmap
142103 let mut delete_bitmap_writer = VirtualPageWriter :: new ( state. index , PageFlags :: DELETE , true ) ;
0 commit comments