Re: [pgbr-geral] Migração 8.2 para 8.3

2008-09-30 Por tôpico Jota
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

2008-09-29 Por tôpico Rodrigo Monteiro
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

2008-09-29 Por tôpico Dickson S. Guedes
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

2008-09-29 Por tôpico André Volpato
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-09-29 Por tôpico Osvaldo Kussama
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

2008-09-29 Por tôpico Shander Lyrio

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

2008-09-29 Por tôpico sergio santos
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

2008-09-29 Por tôpico Leonardo Cezar
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