postgresql执行sql row_number() over 时报错

starwingx 发布于 2013/01/31 17:01
阅读 2K+
收藏 0

@wenshao 你好,想跟你请教个问题:

我在postgresql里执行一个sql的时候回报错错误信息如下,麻烦你帮忙看下,多谢


SELECT res.restaurant_id,   row_number()  over (order by ST_Distance(res.restaurant_point,GeomFromEWKT(?))*111.12 )  as row_id  FROM restaurant res where res.city_id = ? and res.is_delete =false and res.restaurant_id <1000000   limit 10

com.alibaba.druid.sql.parser.ParserException: TODO OVER over, pos 46

at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:226)

at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:70)

at com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils.parameterize(ParameterizedOutputVisitorUtils.java:41)

at com.alibaba.druid.filter.stat.StatFilter.mergeSql(StatFilter.java:145)

at com.alibaba.druid.filter.stat.StatFilter.createSqlStat(StatFilter.java:627)

at com.alibaba.druid.filter.stat.StatFilter.statementPrepareAfter(StatFilter.java:305)

加载中
0
wenshao
wenshao

这个是不影响执行的,只会LOG.error,打错误日志。

这是因为Druid的StatFilter的SQL合并模块调用了SQL Parser,postgres的聚合函数不认识ROW_NUM函数。

问题已经修复,如果着急,也可以使用最新版本的快照:http://code.alibabatech.com/mvn/snapshots//com/alibaba/druid/0.2.12-SNAPSHOT/

0
starwingx
starwingx
多谢温少~
返回顶部
顶部