Re: Nombre de tabla entre parentesis

From: "Raul Andres Duque" <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, Oswaldo Hernández <listas(at)soft-com(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Nombre de tabla entre parentesis
Date: 2008-01-14 15:18:27
Message-ID: 00cc01c856c0$b7764470$5800a8c0@amadeus.net.co
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
To: "Oswaldo Hernández" <listas(at)soft-com(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Monday, January 14, 2008 9:33 AM
Subject: Re: [pgsql-es-ayuda] Nombre de tabla entre parentesis

> Oswaldo Hernández escribió:
>> Alvaro Herrera escribió:
>>> Oswaldo Hernández escribió:
>>>> Hola,
>>>>
>>>> Al desarrolar unas funciones nos hemos dado cuenta de que no esta
>>>> permitido poner el nombre de una tabla entre paréntesis:
>>>
>>>> ¿Es normal esto? ¿Hay algun motivo especial para que no se permita?
>>>
>>> ¿Porque no tiene sentido?
>>
>> No quiero decir que no tenga sentido,
>
> Me entendiste mal -- no quise decir que tu dijeras que no tenía sentido,
> sino que yo digo que no tiene sentido.
>
> En todo caso, las reglas de uso de parentesis en SELECT son complicadas.
> Echale un vistazo al codigo fuente si te place:
>
> https://projects.commandprompt.com/public/pgsql/browser/trunk/pgsql/src/backend/parser/gram.y#L6105
>
> La parte relevante es el table_ref (al que llegas despues de pasar por
> from_list, from_clause, simple_select, select_no_parens).
>
> Nota que lo siguiente si deberia funcionar, de acuerdo con mi lectura de
> la gramatica (linea 6570):
>
> select * from (foo) foo;
>
> Ah, el comentario en la linea 6579 explica el por que a tu pregunta
> inicial.
>

Y si generalizas y siempre tu aplicación parametrizas es una sentencia SQL
... por ejemplo si quieres la tabla "a" debes parametrizar "select * from a"
(podría ser transparente para el usuario que parametriza ya que tu
aplicación sería la que haga la "conversión") ... lo que no sé es si se
pierde algo de performance entre:

select * from a

y

select * from (select * from a)

Aunque lo que comenta Alvaro sería más sencillo de manajer: Siempre manejar
un alias de la tabla/consulta para que no te importe el tema de si pueden ir
o no los parentesis.

Atentamente,

RAUL DUQUE
Bogotá, Colombia

> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Johnny Verdugo 2008-01-14 15:20:10 problam instalacion postgis
Previous Message Alvaro Herrera 2008-01-14 14:50:44 Re: sobre transacciones...