Em 28-02-2011 13:09, Flavio Henrique Araque Gurgel escreveu:
>> 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
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


Não tenho essa opção, e se for a única, vou ter que apelar para um downgrade.

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a