В то время как я пытался решить проблему (спрошенный относительно Переполнения стека), я просто наталкиваюсь на том типе результата, когда я хочу видеть, какие данные хранятся в Перечислении:
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+-------------+---------------+------+----------------+-------+-------------------+-------------
public | rights_enum | rights_enum | 4 | Administrateur+| cvt | |
| | | | Utilisateur | | |
где rights_enum
мой перечисляемый тип. Как Вы видите, у меня есть 2 значения в этом Перечислении:
Administrateur
Utilisateur
Из чего значение +
рядом со значениями Элемента (рядом с Administrateur
)? Я не думаю, что это - просто что-то для дисплея.
Редактирование: Вот моя пользовательская таблица (почти пуста из-за разработки):
id | email | phone | hashpass | nom | prenom | rights
----+---------------------+----------------+--------------------------------------------------------------+--------+--------+-------------
1 | micheljean@test.com | 06 54 32 12 34 | $2y$10$5HMULhzKrWSEfCeGklyCueVVwySPFKMqrxw/EqF7V0q3FM99Ejvnu | michel | jean | Utilisateur
, Каково значение + рядом со значениями Элемента (рядом с Administrateur)? Я не думаю, что это - просто что-то для дисплея.
Короткий ответ: Да это. +
справа от поля представляет новую строку.
ответ Long: показанный результат прибывает от \dT+
в psql с перечислимым типом как параметр.
, Например:
=> create type mytype as enum('one','two','three');
=> \dT+ mytype
List of data types
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+--------+---------------+------+----------+--------+-------------------+-------------
public | mytype | mytype | 4 | one +| daniel | |
| | | | two +| | |
| | | | three | | |
Эта команда отправляет запрос, который Вы видите с установкой: \set ECHO_HIDDEN on
=> \set ECHO_HIDDEN on
=> \dT+ mytype
********* QUERY **********
SELECT n.nspname as "Schema",
pg_catalog.format_type(t.oid, NULL) AS "Name",
t.typname AS "Internal name",
CASE WHEN t.typrelid != 0
THEN CAST('tuple' AS pg_catalog.text)
WHEN t.typlen < 0
THEN CAST('var' AS pg_catalog.text)
ELSE CAST(t.typlen AS pg_catalog.text)
END AS "Size",
pg_catalog.array_to_string(
ARRAY(
SELECT e.enumlabel
FROM pg_catalog.pg_enum e
WHERE e.enumtypid = t.oid
ORDER BY e.enumsortorder
),
E'\n'
) AS "Elements",
pg_catalog.pg_get_userbyid(t.typowner) AS "Owner",
pg_catalog.array_to_string(t.typacl, E'\n') AS "Access privileges",
pg_catalog.obj_description(t.oid, 'pg_type') as "Description"
FROM pg_catalog.pg_type t
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid))
AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid)
AND (t.typname OPERATOR(pg_catalog.~) '^(mytype) Затем можно найти источник этих новых строк: они прибывают от pg_catalog.array_to_string()
с перечислимыми маркировками, переданными как массив и E'\n'
как разделитель, иначе перевод строки.
OR pg_catalog.format_type(t.oid, NULL) OPERATOR(pg_catalog.~) '^(mytype) Затем можно найти источник этих новых строк: они прибывают от pg_catalog.array_to_string()
с перечислимыми маркировками, переданными как массив и E'\n'
как разделитель, иначе перевод строки.
)
AND pg_catalog.pg_type_is_visible(t.oid)
ORDER BY 1, 2;
Затем можно найти источник этих новых строк: они прибывают от pg_catalog.array_to_string()
с перечислимыми маркировками, переданными как массив и E'\n'
как разделитель, иначе перевод строки.
Администратор в таблице отмечен +
, чтобы указать, что человек, который в настоящее время получает доступ к базе данных, является администратором базы данных, не неадминистраторским пользователем.