Commit Graph

145 Commits

Author SHA1 Message Date
Claude Code
925e20bb04 fix(odps): address review feedback - security, recursion, typing, tests
- Move security check before ODPS partition detection (auth before backend calls)
- Wrap is_odps_partitioned_table in try/except with warning log and fallback
- Replace OdpsBaseEngineSpec.get_table_metadata body with NotImplementedError
- Fix select_star signature: engine: Engine -> dialect: Dialect (matches base)
- Update Optional[X] -> X | None for modern Python typing
- Remove broken __eq__ that violated frozen dataclass hash contract
- Fix Partition docstring typos and __str__ description
- Add warning log when ODPS URI does not match expected pattern
- Add tests/unit_tests/db_engine_specs/test_odps.py with 7 unit tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 14:00:48 -07:00
Evan Rusackas
23b8d323a3 fix(odps): make pyodps import lazy to prevent CI failures
Move the `from odps import ODPS` import from module level to inside
the `is_odps_partitioned_table` method where it is used, wrapped in
try/except ImportError. Also move the `OdpsEngineSpec` import in
`databases/api.py` to be lazy. Remove pyodps from base requirements
since it is an optional dependency (like trino, bigquery, etc).

This prevents ModuleNotFoundError when pyodps is not installed, which
was causing all CI tests to fail with "Failed to create app".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:56:05 -07:00
Evan Rusackas
a1bf361fe2 fix: ODPS (MaxCompute) data source table preview failed
When using the ODPS (MaxCompute) data source, previewing partitioned
tables in SQLLab would fail because ODPS requires a partition to be
specified for partition tables.

This PR adds ODPS-specific handling:
- New OdpsEngineSpec with partition detection support
- Modified select_star to add partition filter for ODPS partition tables
- New Partition dataclass in sql/parse.py
- New is_odps_partitioned_table method in DatabaseDAO

Closes #32301

