Simplificar o processo de instalação do PLV8
Apresentando uma imagem Docker compacta, baseada em Debian/Alpine, para o PLV8 no PostgreSQL, incluindo as últimas versões 16.2 e 15.6:
Suportado em:
ou
PLV8 para PostgreSQL une o poder do JavaScript e SQL, concedendo aos desenvolvedores flexibilidade, codificação mínima, alto desempenho e infinitas possibilidades.
Instalação e integração fáceis
Amplo suporte
arquitetural
Eficiência que economiza tempo
Suporte e atualizações contínuas
Primeiros Passos
Esta imagem é instalada da mesma forma que a imagem padrão do Postgres, com a única diferença sendo a adição da extensão PLV8.

Um script para criar a extensão deve ser executado primeiro:
CREATE EXTENSION plv8;
Copiar
Então você pode executar uma consulta SQL:
DO $$
     plv8.elog(NOTICE, plv8.version);
$$ LANGUAGE plv8;
Copiar
Depois, você poderá ver a versão da extensão PLV8 instalada.
Modificações na imagem
Devido ao problema de serialização BigInt, esta imagem vem em duas variantes:
compilação padrão (por padrão, no PLV8 v3.0.0 e números BigInt superiores são convertidos em string)
modificação especial com suporte de serialização 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
Teste as diferenças no trabalho:
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');

Precisa de uma imagem Docker personalizada?
Solicite uma construção personalizada adaptada às suas especificações únicas.
Nossa equipe está pronta para criar a solução perfeita para você.
com ♥ da sibedge