Skip to content

Commit 76a3c28

Browse files
authored
[PECO-1803] Databricks sqlalchemy is split into this folder (#1)
* databricks-sqlalchemy plugin split * Refractored code and added pytest.ini for sqla_testing issue * Changed imports from databricks.sqlalchemy to databricks_sqlalchemy * Added the integration.yml workflow * Changed screts name * Added workflow to run on commit changes * Fixed issue of failing tests in github actions * Added dependency tests * Cleaned up the code * Changed README.md * README.md edits * Renamed the imports to databricks * Minor refractors * Removed the Integration.yml file * Changed the folder structure to have databricks as the common namespace * Minor Fix * Removed the README.md from within the sqlalchemy folder as it is present globally * Fixed LICENSE and other issues
1 parent 5a10e2b commit 76a3c28

32 files changed

+4853
-3
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ cython_debug/
194194
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
195195
# and can be added to the global gitignore or merged into this file. For a more nuclear
196196
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
197-
#.idea/
197+
.idea/
198198

199199
### Python Patch ###
200200
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration

CHANGELOG.md

Lines changed: 274 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,274 @@
1+
# Release History
2+
3+
# 3.3.0 (2024-07-18)
4+
5+
- Don't retry requests that fail with HTTP code 401 (databricks/databricks-sql-python#408 by @Hodnebo)
6+
- Remove username/password (aka "basic") auth option (databricks/databricks-sql-python#409 by @jackyhu-db)
7+
- Refactor CloudFetch handler to fix numerous issues with it (databricks/databricks-sql-python#405 by @kravets-levko)
8+
- Add option to disable SSL verification for CloudFetch links (databricks/databricks-sql-python#414 by @kravets-levko)
9+
10+
Databricks-managed passwords reached end of life on July 10, 2024. Therefore, Basic auth support was removed from
11+
the library. See https://docs.databricks.com/en/security/auth-authz/password-deprecation.html
12+
13+
The existing option `_tls_no_verify=True` of `sql.connect(...)` will now also disable SSL cert verification
14+
(but not the SSL itself) for CloudFetch links. This option should be used as a workaround only, when other ways
15+
to fix SSL certificate errors didn't work.
16+
17+
# 3.2.0 (2024-06-06)
18+
19+
- Update proxy authentication (databricks/databricks-sql-python#354 by @amir-haroun)
20+
- Relax `pyarrow` pin (databricks/databricks-sql-python#389 by @dhirschfeld)
21+
- Fix error logging in OAuth manager (databricks/databricks-sql-python#269 by @susodapop)
22+
- SQLAlchemy: enable delta.feature.allowColumnDefaults for all tables (databricks/databricks-sql-python#343 by @dhirschfeld)
23+
- Update `thrift` dependency (databricks/databricks-sql-python#397 by @m1n0)
24+
25+
# 3.1.2 (2024-04-18)
26+
27+
- Remove broken cookie code (#379)
28+
- Small typing fixes (#382, #384 thanks @wyattscarpenter)
29+
30+
# 3.1.1 (2024-03-19)
31+
32+
- Don't retry requests that fail with code 403 (#373)
33+
- Assume a default retry-after for 429/503 (#371)
34+
- Fix boolean literals (#357)
35+
36+
# 3.1.0 (2024-02-16)
37+
38+
- Revert retry-after behavior to be exponential backoff (#349)
39+
- Support Databricks OAuth on Azure (#351)
40+
- Support Databricks OAuth on GCP (#338)
41+
42+
# 3.0.3 (2024-02-02)
43+
44+
- Revised docstrings and examples for OAuth (#339)
45+
- Redact the URL query parameters from the urllib3.connectionpool logs (#341)
46+
47+
# 3.0.2 (2024-01-25)
48+
49+
- SQLAlchemy dialect now supports table and column comments (thanks @cbornet!)
50+
- Fix: SQLAlchemy dialect now correctly reflects TINYINT types (thanks @TimTheinAtTabs!)
51+
- Fix: `server_hostname` URIs that included `https://` would raise an exception
52+
- Other: pinned to `pandas<=2.1` and `urllib3>=1.26` to avoid runtime errors in dbt-databricks (#330)
53+
54+
## 3.0.1 (2023-12-01)
55+
56+
- Other: updated docstring comment about default parameterization approach (#287)
57+
- Other: added tests for reading complex types and revised docstrings and type hints (#293)
58+
- Fix: SQLAlchemy dialect raised DeprecationWarning due to `dbapi` classmethod (#294)
59+
- Fix: SQLAlchemy dialect could not reflect TIMESTAMP_NTZ columns (#296)
60+
61+
## 3.0.0 (2023-11-17)
62+
63+
- Remove support for Python 3.7
64+
- Add support for native parameterized SQL queries. Requires DBR 14.2 and above. See docs/parameters.md for more info.
65+
- Completely rewritten SQLAlchemy dialect
66+
- Adds support for SQLAlchemy >= 2.0 and drops support for SQLAlchemy 1.x
67+
- Full e2e test coverage of all supported features
68+
- Detailed usage notes in `README.sqlalchemy.md`
69+
- Adds support for:
70+
- New types: `TIME`, `TIMESTAMP`, `TIMESTAMP_NTZ`, `TINYINT`
71+
- `Numeric` type scale and precision, like `Numeric(10,2)`
72+
- Reading and writing `PrimaryKeyConstraint` and `ForeignKeyConstraint`
73+
- Reading and writing composite keys
74+
- Reading and writing from views
75+
- Writing `Identity` to tables (i.e. autoincrementing primary keys)
76+
- `LIMIT` and `OFFSET` for paging through results
77+
- Caching metadata calls
78+
- Enable cloud fetch by default. To disable, set `use_cloud_fetch=False` when building `databricks.sql.client`.
79+
- Add integration tests for Databricks UC Volumes ingestion queries
80+
- Retries:
81+
- Add `_retry_max_redirects` config
82+
- Set `_enable_v3_retries=True` and warn if users override it
83+
- Security: bump minimum pyarrow version to 14.0.1 (CVE-2023-47248)
84+
85+
## 2.9.3 (2023-08-24)
86+
87+
- Fix: Connections failed when urllib3~=1.0.0 is installed (#206)
88+
89+
## 2.9.2 (2023-08-17)
90+
91+
**Note: this release was yanked from Pypi on 13 September 2023 due to compatibility issues with environments where `urllib3<=2.0.0` were installed. The log changes are incorporated into version 2.9.3 and greater.**
92+
93+
- Other: Add `examples/v3_retries_query_execute.py` (#199)
94+
- Other: suppress log message when `_enable_v3_retries` is not `True` (#199)
95+
- Other: make this connector backwards compatible with `urllib3>=1.0.0` (#197)
96+
97+
## 2.9.1 (2023-08-11)
98+
99+
**Note: this release was yanked from Pypi on 13 September 2023 due to compatibility issues with environments where `urllib3<=2.0.0` were installed.**
100+
101+
- Other: Explicitly pin urllib3 to ^2.0.0 (#191)
102+
103+
## 2.9.0 (2023-08-10)
104+
105+
- Replace retry handling with DatabricksRetryPolicy. This is disabled by default. To enable, set `_enable_v3_retries=True` when creating `databricks.sql.client` (#182)
106+
- Other: Fix typo in README quick start example (#186)
107+
- Other: Add autospec to Client mocks and tidy up `make_request` (#188)
108+
109+
## 2.8.0 (2023-07-21)
110+
111+
- Add support for Cloud Fetch. Disabled by default. Set `use_cloud_fetch=True` when building `databricks.sql.client` to enable it (#146, #151, #154)
112+
- SQLAlchemy has_table function now honours schema= argument and adds catalog= argument (#174)
113+
- SQLAlchemy set non_native_boolean_check_constraint False as it's not supported by Databricks (#120)
114+
- Fix: Revised SQLAlchemy dialect and examples for compatibility with SQLAlchemy==1.3.x (#173)
115+
- Fix: oauth would fail if expired credentials appeared in ~/.netrc (#122)
116+
- Fix: Python HTTP proxies were broken after switch to urllib3 (#158)
117+
- Other: remove unused import in SQLAlchemy dialect
118+
- Other: Relax pandas dependency constraint to allow ^2.0.0 (#164)
119+
- Other: Connector now logs operation handle guids as hexadecimal instead of bytes (#170)
120+
- Other: test_socket_timeout_user_defined e2e test was broken (#144)
121+
122+
## 2.7.0 (2023-06-26)
123+
124+
- Fix: connector raised exception when calling close() on a closed Thrift session
125+
- Improve e2e test development ergonomics
126+
- Redact logged thrift responses by default
127+
- Add support for OAuth on Databricks Azure
128+
129+
## 2.6.2 (2023-06-14)
130+
131+
- Fix: Retry GetOperationStatus requests for http errors
132+
133+
## 2.6.1 (2023-06-08)
134+
135+
- Fix: http.client would raise a BadStatusLine exception in some cases
136+
137+
## 2.6.0 (2023-06-07)
138+
139+
- Add support for HTTP 1.1 connections (connection pools)
140+
- Add a default socket timeout for thrift RPCs
141+
142+
## 2.5.2 (2023-05-08)
143+
144+
- Fix: SQLAlchemy adapter could not reflect TIMESTAMP or DATETIME columns
145+
- Other: Relax pandas and alembic dependency specifications
146+
147+
## 2.5.1 (2023-04-28)
148+
149+
- Other: Relax sqlalchemy required version as it was unecessarily strict.
150+
151+
## 2.5.0 (2023-04-14)
152+
153+
- Add support for External Auth providers
154+
- Fix: Python HTTP proxies were broken
155+
- Other: All Thrift requests that timeout during connection will be automatically retried
156+
157+
## 2.4.1 (2023-03-21)
158+
159+
- Less strict numpy and pyarrow dependencies
160+
- Update examples in README to use security best practices
161+
- Update docstring for client.execute() for clarity
162+
163+
## 2.4.0 (2023-02-21)
164+
165+
- Improve compatibility when installed alongside other Databricks namespace Python packages
166+
- Add SQLAlchemy dialect
167+
168+
## 2.3.0 (2023-01-10)
169+
170+
- Support staging ingestion commands for DBR 12+
171+
172+
## 2.2.2 (2023-01-03)
173+
174+
- Support custom oauth client id and redirect port
175+
- Fix: Add none check on \_oauth_persistence in DatabricksOAuthProvider
176+
177+
## 2.2.1 (2022-11-29)
178+
179+
- Add support for Python 3.11
180+
181+
## 2.2.0 (2022-11-15)
182+
183+
- Bump thrift version to address https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13949
184+
- Add support for lz4 compression
185+
186+
## 2.1.0 (2022-09-30)
187+
188+
- Introduce experimental OAuth support while Bring Your Own IDP is in Public Preview on AWS
189+
- Add functional examples
190+
191+
## 2.0.5 (2022-08-23)
192+
193+
- Fix: closing a connection now closes any open cursors from that connection at the server
194+
- Other: Add project links to pyproject.toml (helpful for visitors from PyPi)
195+
196+
## 2.0.4 (2022-08-17)
197+
198+
- Add support for Python 3.10
199+
- Add unit test matrix for supported Python versions
200+
201+
Huge thanks to @dbaxa for contributing this change!
202+
203+
## 2.0.3 (2022-08-05)
204+
205+
- Add retry logic for `GetOperationStatus` requests that fail with an `OSError`
206+
- Reorganised code to use Poetry for dependency management.
207+
208+
## 2.0.2 (2022-05-04)
209+
210+
- Better exception handling in automatic connection close
211+
212+
## 2.0.1 (2022-04-21)
213+
214+
- Fixed Pandas dependency in setup.cfg to be >= 1.2.0
215+
216+
## 2.0.0 (2022-04-19)
217+
218+
- Initial stable release of V2
219+
- Added better support for complex types, so that in Databricks runtime 10.3+, Arrays, Maps and Structs will get
220+
deserialized as lists, lists of tuples and dicts, respectively.
221+
- Changed the name of the metadata arg to http_headers
222+
223+
## 2.0.b2 (2022-04-04)
224+
225+
- Change import of collections.Iterable to collections.abc.Iterable to make the library compatible with Python 3.10
226+
- Fixed bug with .tables method so that .tables works as expected with Unity-Catalog enabled endpoints
227+
228+
## 2.0.0b1 (2022-03-04)
229+
230+
- Fix packaging issue (dependencies were not being installed properly)
231+
- Fetching timestamp results will now return aware instead of naive timestamps
232+
- The client will now default to using simplified error messages
233+
234+
## 2.0.0b (2022-02-08)
235+
236+
- Initial beta release of V2. V2 is an internal re-write of large parts of the connector to use Databricks edge features. All public APIs from V1 remain.
237+
- Added Unity Catalog support (pass catalog and / or schema key word args to the .connect method to select initial schema and catalog)
238+
239+
---
240+
241+
**Note**: The code for versions prior to `v2.0.0b` is not contained in this repository. The below entries are included for reference only.
242+
243+
---
244+
245+
## 1.0.0 (2022-01-20)
246+
247+
- Add operations for retrieving metadata
248+
- Add the ability to access columns by name on result rows
249+
- Add the ability to provide configuration settings on connect
250+
251+
## 0.9.4 (2022-01-10)
252+
253+
- Improved logging and error messages.
254+
255+
## 0.9.3 (2021-12-08)
256+
257+
- Add retries for 429 and 503 HTTP responses.
258+
259+
## 0.9.2 (2021-12-02)
260+
261+
- (Bug fix) Increased Thrift requirement from 0.10.0 to 0.13.0 as 0.10.0 was in fact incompatible
262+
- (Bug fix) Fixed error message after query execution failed -SQLSTATE and Error message were misplaced
263+
264+
## 0.9.1 (2021-09-01)
265+
266+
- Public Preview release, Experimental tag removed
267+
- minor updates in internal build/packaging
268+
- no functional changes
269+
270+
## 0.9.0 (2021-08-04)
271+
272+
- initial (Experimental) release of pyhive-forked connector
273+
- Python DBAPI 2.0 (PEP-0249), thrift based
274+
- see docs for more info: https://docs.databricks.com/dev-tools/python-sql-connector.html

0 commit comments

Comments
 (0)