有没有办法查看MonetDB函数签名

时间:2016-06-09 18:23:08

标签: function monetdb

我试图找到MonetDB函数签名的源代码。 通过查询sys.functions表可以找到一些,但是日期和时间函数缺少签名。 例如,如果你看一下"月"该表中的函数有4个列在表中。

| id   | name       | func  | mod   | lang | type | side_e | varres | vararg |>
:      :            :       :       : uage :      : ffect  :        :        :>
+======+============+=======+=======+======+======+========+========+========    +
|  901 | month      | month | mtime |    0 |    1 | false  | false  | false  |
|  910 | month      | month | mtime |    0 |    1 | false  | false  | false  |
|  916 | month      | month | mtime |    0 |    1 | false  | false  | false  |
|  922 | month      | month | mtime |    0 |    1 | false  | false  | false  |
|  930 | dayofmonth | day   | mtime |    0 |    1 | false  | false  | false  |
+------+------------+-------+-------+------+------+--------+--------+--------

我猜了那个"月"可以像:     SELECT "month"(now());

我是对的 - 但我找不到参数列表" month"功能需要或者它们究竟返回了什么。

这个问题不只是关于"月"我想要一个源来查找sys.function表中所有函数的函数利用率。

其他RDBMS供应商已经对这些类型的函数进行了充实的解释 - 我发现MonetDB没有这样的东西,我只能假设我在错误的地方。我在网站上阅读了他们的文档并在他们的网站上搜索了这些信息,但我找不到它。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以在 sys.args 表中找到函数的参数/返回类型。您可以将此表与 sys.functions 表一起使用,以获取特定函数的参数/返回类型。

例如,要获取函数的有效参数及其返回类型,可以使用以下查询。

SELECT functions.id, functions.name,args.name,args.type 
FROM functions 
INNER JOIN args 
ON args.func_id=functions.id 
WHERE functions.name='month';


+------+-------+-------+----------------+
| id   | name  | name  | type           |
+======+=======+=======+================+
| 1157 | month | res_0 | int            |
| 1157 | month | arg_1 | date           |
| 1166 | month | res_0 | int            |
| 1166 | month | arg_1 | timestamp      |
| 1172 | month | res_0 | int            |
| 1172 | month | arg_1 | timestamptz    |
| 1178 | month | res_0 | int            |
| 1178 | month | arg_1 | month_interval |
+------+-------+-------+----------------+

我们可以看到有四个函数叫月。它们都返回一个整数( res_0 ),并采用日期时间戳 timestamptz month_interval 作为参数( arg_1 )。