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