Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / wrong results / 8 сообщений из 8, страница 1 из 1
01.06.2017, 12:26
    #39463744
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
Нарвался на бажину, может кому будет интересно (тестировал на всех последних major releases) - стреляет от 11.2.0.4 до 12.2.0.1, оригинальный запрос намного сложнее с вьюхами на сотни строчек, но суть сводится к довольно простому тесткейзу.

Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
SQL> column null_column for a10
SQL> set null '<NULL>'
SQL>
SQL> -- prerequisite
SQL>
SQL> CREATE OR REPLACE FUNCTION f(X IN VARCHAR2) RETURN  SYS.ODCIVARCHAR2LIST
  2        PIPELINED IS
  3     BEGIN
  4        PIPE ROW(x);
  5        RETURN;
  6     EXCEPTION
  7        WHEN OTHERS THEN
  8           RETURN;
  9  END f;
 10  /

Function created.

SQL>
SQL>
SQL> -- /* To make the script idempotent uncomment the block below */
SQL>
SQL> -- begin
SQL> -- execute immediate 'DROP TABLE t';
SQL> -- exception
SQL> -- when others then null;
SQL> -- end;
SQL> -- /
SQL> --
SQL>
SQL> create table t(id primary key)
  2  as select rownum
  3  from dual connect by level <=100
  4  ;

Table created.

SQL>
SQL> SELECT X.NULL_COLUMN
  2  FROM
  3  (
  4    WITH FIRST_TABLE AS
  5    (
  6       SELECT  B.ID AS NULL_COLUMN
  7       FROM  T A
  8       LEFT OUTER JOIN T B ON 1=2
  9    ),
 10    SECOND_TABLE AS (
 11      SELECT A.NULL_COLUMN
 12      FROM FIRST_TABLE A
 13          ,FIRST_TABLE
 14      WHERE 1=1
 15        AND ROWNUM <=8 -- restriction to 8 rows is meaningless, just to reduce the amount of resultset
 16    ),
 17    PROBLEM AS (
 18      SELECT (SELECT MAX(column_value) FROM TABLE(CAST(f('X') AS SYS.ODCIVARCHAR2LIST))),
 19             (SELECT MIN(column_value) FROM TABLE(CAST(f('X') AS SYS.ODCIVARCHAR2LIST)))
 20       FROM  DUAL
 21    )
 22    SELECT  NULL_COLUMN
 23    FROM SECOND_TABLE
 24  ) X
 25  WHERE 1=1
 26  AND X.NULL_COLUMN IS NOT NULL;

NULL_COLUMN
-----------
<NULL>
<NULL>
<NULL>
<NULL>
<NULL>
<NULL>
<NULL>
<NULL>

8 rows selected.




Regards
...
Рейтинг: 0 / 0
09.06.2017, 12:26
    #39469370
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
Maxim Demenko,
Лечится
11.2.0.4
Код: plsql
1.
alter session set "_with_subquery"=inline;




12.2.0.1
Код: plsql
1.
2.
alter session set "_with_subquery"=inline;
alter session set "_optimizer_ansi_join_lateral_enhance" = false; 




Regards
...
Рейтинг: 0 / 0
09.06.2017, 12:50
    #39469401
Бракованный финский угорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
Фотошоп, почему ты не участвуешь в этом обсуждении?
...
Рейтинг: 0 / 0
09.06.2017, 12:55
    #39469404
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
Бракованный финский угорьФотошоп, почему ты не участвуешь в этом обсуждении?

видимо из-за того, что здесь ты отметился
...
Рейтинг: 0 / 0
09.06.2017, 13:23
    #39469450
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
Бракованный финский угорьФотошоп, почему ты не участвуешь в этом обсуждении?Не люблю тест кейсы когда надо что-то создавать. Я работаю только с привилегиями на соединение и создание сессии.

А вообще если проблема в факторизированном запросе, который использует pipeline, а сам не используется, то я просто бы его убрал.

Но Максим любит использовать недокументированные параметры и это его дело.
Есть много путей уйти от багов с трансформациями и ansi, у каждого свои предпочтения.
...
Рейтинг: 0 / 0
09.06.2017, 14:22
    #39469505
Бракованный финский угорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
trace.logвидимо из-за того, что здесь ты отметился
Но ведь с момента создания темы до даты моего комментария прошла без малого декада. Так что для аргумента слабовато.
Ну и, как мы увидели, это не помешало ему дать коммент.
...
Рейтинг: 0 / 0
09.06.2017, 14:28
    #39469511
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
Из той-же оперы NULL VALUE DESPITE NOT NULL CONSTRAINT .

SY.
...
Рейтинг: 0 / 0
09.06.2017, 14:29
    #39469514
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wrong results
dbms_photoshopА вообще если проблема в факторизированном запросе, который использует pipeline, а сам не используется, то я просто бы его убрал.

Но Максим любит использовать недокументированные параметры и это его дело.

В изначальном запросе он использовался (был union all), я эту часть выбросил, так как она не влияла на воспроизводимость бага, а pipelined для воспроизводимости критична.
А underscores - это то что на сегодня предложили в SR, мы конечно запросили патч (т.к. неизвестно, какие побочные эффекты могут возникнуть) - но, хотя наша контора довольно важный клиент для Oracle, все равно может затянуться... А вообще я в текущем проекте в роли дба (да еще и экстерн) а не разработчика, так что повлиять на используемый код могу только очень косвенно... ;-)

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


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