mirror of
https://github.com/lightningnetwork/lnd.git
synced 2026-08-15 12:50:15 +02:00
Here, we make the sql query option params (batch size and pagination size) configurable. The defaults for SQLite vs Postgres are still the same but will be changed in an upcoming commit.
75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
//go:build test_native_sql
|
|
|
|
package lnd
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"fmt"
|
|
|
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
|
graphdb "github.com/lightningnetwork/lnd/graph/db"
|
|
"github.com/lightningnetwork/lnd/kvdb"
|
|
"github.com/lightningnetwork/lnd/lncfg"
|
|
"github.com/lightningnetwork/lnd/sqldb"
|
|
"github.com/lightningnetwork/lnd/sqldb/sqlc"
|
|
)
|
|
|
|
// RunTestSQLMigration is a build tag that indicates whether the test_native_sql
|
|
// build tag is set.
|
|
var RunTestSQLMigration = true
|
|
|
|
// getGraphStore returns a graphdb.V1Store backed by a graphdb.SQLStore
|
|
// implementation.
|
|
func (d *DefaultDatabaseBuilder) getGraphStore(baseDB *sqldb.BaseDB,
|
|
_ kvdb.Backend, opts ...graphdb.StoreOptionModifier) (graphdb.V1Store,
|
|
error) {
|
|
|
|
graphExecutor := sqldb.NewTransactionExecutor(
|
|
baseDB, func(tx *sql.Tx) graphdb.SQLQueries {
|
|
return baseDB.WithTx(tx)
|
|
},
|
|
)
|
|
|
|
queryConfig := d.cfg.DB.Sqlite.QueryConfig
|
|
if d.cfg.DB.Backend == lncfg.PostgresBackend {
|
|
queryConfig = d.cfg.DB.Postgres.QueryConfig
|
|
}
|
|
|
|
return graphdb.NewSQLStore(
|
|
&graphdb.SQLStoreConfig{
|
|
ChainHash: *d.cfg.ActiveNetParams.GenesisHash,
|
|
QueryCfg: &queryConfig,
|
|
},
|
|
graphExecutor, opts...,
|
|
)
|
|
}
|
|
|
|
// graphSQLMigration is the version number for the graph migration
|
|
// that migrates the KV graph to the native SQL schema.
|
|
const graphSQLMigration = 9
|
|
|
|
// getSQLMigration returns a migration function for the given version.
|
|
func getSQLMigration(ctx context.Context, version int,
|
|
kvBackend kvdb.Backend,
|
|
chain chainhash.Hash) (func(tx *sqlc.Queries) error, bool) {
|
|
|
|
switch version {
|
|
case graphSQLMigration:
|
|
return func(tx *sqlc.Queries) error {
|
|
err := graphdb.MigrateGraphToSQL(
|
|
ctx, kvBackend, tx, chain,
|
|
)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to migrate graph "+
|
|
"to SQL: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}, true
|
|
}
|
|
|
|
// No version was matched, so we return false to indicate that no
|
|
// migration is known for the given version.
|
|
return nil, false
|
|
}
|