覆盖用于在超表的整数 time 列中设置当前时间的 now() 日期/时间函数。许多策略仅适用于特定年龄的数据块integer_now_func 确定每个数据块的年龄。

您设置为 integer_now_func 的函数没有参数。它必须是以下之一

  • IMMUTABLE: 当您每次执行查询而不是在执行之前准备查询时使用。integer_now_func 的值在生成计划之前计算。这会生成一个明显更小的计划,尤其是在您有大量数据块的情况下。

  • STABLE: integer_now_func 在查询执行开始之前进行评估。数据块修剪在运行时执行。这会生成正确的结果,但可能会增加计划时间。

set_integer_now_func 不适用于 time 列类型为 TIMESTAMPTIMESTAMPTZDATE 的表。

名称类型描述
main_tableREGCLASS在其中使用 integer_now_func 的超表。
integer_now_funcREGPROC一个函数,返回在 main_tabletime 列中的每行中设置的当前时间。
名称类型描述
replace_if_existsBOOLEAN设置为 true 以在您之前设置了自定义函数时覆盖 integer_now_func。默认为 false

为在 unix 时间中具有时间列的超表设置整数 now 函数。

  • IMMUTABLE:当您每次执行查询时

    CREATE OR REPLACE FUNCTION unix_now_immutable() returns BIGINT LANGUAGE SQL IMMUTABLE as $$ SELECT extract (epoch from now())::BIGINT $$;
    SELECT set_integer_now_func('hypertable_name', 'unix_now_immutable');
  • STABLE:对于预处理语句

    CREATE OR REPLACE FUNCTION unix_now_stable() returns BIGINT LANGUAGE SQL STABLE AS $$ SELECT extract(epoch from now())::BIGINT $$;
    SELECT set_integer_now_func('hypertable_name', 'unix_now_stable');

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面