Commit Graph
182 Commits
Author SHA1 Message Date
Joshen Lim d3d8331cae Use totalRows if available from params to validate MAX_EXPORT_ROW_COUNT (#41384)
* Use totalRows if available from params to validate MAX_EXPORT_ROW_COUNT

* Clean
2025-12-16 08:18:51 -07:00
Ali WaseemandCharis e7a4ca9b74 Feature: show index advisor in table editor (#41166)
* added table advisor query

* updated to include table editor performance

* updated JSON B

* added side panel

* updated query indexes to show highlights context

* show index advisor in table editor

* updated invalidation logic

* added color updates

* added query indexes

* updated query performance type

* updated overflow and title

* put behind flag

* remove gap

* added on close

* Update apps/studio/data/database/table-index-advisor-query.ts

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* updated styling

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-12-10 09:28:45 -07:00
Ivan Vasilov 0d5be306ef chore: Bump React Query to v5 (#40174)
* Bump the deps, refactor deprecated code.

* Migrate keepPreviousData usage.

* Migrate all uses of InfiniteQuery.

* Fix refetchInterval in queries.

* Migrate all use of isLoading to isPending in mutations.

* Fix accessing location in claim-project.

* Fix a bug in duplicate query keys.

* Migrate all queries to use isPending.

* Revert "Fix accessing location in claim-project."

This reverts commit 2a07df64b5.

* Revert the rss.xml file to master.
2025-12-10 10:10:29 +01:00
8e705ecdbc fix(export all rows): use cursor pagination if possible (#40536)
Exporting all rows (in CSV, SQL, or JSON format) currently uses offset pagination, which can cause performance problems if the table is large. There is also a correctness problem if the table is being actively updated as the export happens, because the relative row offsets could shift between queries.

Now that composite filters are available in postgres-meta, we can change to using cursor pagination on the primary key (or any non-null unique keys) wherever possible. Where this is not possible, the user will be shown a confirmation dialog explaining the possible performance impact.

---------

Co-authored-by: Ali Waseem <waseema393@gmail.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-12-08 13:39:10 -05:00
Ali Waseem 86b1e03658 fix: sentry type errors (#41073)
* fix SUPABASE-APP-AV8

* fix SUPABASE-APP-AV0

* fix: SUPABASE-APP-ATK
2025-12-04 10:36:44 -07:00
Joshen Lim 1692393e09 Joshen/fe 2187 disable default sorting in table editor for large tables (#40976)
* Add confirmation modal in table editor when applying sorts if table has many rows

* nit
2025-12-03 15:06:48 +08:00
Alaister Young 4804642b18 fix(studio): boolean editor in table editor (#40947) 2025-12-01 12:18:19 +00:00
Ali Waseem f5791c36ee fix: copy first row due to failed falsey check (#40909)
* updated because of zero falsey value not copying

* test: add E2E test for copying first and second row values

Adds regression test to verify that users can copy cell values from
the first row (index 0) and second row. This prevents the bug where
falsy index checks would prevent copying from row 0.

Addresses FE-2178
2025-11-30 09:21:58 -03:30
Ali WaseemandJoshen Lim b04e54b38a fix: sentry errors (#40875)
* fix: SUPABASE-APP-90D

* fix: SUPABASE-APP-90C

* fix: SUPABASE-APP-6HC

* fix: SUPABASE-APP-A38

* fix: SUPABASE-APP-9JB

* Improve types for RowContextMenu.tsx

* Improve types for useChartHighlight

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-11-28 19:17:07 +08:00
Marouane SoudaandAli Waseem 4bfe7d0480 fix(editor): close previous and next page modals on confirm (#40843)
Co-authored-by: Ali Waseem <waseema393@gmail.com>
2025-11-27 08:17:07 -07:00
Saxon FletcherandJoshen Lim 9d66964b62 table create performance (#40857)
* table create performance

* test

* Clean up + refactor

* Nit housekeeping

* Minor housekeeping again

* Fix

* Fixy

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-11-27 20:27:19 +08:00
Danny WhiteandJoshen Lim d653617cdd chore(studio): improve inline code styling (#40724)
* sweep language

* update class docs

* additional

* basic docs

* sweep relevant instances

* replace text-code

* additional in sweep

* Tiny fix

* prettier

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-11-24 16:34:30 +08:00
Ivan Vasilov 43cc61818c chore: Migrate all isPending uses in react-query (#40642)
* Bump react-query. Minor type and logic fixes.

* Migrate all use of isLoading to isPending in mutations.

* Fix type errors.
2025-11-20 16:44:53 +01:00
Ali Waseem 9df31aded2 Fix: added whitespace to header error message (#40539)
added whitespace to header error message
2025-11-18 11:21:34 -07:00
Ignacio Dobronich 4be5756304 fix: max export row count typo (#40380)
* fix: max export row count typo

* format
2025-11-12 13:02:35 +00:00
Ali Waseem ac6db41662 Fix: Make the FK editor faster when loading tables (#40259)
* updated selector code to be more efficient

* updated styling to show a cleaner table loader

* updated format assignment

* disable selector when loading

* updated request to fetch tables

* updated key rendering
2025-11-10 14:59:43 -05:00
Joshen Lim 597110a1da Fix table editor not scrollable when no rows (#40305) 2025-11-10 10:58:15 -05:00
Charis df63ce3658 fix(mssql foreign tables): disallow sort on columns filtered for equality (#40137)
There is an edge case interaction between the Postgres query parser and
MSSQL foreign tables, where the query parser may drop sort clauses that
are redundant with applied filters. This leads to invalid MSSQL syntax,
because the resulting query has a `limit` but no `sort`, and the user
sees a confusing error message.

This PR detects this edge case on MSSQL foreign tables. There are three
cases:
1. The user filters by a column, but there are still other columns
available for sorting. The default search for a sorting column will
leave out the filtered column.
2. The user filters by a column/several columns, and there are no more
columns that can be used for sorting. We stop the query and show an
admonition.
3. The user filters by a column, then tries to sort by the same column.
We stop the query and show an admonition.
2025-11-06 13:14:30 -05:00
Kalleby Santos 4d31c857cc fix(studio): fix column drag in empty table triggers file drop behaviour (#40189)
* fix: togling csv import only when draging files

* stamp: improve invalid file feeback

* stamp: format
2025-11-05 13:58:50 -07:00
Charis c474d3dbbd fix(table row context menu): hide actions and separators on protected schemas (#40159)
Protected schemas shouldn't have the "Edit row" and "Delete row"
actions.
2025-11-04 16:23:39 -05:00
Joshen Lim 64e3e047eb Final final cleaning up barrel files (#40018)
* Final final cleaning up barrel files

* Fix merge conflict
2025-10-31 14:02:59 +08:00
Joshen Lim cac225b24a Clean up barrel files part 4 (#40015)
* Clean up barrel files part 4

* nit
2025-10-31 00:30:42 +08:00
Joshen Lim 72d50d8ac4 Remove barrel files part 1 (#39955) 2025-10-29 18:07:20 +08:00
Ivan Vasilov da4a40e308 chore: Migrate RQ functions to use object syntax style (#39895)
* Migrate all uses of invalidateQueries to use object syntax.

* Migrate the remainder of useInfiniteQuery.

* Migrate all setQueriesData.

* Migrate all fetchQuery uses.

* Migrate some leftover functions from RQ.

* Fix issues found by Charis.
2025-10-28 10:43:14 +01:00
hallidayo af48b1c34d fix: revert 39818 (#39875)
revert 39818
2025-10-25 15:34:54 -06:00
Charis 7ad5891e45 fix(table editor): don't show dialog separator for hidden context menu items (#39818) 2025-10-23 14:51:31 -04:00
Joshen Lim 95074abb9f Table Editor to hide count for foreign tables (#39567)
* Table Editor to hide count for foreign tables

* Add loader
2025-10-16 02:57:50 +08:00
Stojan DimitrovskiandJoshen Lim 0a3f4184a7 feat: optimized users page (#39349)
* feat: optimized users page

* Update UI

* Reinstate footer with count if mode is freeform

* Simplify disabled sort in performance mode

* Clean

* Small fix

* Final fixes

* Shift users SQL query to packages/pg-meta

* Nit unrelated: Clear query params from useLogsUrlState when going to logs tab of a selected user

* Shift user count SQL and get count estimate SQL into packages/pg-meta

* Fix

* Nit

* Nit

* Minor nits

* Refactor UX for searching

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-10-14 15:02:00 +08:00
Joshen Lim 085bddafc5 Chore/consolidate copy icons (#39386)
* Replace all clipboard icons with copy icons

* Fix Menu.Item active styling for light mode

* Update

* Use bg side bar accent
2025-10-10 11:06:42 +08:00
Joshen Lim 426fda2ebc Address circular dependencies across multiple files (#39231)
* Address circular dependencies across multiple files

* Fix TS
2025-10-06 11:01:56 +08:00
matlin e0240c59d6 fix: upgrade nuqs to properly support url param arrays for sorts and filters (#39214)
* upgrade nuqs to get proper native url array params

* use next useSearchParams because nuqs is stale
2025-10-02 19:10:06 -05:00
matlin 1382d2d9d9 fix(studio): use session storage as default cache for tab state (#39175)
use session storage as default cache for tab state
2025-10-01 13:07:37 -05:00
Joshen Lim 15fe10affa Flatten table editor grid context menu copy action (#39116) 2025-09-30 09:53:47 -02:30
Joshen Lim b9945663c9 Chore/contextual errors for table editor (#39004)
* Contextual errors for table editor

* Add remove filters CTA

* Add callout for invalid ordering operator

* nit
2025-09-30 09:34:50 +08:00
Yadong (Adam) Zhang 9cfa6e8b53 fix: allow NumpadEnter key for search and pagination actions (#38889) 2025-09-26 18:59:05 +00:00
5f533247e1 Update docs url to env var (#38772)
* Update Supabase docs URLs to use env variable

Co-authored-by: a <a@alaisteryoung.com>

* Refactor: Use DOCS_URL constant for documentation links

This change centralizes documentation links using a new DOCS_URL constant, improving maintainability and consistency.

Co-authored-by: a <a@alaisteryoung.com>

* Refactor: Use DOCS_URL constant for all documentation links

This change replaces hardcoded documentation URLs with a centralized constant, improving maintainability and consistency.

Co-authored-by: a <a@alaisteryoung.com>

* replace more instances

* ci: Autofix updates from GitHub workflow

* remaining instances

* fix duplicate useRouter

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: alaister <10985857+alaister@users.noreply.github.com>
2025-09-26 10:16:33 +00:00
matlinandCharis Lam 172f6ba5fc Improve stability and explicitness of table editor tab state syncing between URL params and local storage (#38931)
* Improve stability and explicitness of table editor tab cache <-> url syncing

* fix: maintain filter state when using nav bar to switch back to Table Editor

---------

Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
2025-09-23 13:03:56 -05:00
Joshen LimandCharis 3ad683da81 Contextual error for foreign tables in table editor (#38736)
* Contextual error for foreign tables in table editor

* Update apps/studio/components/grid/components/grid/Grid.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-09-17 19:59:27 +08:00
Joshen Lim d46525eac1 Chore/swap use check permissions with use async check project permissions part 8 (Season Finale) (#38619)
* Update perms checking in audit logs

* Deprecate useCheckPermissions, useIsPermissionsLoaded and useCheckProjectPermissions as they're no longer used

* Rename useAsyncCheckProjectPermissions to useAsyncCheckPermissions

* Fix TS
2025-09-16 17:05:57 +08:00
Charis 0c3377975a fix: handle undefined count when fetching table rows (#38727)
fix: handle undefined count when fetchint table rows

count can be undefined in the return from fetching table rows (it uses
executeSqlQuery under the hood which has no type safety) so we need to
deal with that case
2025-09-16 11:04:45 +08:00
CharisandJoshen Lim 271ee3af6d fix: estimate number of users when count is large (#38638)
* fix: estimate number of users when count is large

In the Auth Users table, we always fetch an exact count of users. This
can be a problem for projects with many (>50K) users as the count(*)
might cause performance issues on the database. We already have logic on
the Table Editor to only run automatic count estimates (fetching the
exact count only if usr requests it), this change ports the same logic
over to Auth Users.

* Nit refactor

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-09-12 13:07:31 +08:00
Joshen Lim f066c02c69 Shift refresh button to header in table editor and make realtime + API docs button smaller (#38463)
* Shift refresh button to header in table editor and make realtime button + api docs button smaller

* Fix ts
2025-09-08 14:15:39 +08:00
Joshen Lim ea0bd567f4 Fix TableEditor keyboard copy action copies who cell value even when only a subset is highlighted while editing cell (#38350) 2025-09-01 22:50:49 +07:00
Michael Ong 312e9fdb34 chore: add additional playwright tests for table editor (#37972) 2025-08-22 10:15:07 +02:00
CharisandJoshen Lim e8a19faa03 feat: drop file to import data in Table Editor (#37888)
* feat: drop file to import data

In the Table Editor for an empty table, make the entire grid area a
dropzone so that files can be dropped onto the grid area for importing.
Dropping a file opens the SpreadsheetImport side panel with the dropped
file already loaded.

* refactor: drag and drop file import

Refactor logic into hooks and utility functions

* refactor: file drop import

Small changes caught in code review

* Opt to pass file through valtio store instead of event listener

* refactor: telemetry properties + cleaning up hook deps

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-13 11:32:06 -04:00
Joshen Lim 89140e7c08 Chore/support copy row in table editor (#37863)
* Support copy row in table editor

* Add copy action in Table Editor header
2025-08-13 09:51:04 +07:00
Ivan Vasilov ec6b7709d7 fix: Handle a race condition with permissions API and the cell editors in the Table Editor (#37837)
* When updating the editable flag, the grid columns need to be recreated.

* Remove reference to gridColumn since it's the same reference as the passed in column.
2025-08-12 12:19:00 +07:00
Joshen LimandDrake Costa a897cc27f0 Part 1 of swapping useCheckPermissions with useAsyncCheckProjectPermissions (#37751)
* Part 1 of swapping useCheckPermissions with useAsyncCheckProjectPermissions

* Update apps/studio/hooks/misc/useCheckPermissions.ts

Co-authored-by: Drake Costa <drake@saeris.io>

* Address feedback

---------

Co-authored-by: Drake Costa <drake@saeris.io>
2025-08-11 11:53:15 +07:00
Joshen Lim 00cad15723 Set unusualLineTerminators for grid monaco editor to auto (#37786)
* Set unusualLineTerminators for grid monaco editor to auto

* Set to off instead
2025-08-08 22:20:59 +07:00
Joshen LimandJordi Enric 011f6c3e87 Fix Table Editor not identifying truncated array column values properly (#37683)
* Fix Table Editor not identifying truncated array column values properly

* Add comment

* update tests

* Fix TS issues and shift test file to beside the file its testing

* Fix tests

---------

Co-authored-by: Jordi Enric <jordi.err@gmail.com>
2025-08-06 11:11:14 +07:00