Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sysdate in parallel / 5 сообщений из 5, страница 1 из 1
08.07.2020, 15:45
    #39977477
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sysdate in parallel
Всем привет.

Может кто-нибудь прояснить или дать тынц на работу sysdate в параллель.
Небольшой тесткейс:

ddl
Код: plsql
1.
2.
3.
4.
5.
drop table dropme_trg;
create table dropme_trg (d date) pctfree 0;

drop table dropme_src;
create table dropme_src pctfree 0 as select level as a from dual connect by level < 100001;

sysdate in parallel
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
set serveroutput on
declare
    v_cnt number;
    v_ins_cnt number;
begin
    -- гоняем до 1000 итераций, чтобы хватило точно
    for i in 1..1000 loop
    EXECUTE IMMEDIATE 'truncate table dropme_trg';
    INSERT /*+ APPEND */ INTO dropme_trg (d) 
     SELECT /*+ PARALLEL(4)*/ DISTINCT sysdate FROM  dropme_src;
      v_cnt := sql%rowcount;
    dbms_output.put_line(I || ' : ' || v_cnt);
    commit;
    if v_cnt > 1 THEN
        select count(1) into v_ins_cnt from dropme_trg;
        dbms_output.put_line( 'Inserted rows:' || v_ins_cnt);
        exit;
    end if;
    end loop;
end;
/ 


... 
178 : 1
179 : 1
180 : 1
181 : 2
Inserted rows:2


select * from dropme_trg;

D
--------------------
08.07.2020 15:40:26
08.07.2020 15:40:26


В результате выполнения distinct sysdate в таблице 2 одинаковых значения. Если заменить sysdate на systimestamp или current_date или убрать parallel, то все работае корректно.

P.S. Повторяется на 12.2, 18.6, 19.3 и 19.6
P.P.S. На 11.2 не воспроизводится
...
Рейтинг: 0 / 0
08.07.2020, 16:38
    #39977487
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sysdate in parallel
mlc
Всем привет.

Может кто-нибудь прояснить или дать тынц на работу sysdate в параллель.
Небольшой тесткейс:

ddl
Код: plsql
1.
2.
3.
4.
5.
drop table dropme_trg;
create table dropme_trg (d date) pctfree 0;

drop table dropme_src;
create table dropme_src pctfree 0 as select level as a from dual connect by level < 100001;

sysdate in parallel
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
set serveroutput on
declare
    v_cnt number;
    v_ins_cnt number;
begin
    -- гоняем до 1000 итераций, чтобы хватило точно
    for i in 1..1000 loop
    EXECUTE IMMEDIATE 'truncate table dropme_trg';
    INSERT /*+ APPEND */ INTO dropme_trg (d) 
     SELECT /*+ PARALLEL(4)*/ DISTINCT sysdate FROM  dropme_src;
      v_cnt := sql%rowcount;
    dbms_output.put_line(I || ' : ' || v_cnt);
    commit;
    if v_cnt > 1 THEN
        select count(1) into v_ins_cnt from dropme_trg;
        dbms_output.put_line( 'Inserted rows:' || v_ins_cnt);
        exit;
    end if;
    end loop;
end;
/ 


... 
178 : 1
179 : 1
180 : 1
181 : 2
Inserted rows:2


select * from dropme_trg;

D
--------------------
08.07.2020 15:40:26
08.07.2020 15:40:26


В результате выполнения distinct sysdate в таблице 2 одинаковых значения. Если заменить sysdate на systimestamp или current_date или убрать parallel, то все работае корректно.

P.S. Повторяется на 12.2, 18.6, 19.3 и 19.6
P.P.S. На 11.2 не воспроизводится


я бы еще глянул есть ли оно без append хинта в insert
...
Рейтинг: 0 / 0
08.07.2020, 16:55
    #39977497
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sysdate in parallel
orawish,

Воспроизводится и без append.
...
Рейтинг: 0 / 0
08.07.2020, 17:44
    #39977528
Alexander Anokhin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sysdate in parallel
mlc
orawish,

Воспроизводится и без append.

И без insert тоже.

На мой взгляд это явный дефект, wrong result. Так что открывай SR, пусть чинят. Есть шанс, что дефект уже пофиксен, но проверять было бы долго. Дай знать, если не будешь SR открывать, я открою.
...
Рейтинг: 0 / 0
08.07.2020, 18:11
    #39977548
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sysdate in parallel
Alexander Anokhin,

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


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