Funções e comandos GET_QUERY_OPERATOR_STATS e EXPLAIN: operadores pais representados por matrizes

Atenção

Essa mudança de comportamento está no pacote 2023_05.

Para saber o status atual do pacote, consulte Histórico do pacote.

Os comandos e funções a seguir fornecem detalhes sobre a execução de uma consulta:

A saída desses comandos e funções inclui informações sobre cada nó do operador na árvore de nós do operador que compõem uma consulta.

Visão geral

Atualmente, essas informações incluem uma coluna ou propriedade que identifica um único nó pai. Isso não trata situações em que um nó do operador possui vários nós pai.

Por exemplo, suponha que você esteja produzindo um perfil da seguinte consulta:

WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy

No perfil desta consulta, o nó WithClause [4] possui vários nós pais:

Árvore de nós operadores no perfil de consulta

Para a consulta acima, a saída dos comandos e funções GET_QUERY_OPERATOR_STATS e EXPLAIN possui uma coluna ou propriedade que identifica WithReference [3] como o nó pai de WithClause [4]. No entanto, existem dois nós pais: WithReference [3] e WithReference [8].

Mudanças na saída

Na versão atual, a coluna ou propriedade existente do nó pai é substituída por uma das seguintes colunas ou propriedades que contém uma matriz de IDs dos nós pai:

Comando ou função SQL

Coluna ou propriedade existente

Nova coluna ou propriedade

EXPLAIN e SYSTEM$EXPLAIN_PLAN_JSON

parent

parentOperators

GET_QUERY_OPERATOR_STATS

PARENT_OPERATOR_ID

PARENT_OPERATORS

Mudanças na saída tabular do comando EXPLAIN e da função EXPLAIN_JSON

Suponha que você execute a seguinte instrução:

EXPLAIN WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy

A saída mudou conforme descrito abaixo:

Anteriormente:

A saída inclui a coluna pai, que contém uma única ID do nó pai:

+------+------+--------+---------------+ ...
| step | id   | parent | operation     | ...
+------+------+--------+---------------+ ...
| NULL | NULL |   NULL | GlobalStats   | ...
|    1 |    0 |   NULL | Result        | ...
|    1 |    1 |      0 | UnionAll      | ...
|    1 |    2 |      1 | Filter        | ...
|    1 |    3 |      2 | WithReference | ...
|    1 |    4 |      3 | WithClause    | ...
...
Atualmente:

A saída inclui a coluna parentOperators, que contém uma matriz de IDs de nó pai:

+------+------+-----------------+---------------+ ...
| step | id   | parentOperators | operation     | ...
|------+------+-----------------+---------------+ ...
| NULL | NULL | NULL            | GlobalStats   | ...
|    1 |    0 | NULL            | Result        | ...
|    1 |    1 | [0]             | UnionAll      | ...
|    1 |    2 | [1]             | Filter        | ...
|    1 |    3 | [2]             | WithReference | ...
|    1 |    4 | [3, 8]          | WithClause    | ...
...

Para a função EXPLAIN_JSON, se o plano passado para a função não incluir informações sobre os operadores pai, a coluna parentOperators será NULL.

Mudanças na saída JSON do comando EXPLAIN e SYSTEM$EXPLAIN_PLAN_JSON

Suponha que você execute uma instrução que produza a saída JSON do plano de consulta. Por exemplo:

EXPLAIN USING JSON WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy

A saída mudou conforme descrito abaixo:

Anteriormente:

A saída inclui a propriedade pai, que contém uma única ID do nó pai:

{
  ...
  "Operations": [[
    ...
    {"id":1,"parent":0,"operation":"UnionAll"},
    {"id":2,"parent":1,"operation":"Filter", ...},
    {"id":3,"parent":2,"operation":"WithReference"},
    {"id":4,"parent":3,"operation":"WithClause", ...},
    ...
Copy
Atualmente:

A saída inclui a propriedade parentOperators, que contém uma matriz de IDs de nó pai:

{
  ...
  "Operations":[[
    ...
    {"id":1,"operation":"UnionAll","parentOperators":[0]},
    {"id":2,"operation":"Filter",... , "parentOperators":[1]},
    {"id":3,"operation":"WithReference","parentOperators":[2]},
    {"id":4,"operation":"WithClause",... ,"parentOperators":[3,8]},
    ...
Copy

Mudanças na saída da função GET_QUERY_OPERATOR_STATS

Suponha que você execute as seguintes instruções:

WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy
SET lid = LAST_QUERY_ID();
Copy
SELECT * FROM TABLE(GET_QUERY_OPERATOR_STATS($lid));
Copy

A saída mudou conforme descrito abaixo:

Anteriormente:

A saída inclui a coluna PARENT_OPERATOR_ID, que contém uma única ID do nó pai:

+-----+---------+-------------+--------------------+---------------+ ...
| ... | STEP_ID | OPERATOR_ID | PARENT_OPERATOR_ID | OPERATOR_TYPE | ...
+-----+---------+-------------+--------------------+---------------+ ...
| ... |       1 |           0 |               NULL | Result        | ...
| ... |       1 |           1 |                  0 | UnionAll      | ...
| ... |       1 |           2 |                  1 | Filter        | ...
| ... |       1 |           3 |                  2 | WithReference | ...
| ... |       1 |           4 |                  3 | WithClause    | ...
...
Atualmente:

A saída inclui a coluna PARENT_OPERATORS, que contém uma matriz de IDs de nó pai:

|-----+---------+-------------+------------------+---------------+ ...
| ... | STEP_ID | OPERATOR_ID | PARENT_OPERATORS | OPERATOR_TYPE | ...
|-----+---------+-------------+------------------+---------------+ ...
| ... |       1 |           0 | NULL             | Result        | ...
| ... |       1 |           1 | [                | UnionAll      | ...
|     |         |             |   0              |               | ...
|     |         |             | ]                |               | ...
| ... |       1 |           2 | [                | Filter        | ...
|     |         |             |   1              |               | ...
|     |         |             | ]                |               | ...
| ... |       1 |           3 | [                | WithReference | ...
|     |         |             |   2              |               | ...
|     |         |             | ]                |               | ...
| ... |       1 |           4 | [                | WithClause    | ...
|     |         |             |   3,             |               | ...
|     |         |             |   8              |               | ...
|     |         |             | ]                |               | ...
...

Ref: 1175