citusdata / citusdata/citus

Local query caching should work for reference tables

Open
#5,632 0 comments 0 reactions 0 assignees View on GitHub
performance
Dominant language
C
Stars
12.8k
Forks
794
Avg merge
2d 14h
Merged PRs (30d)
31

Description

`IsLocalPlanCachingSupported` seems to check for
```C
if (!currentJob->deferredPruning)
{
/*
* When not using deferred pruning we may have already replaced distributed
* table RTEs with citus_extradata_container RTEs to pass the shard ID to the
* deparser. In that case, we cannot pass the query tree directly to the
* planner.
*
* If desired, we can relax this check by improving the implementation of
* CacheLocalPlanForShardQuery to translate citus_extradata_container
* to a shard relation OID.
*/
return false;
}
```

However, we only set when `distributionKeyHasParam` which is never true for reference tables:
```C
if (fastPathRestrictionContext->fastPathRouterQuery &&
fastPathRestrictionContext->distributionKeyHasParam)
{
Job *job = CreateJob(originalQuery);
job->deferredPruning = true;

ereport(DEBUG2, (errmsg("Deferred pruning for a fast-path router "
"query")));
return job;
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.