Postgresql: inserte el producto cartesiano de dos o más conjuntos

como definición: el producto cartesiano de dos conjuntos es el conjunto de todos los pares posibles de estos conjuntos, entonces {A, B} x {a, b} = {(A, a), (A, b), (B, tejido)}

Ahora quiero insertar un producto cartesiano en una tabla de base de datos (cada par como una fila). Se pretende llenar la tabla con los valores predeterminados para cada par, por lo que los datos, es decir, los dos conjuntos, no están presentes en la base de datos en este momento.

¿Alguna idea de cómo lograr esto con postgresql?

EDIT:

Con la ayuda de la respuesta de Grzegorz Szpetkowski, pude generar una consulta que hace lo que quiero lograr, pero realmente no es la más bonita. Supongamos que quiero insertar el producto cartesiano de los conjuntos {1,2,3} y {'A', 'B', 'C'}.

INSERT INTO "Test"
SELECT * FROM
(SELECT 1 UNION SELECT 2 UNION SELECT 3) P
CROSS JOIN
(SELECT 'A' UNION SELECT 'B' UNION SELECT 'C') Q

¿Hay alguna forma mejor de hacer esto?

EDIT2: La respuesta aceptada está bien, pero encontré otra versión que podría ser apropiada si se vuelve más compleja:

CREATE TEMP TABLE "Numbers" (ID integer) ON COMMIT DROP;
CREATE TEMP TABLE "Chars" (Char character varying) ON COMMIT DROP;
INSERT INTO "Numbers" (ID) VALUES (1),(2),(3);
INSERT INTO "Chars" (Char) VALUES ('A'),('B'),('C');
INSERT INTO "Test"
SELECT * FROM
"Numbers"
CROSS JOIN
"Chars";

Respuestas a la pregunta(1)

Su respuesta a la pregunta