postgresql-topn
postgresql-topn copied to clipboard
Aggregation error over a citus distributed table
I have encountered with an error when I execute a query stated in TopN Readme page, over a citus distributed table. The same query worked when I used a reference or a local table instead of distributed one.
postgres version: pg14
Citus repo: citus-enterprise Branch: release-11.0 (bea69bce45b1621bf4e27d2559e9e2b9755e3771)
TopN branch: master (865c82771e667cb98aa914ae9f5a2226218d1cd4)
Reproducing steps:
- Created a cluster of 2 worker nodes using citus dev tool:
citus_dev make --destroy testCluster
- Connect to the coordinator node.
pgsql -p 9700
- Execute the commands in below.
CREATE EXTENSION topn;
CREATE TABLE customer_reviews
(
customer_id TEXT,
review_date DATE,
review_rating INTEGER,
review_votes INTEGER,
review_helpful_votes INTEGER,
product_id CHAR(10),
product_title TEXT,
product_sales_rank BIGINT,
product_group TEXT,
product_category TEXT,
product_subcategory TEXT,
similar_product_ids CHAR(10)[]
);
\COPY customer_reviews FROM 'customer_reviews_2000.csv' WITH CSV;
CREATE TABLE popular_products
(
review_date date UNIQUE,
agg_data jsonb
);
SELECT create_distributed_table('popular_products', 'review_date');
INSERT INTO popular_products
SELECT review_date, topn_add_agg(product_id)
FROM customer_reviews
GROUP BY review_date;
SELECT review_date, (topn(agg_data, 1)).*
FROM popular_products
ORDER BY review_date;
SELECT (topn(topn_union_agg(agg_data), 10)).*
FROM popular_products
WHERE review_date >= '2000-01-01' AND review_date < '2000-02-01'
ORDER BY 2 DESC;
Error:
ERROR: set-valued function called in context that cannot accept a set
LINE 1: SELECT (topn(topn_union_agg(agg_data), 10)).*
looks similar to https://github.com/citusdata/postgresql-topn/issues/32