2009/7/30 Vinicius A. Santos <vinic...@msisolucoes.com.br> > SELECT > (select usuario from usuarios where chave=(select autorizadopor from > pedidocompra where pedido=e.pedidocompra)) as quemautorizoucompra > FROM > entradas e > WHERE > e.tipoentrada='0' and e.dataoperacao = current_date - 3 > > Executando esta consulta na 8.4, o campo "QuemAutorizouCompra", retorna > varchar(20), que é o tipo do campo "usuario" da tabela de usuários, > porém a mesma consulta executando na 8.3, me retorna apenas varchar, sem > a limitação de 20. > > <corte> > > Caro Vinicius,
Observe os testes abaixo no 8.2, 8.3 e 8.4: <postgresql-8.2> postg...@bdteste=# create table foo(codigo integer, nome varchar(40)); CREATE TABLE postg...@bdteste=# postg...@bdteste=# \d foo Table "public.foo" Column | Type | Modifiers --------+-----------------------+----------- codigo | integer | nome | character varying(40) | postg...@bdteste=# postg...@bdteste=# create temp table w_foo as bdteste-# select (select nome from foo where codigo = 1) as nome1, bdteste-# (select nome from foo where codigo = 2) as nome2; SELECT postg...@bdteste=# postg...@bdteste=# \d w_foo Table "pg_temp_1.w_foo" Column | Type | Modifiers --------+-------------------+----------- nome1 | character varying | nome2 | character varying | postg...@bdteste=# postg...@bdteste=# select version(); version ------------------------------------------------------------------------------------------ PostgreSQL 8.2.13 on i686-pc-linux-gnu, compiled by GCC cc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 (1 row) </postgresql-8.2> <postgresql-8.3> postg...@bdteste=# create table foo(codigo integer, nome varchar(40)); CREATE TABLE postg...@bdteste=# postg...@bdteste=# \d foo Tabela "public.foo" Coluna | Tipo | Modificadores --------+-----------------------+--------------- codigo | integer | nome | character varying(40) | postg...@bdteste=# postg...@bdteste=# create temp table w_foo as bdteste-# select (select nome from foo where codigo = 1) as nome1, bdteste-# (select nome from foo where codigo = 2) as nome2; SELECT postg...@bdteste=# postg...@bdteste=# \d w_foo Tabela "pg_temp_1.w_foo" Coluna | Tipo | Modificadores --------+-----------------------+--------------- nome1 | character varying(40) | nome2 | character varying(40) | postg...@bdteste=# postg...@bdteste=# select version(); version --------------------------------------------------------------------------------------------------- PostgreSQL 8.3.7 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Ubuntu 4.3.3-5ubuntu4) 4.3.3 (1 registro) </postgresql-8.3> <postgresql-8.4> bdteste=# create table foo(codigo integer, nome varchar(40)); CREATE TABLE bdteste=# bdteste=# \d foo Table "public.foo" Column | Type | Modifiers --------+-----------------------+----------- codigo | integer | nome | character varying(40) | bdteste=# bdteste=# create temp table w_foo as bdteste-# select (select nome from foo where codigo = 1) as nome1, bdteste-# (select nome from foo where codigo = 2) as nome2; SELECT bdteste=# bdteste=# \d w_foo Table "pg_temp_1.w_foo" Column | Type | Modifiers --------+-----------------------+----------- nome1 | character varying(40) | nome2 | character varying(40) | bdteste=# bdteste=# select version(); version -------------------------------------------------------------------------------------------------- PostgreSQL 8.4.0 on i686-pc-linux-gnu, compiled by GCC gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3, 32-bit (1 row) </postgresql-8.4> 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. -- Fabrízio de Royes Mello >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral