Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

218
Views
Uso de conversión (::) de elementos de matriz con pg-promise

Tengo un dominio que representa una matriz de enteros, creado con CREATE DOMAIN x AS integer[] . Tengo un campo en una tabla que tiene tipo x[] , es decir, una matriz de matrices de enteros. He hecho esto (a diferencia de integer[][] ) para permitir matrices de longitud mixta (ver esta respuesta ).

Insertar la expresión {{1, 2}, {3, 4, 5}} se vería así:

 INSERT INTO table (column) VALUES (ARRAY[ARRAY[1, 2]::x, ARRAY[3, 4, 5]::x])

Sin el dominio (es decir, cuando la column es de tipo integer[][] ), puedo usar pg-promise para insertar la matriz multidimensional anterior:

 const arr = [[1, 2], [3, 4, 5]]; await db.query('INSERT INTO table (column) VALUES ($1)', arr);

Y selecciónalo:

 const result = await db.query('SELECT column FROM table'); result[0].column[1][2] // => 5

Pero esto, por supuesto, tiene la limitación mencionada al principio, que SQL (o al menos Postgres) no permite matrices multidimensionales con filas de diferentes longitudes.

Seleccionar una columna de tipo x[] con pg-promise de la misma manera que arriba da como resultado una cadena, e insertar una matriz sin formato (como arriba) arroja un error comprensiblemente ("la columna es de tipo x[] pero la expresión es de tipo entero[]"). Agregar ::x[] (es decir, INSERT INTO table (column) VALUES ($1::x[]) también arroja un error, "no se puede convertir el tipo entero a x", que también tiene sentido.

Entonces mi pregunta es, ¿cuál es la mejor manera de seleccionar e insertar campos que son matrices de un dominio con pg-promise? Miré el formato de tipo personalizado, pero no estoy seguro de que funcione para seleccionar. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!