Joe Li
ee0f0e4e8e
fix(tests): add missing __init__.py to prevent module name collision
...
Pytest collection fails when two files named update_test.py exist in
different directories without __init__.py — the module resolves as a
top-level name and collides with tags/commands/update_test.py.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-18 19:11:06 -08:00
Joe Li
e6fa96878e
test(reports): add database validation edge case tests
...
- No-mutation-on-422: verify rejected PUT does not change model state
- POST parity guard: confirm POST with Report+database still returns 400
- Bad DB on transition: Report→Alert with nonexistent DB returns 422
- Command-level unit matrix: 12 tests covering all effective type/database
combinations (payload absent vs None vs int, model DB present/absent,
type transitions in both directions)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-18 18:05:54 -08:00
Joe Li
c78624b20e
fix(reports): validate database field on PUT report schedule
...
PUT /api/v1/report/{id} with {"database": N} on a Report-type schedule
returned 500 instead of a validation error. The POST schema had this
check but the PUT path lacked it.
- Add ReportScheduleDatabaseNotAllowedValidationError exception
- Add command-level validation in UpdateReportScheduleCommand enforcing
both invariants: Reports must not have a database, Alerts must have one
- Add allow_none=True on ReportSchedulePutSchema.database to allow
clearing via PUT (consistent with dashboard field)
- Use explicit null check (database_id is not None) for DB existence
validation to handle edge cases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-18 17:27:16 -08:00
Amin Ghadersohi
aec1f6edce
fix(mcp): use last data-bearing statement in execute_sql response ( #37968 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 13:13:55 +01:00
Amin Ghadersohi
f7218e7a19
feat(mcp): expose current user identity in get_instance_info and add created_by_fk filter ( #37967 )
2026-02-17 13:11:34 +01:00
Amin Ghadersohi
5cd829f13c
fix(mcp): handle more chart types in get_chart_data fallback query construction ( #37969 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 13:02:42 +01:00
Kamil Gabryjelski
3e3c9686de
perf(dashboard): Batch RLS filter lookups for dashboard digest computation ( #37941 )
2026-02-16 21:35:55 +01:00
Mehmet Salih Yavuz
7b21979fa3
fix(charts): Force refresh uses async mode when GAQ is enabled ( #37845 )
2026-02-16 21:45:10 +03:00
Türker Ziya Ercin
440602ef34
fix(utils): datetime_to_epoch function is fixed to timezone aware epoch ( #37979 )
2026-02-15 22:36:18 +07:00
Michael S. Molina
e3e2bece6b
feat(owners): display email in owner selectors ( #37906 )
2026-02-13 09:01:05 -03:00
Joe Li
6328e51620
test(examples): add tests for UUID threading and security bypass ( #37557 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-12 14:12:12 -08:00
Jonathan Alberth Quispe Fuentes
88ce1425e2
fix(roles): optimize user fetching and resolve N+1 query issue ( #37235 )
2026-02-12 09:32:19 -08:00
Amin Ghadersohi
4dfece9ee5
feat(mcp): add event_logger instrumentation to MCP tools ( #37859 )
2026-02-12 16:50:20 +01:00
Amin Ghadersohi
3f64c25712
fix(mcp): Add database_name as valid filter column for list_datasets ( #37865 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 16:47:46 +01:00
Ville Brofeldt
00d02cb2ea
perf(gtf): improve task base filter ( #37900 )
2026-02-11 10:40:07 -08:00
Kamil Gabryjelski
26a2e12779
perf: fix N+1 query in Slice.datasource property ( #37899 )
2026-02-11 18:57:28 +01:00
Ville Brofeldt
255a0ada81
fix(gtf): add missing user_id to task commands ( #37867 )
2026-02-11 09:04:27 -08:00
Kamil Gabryjelski
98ca599eef
perf: fix N+1 query in chart list API when thumbnail_url is requested ( #37895 )
2026-02-11 17:19:48 +01:00
Luis Sánchez
88a14f2ba0
fix(FiltersBadge): world map wont show filter icon after refresh page ( #37260 )
2026-02-11 16:33:32 +03:00
Ville Brofeldt
74e1607010
fix(extensions): broken test ( #37871 )
2026-02-11 08:33:45 -03:00
Michael S. Molina
c41942a38a
chore(deps): Upgrade sqlglot from 27.15.2 to 28.10.0 ( #37841 )
2026-02-10 13:13:11 -03:00
Ville Brofeldt
0f1278fa61
fix(gtf): set dedup_key on atomic sql ( #37820 )
2026-02-10 06:56:14 -08:00
Ville Brofeldt
59dd2fa385
feat: add global task framework ( #36368 )
2026-02-09 10:45:56 -08:00
Amin Ghadersohi
15b3c96f8e
fix(security): Add table blocklist and fix MCP SQL validation bypass ( #37411 )
2026-02-09 14:12:06 +01:00
Alexandru Soare
9ea5ded988
fix(dashboard): Prevent fatal error when database connection is unavailable ( #37576 )
2026-02-06 20:52:17 -08:00
Amin Ghadersohi
01ac966b83
fix(mcp): remove html.escape to fix ampersand display in chart titles ( #37186 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 19:49:37 -08:00
Amin Ghadersohi
47db185e3b
fix(mcp): include x_axis column in query context for series charts with group_by ( #37639 )
2026-02-05 19:59:44 +01:00
Amin Ghadersohi
4147d877fc
fix(mcp): prevent DATE_TRUNC on non-temporal columns in chart generation ( #37433 )
2026-02-05 09:24:31 -08:00
Amin Ghadersohi
a9dca529c1
fix(mcp): treat runtime validation warnings as informational, not errors ( #37214 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 09:23:51 -08:00
Jamile Celento
2dfc770b0f
fix(native-filters): update TEMPORAL_RANGE filter subject when Time Column filter is applied ( #36985 )
2026-02-04 12:37:17 +03:00
Elizabeth Thompson
e9b494163b
refactor(db): use Dialect instead of Engine in select_star to avoid SSH tunnels ( #35540 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2026-02-02 10:26:35 -08:00
Beto Dealmeida
5d20dc57d7
feat(oauth2): add PKCE support for database OAuth2 authentication ( #37067 )
2026-01-30 23:28:10 -05:00
Beto Dealmeida
05c2354997
feat: AWS Cross-Account IAM Authentication for Aurora ( #37585 )
2026-01-30 19:18:34 -05:00
Vitor Avila
6043e7e7e3
fix: more DB OAuth2 fixes ( #37398 )
2026-01-30 21:11:26 -03:00
Gabriel Torres Ruiz
06e4f4ff4c
fix(dashboard): catch DatasourceNotFound in get_datasets to prevent 404 ( #37503 )
2026-01-28 15:54:56 -08:00
Amin Ghadersohi
6663709a23
fix(mcp): tools not listed when JWT auth is enabled ( #37377 )
2026-01-28 11:20:20 +01:00
Amin Ghadersohi
e6d0f97aab
fix(mcp): always filter list responses by columns_requested ( #37505 )
2026-01-28 11:15:19 +01:00
Peng Ren
73d4332b51
feat(database): SIP-195 Add MongoDB database engine support ( #37368 )
...
Co-authored-by: Peng Ren <ia250@cummins.com >
2026-01-26 15:51:35 -08:00
Daniel Vaz Gaspar
290bcc1dbb
feat(cache): use configurable hash algorithm for flask-caching ( #37361 )
2026-01-26 10:19:51 -08:00
JUST.in DO IT
4db6f9e04c
chore(trino): Add progress_text for additional running state info ( #36909 )
2026-01-26 09:11:33 -08:00
Amin Ghadersohi
0ecc69d2f1
chore(deps): bump fastmcp from 2.14.0 to 2.14.3 ( #37410 )
2026-01-24 07:03:00 -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
Jean Massucatto
e8363cf606
fix(redshift): normalize table names to lowercase for CSV uploads ( #37019 )
2026-01-23 12:40:38 -08:00
Gabriel Torres Ruiz
760227d630
fix(theme): migrate APP_NAME to brandAppName theme token with backward compatibility ( #37370 )
...
Co-authored-by: Rafael Benitez <rebenitez1802@gmail.com >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net >
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-01-22 14:35:55 -08:00
Evan Rusackas
87bbd54d0a
feat(examples): Transpile virtual dataset SQL on import ( #37311 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net >
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
2026-01-22 09:50:05 -08:00
Ramiro Aquino Romero
fadab21493
fix(api): nan is not properly handled for athena connections ( #37071 )
2026-01-22 18:29:09 +03:00
Vitor Avila
cc972cad5a
fix: DB OAuth2 fixes ( #37350 )
2026-01-22 01:51:48 -03:00
Vitor Avila
d4723ef116
feat: Handle OAuth2 dance with TableSelector ( #37315 )
2026-01-21 19:49:18 -03:00
Evan Rusackas
dee063a4c5
feat(examples): Modernize example data loading with Parquet and YAML configs ( #36538 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2026-01-21 12:42:15 -08:00
Amin Ghadersohi
e1fa374517
feat(mcp): add time_grain parameter to XY chart generation ( #37182 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-20 09:28:42 -08:00