Hola lista, Como siempre acudo en su ayuda para resolver algunos inconvenientes que me estoy encontrando.
Cuando migramos de PG8.4 a PG9.3, nos dimos cuenta que teníamos que instalar casts ya que creo que fueron suprimidos en nuevas versiones. Por internet encontramos un script que nos los creaba . Tomamos esta opción porque era más sencillo que revisar nuestros aplicativos. Ahora llega el momento de eliminar esta antigua dependencia y nos gustaría saber en qué debemos fijar-nos para agilizar este proceso de cambio. Os explico alguna las curiosidades que hemos encontrado: - En primer lugar los "implicit cast" que instalamos "se superponen" a otros que puedan tener por defecto postgres, ya que nos hemos fijado que al eliminarlos tenemos que hacerlo en cascada porque hay vistas que dependen de él. Hemos hecho la prueba de volver a crear la vista sin "implicit casts" y nos ha funcionado (en concreto había un _entero_::text en la vista). - Por otro lado, tal y como hemos creado los "implicit cast", según el script: CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));'; CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT; - Dicho de otro modo, se crea primero la función y después el cast. Sabéis si puedo monitorizar estas funciones para que me creen un log y me indique en qué "SQL" o "lo que sea" se está utilizando? Finalmente, nuestra propuesta inicial de cambio es que: - En el entorno de desarrollo se eliminen estos "implicit cast". - De manera sistemática modifiquemos las query para crear los casts explícitamente. Ya sea en funciones, triggers, vistas y por suspesto en cada uno de nuestros aplicativos. - Una vez superadas las pruebas, publicar los cambios en producción (de manera paulatina claro) y al finalizar las publicaciones eliminar los "implicit casts". Nuestras preguntas son: - Hay algún método para agilizar la detección del uso de "implicit casts"? Es que creemos que modificar de manera sistemática todas las query nos llevará mucho trabajo y ni tan siquiera podremos simular todas las funcionalidades de nuestras aplicaciones. Del mismo modo con las funciones, triggers y vistas de base de datos. Entendemos que se están usando en : - Comparaciones - Cada cast que haces - En concatenaciones tipo: SELECT 'a' || 0; - Me dejo algo? - Finalmente, me recomendáis alguna alternativa o tenemos que pasar por este suplicio, (jajaja)? PD: Si me preguntáis por qué queremos eliminar los "implicit casts" que instalamos es por que no puedo hacer "pg_upgrade" entre 9.5 y 11.4. A pesar de poder hacer alguna "trampilla" para solucionarlo, nos hemos propuesto eliminarlos. Siento este rollo. Gracias por adelantado. -- *Ruben Fitó * Software Engineer [image: Ubiquat Technologies, SL] r.f...@ubiquat.com <j.catari...@ubiquat.com> www.ubiquat.com Tota la informació continguda en aquest document i arxius adjunts és CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per error, si us plau elimini'l i posi's en contacte amb l'emissor. All information contained in this document and any attachments are CONFIDENTIAL and protected under trade secret laws. If you receive this message by mistake, please delete it and notify it immediately to the sender.