Files
geth/node/database_pebble.go
Zach Kelling 8116b76009 feat: make leveldb/pebble optional via build tags
- Add //go:build leveldb to ethdb/leveldb/*.go
- Add //go:build pebble to ethdb/pebble/*.go
- Refactor node/database.go to use registration pattern
- Default to badgerdb instead of pebble
- Create database_leveldb.go and database_pebble.go for conditional compilation

To use leveldb: go build -tags=leveldb
To use pebble: go build -tags=pebble
Default (no tags): badgerdb only

This reduces binary size when pebble/leveldb are not needed.
2025-12-21 12:10:37 -08:00

36 lines
1.3 KiB
Go

// Copyright 2024 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
//go:build pebble
package node
import (
"github.com/luxfi/geth/core/rawdb"
"github.com/luxfi/geth/ethdb"
"github.com/luxfi/geth/ethdb/pebble"
)
func init() {
RegisterDatabase(rawdb.DBPebble, newPebbleDBDatabase)
}
// newPebbleDBDatabase creates a persistent key-value database without a freezer
// moving immutable chain segments into cold storage.
func newPebbleDBDatabase(file string, cache int, handles int, namespace string, readonly bool) (ethdb.KeyValueStore, error) {
return pebble.New(file, cache, handles, namespace, readonly)
}