Simplificar el proceso de instalación de PLV8
Introducción de una imagen Docker compacta, basada en Debian/Alpine, para PLV8 en PostgreSQL, incluidas las últimas versiones 16.2 y 15.6:
Compatible con:
o
PLV8 para PostgreSQL fusiona el poder de JavaScript y SQL, otorgando a los desarrolladores flexibilidad, codificación mínima, alto rendimiento y posibilidades infinitas.
Instalación e integración sencillas
Amplio soporte arquitectónico
Eficiencia que
ahorra tiempo
Soporte y actualizaciones continuas
Primeros Pasos
Esta imagen se instala de la misma manera que la imagen estándar de Postgres, con la única diferencia de agregar la extensión PLV8.

Primero se debe ejecutar un script para crear la extensión:
CREATE EXTENSION plv8;
Copiar
Luego puedes realizar consultas SQL:
DO $$
     plv8.elog(NOTICE, plv8.version);
$$ LANGUAGE plv8;
Copiar
Después, podrás ver la versión de la extensión PLV8 instalada.
Modificaciones de la imagen
Debido al problema de serialización de BigInt, esta imagen viene en dos variantes:
construcción predeterminada (por defecto, en PLV8 v3.0.0 y versiones superiores, los números BigInt se convierten en cadenas)
modificación especial con soporte de serialización de BigInt
CREATE TABLE test
(
     id SERIAL PRIMARY KEY NOT NULL,
     comment text
);

INSERT INTO test(comment)
        
VALUES ('abc'), ('def');

CREATE OR REPLACE FUNCTION get_count(table_name text)
     RETURNS jsonb
     LANGUAGE plv8 IMMUTABLE AS
$$
        const sql = `SELECT COUNT(*) AS cnt FROM "${table_name}"`;
        const data = plv8.execute(sql);
        return data[0];
$$;

SELECT * FROM get_count('test');

Copiar
Prueba las diferencias en el trabajo:
Resultados:
sibedge/postgres-plv8: {"cnt": "2"}
sibedge/postgres-plv8-bigint: {"cnt": 2}
CREATE TABLE test
(
id SERIAL PRIMARY KEY NOT NULL,
comment text
);

INSERT INTO test(comment)
VALUES ('abc'), ('def');

CREATE OR REPLACE FUNCTION get_count(table_name text)
RETURNS jsonb
LANGUAGE plv8 IMMUTABLE AS
$$
const sql = `SELECT COUNT(*) AS cnt FROM "${table_name}"`;
const data = plv8.execute(sql);
return data[0];
$$;

SELECT * FROM get_count('test');

¿Necesitas una imagen Docker personalizada?
Solicita una construcción personalizada adaptada a tus especificaciones únicas.
Nuestro equipo está listo para crear la solución perfecta para ti.
con ♥ de sibedge