#amazon-web-services #amazon-redshift
#amazon-web-services #amazon-redshift
Вопрос:
Мы используем http://aws.amazon.com/redshift и я создаю / удаляю временные таблицы в отчетах. Иногда мы сталкиваемся со случаями, когда кто-то создал временную таблицу и не смог ее удалить.
В других базах данных, например PostgreSQL, на которых основан Redshift, я мог бы просто:
DROP TEMP TABLE IF EXISTS tblfoo;
Но это синтаксическая ошибка в Redshift. Я могу проверить наличие временных таблиц самостоятельно, используяhttp://docs.aws.amazon.com/redshift/latest/dg/r_STV_TBL_PERM.html но это работает, только если я суперпользователь, и я не запускаюсь как суперпользователь. Я мог бы также пойти и проглотить исключения, но с моей платформой отчетности я бы предпочел не делать этого.
Итак, как я могу, как обычный пользователь и без создания ошибок базы данных, условно удалить временную таблицу, если она существует?
Ответ №1:
Проведенный мной тест показал, что я могу видеть временные таблицы других пользователей в stv_tbl_perm, используя идентификатор не суперпользователя. Версия кластера, в которой я тестировал, — 1.0.797. Обратите внимание, что никакие пользователи не могут видеть временные таблицы других пользователей в pg_class.
Комментарии:
1. Клянусь, на прошлой неделе я получил сообщение об ошибке от
select * from stv_tbl_perm where temp = 1;
, но теперь это, кажется, работает. Это только что изменилось в Redshift??2. Не уверен. Рад, что теперь это работает для вас. Def хотел бы, чтобы в нее была встроена функция «если существует».