日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Hasor【付诸实践 01】低代码框架 DataQL 聚合查询引擎 SQL执行器报错 Query dialect missing 原因分析及解决(针对GreenPlum数据库)

發(fā)布時(shí)間:2024/10/6 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hasor【付诸实践 01】低代码框架 DataQL 聚合查询引擎 SQL执行器报错 Query dialect missing 原因分析及解决(针对GreenPlum数据库) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.報(bào)錯(cuò)說(shuō)明

在本地搭建了兩個(gè)平臺(tái),hasor核心依賴的版本是一致的, 連接的都是GreenPlum數(shù)據(jù)庫(kù) ,且執(zhí)行的是相同的DataQL語(yǔ)句:

<!--hasor核心依賴【是老平臺(tái)接入,由于兼容問(wèn)題,最終用的并不是最新的4.2.5版本】--><dependency><groupId>net.hasor</groupId><artifactId>hasor-spring</artifactId><version>4.2.1</version></dependency><dependency><groupId>net.hasor</groupId><artifactId>hasor-dataway</artifactId><version>4.2.1</version></dependency>

以下是執(zhí)行的DataQL:

// SQL 執(zhí)行器切換為分頁(yè)模式及首頁(yè)頁(yè)面設(shè)置 hint FRAGMENT_SQL_QUERY_BY_PAGE = true hint FRAGMENT_SQL_QUERY_BY_PAGE_NUMBER_OFFSET = 1// 定義查詢SQL var query = @@sql() <%select * from yz_test_match %>// 創(chuàng)建分頁(yè)查詢對(duì)象 var pageQuery = query(${pageSize},${pageNumber});// 設(shè)置分頁(yè)信息 run pageQuery.setPageInfo({"pageSize" : #{pageSize}, "currentPage" : #{pageNumber} });// 執(zhí)行分頁(yè)查詢 var result = pageQuery.data();// 查詢分頁(yè)信息 //var result = pageQuery.pageInfo(); return result;

為什么說(shuō)是兩個(gè)平臺(tái),不同的地方是配置文件:

# 報(bào)錯(cuò)配置【使用的是GreenplumDriver】【這個(gè)是要集成項(xiàng)目的配置信息】 spring:application:name: dataWay-demodatasource:url: jdbc:pivotal:greenplum://xxx.xx.xxx.xxx:2345;DatabaseName=gpdbusername: gpadminpassword: gpadmindriver-class-name: com.pivotal.jdbc.GreenplumDrivertype: com.alibaba.druid.pool.DruidDataSource# 未報(bào)錯(cuò)配置【使用的是P6SpyDriver和postgresql的組合】 spring:application:name: dataWay-demodatasource:url: jdbc:p6spy:postgresql://xxx.xx.xxx.xxx:2345/gpdbusername: gpadminpassword: gpadmindriver-class-name: com.p6spy.engine.spy.P6SpyDrivertype: com.alibaba.druid.pool.DruidDataSource

報(bào)錯(cuò)信息【省略了一部分不必要信息】:

2021-07-23 15:15:26.877 ERROR 9904 --- [nio-8088-exec-1] n.hasor.dataway.service.ApiCallService : [line 9:17~11:2 ,QIL 1:6] Query dialect missing. net.hasor.dataql.runtime.InstructRuntimeException: [line 9:17~11:2 ,QIL 1:6] Query dialect missing. Caused by: java.lang.IllegalArgumentException: Query dialect missing.

2.原因分析

由于是老項(xiàng)目集成 Hasor,項(xiàng)目用的是 greenplum 驅(qū)動(dòng),官網(wǎng)是這樣描述執(zhí)行器使用的方言的【在 4.2.1 版本之后,SQL 執(zhí)行器會(huì)根據(jù)使用的數(shù)據(jù)庫(kù)連接自動(dòng)推斷對(duì)應(yīng)的方言】,而 Hasor 并未支持 greenplum 數(shù)據(jù)庫(kù)方言,但是卻支持PostgreSQL,【gp數(shù)據(jù)庫(kù)是從pg數(shù)據(jù)演變而來(lái)】,所以考慮使用 FRAGMENT_SQL_PAGE_DIALECT來(lái)配置一下:

3.問(wèn)題解決

根據(jù)官網(wǎng)描述DataQL添加了設(shè)置方言的語(yǔ)句:

hint FRAGMENT_SQL_PAGE_DIALECT = postgresql

報(bào)錯(cuò):

{"success": false,"message": "line 2:33 mismatched input 'postgresql' expecting {'true', 'false', 'null', STRING, HEX_NUM, OCT_NUM, BIT_NUM, INTEGER_NUM, DECIMAL_NUM}","code": 500,"lifeCycleTime": 5,"executionTime": -1,"value": "line 2:33 mismatched input 'postgresql' expecting {'true', 'false', 'null', STRING, HEX_NUM, OCT_NUM, BIT_NUM, INTEGER_NUM, DECIMAL_NUM}" }

我一看就笑了【修改之后又測(cè)試】:

hint FRAGMENT_SQL_PAGE_DIALECT = "postgresql"

成功:

{"success": true,"message": "OK","code": 0,"lifeCycleTime": 17,"executionTime": 11,"value": {"firstrecommendfield": "豫K9F573","secondrecommendfield": "460010993506966","isusing": 1,"futurestartdate": 1618934400000,"handle": 1,"possibility": 1,"attribution": null,"sourcetype": 0} }

4.進(jìn)行總結(jié)

官網(wǎng)是解決問(wèn)題最好的資料,但是不少官網(wǎng)的說(shuō)明文檔都差點(diǎn)兒意思,最終還是要對(duì)問(wèn)題進(jìn)行分析,多看報(bào)錯(cuò)信息,報(bào)錯(cuò)信息不明朗的,就要對(duì)源碼進(jìn)行分析了。

總結(jié)

以上是生活随笔為你收集整理的Hasor【付诸实践 01】低代码框架 DataQL 聚合查询引擎 SQL执行器报错 Query dialect missing 原因分析及解决(针对GreenPlum数据库)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。