powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / материализация в json_table
13 сообщений из 13, страница 1 из 1
материализация в json_table
    #39585364
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with t as (
select /*+ materialize*/*
from json_table(
                '{
                  "title": "Money finding investigation",
                  "currency": "USD"
                }', '$' columns(
                                t varchar2(50) path '$.title',
                                c varchar2(50)path  '$.currency'
                               )
)
)
select table1.t, table2.c
from t table1
     join t table2 on table2.t = table1.t



Я бы ожидал, что будет материализация json, но она не происходит. Это ожидаемо?
...
Рейтинг: 0 / 0
материализация в json_table
    #39585477
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shtock,

у меня прекрасно материализуется и на 12.1.0.2 и на 12.2:
Код: 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.
SQL> with t as (
  2  select /*+ materialize*/*
  3  from json_table(
  4                  '{
  5                    "title": "Money finding investigation",
  6                    "currency": "USD"
  7                  }', '$' columns(
  8                                  t varchar2(50) path '$.title',
  9                                  c varchar2(50)path  '$.currency'
 10                                 )
 11  )
 12  )
 13  select table1.t, table2.c
 14  from t table1
 15       join t table2 on table2.t = table1.t;

T                                                  C
-------------------------------------------------- --------------------------------------------------
Money finding investigation                        USD

SQL> select * from table(dbms_xplan.display_cursor('','','allstats last'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID  1khn6gztmw3ww, child number 0
-------------------------------------
with t as ( select /*+ materialize*/* from json_table(
'{                   "title": "Money finding investigation",
       "currency": "USD"                 }', '$' columns(
                  t varchar2(50) path '$.title',
         c varchar2(50)path  '$.currency'
 ) ) ) select table1.t, table2.c from t table1      join t table2 on
table2.t = table1.t

Plan hash value: 1685886660

------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                       | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                            |      1 |        |      1 |00:00:00.03 |       8 |       |       |          |
|   1 |  TEMP TABLE TRANSFORMATION               |                            |      1 |        |      1 |00:00:00.03 |       8 |       |       |          |
|   2 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9DD35A_20F03F7 |      1 |        |      0 |00:00:00.03 |       1 |  1024 |  1024 |          |
|   3 |    JSONTABLE EVALUATION                  |                            |      1 |        |      1 |00:00:00.03 |       0 |       |       |          |
|*  4 |   HASH JOIN                              |                            |      1 |      1 |      1 |00:00:00.01 |       6 |  1281K|  1281K|  762K (0)|
|   5 |    VIEW                                  |                            |      1 |   8168 |      1 |00:00:00.01 |       0 |       |       |          |
|   6 |     TABLE ACCESS FULL                    | SYS_TEMP_0FD9DD35A_20F03F7 |      1 |   8168 |      1 |00:00:00.01 |       0 |       |       |          |
|   7 |    VIEW                                  |                            |      1 |   8168 |      1 |00:00:00.01 |       0 |       |       |          |
|   8 |     TABLE ACCESS FULL                    | SYS_TEMP_0FD9DD35A_20F03F7 |      1 |   8168 |      1 |00:00:00.01 |       0 |       |       |          |
------------------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("TABLE2"."T"="TABLE1"."T")


31 rows selected.


Какая у тебя версия оракла? И проверь, non-default параметры у себя, например _with_subquery:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> @param_ _with_subquery

NAME                                     VALUE        DEFLT        TYPE         DESCRIPTION
---------------------------------------- ------------ ------------ ------------ ------------------------------------------------------------
_with_subquery                           OPTIMIZER    TRUE         string       WITH subquery transformation

SQL> @pvalid_ _with_subquery

    PAR_NO Name                                     PAR_ORD_VAL Value                          Default?
---------- ---------------------------------------- ----------- ------------------------------ --------
      3755 _with_subquery                                     1 INLINE                         FALSE
      3755 _with_subquery                                     2 OPTIMIZER                      TRUE
      3755 _with_subquery                                     3 MATERIALIZE                    FALSE

...
Рейтинг: 0 / 0
материализация в json_table
    #39585692
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.1.0.2
...
Рейтинг: 0 / 0
материализация в json_table
    #39585712
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я не вижу в v$parameter такого параметра правильно я понимаю, что он в дефолтном значении установлен?
...
Рейтинг: 0 / 0
материализация в json_table
    #39585715
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockЕсли я не вижу в v$parameter такого параметра правильно я понимаю, что он в дефолтном значении установлен?Нет. Там не показываются скрытые параметры.
Их можно увидеть, например, в alert.log при startup.
...
Рейтинг: 0 / 0
материализация в json_table
    #39585721
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Показываются, если установлены
...
Рейтинг: 0 / 0
материализация в json_table
    #39585768
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shtock,

шли тогда трассу 10053, там будут все твои параметры - гляну
...
Рейтинг: 0 / 0
материализация в json_table
    #39597255
