Re: Does included columns part of the PK - Mailing list pgsql-general
| From | Igor Korot |
|---|---|
| Subject | Re: Does included columns part of the PK |
| Date | |
| Msg-id | CA+FnnTwLvp1wweqWJkw1+sg4x+pM_oGVmfc-3TaPpE_557=A_A@mail.gmail.com Whole thread |
| In response to | Re: Does included columns part of the PK (Adrian Klaver <adrian.klaver@aklaver.com>) |
| Responses |
Re: Does included columns part of the PK
|
| List | pgsql-general |
Hi, Adrian, On Sat, Mar 14, 2026 at 6:30 PM Adrian Klaver <adrian.klaver@aklaver.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.g.johnston@gmail.com <mailto:david.g.johnston@gmail.com>> wrote: > > > > On Saturday, March 14, 2026, Adrian Klaver > > <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.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.klaver@aklaver.com
pgsql-general by date: