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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral