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

Responder a