fix the bug of header write and regen the xdb file

This commit is contained in:
lion 2022-06-21 10:47:28 +08:00
parent 7eb4a5ba5e
commit 9751227b97
4 changed files with 22 additions and 12 deletions

Binary file not shown.

View File

@ -69,22 +69,25 @@ func genDb() {
tStart := time.Now() tStart := time.Now()
maker, err := xdb.NewMaker(indexPolicy, srcFile, dstFile) maker, err := xdb.NewMaker(indexPolicy, srcFile, dstFile)
if err != nil { if err != nil {
log.Fatalf("failed to create maker: %s", err) fmt.Printf("failed to create %s\n", err)
return
} }
err = maker.Init() err = maker.Init()
if err != nil { if err != nil {
log.Fatalf("failed Init: %s", err) fmt.Printf("failed Init: %s\n", err)
return
} }
err = maker.Start() err = maker.Start()
if err != nil { if err != nil {
log.Fatalf("failed Start: %s", err) fmt.Printf("failed Start: %s\n", err)
return
} }
err = maker.End() err = maker.End()
if err != nil { if err != nil {
log.Fatalf("failed End: %s", err) fmt.Printf("failed End: %s\n", err)
} }
log.Printf("Done, elapsed: %s\n", time.Since(tStart)) log.Printf("Done, elapsed: %s\n", time.Since(tStart))
@ -124,7 +127,8 @@ func testSearch() {
searcher, err := xdb.NewSearcher(dbFile) searcher, err := xdb.NewSearcher(dbFile)
if err != nil { if err != nil {
log.Fatalf("failed to create searcher: %s", err.Error()) fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err.Error())
return
} }
defer func() { defer func() {
searcher.Close() searcher.Close()
@ -228,6 +232,10 @@ func testBench() {
} }
searcher, err := xdb.NewSearcher(dbFile) searcher, err := xdb.NewSearcher(dbFile)
if err != nil {
fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err)
return
}
defer func() { defer func() {
searcher.Close() searcher.Close()
}() }()

View File

@ -115,16 +115,16 @@ func (m *Maker) initDbHeader() error {
binary.LittleEndian.PutUint16(header, uint16(VersionNo)) binary.LittleEndian.PutUint16(header, uint16(VersionNo))
// 2, index policy code // 2, index policy code
binary.LittleEndian.PutUint16(header, uint16(m.indexPolicy)) binary.LittleEndian.PutUint16(header[2:], uint16(m.indexPolicy))
// 3, generate unix timestamp // 3, generate unix timestamp
binary.LittleEndian.PutUint32(header[2:], uint32(time.Now().Unix())) binary.LittleEndian.PutUint32(header[4:], uint32(time.Now().Unix()))
// 4, index block start ptr // 4, index block start ptr
binary.LittleEndian.PutUint32(header[6:], uint32(0)) binary.LittleEndian.PutUint32(header[8:], uint32(0))
// 5, index block end ptr // 5, index block end ptr
binary.LittleEndian.PutUint32(header[10:], uint32(0)) binary.LittleEndian.PutUint32(header[12:], uint32(0))
_, err = m.dstHandle.Write(header) _, err = m.dstHandle.Write(header)
if err != nil { if err != nil {

View File

@ -43,9 +43,11 @@ func NewSearcher(dbFile string) (*Searcher, error) {
} }
func (s *Searcher) Close() { func (s *Searcher) Close() {
err := s.handle.Close() if s.handle != nil {
if err != nil { err := s.handle.Close()
return if err != nil {
return
}
} }
} }