统计对象大小信息的函数和子查询的Bug
我有下面两条语句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.来自 t b) 的表名; 1. 在子查询中选择a.
我有下面两条语句sql:0. 不在子查询中
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. 在子查询
中 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);
[0。不在子查询中]无法正常工作,出现错误:
错误:不支持具有多个 segworker 组的查询计划 (cdbdisp.c:500)
提示:可能是由读取或修改分布式表中的数据的函数引起的
上下文:SQL 语句“select sum(pg_total_relation_size('information_schema.sql_languages'))::int8 from gp_dist_random('gp_id');”
[1.在子查询中]工作得很好。
详细测试如下:
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 给出修复或者不修复而只能等到下个版本升级了。
-EOF-

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Go语言提供了两种动态函数创建技术:closures和反射。closures允许访问闭包作用域内的变量,而反射可使用FuncOf函数创建新函数。这些技术在自定义HTTP路由器、实现高度可定制的系统和构建可插拔的组件方面非常有用。

在C++函数命名中,考虑参数顺序至关重要,可提高可读性、减少错误并促进重构。常见的参数顺序约定包括:动作-对象、对象-动作、语义意义和遵循标准库。最佳顺序取决于函数目的、参数类型、潜在混淆和语言惯例。

随着苹果WWDC发布会2024圆满落幕,不仅揭晓了macos15,其中最受关注的还是苹果iOS18新系统的更新,虽然有很多新功能出现,但是作为苹果iOS18首版不免让人纠结是否有必要升级苹果iOS18,在最新发布的苹果iOS18中又有哪些BUG存在呢?经过真实的使用测评,下面是苹果iOS18bug汇总,一起来看看吧。目前有许多iPhone用户都抢先升级到了iOS18.但各种系统Bug让人难受。有博主表示,升级iOS18要谨慎,因为“Bug多到飞起”。博主表示,如果你的iPhone是

将MySQL查询结果数组转换为对象的方法如下:创建一个空对象数组。循环结果数组并为每一行创建一个新的对象。使用foreach循环将每一行的键值对赋给新对象的相应属性。将新对象添加到对象数组中。关闭数据库连接。

C++函数中默认参数的优点包括简化调用、增强可读性、避免错误。缺点是限制灵活性、命名限制。可变参数的优点包括无限灵活性、动态绑定。缺点包括复杂性更高、隐式类型转换、调试困难。

1、 SUM函数,用于对一列或一组单元格中的数字进行求和,例如:=SUM(A1:J10)。2、AVERAGE函数,用于计算一列或一组单元格中的数字的平均值,例如:=AVERAGE(A1:A10)。3、COUNT函数,用于计算一列或一组单元格中的数字或文本的数量,例如:=COUNT(A1:A10)4、IF函数,用于根据指定的条件进行逻辑判断,并返回相应的结果。

PHP中,数组是有序序列,以索引访问元素;对象是具有属性和方法的实体,通过new关键字创建。数组访问通过索引,对象访问通过属性/方法。数组值传递,对象引用传递。
