You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQLDelight如何允许未识别的表达式?

可以使用customSql函数来处理SQL语句中未识别的表达式。

示例代码:

private val UNRECOGNIZED_EXPRESSION = AstTransformExpression(object : AstTransformer {
    override fun transformAbs(abs: Abs) = error()
    override fun transformAdditiveExpr(additiveExpr: AdditiveExpr) = error()
    override fun transformAndExpr(andExpr: AndExpr) = error()
    override fun transformBetween(between: Between) = error()
    // 其他方法省略,仅保留了部分方法
    override fun transformTuple(tuple: Tuple) = error()
    override fun transformUnaryOp(unaryOp: UnaryOp) = error()
    override fun transformWhen(whenExpr: When) = error()

    private fun error() {
        throw IllegalArgumentException("Unsupported operation!")
    }
})

fun sqlQuery(handler: Any) = object : Any() {
    val name = "("
    operator fun String.unaryPlus() {
        val newHandler = UNRECOGNIZED_EXPRESSION.transformHandler(handler)
        QueryHandlerWrapper(query = StringBuilder(name).append(this).append(")").toString(), columns = emptyList()) { cursor ->
            newHandler.handle(cursor)
        }
    }
}

fun customSql(sql: String) = sqlQuery { cursor: android.database.Cursor -> longArrayOf() } + sql

然后可以使用customSql函数来执行未识别的表达式:

val customQuery = customSql("SELECT * FROM my_table WHERE $someCondition OR $otherCondition")

val result: List<MyModel> = database.myModelQueries.custom(customQuery).executeAsList()
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

Hive SQL 底层执行过程 | 社区征文

我们今天来聊的就是 Hive 底层是怎样将我们写的 SQL 转化为 MapReduce 等计算引擎可识别的程序。了解 Hive SQL 的底层编译过程有利于我们优化Hive SQL,提升我们对Hive的掌控力,同时有能力去定制一些需要的功能。... 可看作我们提交SQL语句的命令行界面。2. DRIVER:驱动程序。接收查询的组件。该组件实现了会话句柄的概念。3. COMPILER:编译器。负责将 SQL 转化为平台可执行的执行计划。对不同的查询块和查询表达式进行语义分...

基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023

指标管理的实现原理以及指标管理在字节跳动来的一些规划** ,重点阐述了指标管理在业内常见的解决方案与字节内部使用的一套 SQL 两种语法多引擎指标管理方案的异同;字节内部如何使用一套 SQL 两种语法实现降本增效... 因为需要在 Presto 使用一套 SQL, Hive 使用一套 SQL。* 二次开发 Presto,允许它对齐 Hive 的行为。但这对于 Presto 本身来说侵入性太强。* 使用 Calcite 自动改写 SQL 从而支持多引擎。这也是本文推荐的方案。...

一个 41 岁老程序员的 2023 年总结 - 利用 AI 延长自己的编程寿命 |社区征文

```sqlREPORT z.DATA: lt_dev TYPE TABLE OF tadir, ls_dev TYPE tadir, lv_text TYPE seoclasstx-descript.SELECT * INTO TABLE lt_dev FROM tadir UP TO 200 ROWS WHERE object = 'CLAS' AND... 正则表达式的语法,我总是今天用了明天就忘,每次要用都得去网上查。有了 ChatGPT 之后,正则表达式的编写和理解,我都交给 ChatGPT 了。下列这两段正则表达式是我负责的 SAP 电商云前台登录页面里,用户名和 passw...

系统集成在一些特定行业的相关概念

l 支持各种表达式的定制l 支持数据转换逻辑的扩展l 提供强大的消息路由功能l 支持硬编码实现的静态路由l 基于消息内容的、可配置的动态路由l 服务注册的动态服务绑定和调用通过与服务注册信息的... SOA允许一个企业高效地平衡现有的资源和财产,这种体系能够使得IT部门效率更高、开发周期更短、项目分发更快,在帮助IT技术和业务整合方面有着深远的意义。企业服务总线(Ent企业riseServiceBus,缩写ESB),是面向服务...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

SQLDelight如何允许未识别的表达式? -优选内容

SQL 语法参考
本文介绍一些常用的的 SQL 语法,以帮助您更方便的使用 SQL 查询分析。 连接数据库服务在本地命令行工具中,执行以下命令,连接数据库服务。 Bash mysql -h{HOST} -P{PORT} -uadmin -p{PASSWORD}HOST:SQL 分析节点的访... where_condition 是一个表达式,对于要选择的每一行,其计算结果为true。如果没有 WHERE 子句,该语句将选择所有行。在 WHERE 表达式中,您可以使用除聚合函数之外的任何 MySQL 支持的函数和运算符。 INTO OUTFILE 'fi...
SQL自定义查询(SaaS)
都建议您在SQL中指定event_date的起、止时间,以此加速查询速度。如果您添加,SQL自定义查询功能会自动拼装时间限制,可能会产生与您预计时间段不同的数据。 1.4.2 users、items表与events表进行join时,last_acti... 并返回else表达式的结果(如果存在)。 参数: cond: 条件表达式 then: 条件满足时返回的表达式 else: 条件不满足时返回的表达式 举例:查询2020年10月6日至12日中,触发A事件比触发B事件次数多的人。 SQL select dist...
HAVING 子句
HAVING 子句用于过滤出符合特定条件的分组结果。 语法格式HAVING 语法的格式如下: SQL HAVING bool_expression说明 HAVING 子句用于过滤分组(GROUP BY)结果,支持与聚合函数(SUM、AVG等)一起使用;WHERE 子句用于在分组之前过滤原始数据,不支持与聚合函数(SUM、AVG等)一起使用。 HAVING 子句的过滤操作发生在分组(GROUP BY)之后,排序(ORDER BY)之前。 参数说明如下: 参数 说明 bool_expression 布尔表达式,用于筛选分组结果。 ...
SQL自定义查询(SaaS)
任何SQL都建议指定事件发生时间,否则根据event_time进行推导。 event_time 事件发生时间戳,10位。 当且仅当使用event_time作为约束条件时,会自动推导event_date;因此不建议使用time和server_time进行时间条件的约... expr —— 表达式。 可选数值、日期或时间数据类型 median(expr)相当于是quantile(0.5)(expr) 注意: 该函数采用Reservoir_sampling随机算法,因此结果是近似且非确定的。 举例:查询2020年8月10日的订单事件中,分位...

SQLDelight如何允许未识别的表达式? -相关内容

SQL自定义查询(私有化)

任何SQL都建议指定事件发生时间,否则根据event_time进行推导 event_time事件发生时间戳,10位 当且仅当使用event_time作为约束条件时,会自动推导event_date;因此不建议使用time和server_time进行时间条件的约束 t... expr —— 表达式。 可选数值、日期或时间数据类型 median(expr)相当于是quantile(0.5)(expr)注意: 该函数采用Reservoir_sampling随机算法,因此结果是近似且非确定的。 举例:查询2020年8月10日的订单事件中,分位数...

Hive SQL 底层执行过程 | 社区征文

我们今天来聊的就是 Hive 底层是怎样将我们写的 SQL 转化为 MapReduce 等计算引擎可识别的程序。了解 Hive SQL 的底层编译过程有利于我们优化Hive SQL,提升我们对Hive的掌控力,同时有能力去定制一些需要的功能。... 可看作我们提交SQL语句的命令行界面。2. DRIVER:驱动程序。接收查询的组件。该组件实现了会话句柄的概念。3. COMPILER:编译器。负责将 SQL 转化为平台可执行的执行计划。对不同的查询块和查询表达式进行语义分...

SQL 语法

常用 SQL 语法 概述ByteHouse 的 SQL 语法即为 ClickHouse SQL。ClickHouse SQL 和 ANSI SQL (标准 SQL)的语法基本一致,绝大多数语法没有差异。关于不兼容 ANSI SQL 部分,请官网文档参考:ClickHouse SQL语法与ANSI SQL的差异。ClickHouse 支持的语法类型包括: SELECT INSERT INTO CREATE ALTER SYSTEM SHOW ..... 我们在本文档中仅列出常用的 SELECT,CREATE,ALTER,INSERT INTO,DROP。其余语法可参考 社区文档。 前置概念由于 ...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

SQL 语法

1. 概述 LAS SQL 语法标准以 ANSI SQL 2011 为基础,增加了 OLAP 相关语法,同时基于 Spark 3.0,支持了大部分的 Spark SQL build-in functions。 2. 阅读说明 中括号[] 括起来的部分代表 可选 。比如 CREATE TABLE [... [ LIMIT { ALL expression } ]参数概览 cte_defination 指定主查询块前的公共表表达式(Common Table Expression, CTE)。这些表表达式允许在稍后的从句中引用。这对于从句中抽象出重复的子查询块很有用,并提高查询...

SQL 服务用户管理

SQL 分析后,在 SQL 服务中提供了表级别的细粒度权限控制,支持基于角色的权限访问控制。 背景信息在进行用户权限管理前,需要先了解以下几个名词的含义: 用户标识 user_identity在权限系统中,一个用户被识别为一个 U... 允许执行包括授权、撤权,添加-删除-变更用户,添加-删除-变更角色等操作。变更包括变更权限、帐号密码、属性等。 说明 只有 Global level GRANT 权限可以创建-删除-变更用户和角色。 授权和撤权:根据 level 级别限定...

基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023

指标管理的实现原理以及指标管理在字节跳动来的一些规划** ,重点阐述了指标管理在业内常见的解决方案与字节内部使用的一套 SQL 两种语法多引擎指标管理方案的异同;字节内部如何使用一套 SQL 两种语法实现降本增效... 因为需要在 Presto 使用一套 SQL, Hive 使用一套 SQL。* 二次开发 Presto,允许它对齐 Hive 的行为。但这对于 Presto 本身来说侵入性太强。* 使用 Calcite 自动改写 SQL 从而支持多引擎。这也是本文推荐的方案。...

一个 41 岁老程序员的 2023 年总结 - 利用 AI 延长自己的编程寿命 |社区征文

```sqlREPORT z.DATA: lt_dev TYPE TABLE OF tadir, ls_dev TYPE tadir, lv_text TYPE seoclasstx-descript.SELECT * INTO TABLE lt_dev FROM tadir UP TO 200 ROWS WHERE object = 'CLAS' AND... 正则表达式的语法,我总是今天用了明天就忘,每次要用都得去网上查。有了 ChatGPT 之后,正则表达式的编写和理解,我都交给 ChatGPT 了。下列这两段正则表达式是我负责的 SAP 电商云前台登录页面里,用户名和 passw...

系统集成在一些特定行业的相关概念

l 支持各种表达式的定制l 支持数据转换逻辑的扩展l 提供强大的消息路由功能l 支持硬编码实现的静态路由l 基于消息内容的、可配置的动态路由l 服务注册的动态服务绑定和调用通过与服务注册信息的... SOA允许一个企业高效地平衡现有的资源和财产,这种体系能够使得IT部门效率更高、开发周期更短、项目分发更快,在帮助IT技术和业务整合方面有着深远的意义。企业服务总线(Ent企业riseServiceBus,缩写ESB),是面向服务...

十个月,专访李本超的 Apache Calcite PMC 进击之路

通用的表达式优化等。于2023年1月正式受邀成为 Apache Calcite PMC。 # 十个月,由初识到热爱 在过去几年,我主要是负责 Flink SQL 相关的工作。在不断深入参与到 Flink 的开发贡献的过程中,也逐步的了解... 相信来,Calcite 会有更加广阔的市场空间,社区也会在逐步的在众多贡献者的推动下越来越好。 谈到收获。从一开始接触到开源、参与 Flink 社区,到至今很荣幸又受邀成为了 Apache Calcite PMC。一路走来,参与...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询