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


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]


Reply via email to