Skip to content

apache-airflow-providers-jdbc fails with jaydebeapi.Error #25388

Description

@akashgangulyhf

Apache Airflow Provider(s)

jdbc

Versions of Apache Airflow Providers

I am using apache-airflow-providers-jdbc==3.0.0 for Airflow 2.3.3 as per constraint file

Apache Airflow version

2.3.3 (latest released)

Operating System

K8 on Linux

Deployment

Official Apache Airflow Helm Chart

Deployment details

No response

What happened

I am using JdbcOperator to execute one ALTER sql statement but it returns the following error:
File "/usr/local/airflow/.local/lib/python3.10/site-packages/airflow/providers/jdbc/operators/jdbc.py", line 76, in execute
return hook.run(self.sql, self.autocommit, parameters=self.parameters, handler=fetch_all_handler)
File "/usr/local/airflow/.local/lib/python3.10/site-packages/airflow/hooks/dbapi.py", line 213, in run
result = handler(cur)
File "/usr/local/airflow/.local/lib/python3.10/site-packages/airflow/providers/jdbc/operators/jdbc.py", line 30, in fetch_all_handler
return cursor.fetchall()
File "/usr/local/airflow/.local/lib/python3.10/site-packages/jaydebeapi/init.py", line 593, in fetchall
row = self.fetchone()
File "/usr/local/airflow/.local/lib/python3.10/site-packages/jaydebeapi/init.py", line 558, in fetchone
raise Error()
jaydebeapi.Error

What you think should happen instead

The introduction of handler=fetch_all_handler in File "/usr/local/airflow/.local/lib/python3.10/site-packages/airflow/providers/jdbc/operators/jdbc.py", line 76, in execute
return hook.run(self.sql, self.autocommit, parameters=self.parameters, handler=fetch_all_handler) is breaking the script. With the previous version which did not have fetch_all_handler in jdbc.py, it was running perfectly.

How to reproduce

Try submitting ALTER statement in airflow jdbcOperator.

Anything else

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Activity

  1. boring-cyborg commented on Jul 28, 2022

    @boring-cyborg

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

  2. potiuk commented on Jul 29, 2022

    @potiuk
    Member

    @kazanzhy -> maybe you can help? (In the meantime @akashgangulyhf -> you can always downgrade the provider to previous version - this is the nice thing about providers that you can downgrade them individuall if you see error even if "blessed" version is different.

  3. akashgangulyhf commented on Jul 29, 2022

    @akashgangulyhf
    Author

    Hi @potiuk , Thanks for picking this up. I tried doing so but we have a dependency check with the constraint file and Airflow 2.3.3 doesn't allow <3.0.0 for jdbc operator

  4. potiuk commented on Jul 29, 2022

    @potiuk
    Member

    Don't use constraints for that @akashgangulyhf. See https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html#installing-upgrading-downgrading-providers-separately-from-airflow-core

    For installing the providers you should not use any constraint files (the constraints are for installing Airflow with providers, not to install providers separately).

    This should be a separate pip install <provider>==x.y.z command if you want to downgrade/upgrade provider separately - without constraints.

  5. akashgangulyhf commented on Jul 29, 2022

    @akashgangulyhf
    Author

    I see, let me see if I can go with that approach. Thanks.

  6. FanatoniQ commented on Jul 31, 2022

    @FanatoniQ
    Contributor

    @potiuk @akashgangulyhf I just want to point out that this isn't related to the jaydebeapi driver.

    Currently any sql providers using the fetch_all_handler will fail since https://github.com/apache/airflow/pull/23971/files#diff-6e1b2f961cb951d05d66d2d814ef5f6d8f8bf8f43c40fb5d40e27a031fed8dd7R35 changed the fetch_all_handler implementation, making it non dbapi2 compliant but only compatible with sqlalchemy (we do not use sqlalchemy in DbApiHook.run).

    PR #25430 should fix it

  7. linked a pull request that will close this issueFix common sql DbApiHook fetch_all_handler #25430on Aug 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions