返回介绍

下载

编译与部署

开始使用

操作手册

最佳实践

扩展功能

设计文档

SQL 手册

开发者手册

Apache 社区

SQL MODE

发布于 2021-09-30 01:42:43 字数 5111 浏览 1137 评论 0 收藏 0

Doris新支持的sql mode参照了 Mysql 的sql mode管理机制,每个客户端都能设置自己的sql mode,拥有Admin权限的数据库管理员可以设置全局sql mode。

sql mode 介绍

sql mode使用户能在不同风格的sql语法和数据校验严格度间做切换,使Doris对其他数据库有更好的兼容性。例如在一些数据库里,'||'符号是一个字符串连接符,但在Doris里却是与'or'等价的,这时用户只需要使用sql mode切换到自己想要的风格。每个客户端都能设置sql mode,并在当前对话中有效,只有拥有Admin权限的用户可以设置全局sql mode。

原理

sql mode用一个64位的Long型存储在SessionVariables中,这个地址的每一位都代表一个mode的开启/禁用(1表示开启,0表示禁用)状态,只要知道每一种mode具体是在哪一位,我们就可以通过位运算方便快速的对sql mode进行校验和操作。

每一次对sql mode的查询,都会对此Long型进行一次解析,变成用户可读的字符串形式,同理,用户发送给服务器的sql mode字符串,会被解析成能够存储在SessionVariables中的Long型。

已被设置好的全局sql mode会被持久化,因此对全局sql mode的操作总是只需一次,即使程序重启后仍可以恢复上一次的全局sql mode。

操作方式

1、设置sql mode

set global sql_mode = "DEFAULT"
set session sql_mode = "DEFAULT"

目前Doris的默认sql mode是DEFAULT(但马上会在后续修改中会改变)。 设置global sql mode需要Admin权限,并会影响所有在此后连接的客户端。 设置session sql mode只会影响当前对话客户端,默认为session方式。

2、查询sql mode

select @@global.sql_mode
select @@session.sql_mode

除了这种方式,你还可以通过下面方式返回所有session variables来查看当前sql mode

show global variables
show session variables

已支持mode

  1. PIPES_AS_CONCAT

    在此模式下,'||'符号是一种字符串连接符号(同CONCAT()函数),而不是'OR'符号的同义词。(e.g., 'a'||'b' = 'ab', 1||0 = '10')

复合mode

(后续补充)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文