Vinicius A. Santos escreveu:
>> Pela demonstração acima pode-se notar que no 8.2 a tabela temporária ficou
>> com o varchar sem especificacao do tamanho e no 8.3 e 8.4 ficou certinho.
> 
> Estranho, eu realizei o teste agora, apenas com a 8.3. Eu fiz uma visão com
> o select que eu postei, então fiz o teste no psql com \d nesta visão.
> O psql retornou o tipo "character varying(20)".
> Porém o pgAdmin e a aplicação(em Delphi), o reconhecem como "character
> varying", na mesma base 8.3.
> 
> Já resolvemos o problema com o cast, mas queria entender o que houve. 
> 
Eu não entendi porque o tipo importa mas isso é um problema da aplicação (seja
ela o PGAdmin ou Delphi) pois o PostgreSQL é capaz de retornar o tipo com o
respectivo tamanho (se for o caso). Veja:

template1=# select version();
                                                    version

---------------------------------------------------------------------------------------------------------------
 PostgreSQL 8.0.21 on i686-pc-linux-gnu, compiled by GCC i686-pc-linux-gnu-gcc
(GCC) 4.1.2 (Gentoo 4.1.2 p1.1)
(1 registro)

template1=# create table foo (a integer, b varchar(30), c char(10),
template1(# d numeric(5,2));
CREATE TABLE
template1=# \! cat /tmp/x
SELECT a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod)
FROM pg_catalog.pg_attribute a
WHERE
  a.attrelid = 'foo'::regclass AND
  a.attnum > 0 AND
  NOT a.attisdropped
ORDER BY a.attnum

template1=# \i /tmp/x
 attname |      format_type
---------+-----------------------
 a       | integer
 b       | character varying(30)
 c       | character(10)
 d       | numeric(5,2)
(4 registros)


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a