apache-airflow-providers-teradata 3.2.3rc1__tar.gz → 3.3.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/PKG-INFO +8 -8
  2. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/README.rst +4 -4
  3. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/changelog.rst +20 -0
  4. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/index.rst +5 -5
  5. apache_airflow_providers_teradata-3.3.0rc1/docs/operators/tpt.rst +180 -0
  6. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/provider.yaml +15 -1
  7. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/pyproject.toml +4 -4
  8. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/__init__.py +3 -3
  9. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/get_provider_info.py +9 -0
  10. apache_airflow_providers_teradata-3.3.0rc1/src/airflow/providers/teradata/hooks/tpt.py +268 -0
  11. apache_airflow_providers_teradata-3.3.0rc1/src/airflow/providers/teradata/operators/tpt.py +207 -0
  12. apache_airflow_providers_teradata-3.3.0rc1/src/airflow/providers/teradata/utils/tpt_util.py +520 -0
  13. apache_airflow_providers_teradata-3.3.0rc1/tests/system/teradata/example_remote_tpt.py +161 -0
  14. apache_airflow_providers_teradata-3.3.0rc1/tests/system/teradata/example_tpt.py +161 -0
  15. apache_airflow_providers_teradata-3.3.0rc1/tests/unit/teradata/hooks/test_tpt.py +229 -0
  16. apache_airflow_providers_teradata-3.3.0rc1/tests/unit/teradata/operators/test_tpt.py +332 -0
  17. apache_airflow_providers_teradata-3.3.0rc1/tests/unit/teradata/utils/test_tpt_util.py +670 -0
  18. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/LICENSE +0 -0
  19. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/NOTICE +0 -0
  20. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/.latest-doc-only-change.txt +0 -0
  21. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/commits.rst +0 -0
  22. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/conf.py +0 -0
  23. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/connections/teradata.rst +0 -0
  24. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  25. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/integration-logos/Teradata.png +0 -0
  26. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/azure_blob_to_teradata.rst +0 -0
  27. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/bteq.rst +0 -0
  28. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/compute_cluster.rst +0 -0
  29. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/index.rst +0 -0
  30. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/s3_to_teradata.rst +0 -0
  31. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/teradata.rst +0 -0
  32. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/teradata_to_teradata.rst +0 -0
  33. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/security.rst +0 -0
  34. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/__init__.py +0 -0
  35. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/__init__.py +0 -0
  36. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/__init__.py +0 -0
  37. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/bteq.py +0 -0
  38. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/teradata.py +0 -0
  39. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/ttu.py +0 -0
  40. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/__init__.py +0 -0
  41. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/bteq.py +0 -0
  42. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/teradata.py +0 -0
  43. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/teradata_compute_cluster.py +0 -0
  44. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/__init__.py +0 -0
  45. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/azure_blob_to_teradata.py +0 -0
  46. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/s3_to_teradata.py +0 -0
  47. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/teradata_to_teradata.py +0 -0
  48. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/triggers/__init__.py +0 -0
  49. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/triggers/teradata_compute_cluster.py +0 -0
  50. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/__init__.py +0 -0
  51. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/bteq_util.py +0 -0
  52. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/constants.py +0 -0
  53. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/encryption_utils.py +0 -0
  54. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/version_compat.py +0 -0
  55. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/conftest.py +0 -0
  56. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/__init__.py +0 -0
  57. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/__init__.py +0 -0
  58. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/create_ssl_table.sql +0 -0
  59. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/create_table.sql +0 -0
  60. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_azure_blob_to_teradata_transfer.py +0 -0
  61. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_bteq.py +0 -0
  62. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_remote_bteq.py +0 -0
  63. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_s3_to_teradata_transfer.py +0 -0
  64. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_ssl_teradata.py +0 -0
  65. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata.py +0 -0
  66. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata_call_sp.py +0 -0
  67. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata_compute_cluster.py +0 -0
  68. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata_to_teradata_transfer.py +0 -0
  69. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script +0 -0
  70. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script.bteq +0 -0
  71. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script.sql +0 -0
  72. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script_utf16.bteq +0 -0
  73. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/__init__.py +0 -0
  74. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/__init__.py +0 -0
  75. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/__init__.py +0 -0
  76. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/test_bteq.py +0 -0
  77. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/test_teradata.py +0 -0
  78. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/test_ttu.py +0 -0
  79. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/__init__.py +0 -0
  80. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/test_bteq.py +0 -0
  81. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/test_teradata.py +0 -0
  82. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/test_teradata_compute_cluster.py +0 -0
  83. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/__init__.py +0 -0
  84. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/test_azure_blob_to_teradata.py +0 -0
  85. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/test_s3_to_teradata.py +0 -0
  86. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/test_teradata_to_teradata.py +0 -0
  87. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/triggers/__init__.py +0 -0
  88. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/triggers/test_teradata_compute_cluster.py +0 -0
  89. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/__init__.py +0 -0
  90. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/test_bteq_util.py +0 -0
  91. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/test_constants.py +0 -0
  92. {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/test_encryption_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-teradata
3
- Version: 3.2.3rc1
3
+ Version: 3.3.0rc1
4
4
  Summary: Provider package apache-airflow-providers-teradata for Apache Airflow
5
5
  Keywords: airflow-provider,teradata,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: System :: Monitoring
23
23
  License-File: LICENSE
24
24
  License-File: NOTICE
25
- Requires-Dist: apache-airflow>=2.10.0rc1
25
+ Requires-Dist: apache-airflow>=2.11.0rc1
26
26
  Requires-Dist: apache-airflow-providers-common-compat>=1.8.0rc1
27
27
  Requires-Dist: apache-airflow-providers-common-sql>=1.20.0rc1
28
28
  Requires-Dist: teradatasqlalchemy>=17.20.0.0
@@ -31,8 +31,8 @@ Requires-Dist: apache-airflow-providers-amazon ; extra == "amazon"
31
31
  Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == "microsoft-azure"
32
32
  Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
33
33
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
34
- Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.2.3/changelog.html
35
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.2.3
34
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html
35
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0
36
36
  Project-URL: Mastodon, https://fosstodon.org/@airflow
37
37
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
38
38
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -66,7 +66,7 @@ Provides-Extra: ssh
66
66
 
67
67
  Package ``apache-airflow-providers-teradata``
68
68
 
69
- Release: ``3.2.3``
69
+ Release: ``3.3.0``
70
70
 
71
71
 
72
72
  `Teradata <https://www.teradata.com/>`__
@@ -79,7 +79,7 @@ This is a provider package for ``teradata`` provider. All classes for this provi
79
79
  are in ``airflow.providers.teradata`` python package.
80
80
 
81
81
  You can find package information and changelog for the provider
82
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.3/>`_.
82
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/>`_.
83
83
 
84
84
  Installation
85
85
  ------------
@@ -96,7 +96,7 @@ Requirements
96
96
  ========================================== ==================
97
97
  PIP package Version required
98
98
  ========================================== ==================
99
- ``apache-airflow`` ``>=2.10.0``
99
+ ``apache-airflow`` ``>=2.11.0``
100
100
  ``apache-airflow-providers-common-compat`` ``>=1.8.0``
101
101
  ``apache-airflow-providers-common-sql`` ``>=1.20.0``
102
102
  ``teradatasqlalchemy`` ``>=17.20.0.0``
@@ -138,5 +138,5 @@ Extra Dependencies
138
138
  =================== ============================================
139
139
 
140
140
  The changelog for the provider package can be found in the
141
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.3/changelog.html>`_.
141
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html>`_.
142
142
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-teradata``
25
25
 
26
- Release: ``3.2.3``
26
+ Release: ``3.3.0``
27
27
 
28
28
 
29
29
  `Teradata <https://www.teradata.com/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``teradata`` provider. All classes for this provi
36
36
  are in ``airflow.providers.teradata`` python package.
37
37
 
38
38
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.3/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -53,7 +53,7 @@ Requirements
53
53
  ========================================== ==================
54
54
  PIP package Version required
55
55
  ========================================== ==================
56
- ``apache-airflow`` ``>=2.10.0``
56
+ ``apache-airflow`` ``>=2.11.0``
57
57
  ``apache-airflow-providers-common-compat`` ``>=1.8.0``
58
58
  ``apache-airflow-providers-common-sql`` ``>=1.20.0``
59
59
  ``teradatasqlalchemy`` ``>=17.20.0.0``
@@ -95,4 +95,4 @@ Extra Dependencies
95
95
  =================== ============================================
96
96
 
97
97
  The changelog for the provider package can be found in the
98
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.3/changelog.html>`_.
98
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html>`_.
@@ -25,6 +25,26 @@
25
25
  Changelog
26
26
  ---------
27
27
 
28
+ 3.3.0
29
+ .....
30
+
31
+ .. note::
32
+ This release of provider is only available for Airflow 2.11+ as explained in the
33
+ Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
34
+
35
+ Features
36
+ ~~~~~~~~
37
+
38
+ * ``Add DdlOperator to execute Data Definition Language (DDL) statements on Teradata databases using TTU tbuild utility (#56675)``
39
+
40
+ Misc
41
+ ~~~~
42
+
43
+ * ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
44
+
45
+ .. Below changes are excluded from the changelog. Move them to
46
+ appropriate section above if needed. Do not delete the lines(!):
47
+
28
48
  3.2.3
29
49
  .....
30
50
 
@@ -77,7 +77,7 @@ apache-airflow-providers-teradata package
77
77
  `Teradata <https://www.teradata.com/>`__
78
78
 
79
79
 
80
- Release: 3.2.3
80
+ Release: 3.3.0
81
81
 
82
82
  Provider package
83
83
  ----------------
@@ -95,12 +95,12 @@ For the minimum Airflow version supported, see ``Requirements`` below.
95
95
  Requirements
96
96
  ------------
97
97
 
98
- The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
98
+ The minimum Apache Airflow version supported by this provider distribution is ``2.11.0``.
99
99
 
100
100
  ========================================== ==================
101
101
  PIP package Version required
102
102
  ========================================== ==================
103
- ``apache-airflow`` ``>=2.10.0``
103
+ ``apache-airflow`` ``>=2.11.0``
104
104
  ``apache-airflow-providers-common-compat`` ``>=1.8.0``
105
105
  ``apache-airflow-providers-common-sql`` ``>=1.20.0``
106
106
  ``teradatasqlalchemy`` ``>=17.20.0.0``
@@ -136,5 +136,5 @@ Downloading official packages
136
136
  You can download officially released packages and verify their checksums and signatures from the
137
137
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
138
138
 
139
- * `The apache-airflow-providers-teradata 3.2.3 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.3.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.3.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.3.tar.gz.sha512>`__)
140
- * `The apache-airflow-providers-teradata 3.2.3 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.3-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.3-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.3-py3-none-any.whl.sha512>`__)
139
+ * `The apache-airflow-providers-teradata 3.3.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0.tar.gz.sha512>`__)
140
+ * `The apache-airflow-providers-teradata 3.3.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0-py3-none-any.whl.sha512>`__)
@@ -0,0 +1,180 @@
1
+ .. Licensed to the Apache Software Foundation (ASF) under one
2
+ or more contributor license agreements. See the NOTICE file
3
+ distributed with this work for additional information
4
+ regarding copyright ownership. The ASF licenses this file
5
+ to you under the Apache License, Version 2.0 (the
6
+ "License"); you may not use this file except in compliance
7
+ with the License. You may obtain a copy of the License at
8
+
9
+ .. http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ .. Unless required by applicable law or agreed to in writing,
12
+ software distributed under the License is distributed on an
13
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ KIND, either express or implied. See the License for the
15
+ specific language governing permissions and limitations
16
+ under the License.
17
+
18
+ .. _howto/operator:DdlOperator:
19
+
20
+ DdlOperator
21
+ ===========
22
+
23
+ The ``DdlOperator`` is an Airflow operator designed to execute Data Definition Language (DDL) statements on Teradata databases. It provides a robust way to create, alter, or drop database objects as part of your data pipelines.
24
+
25
+ .. note::
26
+
27
+ The ``DdlOperator`` requires the ``Teradata Parallel Transporter (TPT)`` package from Teradata Tools and Utilities (TTU)
28
+ to be installed on the machine where the ``tbuild`` command will run (either local or remote).
29
+ Ensure that the ``tbuild`` executable is available in the system's ``PATH``.
30
+ Refer to the official Teradata documentation for installation, configuration, and security best practices.
31
+
32
+ **Key Features:**
33
+
34
+ - Executes DDL SQL statements (CREATE, ALTER, DROP, etc.)
35
+ - Works with single statements or batches of multiple DDL operations
36
+ - Integrates with Airflow's connection management for secure database access
37
+ - Provides comprehensive logging of execution results
38
+ - Supports both local and remote execution via SSH
39
+
40
+ When you need to manage database schema changes, create temporary tables, or clean up data structures as part of your workflow, the ``DdlOperator`` offers a streamlined approach that integrates seamlessly with your Airflow DAGs.
41
+
42
+ Prerequisite
43
+ ------------
44
+
45
+ Make sure your Teradata Airflow connection is defined with the required fields:
46
+
47
+ - ``host``
48
+ - ``login``
49
+ - ``password``
50
+
51
+ You can define a remote host with a separate SSH connection using the ``ssh_conn_id``.
52
+
53
+ Ensure that the ``Teradata Parallel Transporter (TPT)`` package is installed on the machine where TdLoadOperator will execute commands. This can be:
54
+
55
+ - The **local machine** where Airflow runs the task, for local execution.
56
+ - A **remote host** accessed via SSH, for remote execution.
57
+
58
+ If executing remotely, ensure that an SSH server (e.g., ``sshd``) is running and accessible on the remote machine, and that the ``tbuild`` executable is available in the system's ``PATH``.
59
+
60
+ .. note::
61
+
62
+ For improved security, it is **highly recommended** to use
63
+ **private key-based SSH authentication** (SSH key pairs) instead of username/password
64
+ for the SSH connection.
65
+
66
+ This avoids password exposure, enables seamless automated execution, and enhances security.
67
+
68
+ See the Airflow SSH Connection documentation for details on configuring SSH keys:
69
+ https://airflow.apache.org/docs/apache-airflow/stable/howto/connection/ssh.html
70
+
71
+
72
+ To execute DDL operations in a Teradata database, use the
73
+ :class:`~airflow.providers.teradata.operators.ddl.DdlOperator`.
74
+
75
+ Handling Escape Sequences for Embedded Quotes
76
+ ----------------------------------------------
77
+
78
+ When working with DDL statements that contain embedded quotes, it's important to understand how escape sequences are handled differently between the DAG definition and the SQL execution:
79
+
80
+ **In DAG Definition (Python):**
81
+ - Use backslash escape sequences: ``\"`` for double quotes, ``\'`` for single quotes
82
+ - Python string literals require backslash escaping
83
+
84
+ **In SQL Execution (Teradata):**
85
+ - SQL standard requires doubling quotes when enclosed within the same quote type
86
+ - Single quotes in single-quoted strings: ``'Don''t'``
87
+ - Double quotes in double-quoted identifiers: ``"My""Table"``
88
+
89
+ **Example:**
90
+
91
+ .. code-block:: python
92
+
93
+ # In your DAG - use Python escape sequences
94
+ ddl_with_quotes = DdlOperator(
95
+ task_id="create_table_with_quotes",
96
+ ddl=[
97
+ "CREATE TABLE test_table (col1 VARCHAR(50) DEFAULT '\"quoted_value\"')",
98
+ "INSERT INTO test_table VALUES ('It''s a test')", # Note the doubled single quotes
99
+ ],
100
+ teradata_conn_id="teradata_default",
101
+ )
102
+
103
+ **Key Points:**
104
+ - When defining DDL statements in Python strings, use standard Python escape sequences
105
+ - The operator automatically handles the conversion for TPT script generation
106
+ - For SQL string literals containing quotes, follow SQL standards (double the quotes)
107
+ - Test your DDL statements carefully when they contain complex quoting
108
+
109
+ Key Operation Examples with DdlOperator
110
+ ---------------------------------------
111
+
112
+ Dropping tables in Teradata
113
+ ---------------------------
114
+ You can use the DdlOperator to drop tables in Teradata. The following example demonstrates how to drop multiple tables:
115
+
116
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
117
+ :language: python
118
+ :dedent: 4
119
+ :start-after: [START ddl_operator_howto_guide_drop_table]
120
+ :end-before: [END ddl_operator_howto_guide_drop_table]
121
+
122
+ Creating tables in Teradata
123
+ ---------------------------
124
+ You can use the DdlOperator to create tables in Teradata. The following example demonstrates how to create multiple tables:
125
+
126
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
127
+ :language: python
128
+ :dedent: 4
129
+ :start-after: [START ddl_operator_howto_guide_create_table]
130
+ :end-before: [END ddl_operator_howto_guide_create_table]
131
+
132
+ Creating an index on a Teradata table
133
+ -------------------------------------
134
+ You can use the DdlOperator to create an index on a Teradata table. The following example demonstrates how to create an index:
135
+
136
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
137
+ :language: python
138
+ :dedent: 4
139
+ :start-after: [START ddl_operator_howto_guide_create_index]
140
+ :end-before: [END ddl_operator_howto_guide_create_index]
141
+
142
+ Renaming a table in Teradata
143
+ ----------------------------
144
+ You can use the DdlOperator to rename a table in Teradata. The following example demonstrates how to rename a table:
145
+
146
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
147
+ :language: python
148
+ :dedent: 4
149
+ :start-after: [START ddl_operator_howto_guide_rename_table]
150
+ :end-before: [END ddl_operator_howto_guide_rename_table]
151
+
152
+ Dropping an index in Teradata
153
+ -----------------------------
154
+ You can use the DdlOperator to drop an index in Teradata. The following example demonstrates how to drop an index:
155
+
156
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
157
+ :language: python
158
+ :dedent: 4
159
+ :start-after: [START ddl_operator_howto_guide_drop_index]
160
+ :end-before: [END ddl_operator_howto_guide_drop_index]
161
+
162
+ Altering a table in Teradata
163
+ ----------------------------
164
+ You can use the DdlOperator to alter a table in Teradata. The following example demonstrates how to add a column:
165
+
166
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
167
+ :language: python
168
+ :dedent: 4
169
+ :start-after: [START ddl_operator_howto_guide_alter_table]
170
+ :end-before: [END ddl_operator_howto_guide_alter_table]
171
+
172
+ The complete Teradata Operator DAG
173
+ ----------------------------------
174
+
175
+ When we put everything together, our DAG should look like this:
176
+
177
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
178
+ :language: python
179
+ :start-after: [START ddl_operator_howto_guide]
180
+ :end-before: [END ddl_operator_howto_guide]
@@ -22,12 +22,13 @@ description: |
22
22
  `Teradata <https://www.teradata.com/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1763070578
25
+ source-date-epoch: 1764110710
26
26
  # Note that those versions are maintained by release manager - do not update them manually
27
27
  # with the exception of case where other provider in sources has >= new provider version.
28
28
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
29
29
  # to be done in the same PR
30
30
  versions:
31
+ - 3.3.0
31
32
  - 3.2.3
32
33
  - 3.2.2
33
34
  - 3.2.1
@@ -68,6 +69,13 @@ integrations:
68
69
  logo: /docs/integration-logos/Teradata.png
69
70
  tags: [software]
70
71
 
72
+ - integration-name: Tpt
73
+ external-doc-url: https://www.teradata.com/
74
+ how-to-guide:
75
+ - /docs/apache-airflow-providers-teradata/operators/tpt.rst
76
+ logo: /docs/integration-logos/Teradata.png
77
+ tags: [software]
78
+
71
79
  operators:
72
80
  - integration-name: Teradata
73
81
  python-modules:
@@ -76,6 +84,9 @@ operators:
76
84
  - integration-name: Bteq
77
85
  python-modules:
78
86
  - airflow.providers.teradata.operators.bteq
87
+ - integration-name: Tpt
88
+ python-modules:
89
+ - airflow.providers.teradata.operators.tpt
79
90
 
80
91
  hooks:
81
92
  - integration-name: Teradata
@@ -87,6 +98,9 @@ hooks:
87
98
  - integration-name: Bteq
88
99
  python-modules:
89
100
  - airflow.providers.teradata.hooks.bteq
101
+ - integration-name: Tpt
102
+ python-modules:
103
+ - airflow.providers.teradata.hooks.tpt
90
104
 
91
105
  transfers:
92
106
  - source-integration-name: Teradata
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-teradata"
28
- version = "3.2.3rc1"
28
+ version = "3.3.0rc1"
29
29
  description = "Provider package apache-airflow-providers-teradata for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  license = "Apache-2.0"
@@ -58,7 +58,7 @@ requires-python = ">=3.10"
58
58
  # Make sure to run ``prek update-providers-dependencies --all-files``
59
59
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
60
60
  dependencies = [
61
- "apache-airflow>=2.10.0rc1",
61
+ "apache-airflow>=2.11.0rc1",
62
62
  "apache-airflow-providers-common-compat>=1.8.0rc1",
63
63
  "apache-airflow-providers-common-sql>=1.20.0rc1",
64
64
  "teradatasqlalchemy>=17.20.0.0",
@@ -117,8 +117,8 @@ apache-airflow-providers-common-sql = {workspace = true}
117
117
  apache-airflow-providers-standard = {workspace = true}
118
118
 
119
119
  [project.urls]
120
- "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.2.3"
121
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.2.3/changelog.html"
120
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0"
121
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html"
122
122
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
123
123
  "Source Code" = "https://github.com/apache/airflow"
124
124
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "3.2.3"
32
+ __version__ = "3.3.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
- "2.10.0"
35
+ "2.11.0"
36
36
  ):
37
37
  raise RuntimeError(
38
- f"The package `apache-airflow-providers-teradata:{__version__}` needs Apache Airflow 2.10.0+"
38
+ f"The package `apache-airflow-providers-teradata:{__version__}` needs Apache Airflow 2.11.0+"
39
39
  )
@@ -50,6 +50,13 @@ def get_provider_info():
50
50
  "logo": "/docs/integration-logos/Teradata.png",
51
51
  "tags": ["software"],
52
52
  },
53
+ {
54
+ "integration-name": "Tpt",
55
+ "external-doc-url": "https://www.teradata.com/",
56
+ "how-to-guide": ["/docs/apache-airflow-providers-teradata/operators/tpt.rst"],
57
+ "logo": "/docs/integration-logos/Teradata.png",
58
+ "tags": ["software"],
59
+ },
53
60
  ],
54
61
  "operators": [
55
62
  {
@@ -60,11 +67,13 @@ def get_provider_info():
60
67
  ],
61
68
  },
62
69
  {"integration-name": "Bteq", "python-modules": ["airflow.providers.teradata.operators.bteq"]},
70
+ {"integration-name": "Tpt", "python-modules": ["airflow.providers.teradata.operators.tpt"]},
63
71
  ],
64
72
  "hooks": [
65
73
  {"integration-name": "Teradata", "python-modules": ["airflow.providers.teradata.hooks.teradata"]},
66
74
  {"integration-name": "Ttu", "python-modules": ["airflow.providers.teradata.hooks.ttu"]},
67
75
  {"integration-name": "Bteq", "python-modules": ["airflow.providers.teradata.hooks.bteq"]},
76
+ {"integration-name": "Tpt", "python-modules": ["airflow.providers.teradata.hooks.tpt"]},
68
77
  ],
69
78
  "transfers": [
70
79
  {