serban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На пропатченой 12.1.0.2 не материалайзится =(

12.1.0.2.170418

Код: 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.
SQL> select * from table(dbms_xplan.display_cursor('','','allstats last'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID  8j840xn7xxhgf, child number 0
-------------------------------------
with t as (   select /*+ materialize*/*   from json_table(
     '{                       "title": "Money finding investigation",
                    "currency": "USD"                     }', '$'
columns(                                     t varchar2(50) path
'$.title',                                     c varchar2(50)path
'$.currency'                                   )    )    ) select
table1.t, table2.c from t table1     join t table2 on table2.t =
table1.t


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2793285975

---------------------------------------------------------------------------
| Id  | Operation              | Name | E-Rows |  OMem |  1Mem | Used-Mem |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |      |        |       |       |          |
|*  1 |  HASH JOIN             |      |    667K|   973K|   973K|  716K (0)|
|   2 |   JSONTABLE EVALUATION |      |        |       |       |          |
|   3 |   JSONTABLE EVALUATION |      |        |       |       |          |
---------------------------------------------------------------------------



И это не оч приятно, т.к. основные json_table баги и вылазят на этапе джойна.

Вполне рабочий был workaround ..
Код: plsql
1.
with t as (select /*+ materialize*/ * from json_table...
...
Рейтинг: 0 / 0
материализация в json_table
    #39597310
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
serban,

10053?
...
Рейтинг: 0 / 0
материализация в json_table
    #39597977
serban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
_with_subquery                      = OPTIMIZER
...
Рейтинг: 0 / 0
материализация в json_table
    #39598170
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
serban,

а еще выложи результат этого запроса:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select *
from v$system_fix_control
where OPTIMIZER_FEATURE_ENABLE like '12.1%'
   and (   lower(sql_feature)    like '%mater%' 
        or lower(description)    like '%mater%'
        or lower(sql_feature)    like '%temp%' 
        or lower(description)    like '%temp%'
        or lower(sql_feature)    like '%transform%' 
        or lower(description)    like '%transform%'
        )
order by
   OPTIMIZER_FEATURE_ENABLE, SQL_FEATURE,bugno;

сравню, что добавилось
...
Рейтинг: 0 / 0
материализация в json_table
    #39598217
serban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

Код: 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.
     BUGNO      VALUE SQL_FEATURE                                                      DESCRIPTION                                                      OPTIMIZER_FEATURE_ENABLE       EVENT IS_DEFAULT     CON_ID
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------------------- ---------- ---------- ----------
  13836796          1 QKSFM_CARDINALITY_12555499                                       enable CBQT on queries with materialized WITH subqueries         12.1.0.1                           0          1          0
  14605040          1 QKSFM_STAR_TRANS_14595273                                        Disable cardinality feedback for temp table                      12.1.0.1                           0          1          0
  12390139          1 QKSFM_TRANSFORMATION_11935589                                    enhance qsme to handle more cases                                12.1.0.1                           0          1          0
  12954320          1 QKSFM_TRANSFORMATION_13555551                                    cardinality feedback for bind-aware cursors                      12.1.0.1                           0          1          0
  14033181          1 QKSFM_TRANSFORMATION_13836796                                    correct ndv for non-popular values in join cardinality comp.     12.1.0.1                           0          1          0
  14464068          1 QKSFM_TRANSFORMATION_14295250                                    filter pull up from UNION ALL view                               12.1.0.1                           0          1          0
  16976121          1 QKSFM_ACCESS_PATH_14580303                                       view merging at the first pass for materialized WITH subquery    12.1.0.2                           0          1          0
  17800514          1 QKSFM_CARDINALITY_14826303                                       preserve hints during distinct aggregation transformation        12.1.0.2                           0          1          0
  13994546          1 QKSFM_CARDINALITY_7174435                                        attempt generation of additional ROWNUM predicates               12.1.0.2                           0          1          0
  17526569          1 QKSFM_EXECUTION_17950612                                         Transform ORs to inlists for faster join elimination checking    12.1.0.2                           0          1          0
  20732410          1 QKSFM_EXTTAB_21093805                                            enable rowid dependent transformations for external tables       12.1.0.2                           0          1          0

     BUGNO      VALUE SQL_FEATURE                                                      DESCRIPTION                                                      OPTIMIZER_FEATURE_ENABLE       EVENT IS_DEFAULT     CON_ID
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------------------- ---------- ---------- ----------
  16324844          1 QKSFM_TRANSFORMATION_13583529                                    move makexml operator processing to qksvc                        12.1.0.2                           0          1          0
  14764840          1 QKSFM_TRANSFORMATION_16226660                                    delay heuristic single view merge in unnestable subqueries       12.1.0.2                           0          1          0
  15899648          1 QKSFM_TRANSFORMATION_16690013                                    allow re-naming of query blocks for ANSI re-architecture         12.1.0.2                           0          1          0
  17760686          1 QKSFM_TRANSFORMATION_17696414                                    Account for BMB blocks when dynamic sampling partitioned ASSM ta 12.1.0.2                           0          1          0
  16954950          1 QKSFM_TRANSFORMATION_17728161                                    take into account empty partitions when prorating cost           12.1.0.2                           0          1          0
  16673868          1 QKSFM_TRANSFORMATION_17800514                                    Allow dynamic sampling for filter pred with deterministic pl/sql 12.1.0.2                           0          1          0
  20340595          1 QKSFM_TRANSFORMATION_20732410                                    Skip in-memory costing if no in-memory table in legacy JPPD view 12.1.0.2                           0          1          0

18 rows selected. 


...
Рейтинг: 0 / 0
материализация в json_table
    #39625635
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в итоге забил и использую когда надо материализовать apex_json.to_xmltype с xmltable
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / материализация в json_table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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