powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / необходимые характеристики функции для ее детерминизации
25 сообщений из 30, страница 1 из 2
необходимые характеристики функции для ее детерминизации
    #39909101
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некоторая UDF, использующая внутри запрос к таблице, на основании результата которого функция возвращает значение.
Есть мнение, что делать функцию, использующую объекты БД для получения результата, детерминированной - априори неправильный подход, судя по канонам документации (мол, Oracle не гарантирует верный результат..).
Я же считаю, что если есть уверенность в том, вышеупомянутые объекты изменяются не так часто (в масштабах длительности запроса, использующего функцию, изменений данных нет), то нет и подобных рисков.

Кто-нибудь может сказать что-то дельное?
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39909112
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
Кто-нибудь может сказать что-то
Ты же сам понимаешь, что маленький риск получения несогласованных данных есть. Насколько критична величина этой малости - только тебе решать.
--Eugene--
дельное?
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39909160
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
Есть некоторая UDF, использующая внутри запрос к таблице, на основании результата которого функция возвращает значение.
Есть мнение, что делать функцию, использующую объекты БД для получения результата, детерминированной - априори неправильный подход, судя по канонам документации (мол, Oracle не гарантирует верный результат..).
Я же считаю, что если есть уверенность в том, вышеупомянутые объекты изменяются не так часто (в масштабах длительности запроса, использующего функцию, изменений данных нет), то нет и подобных рисков .

Кто-нибудь может сказать что-то дельное?


Tы похоже путаешь мягкое с теплым - детерминированность c statement level read consistency. UDF использующая внутри запрос к таблице потенциально нарушaет statement level read consistency а не с детерминированность и посему даст (с точки зрения read consistency) неправильный результат если запрос внутри UDF использует данные закоммиченные после начала запросa.
A лечить это детерминированностью мягко говоря не то.

SY.
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39909170
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--, потом кто-нибудь создаст индекс по этой функции и будет вообще интересно :)
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39909764
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
лечить это детерминированностью мягко говоря не то
а если функция будет обычная, но обернута в (select udf(a, b) from dual) ?
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910005
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
а если функция будет обычная, но обернута в (select udf(a, b) from dual) ?


Все будет зависеть от оптимайзера.

SY.
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910035
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
--Eugene--,

ты бы объяснил, что конкретно ты хочешь? Если просто statement level read consistency, то создай оператор для этой функции: http://orasql.org/2014/03/31/deterministic-functions-result_cache-and-operators/
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910142
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender
ты бы объяснил, что конкретно ты хочешь?
хочу упростить запрос вида:
Код: plsql
1.
2.
3.
4.
5.
6.
select
		t.column_1 * (select <similar-non-trivial-query-using-column_1-and-literal_1>) as a_1,
		t.column_2 * (select <similar-non-trivial-query-using-column_2-and-literal_2>) as a_2,
		...
		t.column_N * (select <similar-non-trivial-query-using-column_N-and-literal_N>) as a_N
	from table_1 t


к такому виду:
Код: plsql
1.
2.
3.
4.
5.
6.
select
		t.column_1 * deterministic_function(t.column_1,literal_1) as a_1,
		t.column_2 * deterministic_function(t.column_2,literal_2) as a_2,
		...
		t.column_N * deterministic_function(t.column_N,literal_N) as a_N
	from table_1 t


или:
Код: plsql
1.
2.
3.
4.
5.
6.
select
		t.column_1 * (select regular_function(t.column_1,literal_1) from dual) as a_1,
		t.column_2 * (select regular_function(t.column_2,literal_2) from dual) as a_2,
		...
		t.column_N * (select regular_function(t.column_N,literal_N) from dual) as a_N
	from table_1 t


функцию уровня схемы мне делать никто не даст.
оператор создавать мне тоже никто не позволит.
прикручивать result_cache - еще более сомнительное мероприятие
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910145
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
никто не даст
Версия, сестра!?
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910148
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.2.0.1
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910150
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
12.2.0.1
с функцией - не?
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910153
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
с функцией - не?
нельзя ли чуть яснее?
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910178
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
Elic
с функцией - не?
нельзя ли чуть яснее?
Код: plsql
1.
with function
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910182
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Код: plsql
1.
with function

ааа,
не, не канает
у меня там INSERT SELECT
насколько я понял, DML with function не работает (могу ошибаться, и буду благодарен рабочему примеру)
но, сколько я не пробовал, у меня не вышло ее туда присунуть, хотя это первое о чем я подумал
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910183
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
у меня
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM , мля.
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910185
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
хотя это первое о чем
Ты хочешь кого-то наи&ать
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910188
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Ты хочешь кого-то наи&ать
не понял наезда
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910203
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

дока -> хинт
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910205
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
не понял наезда
С НГ, лошарра
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910207
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй
--Eugene--,

дока -> хинт
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create table tmp$tab1(a number)
/
Table created.

begin
insert /*+WITH_PLSQL*/ into tmp$tab1(a)
with
function udf(p1 number) return number is begin return p1; end;
select udf(1) from dual;
end;
/
>> begin
insert /*+WITH_PLSQL*/ into tmp$tab1(a)
with
function udf(p1 number) return number is begin return p1; end;
select udf(1) from dual;
end;
Error at line 1
ORA-06550: Строка 4, столбец 10:
PL/SQL: ORA-00905: отсутствует ключевое слово
ORA-06550: Строка 2, столбец 1:
PL/SQL: SQL Statement ignored
ORA-06550: Строка 5, столбец 1:
PLS-00103: Встретился символ "SELECT" 


я что-то делаю не так?
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910209
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t.column_1 * (select <similar-non-trivial-query-using-column_1-and-literal_1>) выполнится по правилу statement level read consistency, т.е. на SCN начала основного SELECTа. А вот t.column_1 * deterministic_function(t.column_1,literal_1), даже если предположить что вызов deterministic_function выполнится один раз, выполнится он не на SCN начала основного SELECTа а на SCN моментa FETCHa данной строки. Вариант (select regular_function(t.column_1,literal_1) from dual) выполнится на SCN начала основного SELECTа хотя для dual это по-барабану, а вот select <similar-non-trivial-query-using-column_1-and-literal_1> который будет засунут в regular_function(t.column_1,literal_1) на (грубо говоря) SCN моментa FETCHa данной строки. Так-что еще раз determinisitic и statement level read consistency это теплое и мягкое.

SY.
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910211
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--

я что-то делаю не так?


Скорее всего у тебяверсия клиента старая и не поддерживает WITH FUNCTION.

SY.
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910213
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
грубо говоря)
Соломон, с НГ ...
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910216
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
--Eugene--

я что-то делаю не так?


Скорее всего у тебяверсия клиента старая и не поддерживает WITH FUNCTION.

SY.


Упс, не заметил та используешь WITH FUNCTION в PL/SQL - не поддерживается да и смысла никакого. Просто определи ф-цию в PL/SQL.

SY.
...
Рейтинг: 0 / 0
необходимые характеристики функции для ее детерминизации
    #39910219
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY


Упс, не заметил та используешь WITH FUNCTION в PL/SQL - не поддерживается да и смысла никакого. Просто определи ф-цию в PL/SQL.

SY.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> declare
  2  v_res number;
  3  function udf(p1 number) return number is begin return p1; end;
  4  begin
  5  v_res := udf(1);
  6  insert into tmp$tab1(a) values(v_res);
  7  end;
  8  /

PL/SQL procedure successfully completed.

SQL>



SY.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / необходимые характеристики функции для ее детерминизации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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