Page MenuHomePhabricator
Paste P51110

domain_index_to_domain
ActivePublic

Authored by bd808 on Aug 24 2023, 1:04 AM.
Tags
None
Referenced Files
F37624354: raw-paste-data.txt
Aug 24 2023, 1:04 AM
Subscribers
None
DELIMITER $$
CREATE OR REPLACE
FUNCTION domain_index_to_domain(_domain_index TEXT) RETURNS TEXT DETERMINISTIC
BEGIN
DECLARE _domain TEXT DEFAULT NULL;
DECLARE _next TEXT DEFAULT NULL;
DECLARE _nextlen INT DEFAULT NULL;
SET _domain_index = TRIM(_domain_index);
-- Move protocol to _domain
SET _domain = CONCAT(SUBSTRING_INDEX(_domain_index, '://', 1), '://');
SET _domain_index = SUBSTRING_INDEX(_domain_index, '://', -1);
iterator:
LOOP
-- exit loop when there's nothing left
IF CHAR_LENGTH(TRIM(_domain_index)) = 0 OR _domain_index IS NULL THEN
LEAVE iterator;
END IF;
SET _next = SUBSTRING_INDEX(_domain_index, '.', 1);
SET _nextlen = CHAR_LENGTH(_next);
SET _domain = CONCAT(_domain, TRIM(_next), '.');
SET _domain_index = INSERT(_domain_index, 1, _nextlen + 1, '');
END LOOP;
RETURN TRIM(TRAILING '.' FROM _domain);
END;
$$
DELIMITER ;