40 lines
654 B
PL/PgSQL
40 lines
654 B
PL/PgSQL
CREATE EXTENSION plpython3u;
|
|
|
|
CREATE FUNCTION text_pairs(list TEXT[])
|
|
RETURNS SETOF TEXT[]
|
|
LANGUAGE plpgsql AS
|
|
$$
|
|
DECLARE
|
|
x TEXT;
|
|
y TEXT;
|
|
BEGIN
|
|
for x, y in(
|
|
SELECT *
|
|
FROM unnest(list) a
|
|
CROSS JOIN unnest(list) b
|
|
WHERE a > b)
|
|
LOOP
|
|
RETURN NEXT ARRAY [x, y];
|
|
END LOOP;
|
|
END;
|
|
$$;
|
|
|
|
|
|
CREATE FUNCTION int_pairs(list INTEGER[])
|
|
RETURNS SETOF INTEGER[]
|
|
LANGUAGE plpgsql AS
|
|
$$
|
|
DECLARE
|
|
x INTEGER;
|
|
y INTEGER;
|
|
BEGIN
|
|
for x, y in(
|
|
SELECT *
|
|
FROM unnest(list) a
|
|
CROSS JOIN unnest(list) b
|
|
WHERE a > b)
|
|
LOOP
|
|
RETURN NEXT ARRAY [x, y];
|
|
END LOOP;
|
|
END;
|
|
$$; |