PostgreSQL - Problema con conversiones en Postgre 8.3

 
Vista:

Problema con conversiones en Postgre 8.3

Publicado por Juanma (2 intervenciones) el 04/05/2009 18:31:55
Buenas tardes gente.

Es la primera vez que uso un foro de este tipo, espero no causar ningún inconveniente.

En el trabajo usamos un servidor Postgre 8.1 y vamos a cambiar el servidor en breve (una semana a lo sumo.)
Encontramos el problema de que la nueva versión de Postgre (8.3) no contempla la posibilidad de una conversión implícita de tipos, y en nuestra aplicación tenemos un montón de consultas que hacen uso de dicha conversión, patente en la 8.1, con lo que se nos plantea un problema con las siguientes soluciones:
-Reprogramar media aplicación (que va a ser que no)
-Quedarnos en la 8.1 (con la consiguiente falta de mejoras)
-Habilitar de alguna manera dicha conversión en la 8.3 (que sería lo suyo)
Y aquí mi pregunta:
¿Se podría llevat a cabo la opción 3, es decir, habilitar la conversión implícita en Postgre 8.3?
Después de muuucho googleo no he encontrado nada al respecto, lo único que he encontarado es como hacer casteos explícitos, pero es una tarea tediosa, con consumiría un tiempo que no tenemos en la empresa, ya que son muchisimos archivos de código que habría que revisar y retocar.

Muchísimas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con conversiones en Postgre 8.3

Publicado por Juanma (2 intervenciones) el 05/05/2009 09:38:12
Ya está solucionado.
La solución al final ha pasado por crear una función que compare varchar con int y luego crear un operador. Después me ha surgido el error de que me tomaba varchar como int, la solución ha sido la misma., pero esta vez que compare varchar con varchar. Un tanto tosco, pero funciona a las mil maravillas.
Posteo el código:

CREATE OR REPLACE FUNCTION comparar_varchar_int(varchar,integer) returns boolean
AS
$BODY$
DECLARE
t boolean;
BEGIN
IF $1<>$2::varchar THEN
t= FALSE;
ELSE
t= TRUE;
END IF;
RETURN t;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

CREATE OPERATOR = (
leftarg = varchar,
rightarg = int,
procedure = comparar_varchar_int,
commutator = =
);

CREATE OR REPLACE FUNCTION comparar_varchar_varchar(varchar,varchar) returns boolean
AS
$BODY$
DECLARE
t boolean;
BEGIN
IF $1<>$2 THEN
t= FALSE;
ELSE
t= TRUE;
END IF;
RETURN t;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

CREATE OPERATOR = (
leftarg = varchar,
rightarg = varchar,
procedure = comparar_varchar_varchar,
commutator = =
);

Esero que os ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con conversiones en Postgre 8.3

Publicado por Rodolfo (1 intervención) el 12/07/2015 06:09:55
Estimado amigo , lamento recién leer este post, tengo el mismo problema pero el código esta en php, como podría enviar el código desde php para que valide mi sentencia sql?, creo que esta muy grave, y volver a reescribir el código me llevara años
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar