统计对象大小信息的函数和子查询的Bug
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了统计对象大小信息的函数和子查询的Bug,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5248字,纯文字阅读大概需要8分钟。
内容图文
![统计对象大小信息的函数和子查询的Bug](/upload/InfoBanner/zyjiaocheng/562/cba70f91c1a14c2abbf1331380bfbe30.jpg)
I hava below two statement sql: 0. not in subquery select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b); 1. in subquery select a.
I hava below two statement sql:0. not in subquery
select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b);
1. in subquery
select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename in (select b.tablename from t b);
The [0. not in subquery] can't work well, it's occur error:
ERROR: query plan with multiple segworker groups is not supported (cdbdisp.c:500)
HINT: likely caused by a function that reads or modifies data in a distributed table
CONTEXT: SQL statement "select sum(pg_total_relation_size('information_schema.sql_languages'))::int8 from gp_dist_random('gp_id');"
The [1. in subquery] work well.
Detailed below test:
gtlions=# select version(); version ------------------------------------------------------------------------------------------------------------------------------------------------------ PostgreSQL 8.2.15 (Greenplum Database 4.2.7.3 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on May 7 2014 14:31:08 (1 row) gtlions=# select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b); ERROR: query plan with multiple segworker groups is not supported (cdbdisp.c:500) HINT: likely caused by a function that reads or modifies data in a distributed table CONTEXT: SQL statement "select sum(pg_total_relation_size('information_schema.sql_languages'))::int8 from gp_dist_random('gp_id');" gtlions=# explain select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b); QUERY PLAN ----------------------------------------------------------------------------------------------- Hash Left Anti Semi Join (cost=568.98..235912.69 rows=676396 width=128) Hash Cond: c.relname = "NotIn_SUBQUERY".tablename::name -> Hash Left Join (cost=395.97..223194.68 rows=676419 width=128) Hash Cond: c.relnamespace = n.oid -> Hash Left Join (cost=2.62..112777.67 rows=676419 width=68) Hash Cond: c.reltablespace = t.oid -> Seq Scan on pg_class c (cost=0.00..2751.39 rows=676419 width=72) Filter: relkind = 'r'::"char" AND relname IS NOT NULL -> Hash (cost=1.02..1.02 rows=2 width=4) -> Seq Scan on pg_tablespace t (cost=0.00..1.02 rows=128 width=4) -> Hash (cost=365.35..365.35 rows=35 width=68) -> Seq Scan on pg_namespace n (cost=0.00..365.35 rows=2240 width=68) -> Hash (cost=106.61..106.61 rows=83 width=274) -> Gather Motion 64:1 (slice1; segments: 64) (cost=0.00..106.61 rows=83 width=274) -> Subquery Scan "NotIn_SUBQUERY" (cost=0.00..52.66 rows=2 width=274) -> Seq Scan on t b (cost=0.00..51.83 rows=2 width=24) (16 rows) gtlions=# select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename in (select b.tablename from t b); schemaname | size-1 -------------+--------- public | 32 kB public | 32 kB ...... ...... public | 96 kB gtlions=# explain select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename in (select b.tablename from t b); QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------- Gather Motion 64:1 (slice7; segments: 64) (cost=445.41..10096.03 rows=1 width=128) -> Hash Left Join (cost=445.41..10096.03 rows=1 width=128) Hash Cond: c.reltablespace = t.oid -> Redistribute Motion 64:64 (slice5; segments: 64) (cost=443.06..10092.81 rows=1 width=132) Hash Key: c.reltablespace -> Hash Left Join (cost=443.06..10092.22 rows=1 width=132) Hash Cond: c.relnamespace = n.oid -> Redistribute Motion 64:64 (slice3; segments: 64) (cost=54.53..9703.24 rows=1 width=72) Hash Key: c.relnamespace -> Hash EXISTS Join (cost=54.53..9702.65 rows=1 width=72) Hash Cond: c.relname = b.tablename::name -> Redistribute Motion 1:64 (slice1) (cost=0.00..9621.26 rows=10570 width=72) Hash Key: c.relname -> Seq Scan on pg_class c (cost=0.00..2751.39 rows=676419 width=72) Filter: relkind = 'r'::"char" -> Hash (cost=53.49..53.49 rows=2 width=24) -> Redistribute Motion 64:64 (slice2; segments: 64) (cost=0.00..53.49 rows=2 width=24) Hash Key: b.tablename::name -> Seq Scan on t b (cost=0.00..51.83 rows=2 width=24) -> Hash (cost=388.10..388.10 rows=1 width=68) -> Redistribute Motion 1:64 (slice4) (cost=0.00..388.10 rows=35 width=68) Hash Key: n.oid -> Seq Scan on pg_namespace n (cost=0.00..365.35 rows=2240 width=68) -> Hash (cost=2.32..2.32 rows=1 width=4) -> Redistribute Motion 1:64 (slice6) (cost=0.00..2.32 rows=2 width=4) Hash Key: t.oid -> Seq Scan on pg_tablespace t (cost=0.00..1.02 rows=128 width=4) (27 rows)
该问题应该是个Bug,等待TSE给出Fix或者没有Fix而只能等到下个版本升级了.
-EOF-
内容总结
以上是互联网集市为您收集整理的统计对象大小信息的函数和子查询的Bug全部内容,希望文章能够帮你解决统计对象大小信息的函数和子查询的Bug所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。