github TableProApp/TablePro v0.85.0-beta.1

pre-release2 hours ago

Added

  • Formatter settings for clause items, AND and OR position, and data type case. (#3854)
  • Vim mode switches tabs with gt, gT, :tabnext and :tabprevious. (#3854)
  • Connect to KingbaseES in PostgreSQL and Oracle compatibility modes with a downloadable driver by @J2TeamNNL. (#3855)
  • In the export dialog, a database, schema or group row now sets Structure, Drop or Data for every object beneath it. (#3857)
  • Copy To can stop and keep what ran, or skip a failing object and continue by @MrWeb. (#3859)
  • Routine Debugger in Settings > Extensions: step through PL/pgSQL and Oracle PL/SQL routines with breakpoints. (#3860)
  • Pick a column's character set and collation from the server's own list in Structure and Create Table. (#3866)
  • Change a MySQL or MariaDB table's character set, collation and next AUTO_INCREMENT value in Structure > Options. (#3866)
  • File > Discard Changes… discards staged structure or data edits after asking. (#3872)
  • After 30 days of use without a license, a sheet asks once whether you would buy one, then at most every 90 days. (#3922)
  • Two to six query results show as tabs above the grid, so switching takes one click. (#3924)
  • Neo4j connections, with labels and relationship types in the sidebar and Cypher in the editor by @J2TeamNNL. (#3925)
  • Connect to StarRocks with a downloadable driver, and browse its external catalogs, such as Iceberg, alongside default_catalog by @vbabenkoru. (#3939)
  • Server Dashboard and Query Insights open with ⌥⇧⌘D and ⌥⇧⌘I, or from a connection's menu on the connections strip by @J2TeamNNL. (#3957)
  • Table Health lists bloated tables, unused and redundant indexes, and missing keys in a PostgreSQL or MySQL database by @J2TeamNNL. (#3958)
  • Rows of updatable PostgreSQL, MySQL, MariaDB and SQL Server views that show their table's primary key are editable by @J2TeamNNL. (#3961)
  • Display As decodes igbinary and Avro values in binary columns, Avro with a schema file chosen for the column by @J2TeamNNL. (#3962)
  • iPhone and iPad show table rows and query results in a grid with a pinned header and key column, beside the cards by @J2TeamNNL. (#3963)
  • Qdrant support: browse collections, filter and sort points, edit payloads and vectors, and run REST requests by @J2TeamNNL. (#3972)
  • InfluxDB 2 and 3 connections, with SQL, InfluxQL and Flux in the editor by @J2TeamNNL. (#3976)
  • Masking rules hide matching column values in the grid, copies, exports, the AI assistant and MCP by @J2TeamNNL. (#3978)
  • Display As decodes Protobuf with a .proto file chosen for the column, and Kafka values with a Schema Registry by @J2TeamNNL. (#3979)
  • Memcached support: browse keys with values and TTLs, edit them in the grid, and run text protocol commands by @J2TeamNNL. (#3980)
  • Live Messages module: watch PostgreSQL notifications, Redis channels and Kafka topics as messages arrive by @J2TeamNNL. (#3981)
  • Connection windows show Relaunch to Update in the title bar when an update or plugin update is ready. (#3993)
  • People without a license see a Black Friday offer on the Welcome window: 40% off Pro until December 1. (#3995)
  • iPhone and iPad open Cloudflare D1 connections, with the database picked from your account's list. (#3998)

Changed

  • .sql-formatter.json uses the npm sql-formatter key names, so export a rules file saved by 0.83 again. (#3854)
  • Each export option is now its own column with a heading, and a table's checkbox only includes or excludes it. (#3857)
  • Copy To's Stop and roll back now takes back the rows of every table, not only the one that failed by @MrWeb. (#3859)
  • Settings > Plugins is now Settings > Extensions. (#3860)
  • The Structure tab shows columns, indexes, foreign keys and checks on one page, with the inspector editing them. (#3872)
  • DuckDB connections run DuckDB 2.0, and a .duckdb file TablePro creates stays readable by DuckDB 1.x. (#3928)
  • A dragged field in the row inspector keeps its height per column, not for every field of its kind by @vbabenkoru. (#3975)
  • The paid plan is now called Pro across the app, matching the pricing page. (#3989)
  • The disk image opens to a window with TablePro beside the Applications folder, ready to drag. (#3990)
  • Importing an Excel file reads date and time cells as dates and times, as the Data Files window shows them. (#3991)
  • Settings picks the update channel from a Stable or Beta menu, and the Welcome window always shows the version. (#3993)
  • An imported Google service account key must be the key itself; a path to a key file is left for you to choose again.
  • Imported and synced connections ask once before signing in with AWS, Microsoft, Google or Kerberos logins on this Mac.
  • PostgreSQL reads ~/.pgpass only when Use ~/.pgpass is on.
  • Through a tunnel, Verify CA and Verify Identity now check the certificate and need its CA file.
  • Through a tunnel, an SSL mode the driver cannot check there is refused before connecting, naming the modes it can use.

Fixed

  • The sidebar no longer freezes the window for a moment when a very large table list first loads. (#3849)
  • Format Query changing SQL with brackets, dollar bodies, GO or DELIMITER lines, operators like @> or window ORDER BY. (#3854)
  • The Vim "_ register overwriting the clipboard and the other registers. (#3854)
  • Format Query doing nothing on a statement too large to format, without saying why. (#3854)
  • The "is not empty" filter found no rows on Oracle, and both empty filters failed on a CLOB column by @J2TeamNNL. (#3855)
  • A saved export selection made under another format came back with every option turned on. (#3857)
  • The export dialog's Structure, Drop and Data headings sat off their checkboxes and were never translated. (#3857)
  • Space over a database and its rows in the export or backup list toggled the rows twice. (#3857)
  • Switching an SQL export to CSV and back dropped routines, triggers, sequences and types from the list. (#3857)
  • An MQL export with Data off showed its progress stuck at 0 rows. (#3857)
  • A format change that reloaded the export list dropped each table's row filter. (#3857)
  • Opening a query tab, or loading a query, from a query tab left the keyboard in the grid or sidebar. (#3857)
  • Compare & Sync on MySQL and PostgreSQL wrote tables in name order instead of parents first by @MrWeb. (#3859)
  • Duplicating a PostgreSQL database failed when a table referenced one in another schema by @MrWeb. (#3859)
  • SQL import and Ignore foreign key checks left a SQLite connection enforcing foreign keys afterwards by @MrWeb. (#3859)
  • Disabling foreign key checks on PostgreSQL without superuser failed the import or aborted the open transaction by @MrWeb. (#3859)
  • Copy To read a whole database one table at a time before showing the review by @MrWeb. (#3859)
  • Copy To stopped with a foreign key error on MySQL tables that reference each other or themselves by @MrWeb. (#3859)
  • After a Copy To into PostgreSQL failed creating a schema, the next Copy To or Compare on that database could fail by @MrWeb. (#3859)
  • Changing a column's character set saved without asking first, though characters can be lost. (#3866)
  • Editing a column on MariaDB removed its CHECK constraint, the JSON validity check included. (#3866)
  • Changing a MySQL text column to a numeric type failed with a syntax error about CHARACTER SET. (#3866)
  • New Database and Duplicate Database on MariaDB 10.10 and later did not offer the uca1400 collations. (#3866)
  • The MariaDB table list showed no character set for tables on a uca1400 collation. (#3866)
  • Create Table offered MySQL storage engines the server does not have. (#3866)
  • Create Table on MySQL wrote utf8mb4_unicode_ci instead of the database's own default collation. (#3866)
  • Edit > Undo in the Structure tab did not name the change and stayed enabled with nothing to undo. (#3872)
  • The selection in the Structure tab moved to another column after a reload or a sort. (#3872)
  • Making a column part of the primary key in the Structure tab did not change the table's key. (#3872)
  • MySQL and MariaDB indexes offered a Condition the server drops. (#3872)
  • Switching a table from Structure to Data dimmed Save Changes while structure edits were still staged. (#3872)
  • Undo Delete on an edited column in the Structure tab dropped the edit made before the delete. (#3872)
  • Refreshing the Structure tab, or saving in it, did not read check constraints again. (#3872)
  • One failed read blanked every Structure tab, and a failed Triggers read showed No Triggers. (#3872)
  • Create Table read foreign key targets from the sidebar's database instead of the tab's. (#3872)
  • What’s New opening on iPhone and iPad after installing an older TestFlight build by @sedax90. (#3878)
  • The Welcome window offering What’s New after opening an older version, and again after going back to the newer one by @sedax90. (#3878)
  • Closing or clearing a result dropped its unsaved cell edits without asking. (#3924)
  • Closing a result jumped to the last result instead of the one beside it. (#3924)
  • A script's error banner stayed over the results of the statements that succeeded. (#3924)
  • A new run numbered its results from 1 even when pinned results already used those numbers. (#3924)
  • Dismissing a failed statement's error turned its result into a success message. (#3924)
  • Long result names were cut through an emoji. (#3924)
  • Close Result Tab emptied a table tab, and Previous Result and Next Result stayed enabled with nowhere to go. (#3924)
  • Backing up or restoring a DuckDB database with foreign keys as a .duckdb file failed. (#3928)
  • Undo in the AI chat composer undid a Structure, Users & Roles or ER diagram edit instead of the typing by @J2TeamNNL. (#3957)
  • Save at the close prompt closed before inspector edits were written, so a failed write went unreported by @J2TeamNNL. (#3957)
  • In Agent mode, menu commands and shortcuts acted on the hidden browse tabs, grid and sidebar by @J2TeamNNL. (#3957)
  • Close Connection with Save closed over unsaved edits in tabs other than the one in front by @J2TeamNNL. (#3957)
  • Refresh did nothing on the Server Dashboard, Query Insights, Users & Roles and object source tabs by @J2TeamNNL. (#3958)
  • Dragging a field's resize handle in the row inspector snapped back a few points into the drag by @vbabenkoru. (#3975)
  • An expanded field in the row inspector collapsed when another row was selected by @vbabenkoru. (#3975)
  • The SQLite restore confirmation said existing objects get the dump's data, though the restore stops at the first error. (#3984)
  • A crafted Excel, CSV or compressed file could hang TablePro or fill memory and disk. (#3991)
  • Malformed replies from Kafka, Teradata, Redis, Neo4j, Trino and other servers could crash TablePro. (#3991)
  • Relaunching from Settings could leave two copies of TablePro running when the quit was cancelled. (#3993)
  • An update downloaded in the background gave no sign until TablePro quit. (#3993)
  • A Snowflake connect that fails on the network no longer forgets the cached SSO or MFA token. (#3996)
  • Cloudflare D1 queries with no LIMIT downloading every row, which fails once the result passes 50 MB. (#3998)
  • A connection switched to SQLite or DuckDB on iPhone and iPad still dialing the SSH tunnel it had before. (#3998)
  • A query on a table or column named fetch skipping the row limit. (#3998)
  • Cloudflare D1 connection failures reading "Failed to connect" instead of the cause, such as an expired token. (#3998)
  • A Cloudflare D1 database past the first 1,000 in an account not found by name or missing from the switcher. (#3998)
  • Cloudflare D1 values sent as arrays, such as BLOBs, showing as NULL. (#3998)
  • Saving a binary value to Cloudflare D1 storing its base64 text instead of the bytes. (#3998)
  • Truncate Table on a SQLite connection on iPhone and iPad failing with a syntax error. (#3998)
  • Filtering a Cloudflare D1 table by a long text value failing with "LIKE or GLOB pattern too complex". (#3998)
  • A keyless save matched no row when a PostGIS coordinate had more than 15 decimal places.
  • An enum or other new type column could read as plain text for the rest of the session after a cancelled query.
  • Geometry and geography values showed as hex after CREATE EXTENSION postgis until you reconnected.
  • New Kafka connections showing Verify Identity while connecting without TLS.

Security

  • A Beancount BQL query starting with a dash could read any local file, including from MCP and AI tools.
  • A Cassandra function body holding $$ or a crafted type name could add a statement to its definition.
  • A DuckDB macro name, or a MySQL routine made under another sql_mode, could add statements to Copy To and sync.
  • A DuckDB name quoted in backticks hiding a statement from Safe Mode and read-only external clients.
  • A Kafka DROP TOPIC behind a comma or a Greek question mark skipping the confirmation MCP clients need.
  • A MongoDB statement from an MCP client could drop data or run server-side JavaScript without the confirmation it needs.
  • A MySQL value ending in a backslash could end its literal early in a saved sync script, MCP export or copied INSERT.
  • A NUL character in an imported connection value could quit the app when it started a backup, tunnel or other tool.
  • A PostgreSQL E'' string continued on the next line hiding a statement from Safe Mode and read-only external clients.
  • A SELECT INTO written right after a number passing as a read in Safe Mode and for external clients.
  • A SQL Server batch opening with SHOW, HELP, INFO, EXPLAIN or DESCRIBE, which runs a procedure, passing as a read.
  • A SQL Server column name holding ] could end its quoting in the table DDL and run the rest as SQL.
  • A SQL file or a functional index read under NO_BACKSLASH_ESCAPES could run text from inside a string.
  • A Snowflake account written as an address sending a cached sign-in token to another server.
  • A Snowflake or Vault server opening a file or another app's link during browser sign-in.
  • A Trino or Presto query parameter after a ? in a comment or a quoted name could run as SQL.
  • A Weaviate DELETE with a tab or other space after the verb skipping the destructive prompt.
  • A column default or type a SQL Server, MySQL 5.7, SAP HANA or Trino server reported could run as SQL in copied DDL.
  • A comment in a SQLite, libSQL or D1 table definition could add statements to a SQL export.
  • A connection file imported with Replace sending a saved password to a server the file named.
  • A connection file or synced password naming a Google key file on this Mac signing in with that key.
  • A connection from a file, link or team library signing in with this Mac's AWS, Microsoft, Google or Kerberos login.
  • A question mark in a quoted name could bind a value as SQL on Teradata, and in backtick or bracket names.
  • A read from an MCP client, AppleScript or the assistant writing data on PostgreSQL, MySQL, SQLite, DuckDB or ClickHouse.
  • A shared connection sending values of TablePro's environment variables to its server without asking.
  • A tampered plugin registry replacing an installed plugin with an older release.
  • AWS, Microsoft, AI provider and license requests following a redirect to another server with their keys.
  • An ALTER that drops a column after a line break, tab, comma or parenthesis running without the destructive prompt.
  • An SSH host or user with a Greek question mark or varia could run commands through a Match exec line in ~/.ssh/config.
  • An imported or shared connection carrying settings TablePro sets itself, or fields this version does not know.
  • Another account on the Mac could answer the MCP bridge after TablePro quit.
  • CockroachDB connections could run a version() or count() function another user planted in a schema on the path.
  • Deleting or editing a MongoDB row whose _id held a toEJSON field could change a different document.
  • MCP browse_table and count_rows reading rows without the confirmation Safe Mode asks for.
  • MCP confirmations not naming the database a statement runs in, or the values insert_rows writes.
  • MongoDB on iPhone and iPad not checking the server's name through SSH with Verify Identity.
  • Oracle EXPLAIN PLAN INTO a table, which inserts the plan, passing as a read for read-only external clients.
  • PostgreSQL crosstab, connectby, xpath_table and pg_import_system_collations, and DuckDB query(), passing as reads.
  • Safe Mode on iPhone and iPad passing server file reads, such as pg_read_file and LOAD_FILE, as reads.
  • Setting a PostgreSQL sequence past its column could run an operator the database owner planted ahead of pg_catalog.
  • Shortcuts listing tables and adding rows on iPhone and iPad while TablePro was locked.
  • Shortening DynamoDB point-in-time recovery, or an UpdateTable setting the app does not know, passing as a plain write.
  • SurrealDB REMOVE TABLE, Snowflake REMOVE, and MySQL or Oracle PURGE or RESET MASTER skipping the destructive prompt.
  • Table Health, a primary key change in Structure or a backup could run a function planted in a PostgreSQL schema as you.
  • Table names, Copilot tool results and iPhone server errors reaching the system log in clear.
  • The assistant's confirm_destructive_operation running statements that read server files or run server code.
  • Verify CA and Verify Identity checking no certificate when connecting through an SSH, Cloudflare or other tunnel.
  • With Python Beancount, a ledger could run code with Run Ledger Plugins off, through a bundled plugin or a nearby file.

Don't miss a new TablePro release

NewReleases is sending notifications on new releases.