sqldb+graph/db: fix UpsertNode bug

Account for the last_update field being null.
This commit is contained in:
Elle Mouton
2025-05-30 13:30:19 +02:00
parent eb32b39380
commit 547b836180
3 changed files with 5 additions and 14 deletions

View File

@@ -3361,18 +3361,7 @@ func TestAddChannelEdgeShellNodes(t *testing.T) {
require.ErrorIs(t, err, ErrEdgeAlreadyExist)
// Show that updating the shell node to a full node record works.
err = graph.AddLightningNode(node2)
_, ok := graph.V1Store.(*KVStore)
if ok {
require.NoError(t, err)
} else {
// Currently the SQL UpsertNode query prevents us from updating
// the node record if the current record's last_update field
// is null (which is the case for node2). This is a bug that
// will be fixed in the following commit.
require.ErrorContains(t, graph.AddLightningNode(node2),
"sql: no rows in result set")
}
require.NoError(t, graph.AddLightningNode(node2))
}
// TestNodePruningUpdateIndexDeletion tests that once a node has been removed

View File

@@ -542,7 +542,8 @@ ON CONFLICT (pub_key, version)
last_update = EXCLUDED.last_update,
color = EXCLUDED.color,
signature = EXCLUDED.signature
WHERE EXCLUDED.last_update > nodes.last_update
WHERE nodes.last_update IS NULL
OR EXCLUDED.last_update > nodes.last_update
RETURNING id
`

View File

@@ -17,7 +17,8 @@ ON CONFLICT (pub_key, version)
last_update = EXCLUDED.last_update,
color = EXCLUDED.color,
signature = EXCLUDED.signature
WHERE EXCLUDED.last_update > nodes.last_update
WHERE nodes.last_update IS NULL
OR EXCLUDED.last_update > nodes.last_update
RETURNING id;
-- name: GetNodeByPubKey :one