| 752 | } |
| 753 | |
| 754 | func (db *DB) getRecordCount() (int64, error) { |
| 755 | var res int64 |
| 756 | |
| 757 | // Iterate through the BTree indices |
| 758 | for _, btree := range db.Index.BTree.Idx { |
| 759 | res += int64(btree.Count()) |
| 760 | } |
| 761 | |
| 762 | // Iterate through the List indices |
| 763 | for _, listItem := range db.Index.List.Idx { |
| 764 | for key := range listItem.Items { |
| 765 | curLen, err := listItem.Size(key) |
| 766 | if err != nil { |
| 767 | return res, err |
| 768 | } |
| 769 | res += int64(curLen) |
| 770 | } |
| 771 | } |
| 772 | |
| 773 | // Iterate through the Set indices |
| 774 | for _, setItem := range db.Index.Set.Idx { |
| 775 | for key := range setItem.M { |
| 776 | res += int64(setItem.SCard(key)) |
| 777 | } |
| 778 | } |
| 779 | |
| 780 | // Iterate through the SortedSet indices |
| 781 | for _, zsetItem := range db.Index.SortedSet.Idx { |
| 782 | for key := range zsetItem.M { |
| 783 | curLen, err := zsetItem.ZCard(key) |
| 784 | if err != nil { |
| 785 | return res, err |
| 786 | } |
| 787 | res += int64(curLen) |
| 788 | } |
| 789 | } |
| 790 | |
| 791 | return res, nil |
| 792 | } |
| 793 | |
| 794 | func (db *DB) buildBTreeIdx(record *core.Record, entry *core.Entry) error { |
| 795 | key, meta := entry.Key, entry.Meta |