hussein-awala commented on code in PR #37150:
URL: https://github.com/apache/airflow/pull/37150#discussion_r1476859987


##########
airflow/providers/common/sql/operators/sql.py:
##########
@@ -1058,9 +1058,13 @@ def __init__(
 
     def execute(self, context: Context):
         hook = self.get_db_hook()
-        result = hook.get_first(self.sql)[0]
-        if not result:
+        result = hook.get_first(self.sql)
+
+        # if the query returns 0 rows result will be None so cannot be indexed 
into
+        if result is None:

Review Comment:
   Ah yes, every operator has its own implementation. But your change is not 
correct, if an operator returns an empty list, dict, tuple, or string, 
`result[0]` will raise an exception.
   What about using something like:
   ```python
   if result is None or (isinstance([], Sized) and len(result) == 0)
   ```
   here is the explanation:
   ```python
   >>> from collections.abc import Sized
   >>> isinstance([], Sized)
   True
   >>> isinstance((), Sized)
   True
   >>> isinstance({}, Sized)
   True
   >>> isinstance("", Sized)
   True
   >>> isinstance(0, Sized)
   False
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to