powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / wrong results
8 сообщений из 8, страница 1 из 1
wrong results
    #39463744
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарвался на бажину, может кому будет интересно (тестировал на всех последних 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
wrong results
    #39469370
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
wrong results
    #39469401
Бракованный финский угорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фотошоп, почему ты не участвуешь в этом обсуждении?
...
Рейтинг: 0 / 0
wrong results
    #39469404
trace.log
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бракованный финский угорьФотошоп, почему ты не участвуешь в этом обсуждении?

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

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

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

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

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

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

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


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