From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Sonny <sonny(dot)chee(at)gmail(dot)com> |
Cc: | postgres list <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Odd unfamiliar Postgres SQL syntax |
Date: | 2017-07-31 19:02:13 |
Message-ID: | CAFj8pRA_QepdLt6Jyt8P6-ya4b2ye1vm9a+kjU-ncanKBdpXfA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi
2017-07-31 18:42 GMT+02:00 Sonny <sonny(dot)chee(at)gmail(dot)com>:
> Hey Guys
>
> Can someone help me understand the following SQL? What does the notation
> (i.keys).n and (i.keys).x mean... as indicated by the <<<=== in the query.
> Any help would be appreciated.
>
>
> SELECT
> NULL AS TABLE_CAT
> , n.nspname AS TABLE_SCHEM
> , ct.relname AS TABLE_NAME
> , a.attname AS COLUMN_NAME
> , (i.keys).n AS KEY_SEQ <<<==============
> , ci.relname AS PK_NAME
> FROM
> pg_catalog.pg_class ct
> JOIN pg_catalog.pg_attribute a
> ON (ct.oid = a.attrelid)
> JOIN pg_catalog.pg_namespace n
> ON (ct.relnamespace = n.oid)
> JOIN (
> SELECT
> i.indexrelid
> , i.indrelid
> , i.indisprimary
> , information_schema._pg_expandarray(i.indkey) AS keys
> FROM pg_catalog.pg_index i
> ) i
> ON (a.attnum = (i.keys).x AND a.attrelid = i.indrelid)
> <<<===========
> JOIN pg_catalog.pg_class ci
> ON (ci.oid = i.indexrelid)
> WHERE
> n.nspname = 'edw'
> AND ct.relname = 'campaign_dim'
> AND i.indisprimary
> ORDER BY
> table_name
> , pk_name
> , key_seq;
>
>
It is used for a access to field of composite value
create type foo as (a int, b int);
create table xx (f1 foo, f2 foo);
insert into xx values(row(10,20), row(30,40));
postgres=# select * from xx;
┌─────────┬─────────┐
│ f1 │ f2 │
╞═════════╪═════════╡
│ (10,20) │ (30,40) │
└─────────┴─────────┘
(1 row)
postgres=# select (xx.f1).a from xx;
┌────┐
│ a │
╞════╡
│ 10 │
└────┘
(1 row)
Regards
Pavel
> --
> Sonny.
> ------------------------------------------------------------
> ----------------
> Be true to your work, your word, and your friend. Henry David Thoreau.
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2017-07-31 19:03:17 | Re: Odd unfamiliar Postgres SQL syntax |
Previous Message | David G. Johnston | 2017-07-31 19:01:14 | Re: Odd unfamiliar Postgres SQL syntax |