Hi, Adrian, On Sat, Mar 14, 2026 at 6:30 PM Adrian Klaver <[email protected]> wrote: > > On 3/14/26 9:56 AM, Igor Korot wrote: > > Hi, > > > > On Sat, Mar 14, 2026 at 8:51 AM David G. Johnston > > <[email protected] <mailto:[email protected]>> wrote: > > > > On Saturday, March 14, 2026, Adrian Klaver > > <[email protected] <mailto:[email protected]>> 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 > [email protected]
