Brian Moser created AIRFLOW-6445:
------------------------------------

             Summary: Templating is not used on "parameters" field (but it 
should)
                 Key: AIRFLOW-6445
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-6445
             Project: Apache Airflow
          Issue Type: Improvement
          Components: database, operators
    Affects Versions: master
            Reporter: Brian Moser


In several database related classes (SqlSensor, MySqlOperator, MsSqlOperator, 
OracleOperator, PostgresOperator, JdbcOperator, SqliteOperator,  ...) exists a 
possibility to use parameters with a SQL statement, but templating is not 
enabled on the parameters, only on the SQL statement itself.

Not using parameters has a performance impact on the database. The db has to 
parse a SQL statement to find an optimized way to execute it. Because this 
operation is a performance bottleneck the calculated execution plan is cached 
and reused when the exact same statement is executed again. But the database 
only caches a certain number of execution plans, if one application 
unnecessarily litters the cache with a lot of similar statements, other 
applications suffer. (More detailed explanation: 
https://www.akadia.com/services/ora_bind_variables.html)

Therefore please add templating to the parameters so that the actual SQL 
statement doesn't need to change between runs.

old:
template_fields = ('sql',) # type: Iterable[str]

new:
template_fields = ('sql', 'parameters',) # type: Iterable[str]

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to