> 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