Co-Authored-By: zhutong6688 <zhutong66@163.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-11 13:55:33 -07:00
Vitor Avila
8c9efe5659 feat: support for import/export masked_encrypted_extra (backend) (#38077) 2026-03-04 11:26:28 -08:00
isaac-jaynes-imperva
3f37cdbf9c fix(database): include configuration_method in the DB export/import flow (#36958)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-01-23 19:34:52 -03:00
Beto Dealmeida
c458f99dd4 chore: cleanup ssh tunnel (#34388) 2025-12-03 14:26:35 -05:00
Maxime Beauchemin
cb27d5fe8d chore: proper current_app.config proxy usage (#34345)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-31 19:27:42 -07:00
Beto Dealmeida
a26e1d822a chore: remove sqlparse (#33564) 2025-06-04 19:31:41 -04:00
Vitor Avila
e35145c816 feat(file uploads): List only allowed schemas in the file uploads dialog (#32702) 2025-03-17 23:36:16 -03:00
Đỗ Trọng Hải
a87bedf31a docs(api): correct attribute name instead of table for GET table_metadata in openapi.json (#32690)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2025-03-17 11:26:47 -06:00
Beto Dealmeida
8695239372 feat: OAuth2StoreTokenCommand (#32546) 2025-03-13 09:45:24 -04:00
Beto Dealmeida
813e79fa9f fix: skip DB filter when doing OAuth2 (#32486) 2025-03-04 13:33:53 -05:00
Vitor Avila
d79f7b28c2 feat: Update database permissions in async mode (#32231) 2025-02-28 21:25:47 -03:00
Evan Rusackas
90651dfe3e fix(dev/ci): pre-commit fixes galore (#32352) 2025-02-24 11:26:45 -07:00
Daniel Vaz Gaspar
1b375b715c refactor: upload data unification, less permissions and less endpoints (#31959) 2025-01-28 11:09:55 +00:00
Michael S. Molina
687f762457 refactor: Removes the legacy dataset editor (#31976) 2025-01-24 14:52:22 -03:00
Maxime Beauchemin
e51b95ffa8 chore: enforce more ruff rules (#31447)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2024-12-18 17:41:34 -08:00
Shane Zarechian
04077ce934 fix(api): typo api.py (#31458) 2024-12-15 13:37:57 -08:00
Jack
849d426e06 feat(oauth): adding necessary changes to support bigquery oauth (#30674) 2024-10-30 14:56:22 -05:00
Elizabeth Thompson
2e5016713a chore: log warnings for database tables api (#30410) 2024-09-30 13:52:17 -07:00
Beto Dealmeida
0415ed34ce feat: allow create/update OAuth2 DB (#30071) 2024-09-03 19:22:38 -04:00
Michael S. Molina
d497dcad41 fix: Security manager incorrect calls (#29884) 2024-08-23 11:39:45 -03:00
Beto Dealmeida
39209c2b40 fix: handle empty catalog when DB supports them (#29840) 2024-08-13 10:08:43 -04:00
Markus Eriksson
922128f6e0 fix: Add user filtering to changed_by. Fixes #27986 (#29287)
Co-authored-by: Markus Eriksson <markus.eriksson@sinch.com>
2024-07-25 15:23:00 -06:00
Maxime Beauchemin
e749efcb97 fix: refactor view error handling into a separate module (#29330) 2024-07-09 10:16:40 -07:00
John Bodley
8fb8199a55 chore(dao/command): Add transaction decorator to try to enforce "unit of work" (#24969) 2024-06-28 12:33:56 -07:00
Eyal Ezer
07b2449bd7 refactor: Unify all json.(loads|dumps) usage to utils.json (#28702)
Co-authored-by: Eyal Ezer <eyal.ezer@ge.com>
2024-05-28 14:17:41 -07:00
Beto Dealmeida
ce668d46cc feat(SIP-95): catalogs in SQL Lab and datasets (#28376) 2024-05-08 17:19:36 -04:00
Beto Dealmeida
e90246fd1f feat(SIP-95): permissions for catalogs (#28317) 2024-05-06 11:41:58 -04:00
Daniel Vaz Gaspar
9a339f08a7 feat: new Columnar upload form and API (#28192) 2024-05-06 15:51:42 +01:00
Beto Dealmeida
6cf681df68 feat(SIP-95): new endpoint for table metadata (#28122) 2024-04-25 12:23:49 -04:00
Maxime Beauchemin
2d63722150 chore: set up ruff as a new linter/formatter (#28158) 2024-04-24 17:19:53 -07:00
Daniel Vaz Gaspar
de82d90b9c chore: refactor file upload commands (#28164) 2024-04-23 08:42:19 +01:00
Daniel Vaz Gaspar
e465876ed4 feat: new Excel upload form and API (#28105) 2024-04-19 14:19:42 +01:00
Beto Dealmeida
68a982dfe6 feat(sip-95): new endpoint for extra table metadata (#28063) 2024-04-18 10:42:53 -04:00
Daniel Vaz Gaspar
54387b4589 feat: new CSV upload form and API (#27840) 2024-04-15 09:38:51 +01:00
Beto Dealmeida
9377227e06 chore(OAuth2): refactor for custom OAuth2 clients (#27880) 2024-04-05 12:17:39 -04:00
John Bodley
27acc0b133 chore: Cleanup table access check naming (#27772) 2024-04-03 16:02:00 -07:00
John Bodley
30bc8f06dc chore: Default to engine specification regarding using wildcard (#27843) 2024-04-03 09:09:37 -07:00
Beto Dealmeida
9022f5c519 feat(SIP-85): OAuth2 for databases (#27631) 2024-04-02 22:05:33 -04:00
Michael S. Molina
6e528426dd feat: Adds option to disable drill to detail per database (#27536) 2024-03-21 15:51:09 -03:00
Geido
89e89de341 fix: SSH Tunnel configuration settings (#27186) 2024-03-11 16:56:54 +01:00
Stepan
2e4f6d3f38 perf(export): export generates unnecessary files content (#26765) 2024-02-21 16:28:38 -07:00
Geido
7c7deb960d fix: ID param for DELETE ssh_tunnel endpoint (#27130)
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2024-02-15 22:09:51 +02:00
Beto Dealmeida
e36c014290 fix(database): allow filtering by UUID (#26469) 2024-01-12 11:18:39 -05:00
Ville Brofeldt
0b477e3f7c chore: harmonize and clean up list views (#25961) 2023-12-04 11:51:18 -08:00
John Bodley
07bcfa9b5f chore(command): Organize Commands according to SIP-92 (#25850) 2023-11-22 16:55:54 -03:00
Beto Dealmeida
9c54280d85 feat: add MotherDuck DB engine spec (#24934) 2023-08-09 16:42:14 -07:00
Sebastian Liebscher
14a27b1ba3 chore(api): clean up API spec (#24838) 2023-07-31 20:03:58 +03:00
Stepan
64ced60f62 fix(datasets): give possibility to add dataset with slashes in name (#24796) 2023-07-28 14:33:08 -03:00