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




