暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MogDB ORDER BY/GROUP BY场景兼容

原创 MogDB 2024-08-06
227

可获得性

本特性自MogDB 5.0.6版本开始引入。

特性简介

本特性对查询语句ORDER BY/GROUP BY子句支持的场景进行了扩展,兼容部分Oracle功能。

客户价值

增强MogDB与Oracle的兼容性,减少应用程序的迁移代价,提升产品易用性。

特性描述

ORDER BY场景兼容

  • 兼容Oracle的ORDER BY使用场景,支持通过DISTINCT关键字对数据去重。
  • 支持ORDER BY中使用数字代替投影列。
  • 支持ORDER BY中使用常量字符串,此时常量无实际意义,不影响排序结果。
  • 支持ORDER BY多列、表达式、聚集函数等。

GROUP BY场景兼容

  • 支持GROUP BY中含空字符串。
  • 支持GROUP BY中使用整数常量,无实际意义,不影响聚集结果。
  • 支持GROUP BY字符串和表达式,无实际意义,不影响排序或聚集结果。

GUC参数behavior_compat_options增加compat_sort_group_column选项,用于控制GROUP/ORDER BY的行为。默认情况下行为和PG一致,配置该参数后,行为和Oracle一致,常量不再影响GROUP/ORDER BY结果集。该参数仅在sql_compatibility参数的值为A时生效。

特性约束

仅支持A兼容模式。

示例

MogDB=# CREATE TABLE t1(aid INT); CREATE TABLE MogDB=# CREATE TABLE t2(bid INT); CREATE TABLE MogDB=# EXPLAIN (VERBOSE ON, COSTS OFF) SELECT DISTINCT aid FROM t1 JOIN t2 ON aid = bid ORDER BY t1.aid; QUERY PLAN ----------------------------------------------- Sort Output: t1.aid, t1.aid Sort Key: t1.aid -> HashAggregate Output: t1.aid, t1.aid Group By Key: t1.aid, t1.aid -> Hash Join Output: t1.aid, t1.aid Hash Cond: (t1.aid = t2.bid) -> Seq Scan on public.t1 Output: t1.aid -> Hash Output: t2.bid -> Seq Scan on public.t2 Output: t2.bid (15 rows) MogDB=# set behavior_compat_options to compat_sort_group_column; SET MogDB=# EXPLAIN (VERBOSE ON, COSTS OFF) SELECT aid, bid, '', count(1) FROM t1 JOIN t2 ON aid = bid GROUP BY aid, bid, ''; QUERY PLAN -------------------------------------------------- HashAggregate Output: t1.aid, t2.bid, (NULL::text), count(1) Group By Key: t1.aid, t2.bid, NULL::text -> Hash Join Output: t1.aid, t2.bid, NULL::text Hash Cond: (t1.aid = t2.bid) -> Seq Scan on public.t1 Output: t1.aid -> Hash Output: t2.bid -> Seq Scan on public.t2 Output: t2.bid (12 rows)

相关页面

behavior_compat_optionsSELECT

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论