(functional-limitations)=

# Functional limitations

## Influence of planner GUC parameters

The planner does not try to consider joining order for FROM clause entries
more than `from_collapse_limit`. `pg_hint_plan` cannot affect the joining
order in this case.

## Hints trying to enforce non-executable plans

Planner chooses any executable plans when the enforced plan cannot be
executed:

-   `FULL OUTER JOIN` to use nested loop.
-   Use of indexes that do not have columns used in quals.
-   TID scans for queries without ctid conditions.

## Queries in ECPG

ECPG removes comments in queries written as embedded SQLs so hints cannot
be passed to it.  The only exception `EXECUTE`, that passes the query string
to the server as-is.  The hint table can be used in the case.

## Query Identifiers

When `compute_query_id` is enabled, PostgreSQL generates a query ID,
ignoring comments.  Hence, queries with different hints, still written
the same way, may compute the same query ID.
