Compare commits

..

No commits in common. "5fb3fc03811ca140c0f3d177c67312d877a5c925" and "ba13c76c530d651e6b29f73428ab147c25e1fa57" have entirely different histories.

3 changed files with 288 additions and 1743 deletions

View File

@ -1230,24 +1230,17 @@ func (d *Database) GetPrefixDetails(prefix string) ([]LiveRoute, error) {
// GetRandomPrefixesByLength returns a random sample of prefixes with the specified mask length
func (d *Database) GetRandomPrefixesByLength(maskLength, ipVersion, limit int) ([]LiveRoute, error) {
// Select unique prefixes with their most recent route information
query := `
WITH unique_prefixes AS (
SELECT prefix, MAX(last_updated) as max_updated
FROM live_routes
WHERE mask_length = ? AND ip_version = ?
GROUP BY prefix
ORDER BY RANDOM()
LIMIT ?
)
SELECT lr.prefix, lr.mask_length, lr.ip_version, lr.origin_asn, lr.as_path,
lr.peer_ip, lr.last_updated
FROM live_routes lr
INNER JOIN unique_prefixes up ON lr.prefix = up.prefix AND lr.last_updated = up.max_updated
WHERE lr.mask_length = ? AND lr.ip_version = ?
SELECT DISTINCT
prefix, mask_length, ip_version, origin_asn, as_path,
peer_ip, last_updated
FROM live_routes
WHERE mask_length = ? AND ip_version = ?
ORDER BY RANDOM()
LIMIT ?
`
rows, err := d.db.Query(query, maskLength, ipVersion, limit, maskLength, ipVersion)
rows, err := d.db.Query(query, maskLength, ipVersion, limit)
if err != nil {
return nil, fmt.Errorf("failed to query random prefixes: %w", err)
}

View File

@ -92,5 +92,3 @@ CREATE INDEX IF NOT EXISTS idx_live_routes_ip_version_mask ON live_routes(ip_ver
CREATE INDEX IF NOT EXISTS idx_live_routes_last_updated ON live_routes(last_updated);
-- Indexes for IPv4 range queries
CREATE INDEX IF NOT EXISTS idx_live_routes_ipv4_range ON live_routes(v4_ip_start, v4_ip_end) WHERE ip_version = 4;
-- Index to optimize COUNT(DISTINCT prefix) queries
CREATE INDEX IF NOT EXISTS idx_live_routes_ip_mask_prefix ON live_routes(ip_version, mask_length, prefix);

2004
log.txt

File diff suppressed because it is too large Load Diff