Cannot enlarge string buffer problem in large table join with 6 dual joins
- Dominant language
- C
- Stars
- 12.8k
- Forks
- 794
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 31
Description
This query errors out;
``` sql
select
o_year,
sum(case
when nation = 'JAPAN' then volume
else 0
end) / sum(volume) as mkt_share
from
(
select
extract(year from o_orderdate) as o_year,
l_extendedprice * (1 - l_discount) as volume,
n2.n_name as nation
from
part,
supplier,
lineitem,
orders,
customer,
nation n1,
nation n2,
region
where
p_partkey = l_partkey
and s_suppkey = l_suppkey
and l_orderkey = o_orderkey
and o_custkey = c_custkey
and c_nationkey = n1.n_nationkey
and n1.n_regionkey = r_regionkey
and r_name = 'ASIA'
and s_nationkey = n2.n_nationkey
and o_orderdate between date '1995-01-01' and date '1996-12-31'
and p_type = 'PROMO PLATED TIN'
) as all_nations
group by
o_year
order by
o_year;
```
This is the error message;
ERROR: out of memory
DETAIL: Cannot enlarge string buffer containing 1073741818 bytes by 32 more bytes.
This is the join order;
LOG: join order: [ "lineitem" ][ local partition join "orders" ][ dual partition join "part" ][ dual partition join "supplier" ][ dual partition join "customer" ][ dual partition join "nation" ][ dual partition join "nation" ][ dual partition join "region" ]
All tables are hash-partitioned with 10 shards and replication count equals to 1.
This problem is reported in citus-users group.
Contributor guide
Assessment
This issue has not been assessed yet.