Moreover, I'm a tad wary about using PlannerSettings as they seem very
generic (i.e. not specific to a particular storage/format plugin, for
example).  I've used "store.parquet.enable_pushdown_filter" as the option,
as it's very specific to the Parquet format plugin.  I imagine I can still
use getOptions() to get that option from PlannerSettings, but it feels a
bit more like we should be using QueryContext like PruneScanRule uses.

What do you think?

On Fri, May 1, 2015 at 10:13 AM, Adam Gilmore <dragoncu...@gmail.com> wrote:

> I actually patched the StorageEnginePlugin and FormatPlugin to pass
> QueryContext right through the chain of getting optimizer rules (as is the
> case for getting basic rules, etc.).  This seemed to me like the most
> logical approach and aligned with something like your PruneScanRule.
>
> Do you think I should revert back and use the example you gave?​
>
> P.S. The pushdown filter has improved performance significantly for
> certain types of queries.  It mostly comes back to how well the data is
> ordered and how often it can exclude row groups.  Ideally, we should be
> excluding individual pages as well, but from what I can see even the reader
> from the Parquet library does not yet do this.
>
> On Thu, Apr 30, 2015 at 4:14 PM, Jacques Nadeau <jacq...@apache.org>
> wrote:
>
>> PlannerSettings is the primary we expose settings that need to be
>> interrogated during planning (e.g. in an optimizer rule).  You can get
>> ahold of this by doing:
>>
>> PlannerSettings settings = PrelUtil.getPlannerSettings(call.getPlanner());
>>
>> PlannerSettings then has access to session settings.
>>
>> You can see an example of this at [1]
>>
>> I'm excited to see the impact of this.  Look forward to seeing the patch!
>>
>> [1]
>>
>> https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/NestedLoopJoinPrule.java#L82
>>
>>
>> On Wed, Apr 29, 2015 at 11:06 PM, Adam Gilmore <dragoncu...@gmail.com>
>> wrote:
>>
>> > Hi guys,
>> >
>> > I'm trying to work out how I could access the QueryContext inside
>> > a StoragePluginOptimizerRule.
>> >
>> > I've basically implemented the Parquet pushdown filtering, but I really
>> > need to access the session settings (for whether or not we're using the
>> new
>> > Parquet reader so we can completely pushdown a filter and also for
>> > providing a setting to enable/disable pushdown filters).
>> >
>> > I've looked in a fair bit of detail, but there doesn't seem to be a way
>> to
>> > access this.
>> >
>> > If this is not the way I should be implementing it, can anyone make some
>> > suggestions?  I really want to do full pushdown when using the new
>> Parquet
>> > reader, but I have no easy way to detect it's going to be used.
>> >
>> > P.S. In cases where we "fall back" to the new Parquet reader, I don't
>> do a
>> > full pushdown (as detecting that is done further down than the planner).
>> > This could be fixed in the future, but for now I'm happy for just when
>> that
>> > setting is true.
>> >
>>
>
>

Reply via email to