Re: Does included columns part of the PK

From: Igor Korot <ikorot01(at)gmail(dot)com>
To: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
Cc: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Does included columns part of the PK
Date: 2026-03-15 06:24:38
Message-ID: CA+FnnTwLvp1wweqWJkw1+sg4x+pM_oGVmfc-3TaPpE_557=A_A@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-odbc

Hi, Adrian,

On Sat, Mar 14, 2026 at 6:30 PM Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> wrote:
>
> On 3/14/26 9:56 AM, Igor Korot wrote:
> > Hi,
> >
> > On Sat, Mar 14, 2026 at 8:51 AM David G. Johnston
> > <david(dot)g(dot)johnston(at)gmail(dot)com <mailto:david(dot)g(dot)johnston(at)gmail(dot)com>> wrote:
> >
> > On Saturday, March 14, 2026, Adrian Klaver
> > <adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>> wrote:
> >
> > On 3/14/26 12:09 AM, Igor Korot wrote:
> >
> > Hi, ALL,
> > Have one weird question ;-)
> >
> > When I connect with ODBC and call SQLPrimaryKey() the
> > function returns
> >
> >
> > Are you actually using the SQLPrimaryKeys(), not SQLPrimaryKey()?
> >
> > all fields including
> > "included" fields.
> >
> >
> > Define 'included' fields.
> >
> >
> > They are referring to the unique index that backs the PK constraint.
> >
> >
> > Not “they” - “He”. 😊
> >
> > And yes - that’s what I’m referring to.
>
> From here:
>
>
> https://www.ibm.com/docs/en/db2-for-zos/12.0.0?topic=functions-sqlprimarykeys-get-primary-key-columns-table:
>
> 1 TABLE_CAT VARCHAR(128) This is always null.
> 2 TABLE_SCHEM VARCHAR(128) The name of the schema containing TABLE_NAME.
> 3 TABLE_NAME VARCHAR(128) NOT NULL Name of the specified table.
> 4 COLUMN_NAME VARCHAR(128) NOT NULL Primary key column name.
> 5 KEY_SEQ SMALLINT NOT NULL Column sequence number in the primary key,
> starting with 1.
> 6 PK_NAME VARCHAR(128) Primary key identifier. Contains a null value if
> not applicable to the data
>
>

Lets start with the beginning:

draft=# 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 ));
CREATE TABLE
draft=#

> From here:
>
> https://github.com/postgresql-interfaces/psqlodbc/blob/main/info.c
>
> At line 4035 in SQLPrimaryKeys()
>
> For case 1
>
> /*
> * Simplified query to remove assumptions about number of
> * possible index columns. Courtesy of Tom Lane - thomas
> * 2000-03-21
> */
>
> [...]
>
> "select ta.attname, ia.attnum, ic.relname, n.nspname, tc.relname"
> " from pg_catalog.pg_attribute ta ... "
>
>
> case 2
>
> select ta.attname, ia.attnum, ic.relname, n.nspname, NULL"
> " from pg_catalog.pg_attribute ta, ..."
>
> If I am following correctly then:
>
> attname = column_name
> attnum = key_seq
> ic.relname = pk_name
> nspname = table_schem
> tc.relname = table_name
>
>
> So how are using it in your code and what are the actual results?
>
> Also what is showing up in the Postgres logs?
>
> >
> > Thank you.
> >
> >
> > David J.
> >
>
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message rob stone 2026-03-15 07:11:59 Using \copy to populate a table
Previous Message Adrian Klaver 2026-03-14 23:30:19 Re: Does included columns part of the PK

Browse pgsql-odbc by date

  From Date Subject
Next Message Adrian Klaver 2026-03-15 15:34:13 Re: Does included columns part of the PK
Previous Message Adrian Klaver 2026-03-14 23:30:19 Re: Does included columns part of the PK