CitusDB是否支持`CREATE VIEW`?

问题描述:

假设我们有一个名为customer_reviews分布式CitusDB表,我们尝试在其上创建一个视图:CitusDB是否支持`CREATE VIEW`?

CREATE VIEW book_reviews AS 
    (SELECT * FROM customer_reviews WHERE product_group = 'Book'); 

这似乎工作。但是,如果我们运行:

SELECT COUNT(1) FROM book_reviews; 

CitusDB提供了以下错误:

ERROR: cannot plan queries that include both regular and partitioned relations 

两个问题:

  1. 有没有办法通过对所有作业员手动创建视图来解决这个节点?
  2. 有没有办法使CREATE VIEWDROP VIEW在主节点上正常工作,对于在运行时自动创建和销毁视图的应用程序?
+0

快速更新,我们(Citus)已经看到了这个问题,并会很快得到您的回复。 CREATE VIEW不能像你写的那样工作,但有一个解决方法需要一点时间来写。 – num1

首先,我创建了an issue来跟踪这个。请随时添加您对此问题的评论和反馈。

在我们实现此功能之前,我看到了两种解决方法;

  • 使用UDF或PL/pgSQL函数来包装视图查询而不是创建视图。我在GitHub问题中添加了具体示例

  • 创建一些UDF和PL/pgSQL函数,以将视图向下传播到工作器节点上的分片并操纵元数据以模拟主节点上的视图。我还添加了一个原型的方法来GitHub的问题

我认为什么是最适合你取决于你CREATE VIEW查询和您的应用程序堆栈。你能解释一下你的用例吗?你打算如何使用视图?