mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-10-06 19:23:59 +02:00
graph/db+sqldb: remove LEFT JOIN for fetching node addresses
In this commit, we remove the LEFT JOIN query that was used for fetching a nodes addresses. The reason it was used before was to ensure that we'd get an empty address list if the node did exist but had no addresses. This was for the purposes of the `AddrsForNode` method since it needs to return false/true to indicate if the given node exists.
This commit is contained in:
@@ -1438,33 +1438,27 @@ func (q *Queries) GetExtraNodeTypes(ctx context.Context, nodeID int64) ([]GraphN
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getNodeAddressesByPubKey = `-- name: GetNodeAddressesByPubKey :many
|
||||
SELECT a.type, a.address
|
||||
FROM graph_nodes n
|
||||
LEFT JOIN graph_node_addresses a ON a.node_id = n.id
|
||||
WHERE n.pub_key = $1 AND n.version = $2
|
||||
ORDER BY a.type ASC, a.position ASC
|
||||
const getNodeAddresses = `-- name: GetNodeAddresses :many
|
||||
SELECT type, address
|
||||
FROM graph_node_addresses
|
||||
WHERE node_id = $1
|
||||
ORDER BY type ASC, position ASC
|
||||
`
|
||||
|
||||
type GetNodeAddressesByPubKeyParams struct {
|
||||
PubKey []byte
|
||||
Version int16
|
||||
type GetNodeAddressesRow struct {
|
||||
Type int16
|
||||
Address string
|
||||
}
|
||||
|
||||
type GetNodeAddressesByPubKeyRow struct {
|
||||
Type sql.NullInt16
|
||||
Address sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) GetNodeAddressesByPubKey(ctx context.Context, arg GetNodeAddressesByPubKeyParams) ([]GetNodeAddressesByPubKeyRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getNodeAddressesByPubKey, arg.PubKey, arg.Version)
|
||||
func (q *Queries) GetNodeAddresses(ctx context.Context, nodeID int64) ([]GetNodeAddressesRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getNodeAddresses, nodeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetNodeAddressesByPubKeyRow
|
||||
var items []GetNodeAddressesRow
|
||||
for rows.Next() {
|
||||
var i GetNodeAddressesByPubKeyRow
|
||||
var i GetNodeAddressesRow
|
||||
if err := rows.Scan(&i.Type, &i.Address); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -59,7 +59,7 @@ type Querier interface {
|
||||
GetInvoiceHTLCs(ctx context.Context, invoiceID int64) ([]InvoiceHtlc, error)
|
||||
GetKVInvoicePaymentHashByAddIndex(ctx context.Context, addIndex int64) ([]byte, error)
|
||||
GetMigration(ctx context.Context, version int32) (time.Time, error)
|
||||
GetNodeAddressesByPubKey(ctx context.Context, arg GetNodeAddressesByPubKeyParams) ([]GetNodeAddressesByPubKeyRow, error)
|
||||
GetNodeAddresses(ctx context.Context, nodeID int64) ([]GetNodeAddressesRow, error)
|
||||
GetNodeByPubKey(ctx context.Context, arg GetNodeByPubKeyParams) (GraphNode, error)
|
||||
GetNodeFeatures(ctx context.Context, nodeID int64) ([]GraphNodeFeature, error)
|
||||
GetNodeFeaturesByPubKey(ctx context.Context, arg GetNodeFeaturesByPubKeyParams) ([]int32, error)
|
||||
|
@@ -134,12 +134,11 @@ INSERT INTO graph_node_addresses (
|
||||
$1, $2, $3, $4
|
||||
);
|
||||
|
||||
-- name: GetNodeAddressesByPubKey :many
|
||||
SELECT a.type, a.address
|
||||
FROM graph_nodes n
|
||||
LEFT JOIN graph_node_addresses a ON a.node_id = n.id
|
||||
WHERE n.pub_key = $1 AND n.version = $2
|
||||
ORDER BY a.type ASC, a.position ASC;
|
||||
-- name: GetNodeAddresses :many
|
||||
SELECT type, address
|
||||
FROM graph_node_addresses
|
||||
WHERE node_id = $1
|
||||
ORDER BY type ASC, position ASC;
|
||||
|
||||
-- name: GetNodesByLastUpdateRange :many
|
||||
SELECT *
|
||||
|
Reference in New Issue
Block a user