Re: Does included columns part of the PK

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Igor Korot <ikorot01(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Does included columns part of the PK
Date: 2026-03-16 21:40:20
Message-ID: da939085-813e-4505-880d-aafa91c8509d@aklaver.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-odbc

On 3/16/26 2:30 PM, Adrian Klaver wrote:
> On 3/16/26 11:47 AM, Igor Korot wrote:
>
> Reply to list also.
> Ccing list.
>> Adrian,
>>
>>
>>
>> On Mon, Mar 16, 2026, 8:03 AM Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com
>> <mailto:adrian(dot)klaver(at)aklaver(dot)com>> wrote:
>>
>>     On 3/15/26 6:23 PM, Igor Korot wrote:
>>      > Hi, Adrian,
>>      >
>>      > Here is the log file from running in ODBC mode: https://bpa.st/
>>     Z2DWG <https://bpa.st/Z2DWG>
>>
>>     I have no idea what this is trying to show?
>>
>>
>> The log shows ODBC connection and then at the end - call to
>> SQLPrimaryKeys().
>
> Where?
>
> I don't see that in either the link you posted or the text file Greg
> sent to the list.
>
>>
>> If you run it against the table I posted above, you will get 3 fields.
>> Whereas it should be just one.
>
> Again, run it how?

Alright I see what you are talking about now. I'm not using the ODBC
driver just it's query. In psql :

CREATE TABLE leagues_new (
id serial,
name varchar(100),
drafttype smallint,
scoringtype smallint,
roundvalues smallint,
leaguetype char(5),
salary integer,
benchplayers smallint,
PRIMARY KEY (id) INCLUDE (drafttype, scoringtype
) WITH (fillfactor = 50, deduplicate_items = OFF)
);

SELECT
ta.attname,
ia.attnum,
ic.relname,
n.nspname,
tc.relname
FROM
pg_catalog.pg_attribute ta,
pg_catalog.pg_attribute ia,
pg_catalog.pg_class tc,
pg_catalog.pg_index i,
pg_catalog.pg_namespace n,
pg_catalog.pg_class ic
WHERE
tc.relname = 'leagues_new'
AND n.nspname = 'public'
AND tc.oid = i.indrelid
AND n.oid = tc.relnamespace
AND i.indisprimary = 't'
AND ia.attrelid = i.indexrelid
AND ta.attrelid = i.indrelid
AND ta.attnum = i.indkey[ia.attnum - 1]
AND (NOT ta.attisdropped)
AND (NOT ia.attisdropped)
AND ic.oid = i.indexrelid
ORDER BY
ia.attnum;

yields

attname | attnum | relname | nspname | relname
-------------+--------+------------------+---------+-------------
id | 1 | leagues_new_pkey | public | leagues_new
drafttype | 2 | leagues_new_pkey | public | leagues_new
scoringtype | 3 | leagues_new_pkey | public | leagues_new

>
>>
>> Thank you.
>>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Igor Korot 2026-03-16 21:51:22 Re: Does included columns part of the PK
Previous Message Adrian Klaver 2026-03-16 21:30:32 Re: Does included columns part of the PK

Browse pgsql-odbc by date

  From Date Subject
Next Message Igor Korot 2026-03-16 21:51:22 Re: Does included columns part of the PK
Previous Message Adrian Klaver 2026-03-16 21:30:32 Re: Does included columns part of the PK