[pgsql-jp: 25449] Re: FETCH せずに select 文の各列の属性を取得したい

Mashiki mashiki @ yanah.com
2002年 3月 28日 (木) 11:36:18 JST


 Mashikiです。

>select 文に where false を追加し、定義情報取得時に行を取得しないようにす
>ることで、select 文中の式の評価を行わないようになりました。
>
> このとき注意しなければならないのは、where, group by, for updata, union,
>intersect, except, order by, having およびサブクエリが含まれている場合に
>where false を適切な場所に挿入しなければならないということで、独自に
>select 文を解析する必要があったということです。
> 基本的には from 区の後ろに入れればよいだけですが、from には複数のテー
>ブル名や as などが含まれる場合があり、from 区がどこまであるかの解析より
>も、from の後ろの区を探すほうが簡単そうだったので、from の後ろの区を探し
>その直前に where false を挿入するようにしました。
>
> この方法だと、今後 select 文の文法が変更・拡張された場合には独自解析部
>を作り直す必要があるのが気になるところではあります。

select * from (もとのSELECT文) T where false;

で囲ってあげれば機械的にいけると思います。



pgsql-jp メーリングリストの案内