при редактировании VIEW не изменяется алиас

Обсуждение возникших проблем, предложений и ошибок dbForge for Oracle
Закрыто
Nag
Сообщения: 60
Зарегистрирован: Чт 29 сен 2011 10:26

при редактировании VIEW не изменяется алиас

Сообщение Nag » Пн 23 июл 2012 06:39

Создаем пару вьюшек:

Код: Выделить всё

create or replace view v_test_base(
    f01
)
as
select
    1 as f01
from
    dual;

create or replace view v_test_main(
    f01
)
as
select
    f01
from
    v_test_base;
Открываем обе вьюшки в редакторах. В первой VIEW в редакторе изменяем алиас поля в запросе на my_data, сохраняем (Ctrl+S). На вкладке "Текст" видим, что алиас вьюшки тоже автоматом изменился:

Код: Выделить всё

CREATE OR REPLACE VIEW V_TEST_BASE (
  MY_DATA
)
AS
select
    1 as my_data
from
    dual;
Теперь, очевидно, вторая VIEW стала инвалидной. Посему, аналогично меняем в редакторе имя поля в запросе на my_data и жмякаем "Сохранить". После этого на вкладке "Текст" видим, что алиас вьюшки остался прежним, несмотря на изменение имени поля в запросе:

Код: Выделить всё

CREATE OR REPLACE VIEW V_TEST_MAIN (
  F01
)
AS
select
    my_data
from
    v_test_base;
Привыкнув к тому, что алиасы VIEW изменяются автоматичеки в соответствии с именами полей (как в первом случае), я не ожидал такого подвоха со стороны dbForge во втором, и не сразу втупил, почему у меня приложение грязно ругается про "недопустимый идентификатор" при обращении ко второй VIEW, хотя поля указаны (казалось бы) правильно.
Вопрос к разрабам: это так и задумано?

ZVanoZ
Сообщения: 79
Зарегистрирован: Чт 18 ноя 2010 16:50

Re: при редактировании VIEW не изменяется алиас

Сообщение ZVanoZ » Пн 23 июл 2012 07:43

Nag, я правильно понял?
Ожидалось что после смены имени поля в V_TEST_MAIN с "F01" на "MY_DATA" автоматически в зависимом представлении V_TEST_MAIN будет изменено "f01" на "MY_DATA" и в теле запроса и в заголовочной части.

Если да, то это было бы медвежьей услугой:
1. Весь код уже завязан на заголовочную часть.
И АВТОМАТИЧЕСКОЕ каскадное изменение заголовочной части зависимых представлений вызовет такие баги в ПО, что краев не соберешь.
2. Разработчик будет лишен возможности создавать псевдонимы столбцам т.к. они постоянно будут перебиваться функцией автоматического переименования.
3. Что произойдет, если новое название переименовываемого столбеца в V_TEST_MAIN уже присутствует в V_TEST_MAIN?

Nag
Сообщения: 60
Зарегистрирован: Чт 29 сен 2011 10:26

Re: при редактировании VIEW не изменяется алиас

Сообщение Nag » Пн 23 июл 2012 08:09

Нет, речь шла не про каскадное переименование. А про "переименование" алиаса ТОЛЬКО в той вьюхе, которую в данный момент редактируем. В случае с V_TEST_BASE такое автоматичекское "переименование" имело место быть, а вот при редактировании V_TEST_MAIN алиас остался "старым", несмотря на переименование поля. Т.е. нет "одинаковости" поведения редактора VIEW при одних и тех же действиях разработчика.

Alexander

Re: при редактировании VIEW не изменяется алиас

Сообщение Alexander » Пн 23 июл 2012 17:45

В данный момент мы занимаемся исследованием данной ситуации и свяжемся с Вами, как только проблема будет выявлена.

Alexander

Re: при редактировании VIEW не изменяется алиас

Сообщение Alexander » Ср 25 июл 2012 11:22

Таково поведение dbForge Studio for Oracle для невалидных представлений. Есть вторая сторона медали, если были прописаны алиасы отличные от имени колонок, а нужно изменить имя колонки, то алиасы не будут утеряны.

Nag
Сообщения: 60
Зарегистрирован: Чт 29 сен 2011 10:26

Re: при редактировании VIEW не изменяется алиас

Сообщение Nag » Ср 25 июл 2012 12:15

Alexander писал(а):Таково поведение dbForge Studio for Oracle для невалидных представлений.
Представление V_TEST_MAIN после изменения в редакторе имени поля выборки является валидным и нормально сохраняется. Чем это сохранение принципиально отличается от сохранения любой другой отредактированной валидной вьюшки, где алиасы изменяются автоматом, согласно именам полей выборки?
Alexander писал(а):Есть вторая сторона медали, если были прописаны алиасы отличные от имени колонок, а нужно изменить имя колонки, то алиасы не будут утеряны.
Опять же, если у валидной вьюшки прописаны алиасы полей, отличные от имен в выборке, и я изменю выборку, то dbFogre молча "утеряет" перекрывающие алиасы вьюшки, приведя их в соответствие с выборкой. Почему в этом случае разработчики dbForge сочли возможным изменить алиасы, а в случае с редактированием изначально инвалидной вьюшки - нет?

Пример. Создаем новую вьюшу с ипользованием редактора, на вкладке "Столбцы" для поля выборки F01 задаем алиас A01, сохраняем. Получаем такой текст:

Код: Выделить всё

CREATE OR REPLACE VIEW XXX.V_TEST_01 (
  A01
)
AS
  select
    1 as f01
from
    dual;
Переключаемся на вкладку "Дизайн" и в запросе исправляем f01 на n01, сохраняем. На вкладке "Текст" видим:

Код: Выделить всё

CREATE OR REPLACE VIEW XXX.V_TEST_01 (
  N01
)
AS
  select
    1 as n01
from
    dual;

Alexander

Re: при редактировании VIEW не изменяется алиас

Сообщение Alexander » Ср 25 июл 2012 13:20

Почему в этом случае разработчики dbForge сочли возможным изменить алиасы, а в случае с редактированием изначально инвалидной вьюшки - нет?
Вы можете изменять алиасы представления с любым статусом на вкладке Columns. А механизм сохранения алиасов, при условии совпадении количества колонок, применим только для невалидных представлений.

Nag
Сообщения: 60
Зарегистрирован: Чт 29 сен 2011 10:26

Re: при редактировании VIEW не изменяется алиас

Сообщение Nag » Ср 25 июл 2012 13:59

Alexander писал(а):А механизм сохранения алиасов, при условии совпадении количества колонок, применим только для невалидных представлений.
Позвольте поинтересоваться, что призвана обозначать фраза "при условии совпадении количества колонок"? А с каких это пор количество полей в запросе VIEW и количество "выходных" алиасов для них может отличаться? Вроде бы, ORA-01730 еще никто не отменял.
И зачем вобще к инвалидным VIEW (и только к ним!) "применять" какие-то "механизмы"? Этот "механизм" специально для такой ситуации был разработан?
Системный архитектор: "Представляете, если кто-то отредактирует инвалидную вьюху и, не дай Бог, сделает ее валидной и сохранит, изменив алиасы. Это катастрофа! Надо обязательно предусмотреть механизм защиты от изменения алиасов инвалидной вьюхи".
Так это было?
Я сохраняю нормальную валидную вьюху, какая разница, в каком состоянии она была перед этим?

Закрыто