> Olá a todos.
>
> Ha alguns anos, migrei um sistema legado do MS SQLServer para PostgreSQL.
> Esse sistema faz consultas do tipo:
>
> SELECT * FROM organizacional.funcionario WHERE matricula = 989676;
>
> onde matricula é um varchar.
>
> Até a versão 8.1 (que utilizávamos aqui até o mês passado) o SGBD aceitava
> comparações varchar = int, bem como int = varchar.
>
> Depois de atualizarmos para versão 9.0.2 esta consulta passou a dar erro:
> Error: ERRO: operador não existe: character varying = integer
> SQLState:  42883
>
> Tentei contornar o problema criando os operadores:
> CREATE OPERATOR = (PROCEDURE = fn_int8eqvarchar, LEFTARG = int8 , RIGHTARG =
> varchar)
> CREATE OPERATOR = (PROCEDURE = fn_varchareqint8, LEFTARG = varchar , RIGHTARG 
> =
> int8)
>
> Mas tive um efeito colateral inadmissível. Comparações varchar = varchar
> passaram a dar erro:
> Error: ERRO: sintaxe de entrada é inválida para integer: "P"
> SQLState:  22P02
>
> Alguma sugestão?

Conserte sua aplicação. Ela é que está errada, não o banco de dados.
Isso já foi discutido aqui e nos fóruns internacionais. Os
desenvolvedores avisaram sobre isso nos release notes.
A conversão automática de tipos foi removida a partir do PostgreSQL
8.3, ou seja, já faz tempinho.

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a