我在 Citus 上创建了一个表:
CREATE TABLE myschema.mytable
然后我创建了从表 myschema.mytable 中获取数据的函数:
CREATE FUNCTION myschema.myfunction(id INT)
RETURNS INT AS $$
DECLARE approved_count INT;
BEGIN
SELECT COUNT(id) INTO approved_count
FROM myschema.mytable
WHERE id = $1 AND is_deleted = FALSE AND is_flagged = TRUE;
RETURN approved_count;
END;
$$ LANGUAGE plpgsql
然后我在表 myschema.mytable 上添加了约束:
ALTER TABLE myschema.mytable ADD CONSTRAINT myconstraint CHECK ((myschema.myfunction()=(0)));
上述所有查询均已成功执行。
最后,我创建了一个分布式表:
SELECT create_distributed_table('myschema.mytable', 'tenant_id');
我得到了错误:
ERROR: function myschema.myfunction() does not exist
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
CONTEXT: while executing command on 10.0.0.***:****
SQL state: 42883
我试图以其他顺序运行查询。我成功创建了一个表、分布式表和函数。但我无法添加约束并得到同样的错误。
据我了解,我的 Worker 看不到我的功能。我该如何解决这个问题?