Re: Where the info is stored - Mailing list pgsql-general
| From | Igor Korot |
|---|---|
| Subject | Re: Where the info is stored |
| Date | |
| Msg-id | CA+FnnTwaK-Z26KeqoPsAkKPJHo9OjMJdSse8tXE-KSFV9y0g_Q@mail.gmail.com Whole thread |
| In response to | Re: Where the info is stored ("David G. Johnston" <david.g.johnston@gmail.com>) |
| Responses |
Re: Where the info is stored
|
| List | pgsql-general |
Hi, David, On Sat, Feb 28, 2026 at 7:42 PM David G. Johnston <david.g.johnston@gmail.com> wrote: > > On Sat, Feb 28, 2026 at 6:34 PM Igor Korot <ikorot01@gmail.com> wrote: >> >> And why there is no WHERE populated? >> >> Thank you. >> >> On Sat, Feb 28, 2026 at 7:05 PM Igor Korot <ikorot01@gmail.com> wrote: >> > >> > Hi, David, >> > >> > On Sat, Feb 28, 2026 at 7:02 PM David G. Johnston >> > <david.g.johnston@gmail.com> wrote: >> > > >> > > On Saturday, February 28, 2026, Igor Korot <ikorot01@gmail.com> wrote: >> > >> >> > >> FROM pg_constraint co, pg_namespace n, pg_class >> > >> >> > >> As you can see only the constraint name and the tablespace are >> > >> populated correctly. >> > > >> > > >> > > Constraints don’t have included columns. Only indexes do. You need to query the index, not the constraint. >> > >> > I literally copied your query into my code and it didn't populated >> > anything... >> > >> > Am I missing something? >> > > I trimmed your query to emphasize/point-out that you were querying pg_constraint and that doing so to find included columnsis doomed to failure (I suppose it could have been used to find the index, but in this case it wasn't. I haven'texplored that approach.). You should step back and consider why you thought the fragment I included in my reply,a bare FROM clause, would somehow be executable since it is in no way a valid query. draft=# WITH idx AS( SELECT i.indexrelid, i.indrelid, i.indnkeyatts, i.indkey::int2[] AS indkey FROM pg_index i, pg_class ic, pg_namespace ns WHERE ic.oid = i.indexrelid AND ns.oid = ic.relnamespace AND ns.nspname = 'public' AND ic.relname = 'leagues_new' ), ords AS ( SELECT idx.indexrelid, idx.indrelid, idx.indnkeyatts, s.ord, idx.indkey[s.ord] AS attnum FROM idx CROSS JOIN LATERAL generate_subscripts(idx.indkey, 1) AS s(ord) ) SELECT ns.nspname, ic.relname, tc.relname, a.attname, CASE WHEN ords.ord < ords.indnkeyatts THEN 'key' ELSE 'include' END, ords.ord + 1 AS index_position FROM pg_attribute a, ords, pg_class ic, pg_namespace ns, pg_class tc WHERE a.attrelid = ords.indrelid AND a.attnum = ords.attnum AND NOT a.attisdropped AND ic.oid = ords.indexrelid AND ns.oid = ic.relnamespace AND tc.oid = ords.indrelid AND ords.ord > ords.indnkeyatts; nspname | relname | relname | attname | case | index_position ---------+---------+---------+---------+------+---------------- (0 rows) draft=# This is an exact replica of your query from the first post where you put it. I only removed AS statements. As you can see 0 rows are returned. Thank you. > > David J. >
pgsql-general by date: