Repository: apache/airflow

Issue:
Airflow >= 2.2.0 execution date change is failing TaskInstance get_task_instances method and possibly others
### Apache Airflow version

2.2.3 (latest released)

### What happened

This is my first time reporting or posting on this forum. Please let me know if I need to provide any more information. Thanks for looking at this!

I have a Python Operator that uses the BaseOperator get_task_instances method and during the execution of this method, I encounter the following error:
<img width="1069" alt="Screen Shot 2022-02-17 at 2 28 48 PM" src="https://user-images.githubusercontent.com/18559784/154581673-718bc199-8390-49cf-a3fe-8972b6f39f81.png">

This error is from doing an upgrade from airflow 1.10.15 -> 2.2.3. 

I am using SQLAlchemy version 1.2.24 but I also tried with version 1.2.23 and encountered the same error. However, I do not think this is a sqlAlchemy issue. 

The issue seems to have been introduced with Airflow 2.2.0 (pr: https://github.com/apache/airflow/pull/17719/files), where the TaskInstance.execution_date changed from being a column to this association_proxy. I do not have deep knowledge of SQLAlchemny so I am not sure why this change was made, but it results in it the error I'm getting. 

2.2 .0 +
<img width="536" alt="Screen Shot 2022-02-17 at 2 41 00 PM" src="https://user-images.githubusercontent.com/18559784/154583252-4729b44d-40e2-4a89-9018-95b09ef4da76.png">

1.10.15
<img width="428" alt="Screen Shot 2022-02-17 at 2 56 15 PM" src="https://user-images.githubusercontent.com/18559784/154585325-4546309c-66b6-4e69-aba2-9b6979762a1b.png">



if you follow the stack trace you will get to this chunk of code that leads to the error because the association_proxy has a '__clause_element__' attr, but the attr raises the exception in the error when called.

<img width="465" alt="Screen Shot 2022-02-17 at 2 43 51 PM" src="https://user-images.githubusercontent.com/18559784/154583639-a7957209-b19e-4134-a5c2-88d53176709c.png">

### What you expected to happen

_No response_

### How to reproduce

_No response_

### Operating System

Linux from the official airflow helm chart docker image python version 3.7

### Versions of Apache Airflow Providers

apache-airflow-providers-amazon          2.4.0
apache-airflow-providers-celery          2.1.0
apache-airflow-providers-cncf-kubernetes 2.2.0
apache-airflow-providers-databricks      2.2.0
apache-airflow-providers-docker          2.3.0
apache-airflow-providers-elasticsearch   2.1.0
apache-airflow-providers-ftp             2.0.1
apache-airflow-providers-google          6.2.0
apache-airflow-providers-grpc            2.0.1
apache-airflow-providers-hashicorp       2.1.1
apache-airflow-providers-http            2.0.1
apache-airflow-providers-imap            2.0.1
apache-airflow-providers-microsoft-azure 3.4.0
apache-airflow-providers-mysql           2.1.1
apache-airflow-providers-odbc            2.0.1
apache-airflow-providers-postgres        2.4.0
apache-airflow-providers-redis           2.0.1
apache-airflow-providers-sendgrid        2.0.1
apache-airflow-providers-sftp            2.3.0
apache-airflow-providers-slack           4.1.0
apache-airflow-providers-sqlite          2.0.1
apache-airflow-providers-ssh             2.3.0

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

The only extra dependency I am using is awscli==1.20.65. I have changed very little with the deployment besides a few environments variables and some pod annotations.

### Anything else

_No response_

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)



Discussion:
Thanks for opening your first issue here! Be sure to follow the issue template!


Resolving patch:
diff --git a/airflow/models/baseoperator.py b/airflow/models/baseoperator.py
--- a/airflow/models/baseoperator.py
+++ b/airflow/models/baseoperator.py
@@ -1208,18 +1208,18 @@ def get_task_instances(
         end_date: Optional[datetime] = None,
         session: Session = NEW_SESSION,
     ) -> List[TaskInstance]:
-        """
-        Get a set of task instance related to this task for a specific date
-        range.
-        """
+        """Get task instances related to this task for a specific date range."""
+        from airflow.models import DagRun
+
         end_date = end_date or timezone.utcnow()
         return (
             session.query(TaskInstance)
+            .join(TaskInstance.dag_run)
             .filter(TaskInstance.dag_id == self.dag_id)
             .filter(TaskInstance.task_id == self.task_id)
-            .filter(TaskInstance.execution_date >= start_date)
-            .filter(TaskInstance.execution_date <= end_date)
-            .order_by(TaskInstance.execution_date)
+            .filter(DagRun.execution_date >= start_date)
+            .filter(DagRun.execution_date <= end_date)
+            .order_by(DagRun.execution_date)
             .all()
         )
 


Test patch: