This is an automated email from the ASF dual-hosted git repository.
kaxilnaik pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new b205a67afe Handler parameter from `JdbcOperator` to `JdbcHook.run`
(#23817)
b205a67afe is described below
commit b205a67afe6b23d2863bdf5f657dd235d9a901d8
Author: Dmytro Kazanzhy <[email protected]>
AuthorDate: Sun May 22 02:59:22 2022 +0300
Handler parameter from `JdbcOperator` to `JdbcHook.run` (#23817)
---
airflow/providers/jdbc/operators/jdbc.py | 8 +++++++-
tests/providers/jdbc/operators/test_jdbc.py | 7 +++++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/airflow/providers/jdbc/operators/jdbc.py
b/airflow/providers/jdbc/operators/jdbc.py
index 7fefc74a93..2c023d9afe 100644
--- a/airflow/providers/jdbc/operators/jdbc.py
+++ b/airflow/providers/jdbc/operators/jdbc.py
@@ -15,6 +15,7 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+
from typing import TYPE_CHECKING, Iterable, List, Mapping, Optional, Sequence,
Union
from airflow.models import BaseOperator
@@ -24,6 +25,11 @@ if TYPE_CHECKING:
from airflow.utils.context import Context
+def fetch_all_handler(cursor):
+ """Handler for DbApiHook.run() to return results"""
+ return cursor.fetchall()
+
+
class JdbcOperator(BaseOperator):
"""
Executes sql code in a database using jdbc driver.
@@ -67,4 +73,4 @@ class JdbcOperator(BaseOperator):
def execute(self, context: 'Context') -> None:
self.log.info('Executing: %s', self.sql)
hook = JdbcHook(jdbc_conn_id=self.jdbc_conn_id)
- hook.run(self.sql, self.autocommit, parameters=self.parameters)
+ return hook.run(self.sql, self.autocommit, parameters=self.parameters,
handler=fetch_all_handler)
diff --git a/tests/providers/jdbc/operators/test_jdbc.py
b/tests/providers/jdbc/operators/test_jdbc.py
index e16ac446e6..812d60fd45 100644
--- a/tests/providers/jdbc/operators/test_jdbc.py
+++ b/tests/providers/jdbc/operators/test_jdbc.py
@@ -19,7 +19,7 @@
import unittest
from unittest.mock import patch
-from airflow.providers.jdbc.operators.jdbc import JdbcOperator
+from airflow.providers.jdbc.operators.jdbc import JdbcOperator,
fetch_all_handler
class TestJdbcOperator(unittest.TestCase):
@@ -33,5 +33,8 @@ class TestJdbcOperator(unittest.TestCase):
mock_jdbc_hook.assert_called_once_with(jdbc_conn_id=jdbc_operator.jdbc_conn_id)
mock_jdbc_hook.return_value.run.assert_called_once_with(
- jdbc_operator.sql, jdbc_operator.autocommit,
parameters=jdbc_operator.parameters
+ jdbc_operator.sql,
+ jdbc_operator.autocommit,
+ parameters=jdbc_operator.parameters,
+ handler=fetch_all_handler,
)