Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / материализация в json_table / 13 сообщений из 13, страница 1 из 1
16.01.2018, 18:39
    #39585364
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
Народ,

Код: 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
17.01.2018, 02:01
    #39585477
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
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
17.01.2018, 12:22
    #39585692
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
12.1.0.2
...
Рейтинг: 0 / 0
17.01.2018, 12:36
    #39585712
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
Если я не вижу в v$parameter такого параметра правильно я понимаю, что он в дефолтном значении установлен?
...
Рейтинг: 0 / 0
17.01.2018, 12:40
    #39585715
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
ShtockЕсли я не вижу в v$parameter такого параметра правильно я понимаю, что он в дефолтном значении установлен?Нет. Там не показываются скрытые параметры.
Их можно увидеть, например, в alert.log при startup.
...
Рейтинг: 0 / 0
17.01.2018, 12:46
    #39585721
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
Показываются, если установлены
...
Рейтинг: 0 / 0
17.01.2018, 13:27
    #39585768
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
Shtock,

шли тогда трассу 10053, там будут все твои параметры - гляну
...
Рейтинг: 0 / 0
06.02.2018, 10:47
    #39597255
serban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
На пропатченой 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
06.02.2018, 11:49
    #39597310
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
serban,

10053?
...
Рейтинг: 0 / 0
07.02.2018, 10:37
    #39597977
serban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
Код: plsql
1.
_with_subquery                      = OPTIMIZER
...
Рейтинг: 0 / 0
07.02.2018, 13:41
    #39598170
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
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
07.02.2018, 14:20
    #39598217
serban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
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
04.04.2018, 16:47
    #39625635
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
материализация в json_table
Я в итоге забил и использую когда надо материализовать apex_json.to_xmltype с xmltable
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / материализация в json_table / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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