如何使 sqrt 和 cos 在 tarantool SQL 中可用?

How to make sqrt and cos available in tarantool SQL?

我正在尝试使用 this 公式估算距离,但是当我尝试在 tarantool 中执行它时 sql

box.execute [[SELECT "weight" + sqrt( cos("lat" - 12.31252) * ...]]

显示:

function SQRT() is not available in SQL
Function 'COS' does not exist

如何使这些 functions 可用?

这些在开箱即用的 tarantool SQL 中尚不可用,但您可以使用 box.schema.func.create 从 SQL 调用任意 lua 代码。这是您需要做的:

box.schema.func.create(
  'COS', {
    returns="number", 
    body="function (num) return math.cos(num) end", 
    is_sandboxed=false,
    param_list={"number"}, 
    exports = {'LUA', 'SQL'}
  })

然后这样称呼它:

box.execute("SELECT cos(123)")

要了解更多信息,您可以参考documentation on calling Lua from SQL