Комментарии 8
А в какой версии postgres планируется замена \d на show tables? Я бы сказал, что это один из двух гигантских wtf'ов у постгри (второй — hba.conf с именами пользователей).
1. Не уверен, что это вообще планируется. Да и не очень понятно, почему это так критично? В качестве какого-то решения могу предложить:
2. Про hba.conf. Там есть возможность указать в файле групповую роль, тогда любой пользователь входящий в неё будет аутентифицироваться по этой строчке в hba. Таким образом в hba можно определить несколько видов аутентификации с групповыми ролями. Затем, при добавлении пользователя, редактировать hba не надо, надо только включить пользователя в нужную групповую роль.
Это если я правильно понял проблему.
demo=# \set show_tables '\\dt'
demo=# :show_tables air*
List of relations
Schema | Name | Type | Owner
----------+----------------+-------+-------
bookings | aircrafts_data | table | pal
bookings | airports_data | table | pal
(2 rows)
2. Про hba.conf. Там есть возможность указать в файле групповую роль, тогда любой пользователь входящий в неё будет аутентифицироваться по этой строчке в hba. Таким образом в hba можно определить несколько видов аутентификации с групповыми ролями. Затем, при добавлении пользователя, редактировать hba не надо, надо только включить пользователя в нужную групповую роль.
Это если я правильно понял проблему.
Среди всех современных БД, которые я видел, только \p \o \s \t \g \re \s \i \s \a \bi \g \wt \f
Да и не очень понятно, почему это так критично?
Потому что SHOW TABLES будет работать из любого клиента, а не только psql, и это гораздо удобней чем:
SELECT *
FROM pg_catalog.pg_tables
WHERE schemaname != 'pg_catalog' AND
schemaname != 'information_schema';
Видимо речь идет о команде SHOW TABLES в MySQL.
Должен ли PostgreSQL поддерживать команды из других СУБД? Разработчики постгреса так не считают. Для совместимости с другими СУБД есть стандарт SQL. И вот этот стнадарт в постгресе стараются поддерживать очень хорошо. А в стандарте SQL для доступа к объектам системного каталога предусмаотрена информационная схема. Она поддерживается, можно писать запросы к представлению с именем tables.
То, что длинный текст запроса можно «обернуть» в представление или функцию с коротким именем Вы наверное и так знаете.
Кстати замечу, что приведенный Вами запрос к pg_tables не полностью соответствует тому, что выдает show tables. Например будут показаны таблицы, к которым у пользователя нет доступа.
Должен ли PostgreSQL поддерживать команды из других СУБД? Разработчики постгреса так не считают. Для совместимости с другими СУБД есть стандарт SQL. И вот этот стнадарт в постгресе стараются поддерживать очень хорошо. А в стандарте SQL для доступа к объектам системного каталога предусмаотрена информационная схема. Она поддерживается, можно писать запросы к представлению с именем tables.
То, что длинный текст запроса можно «обернуть» в представление или функцию с коротким именем Вы наверное и так знаете.
Кстати замечу, что приведенный Вами запрос к pg_tables не полностью соответствует тому, что выдает show tables. Например будут показаны таблицы, к которым у пользователя нет доступа.
Уж слишком часто выходит мажорная версия. Каждый год. Раз в 3 года было бы нормально.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PostgreSQL 14: Часть 2 или «в тени тринадцатой» (Коммитфест 2020-09)