Re: [pgbr-geral] Migração 8.2 para 8.3
Olá, Concordo com Guedes, Sérgio e Léo. Os casts implícitos são uma forma não correta de desenvolvar uma aplicação, como eu costumo comentar: Programação Orientada a Métodos Não Convencionais. []s 2008/9/29 Leonardo Cezar [EMAIL PROTECTED]: On Mon, Sep 29, 2008 at 4:00 PM, Rodrigo Monteiro [EMAIL PROTECTED] wrote: Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? O que é um tipo string? text? varchar? Sim, é verdade. Assumindo que é text, voce poderia adotar a seguinte solução *paliativa*, até consertar sua aplicação: CREATE FUNCTION pg_catalog.int2text(integer) RETURNS TEXT LANGUAGE SQL AS 'SELECT int4out($1)' CREATE CAST (INTEGER AS TEXT) WITH FUNCTION pg_catalog.int2text(integer) ; Lembre-se que trata-se de uma solução paliativa porque o que está errado no contexto do problema é sua aplicação e não a retirada das conversões implícitas. Abraço! -Leo -- Leonardo Cezar http://pgcon.postgresql.org.br http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Migração 8.2 para 8.3
Boa tarde a todos. Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? Abraços à todos ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migração 8.2 para 8.3
Rodrigo Monteiro escreveu: Boa tarde a todos. Boa tarde. Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? Conversões Implícitas não estão nas melhores práticas, aconselho você olhar este post: http://people.planetpostgresql.org/peter/index.php?/archives/18-Readding-implicit-casts-in-PostgreSQL-8.3.html -- []s Dickson S. Guedes Administrador de Banco de Dados Projeto Colmeia - Florianópolis, SC (48) 3322-1185, ramal: 26 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migração 8.2 para 8.3
Rodrigo Monteiro escreveu: Boa tarde a todos. Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? Certo, não vai funcionar mesmo, tem que ser entre aspas Procure também os os SQLs com funções (substr, replace, etc), que devem receber srtings entre aspas explicitamente. Leia as release notes pra saber todos os gotchas. -- []´s, ACV ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migração 8.2 para 8.3
2008/9/29, Rodrigo Monteiro [EMAIL PROTECTED]: Boa tarde a todos. Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? Do manual: http://www.postgresql.org/docs/current/interactive/release-8-3.html E.5.2.1. General * Non-character data types are no longer automatically cast to TEXT (Peter, Tom) Previously, if a non-character value was supplied to an operator or function that requires text input, it was automatically cast to text, for most (though not all) built-in data types. This no longer happens: an explicit cast to text is now required for all non-character-string types. For example, these expressions formerly worked: substr(current_date, 1, 4) 23 LIKE '2%' but will now draw function does not exist and operator does not exist errors respectively. Use an explicit cast instead: substr(current_date::text, 1, 4) 23::text LIKE '2%' (Of course, you can use the more verbose CAST() syntax too.) The reason for the change is that these automatic casts too often caused surprising behavior. An example is that in previous releases, this expression was accepted but did not do what was expected: current_date 2017-11-17 This is actually comparing a date to an integer, which should be (and now is) rejected — but in the presence of automatic casts both sides were cast to text and a textual comparison was done, because the text text operator was able to match the expression when no other operator could. Types char(n) and varchar(n) still cast to text automatically. Also, automatic casting to text still works for inputs to the concatenation (||) operator, so long as least one input is a character-string type. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migração 8.2 para 8.3
Rodrigo Monteiro wrote: Boa tarde a todos. Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? Não é verdade. Vai funcionar sim! Porque você não restaura o backup de seu banco de dados 8.2 em um 8.3 e tenta rodar o sistema sobre ele para ter certeza que o sistema vai rodar tranquilo?? Acho muito arriscado você migrar um sistema baseado apenas em suposições sem sentido de algumas pessoas que disseram. Se você olhar em [1] verá tudo o que mudou em cada versão, e poderá verificar se algo vai dar errado na migração mais rapidamente. [1] http://www.postgresql.org/docs/8.3/static/release.html Abraço, -- Shander Lyrio ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migração 8.2 para 8.3
Olá Rodrigo eu acho que você deve, independentemente se o banco de dados vai aceitar ou não, tratar um dado como string, quando ele for realmente uma string. Na minha opinião, seria interessante consertar este erro na aplicação. abraços ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migração 8.2 para 8.3
On Mon, Sep 29, 2008 at 4:00 PM, Rodrigo Monteiro [EMAIL PROTECTED] wrote: Vou fazer a migração do banco do meu sistema para 8.3 esta semana. Agora me paira uma dúvida levantada por um colega, antigos programadores do meu sistema prepararam alguns selects desta forma select * from movimento where cupom = 123456, sendo que o campo cupom é string, no 8.2 funciona normalmente mas me disseram que no 8.3 não vai funcionar é verdade? O que é um tipo string? text? varchar? Sim, é verdade. Assumindo que é text, voce poderia adotar a seguinte solução *paliativa*, até consertar sua aplicação: CREATE FUNCTION pg_catalog.int2text(integer) RETURNS TEXT LANGUAGE SQL AS 'SELECT int4out($1)' CREATE CAST (INTEGER AS TEXT) WITH FUNCTION pg_catalog.int2text(integer) ; Lembre-se que trata-se de uma solução paliativa porque o que está errado no contexto do problema é sua aplicação e não a retirada das conversões implícitas. Abraço! -Leo -- Leonardo Cezar http://pgcon.postgresql.org.br http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral