Compare commits
	
		
			No commits in common. "5fb3fc03811ca140c0f3d177c67312d877a5c925" and "ba13c76c530d651e6b29f73428ab147c25e1fa57" have entirely different histories.
		
	
	
		
			5fb3fc0381
			...
			ba13c76c53
		
	
		
@ -1230,24 +1230,17 @@ func (d *Database) GetPrefixDetails(prefix string) ([]LiveRoute, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// GetRandomPrefixesByLength returns a random sample of prefixes with the specified mask length
 | 
					// GetRandomPrefixesByLength returns a random sample of prefixes with the specified mask length
 | 
				
			||||||
func (d *Database) GetRandomPrefixesByLength(maskLength, ipVersion, limit int) ([]LiveRoute, error) {
 | 
					func (d *Database) GetRandomPrefixesByLength(maskLength, ipVersion, limit int) ([]LiveRoute, error) {
 | 
				
			||||||
	// Select unique prefixes with their most recent route information
 | 
					 | 
				
			||||||
	query := `
 | 
						query := `
 | 
				
			||||||
		WITH unique_prefixes AS (
 | 
							SELECT DISTINCT 
 | 
				
			||||||
			SELECT prefix, MAX(last_updated) as max_updated
 | 
								prefix, mask_length, ip_version, origin_asn, as_path, 
 | 
				
			||||||
			FROM live_routes
 | 
								peer_ip, last_updated
 | 
				
			||||||
			WHERE mask_length = ? AND ip_version = ?
 | 
							FROM live_routes
 | 
				
			||||||
			GROUP BY prefix
 | 
							WHERE mask_length = ? AND ip_version = ?
 | 
				
			||||||
			ORDER BY RANDOM()
 | 
							ORDER BY RANDOM()
 | 
				
			||||||
			LIMIT ?
 | 
							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 = ?
 | 
					 | 
				
			||||||
	`
 | 
						`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rows, err := d.db.Query(query, maskLength, ipVersion, limit, maskLength, ipVersion)
 | 
						rows, err := d.db.Query(query, maskLength, ipVersion, limit)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("failed to query random prefixes: %w", err)
 | 
							return nil, fmt.Errorf("failed to query random prefixes: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -91,6 +91,4 @@ CREATE INDEX IF NOT EXISTS idx_live_routes_mask_length ON live_routes(mask_lengt
 | 
				
			|||||||
CREATE INDEX IF NOT EXISTS idx_live_routes_ip_version_mask ON live_routes(ip_version, mask_length);
 | 
					CREATE INDEX IF NOT EXISTS idx_live_routes_ip_version_mask ON live_routes(ip_version, mask_length);
 | 
				
			||||||
CREATE INDEX IF NOT EXISTS idx_live_routes_last_updated ON live_routes(last_updated);
 | 
					CREATE INDEX IF NOT EXISTS idx_live_routes_last_updated ON live_routes(last_updated);
 | 
				
			||||||
-- Indexes for IPv4 range queries
 | 
					-- 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;
 | 
					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);
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user