Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

676
Visualizações
PG::UndefinedFunction: ERROR: la función array_append(anyarray, anyelement) no existe

En mi aplicación, tenemos algunos casos de prueba que están configurados con el flujo de trabajo de GitHub, aunque solo tengo cambios relacionados con el espacio en el archivo, pero sigo obteniendo el siguiente error. No estoy seguro de por qué mis especificaciones siguen fallando, antes funcionaba bien.

 An error occurred in a `before(:suite)` hook. Failure/Error: ActiveMedian.create_function ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: function array_append(anyarray, anyelement) does not exist : CREATE OR REPLACE FUNCTION median(anyarray) RETURNS float8 AS $$ WITH q AS ( SELECT val FROM unnest($***) val WHERE VAL IS NOT NULL ORDER BY *** ), cnt AS ( SELECT COUNT(*) AS c FROM q ) SELECT AVG(val)::float8 FROM ( SELECT val FROM q LIMIT 2 - MOD((SELECT c FROM cnt), 2) OFFSET GREATEST(CEIL((SELECT c FROM cnt) / 2.0) - ***,0) ) q2; $$ LANGUAGE sql IMMUTABLE; DROP AGGREGATE IF EXISTS median(numeric); DROP AGGREGATE IF EXISTS median(double precision); DROP AGGREGATE IF EXISTS median(anyelement); CREATE AGGREGATE median(anyelement) ( SFUNC=array_append, STYPE=anyarray, FINALFUNC=median, INITCOND='{}' ); # ./spec/rails_helper.rb:***54:in `seed' # ./spec/rails_helper.rb:***:in `block (2 levels) in <top (required)>' # ------------------ # --- Caused by: --- # PG::UndefinedFunction: # ERROR: function array_append(anyarray, anyelement) does not exist # ./spec/rails_helper.rb:***54:in `seed'

Hay ActiveMedian.create_function en spec/rails_helper.rb que podría causar el problema.

Cualquier pista o sugerencia sería apreciada

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Está utilizando PostGreSQL 14, ¿no es así?

Porque con postgres 13 y anteriores, esto debería funcionar, vea el resultado de la prueba en dbfiddle .

Y confirmo que esto no funciona con postgres 14, vea el resultado de la prueba en dbfiddle .

El motivo se explica en el manual de PostGres 14 :

Los objetos definidos por el usuario que hacen referencia a determinadas funciones de matriz integradas junto con sus tipos de argumento deben volver a crearse (Tom Lane)

Específicamente, array_append() , array_prepend(), array_cat(), array_position(), array_positions(), array_remove(), array_replace() y width_bucket() solían tomar cualquier argumento de matriz pero ahora toman cualquier matriz compatible . Por lo tanto, los objetos definidos por el usuario, como los agregados y los operadores que hacen referencia a esas firmas de funciones de matriz, deben eliminarse antes de la actualización y volver a crearse una vez que se complete la actualización.

Para que funcione, puedes hacer en su lugar:

 CREATE OR REPLACE FUNCTION median(anycompatiblearray) RETURNS float8 AS $$ ... $$ LANGUAGE sql IMMUTABLE ; ... CREATE AGGREGATE median(anycompatible) ( SFUNC=array_append, STYPE=anycompatiblearray, FINALFUNC=median, INITCOND='{}' );
over 4 years ago · Santiago Trujillo Relatório

0

Después de investigar un poco, resolví este problema cambiando la versión de la imagen de Postgres en GitHub de la siguiente manera.

archivo .github/workflows/build.yml

 services: postgres: image: postgres:13 ports: - 5432:5432
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda