powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / with materialize меняет данные
12 сообщений из 12, страница 1 из 1
with materialize меняет данные
    #39767827
chidoriami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, привет!
помогите, плиз, мой мир сходит с ума. оракл ведет себя странно (вроде)

есть супер длинный запрос вида
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with 
  sprint as (select --+ materialize ...)
, businessfields as (select...)
, issue as (select --+ materialize ...)
, issuefieldhistory as (select --+ materialize ...)
, sprintstartfields as (select ...)
, sprintendfields as (select ...)
, hierissue as (select ...)
, finalissue as (select ...)
, groupedview as (select ...)
, main_query as (select ...)
select epic_id, task_id from main_query where epic_id = 283200 --and task_id = 321651
;



в таком виде запрос выдает (и это правильно)
Код: plaintext
1.
2.
3.
EPIC_ID	TASK_ID
283200	321651
283200	321651
283200	321651

мне понадобилась группировка, и внезапно результат получился
Код: plaintext
1.
EPIC_ID	TASK_ID
283200	 283200 

я начала смотреть и выяснила, что если хоть что-то материализуется, то результат практически непредсказуем
значение второго поля (task_id) становится то 321651, то 283200
(причем некоторые запросы используются несколько раз, т.е. по умолчанию они материализуются)

иногда на результат влияет наличие фильтра на task_id
без этого фильтра поле может выглядеть как 321651
добавляю фильтр - ничего не возвращается

опытным путем выяснилось, что только если всем подзапросам поставить --+ inline - все ок!!

но это, во-первых, грустно, потому что материализация тут была бы полезна.

во-вторых, это что за?
объясните, плиз, или дайте ссылку на доку, если кто знает, в чем дело
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767828
chidoriami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767831
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
chidoriami,

план надо смотреть. Скорее всего, где-то неправильно трансформация срабатывает.
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767838
chidoriami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я смотрела планы, они в целом совпадали, кроме материализации
(сейчас не могу посмотреть, т. к. ушла с работы)
завтра посмотрю ещё раз.
только как план запроса может повлиять на значение столбца?
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767844
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chidoriamiушла с работыНе получается запрос - сразу увольняться!
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767848
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
chidoriamiя смотрела планы, они в целом совпадали, кроме материализации
(сейчас не могу посмотреть, т. к. ушла с работы)
завтра посмотрю ещё раз.
только как план запроса может повлиять на значение столбца?transitive closure +join/group-by elimination например. Вообще надо в идеале трассу 10053 или хотя бы dbms_sql2.expand_sql_text
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767856
Да ну
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chidoriamiтолько как план запроса может повлиять на значение столбца?
"where rownum..." или другая недетерминированность в подзапросах встречается?
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767886
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chidoriamiя начала смотреть и выяснила, что если хоть что-то материализуется, то результат практически непредсказуем
...
опытным путем выяснилось, что только если всем подзапросам поставить --+ inline - все ок!!
...
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Классический косяк оракла новой версии: "сложный запрос" + "materialize" = "непредсказуемый результат запроса".
Выхода два - либо самостоятельно нащупать фиктивное действие (дополнительная группировка, материализация), которое не исключит оптимизатор и оно исправит ситуацию, либо "материализовывать" вручную в отдельные таблицы.
Есть еще третий - обновить оракл, что-то версия старовата (не знаю, какая уж сейчас - последний раз как раз на 12.2.0.1 боролся с этими багами). Вдруг починили.
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767901
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENверсия старовата (не знаю, какая уж сейчас
OFF: вот уж действительно...
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767910
chidoriami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RA\/ENКлассический косяк оракла новой версии: "сложный запрос" + "materialize" = "непредсказуемый результат запроса".
Выхода два - либо самостоятельно нащупать фиктивное действие (дополнительная группировка, материализация), которое не исключит оптимизатор и оно исправит ситуацию, либо "материализовывать" вручную в отдельные таблицы.
Есть еще третий - обновить оракл, что-то версия старовата (не знаю, какая уж сейчас - последний раз как раз на 12.2.0.1 боролся с этими багами). Вдруг починили.
спасибо!
буду щупать или оставлю inline
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39767915
chidoriami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да ну"where rownum..." или другая недетерминированность в подзапросах встречается?
не, я первым делом проверила запрос на всякие глупости
нормальный запрос, сложная логика, но в плане соединений там всё прозрачно и просто
...
Рейтинг: 0 / 0
with materialize меняет данные
    #39768246
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
chidoriami,

сравни оригинальный запрос с dbms_utility.expand_sql_text(твой запрос), возможно уже это покажет ошибку трансформации.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / with materialize меняет данные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]