Re: Composite types questions - Mailing list pgsql-general

From Merlin Moncure
Subject Re: Composite types questions
Date
Msg-id b42b73151001110703y5f31b45fi8223ea45a7fc747b@mail.gmail.com
Whole thread Raw
In response to Composite types questions  (Vincenzo Romano <vincenzo.romano@notorand.it>)
Responses Re: Composite types questions  (Vincenzo Romano <vincenzo.romano@notorand.it>)
List pgsql-general
On Mon, Jan 11, 2010 at 5:14 AM, Vincenzo Romano
<vincenzo.romano@notorand.it> wrote:
> Hi all.
>
> It's not clear to me how composite values are used in  conditions (WHERE/CHECK).
> In my case I have something like this:
>
> -- begin snippet
>
> CREATE TABLE test_tab (
>  col1 timestamp not null,
>  col2 int8 not null,
>  col3 text not null
> );
>
> CREATE INDEX i_test_tab_col1 ON test_tab( col1 );
>
> SELECT *
>  FROM test_tab
>  WHERE (date_trunc('week',col1),col2,col3)=('val1'::timestamp,val2,'val3')
> ;
> -- end snippet
>
> For a number of reasons I cannot split the the WHERE condition in the
> "usual" AND-list.
> My questions are:
> Can the i_test_tab_col1 INDEX be taken into account from the query planner?
me
yes

> What if I define a functional index on col1?

sure (if you pull the data the way it is done in the function)

> Does the same apply to TABLE-level CHECK conditions?

probably.

You are not really asking about composite types.  What you
demonstrated is row constructor syntax...they are similar but not the
same.  For the most part, at least from 8.2 onwards, postgres is
pretty smart about row constructor and should do what you want with
minimal fuss.

merlin

pgsql-general by date:

Previous
From: Merlin Moncure
Date:
Subject: Re: Set Returning C-Function with cache over multiple calls (with different arguments)
Next
From: Tom Lane
Date:
Subject: Re: pg.dropped