Support Questions
Find answers, ask questions, and share your expertise
Alert: Welcome to the Unified Cloudera Community. Former HCC members be sure to read and learn how to activate your account here.

How the Planner in PGStrom differs from PostgreSQL?

How the Planner in PGStrom differs from PostgreSQL?

New Contributor

I am reading through Postgres and PGStrom. Regarding the planning factors, I need some clarifications.

Planner in Postgres checks for different scan and join methods, and then find the cheapest one and creates a query plan tree. While going for same thing in GPU, the checks should also be made for, whether it is device executable or not and the query plan tree from Postgres has been updated.

How this planning in GPU actually works for? How to determine device executables? What are the factors considered for the planner in GPU?

For example, in gpujoin.c, the function responsible for this plan is pgstrom_post_planner_gpujoin. What is the work of this function? What is this actually doing? It is updating some target list. What are they? It is checking for pgstrom_device_expression(tle->expr) i.e., for device executables. What are the tasks covered under this?

How to plan for query executions in gpu? How it is different from plan for query execution in CPU?

Best regards