catalog透传执行结果不一致

Viewed 29

透传查询执行结果不一致
查询catalog中的系统表得到数据量
分别执行如下
image.png
image.png
一起执行如下
image.png
结果不一致

2 Answers

上传一下三个 SQL 的 Explain 吧

1746523105714.png
PLAN FRAGMENT 0
OUTPUT EXPRS:
estimated_rows[#3]
PARTITION: UNPARTITIONED

HAS_COLO_PLAN_NODE: true

VRESULT SINK
MYSQL_PROTOCAL

3:VAGGREGATE (merge finalize)(141)
| output: sum(partial_sum(reltuples)[#1])[#2]
| group by:
| sortByGroupKey:false
| cardinality=1
| final projections: coalesce(sum(reltuples)[#2], 0)
| final project output tuple id: 3
| distribute expr lists:
|
2:VEXCHANGE
offset: 0
distribute expr lists:

PLAN FRAGMENT 1

PARTITION: RANDOM

HAS_COLO_PLAN_NODE: false

STREAM DATA SINK
EXCHANGE ID: 02
UNPARTITIONED

1:VAGGREGATE (update serialize)(131)
| output: partial_sum(_table_valued_function_query.reltuples[#0])[#1]
| group by:
| sortByGroupKey:false
| cardinality=1
| distribute expr lists:
|
0:VJdbcScanNode(126)
TABLE VALUE FUNCTION
QUERY:

  SELECT c.reltuples

  FROM pg_class c

  JOIN pg_namespace n ON n.oid = c.relnamespace

  WHERE c.relkind = 'r'

  AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast');

========== STATISTICS ==========

image.png
PLAN FRAGMENT 0
OUTPUT EXPRS:
estimated_rows[#3]
PARTITION: UNPARTITIONED

HAS_COLO_PLAN_NODE: true

VRESULT SINK
MYSQL_PROTOCAL

3:VAGGREGATE (merge finalize)(141)
| output: sum(partial_sum(reltuples)[#1])[#2]
| group by:
| sortByGroupKey:false
| cardinality=1
| final projections: coalesce(sum(reltuples)[#2], 0)
| final project output tuple id: 3
| distribute expr lists:
|
2:VEXCHANGE
offset: 0
distribute expr lists:

PLAN FRAGMENT 1

PARTITION: RANDOM

HAS_COLO_PLAN_NODE: false

STREAM DATA SINK
EXCHANGE ID: 02
UNPARTITIONED

1:VAGGREGATE (update serialize)(131)
| output: partial_sum(_table_valued_function_query.reltuples[#0])[#1]
| group by:
| sortByGroupKey:false
| cardinality=1
| distribute expr lists:
|
0:VJdbcScanNode(126)
TABLE VALUE FUNCTION
QUERY:

  SELECT c.reltuples

  FROM pg_class c

  JOIN pg_namespace n ON n.oid = c.relnamespace

  WHERE c.relkind = 'r'

  AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast');

========== STATISTICS ==========

image.png
PLAN FRAGMENT 0
OUTPUT EXPRS:
t2[#15]
t1[#16]
PARTITION: UNPARTITIONED

HAS_COLO_PLAN_NODE: false

VRESULT SINK
MYSQL_PROTOCAL

12:VNESTED LOOP JOIN(584)
| join op: CROSS JOIN()
| is output left side only: false
| cardinality=1
| vIntermediate tuple ids: 12
| final projections: t2[#13], t1[#14]
| final project output tuple id: 13
| distribute expr lists:
| distribute expr lists:
|
|----4:VEXCHANGE
| offset: 0
| distribute expr lists:
|
11:VNESTED LOOP JOIN(548)
| join op: CROSS JOIN()
| is output left side only: false
| cardinality=1
| vIntermediate tuple ids: 10
| final projections: t2[#11]
| final project output tuple id: 11
| distribute expr lists:
| distribute expr lists:
|
|----9:VEXCHANGE
| offset: 0
| distribute expr lists:
|
10:VUNION(512)
constant exprs:
0
final projections: 1
final project output tuple id: 9

PLAN FRAGMENT 1

PARTITION: UNPARTITIONED

HAS_COLO_PLAN_NODE: true

STREAM DATA SINK
EXCHANGE ID: 09
UNPARTITIONED

8:VAGGREGATE (merge finalize)(533)
| output: sum(partial_sum(reltuples)[#5])[#6]
| group by:
| sortByGroupKey:false
| cardinality=1
| final projections: coalesce(sum(reltuples)[#6], 0)
| final project output tuple id: 7
| distribute expr lists:
|
7:VEXCHANGE
offset: 0
distribute expr lists:

PLAN FRAGMENT 2

PARTITION: RANDOM

HAS_COLO_PLAN_NODE: false

STREAM DATA SINK
EXCHANGE ID: 07
UNPARTITIONED

6:VAGGREGATE (update serialize)(523)
| output: partial_sum(_table_valued_function_query.reltuples[#4])[#5]
| group by:
| sortByGroupKey:false
| cardinality=1
| distribute expr lists:
|
5:VJdbcScanNode(518)
TABLE VALUE FUNCTION
QUERY:

  SELECT c.reltuples

  FROM pg_class c

  JOIN pg_namespace n ON n.oid = c.relnamespace

  WHERE c.relkind = 'r'

  AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast');

PLAN FRAGMENT 3

PARTITION: UNPARTITIONED

HAS_COLO_PLAN_NODE: true

STREAM DATA SINK
EXCHANGE ID: 04
UNPARTITIONED

3:VAGGREGATE (merge finalize)(569)
| output: sum(partial_sum(reltuples)[#1])[#2]
| group by:
| sortByGroupKey:false
| cardinality=1
| final projections: coalesce(sum(reltuples)[#2], 0)
| final project output tuple id: 3
| distribute expr lists:
|
2:VEXCHANGE
offset: 0
distribute expr lists:

PLAN FRAGMENT 4

PARTITION: RANDOM

HAS_COLO_PLAN_NODE: false

STREAM DATA SINK
EXCHANGE ID: 02
UNPARTITIONED

1:VAGGREGATE (update serialize)(559)
| output: partial_sum(_table_valued_function_query.reltuples[#0])[#1]
| group by:
| sortByGroupKey:false
| cardinality=1
| distribute expr lists:
|
0:VJdbcScanNode(554)
TABLE VALUE FUNCTION
QUERY:

  SELECT c.reltuples

  FROM pg_class c

  JOIN pg_namespace n ON n.oid = c.relnamespace

  WHERE c.relkind = 'r'

  AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast');

========== STATISTICS ==========