Параметры сортировки столбца хранятся в attcollation
строки pg_attribute
столбца.Значение 100 означает «параметры сортировки по умолчанию», то есть параметры сортировки базы данных, хранящиеся в pg_database
.
. Это способ найти параметры сортировки всех столбцов таблицы:
WITH defcoll AS (
SELECT datcollate AS coll
FROM pg_database
WHERE datname = current_database()
)
SELECT a.attname,
CASE WHEN c.collname = 'default'
THEN defcoll.coll
ELSE c.collname
END AS collation
FROM pg_attribute AS a
CROSS JOIN defcoll
LEFT JOIN pg_collation AS c ON a.attcollation = c.oid
WHERE a.attrelid = 'test1c'::regclass
AND a.attnum > 0
ORDER BY attnum;
attname | collation
---------+-----------
id |
content | C
(2 rows)
Для индексов параметры сортировки хранятся в столбце pg_index.indcollation
:
WITH defcoll AS (
SELECT datcollate AS coll
FROM pg_database
WHERE datname = current_database()
)
SELECT icol.pos,
CASE WHEN c.collname = 'default'
THEN defcoll.coll
ELSE c.collname
END AS collation
FROM pg_index AS i
CROSS JOIN unnest(i.indcollation) WITH ORDINALITY AS icol(coll, pos)
CROSS JOIN defcoll
LEFT JOIN pg_collation AS c ON c.oid = icol.coll
WHERE i.indexrelid = 'idx_test'::regclass
ORDER BY icol.pos;
pos | collation
-----+-----------
1 | C
(1 row)