Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions connections/connection-form.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ Metadata connections are the extra ones opened to read a database's object list
| [TiDB](/databases/tidb) | 4000 | Yes | Yes | Yes | No | Yes | Yes |
| [Databend](/databases/databend) | 3307 | Yes | Yes | Yes | No | Yes | Yes |
| [OceanBase](/databases/oceanbase) | 2881 | Yes | Yes | Yes | No | Yes | Yes |
| [StarRocks](/databases/starrocks) | 9030 | Yes | Yes | Yes | No | Yes | Yes |
| [PostgreSQL](/databases/postgresql) | 5432 | Yes | Yes | Yes | Yes | Yes | Yes |
| [Amazon Redshift](/databases/redshift) | 5439 | Yes | Yes | Yes | No | Yes | Yes |
| [CockroachDB](/databases/cockroachdb) | 26257 | Yes | Yes | Yes | No | Yes | Yes |
Expand Down
2 changes: 1 addition & 1 deletion customization/general-settings.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ How many seconds a query runs before it is cancelled. The default is 60; the pic

A connection can override this value under **Options > Query timeout**. Leave that field empty to inherit this setting, or enter `0` for no limit. The same section has a separate connect timeout for tunnels, proxies and database sign-in; it does not change how long a query can run.

Where the engine can enforce it, the timeout becomes a server-side setting: `statement_timeout` on PostgreSQL, `max_execution_time` on MySQL and ClickHouse, `max_statement_time` on MariaDB, `ob_query_timeout` on OceanBase. On SQLite it bounds how long a statement waits for a locked database instead. Drivers that talk HTTP (BigQuery, Bigtable, Spanner, Cloudflare D1, LibSQL, Etcd, DynamoDB, Elasticsearch, Typesense, and ClickHouse) bound the request at the timeout plus 30 seconds, and Oracle enforces it in the client: the connection is closed to unblock the call, and the next query reconnects and restores your current schema. SAP HANA ends the statement with the same `ALTER SYSTEM CANCEL SESSION` that **Stop** sends.
Where the engine can enforce it, the timeout becomes a server-side setting: `statement_timeout` on PostgreSQL, `max_execution_time` on MySQL and ClickHouse, `max_statement_time` on MariaDB, `ob_query_timeout` on OceanBase, `query_timeout` on StarRocks. On SQLite it bounds how long a statement waits for a locked database instead. Drivers that talk HTTP (BigQuery, Bigtable, Spanner, Cloudflare D1, LibSQL, Etcd, DynamoDB, Elasticsearch, Typesense, and ClickHouse) bound the request at the timeout plus 30 seconds, and Oracle enforces it in the client: the connection is closed to unblock the call, and the next query reconnects and restores your current schema. SAP HANA ends the statement with the same `ALTER SYSTEM CANCEL SESSION` that **Stop** sends.

Older servers have neither: MySQL before 5.7.8, MariaDB before 10.1.1. A statement that passes the timeout there is stopped with `KILL QUERY` from a second connection, which reaches a `SELECT` on MySQL and any statement at all on MariaDB. A server behind a proxy that reports a version it does not have still gets the right one of the two.

Expand Down
5 changes: 3 additions & 2 deletions databases/index.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: Supported Databases
description: All 42 engines TablePro connects to, their default ports, and which ones need a plugin
description: All 43 engines TablePro connects to, their default ports, and which ones need a plugin
---

import DriverCounts from "/snippets/driver-counts.mdx";

Forty-two engines, and every one of them is free to use. What differs between them is where the
Forty-three engines, and every one of them is free to use. What differs between them is where the
driver comes from, not what the license covers.

<DriverCounts />
Expand Down Expand Up @@ -48,6 +48,7 @@ driver comes from, not what the license covers.
| [ScyllaDB](/databases/cassandra) | 9042 | Plugin |
| [Snowflake](/databases/snowflake) | 443 | Plugin |
| [Spanner](/databases/spanner) | API-based | Plugin |
| [StarRocks](/databases/starrocks) | 9030 | Plugin |
| [SQLite](/databases/sqlite) | File-based | Built-in |
| [SurrealDB](/databases/surrealdb) | 8000 | Plugin |
| [Teradata](/databases/teradata) | 1025 | Plugin |
Expand Down
72 changes: 72 additions & 0 deletions databases/starrocks.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: StarRocks
description: Connect to StarRocks on its MySQL port and browse default_catalog and external catalogs such as Iceberg and Hive
---

Point the connection at a frontend's MySQL port, 9030, not the 8030 HTTP port. The StarRocks driver is a plugin that installs the first time you pick StarRocks, and is built from the MySQL driver. It confirms the server is StarRocks with `SELECT current_version()`; a MySQL server saved under this type fails at connect and asks for the type to be changed. No minimum StarRocks version is enforced.

## Quick setup

A single-node cluster in Docker:

```bash
docker run -d -p 9030:9030 -p 8030:8030 -p 8040:8040 starrocks/allin1-ubuntu
```

Connect as `root` with an empty password once the frontend reports ready, about a minute after start.

## Connection settings

| Field | Default | Notes |
|-------|---------|-------|
| **Port** | `9030` | The frontend's MySQL port |
| **Database** | empty | Optional. `catalog.database`, `catalog.` for a catalog alone, or a database of `default_catalog` |
| **SSL Mode** | Preferred | TLS first, plain text if the server refuses |

Host, user, password and SSH tunnels work as on [MySQL](/databases/mysql).

## Connection URL

```text
starrocks://root:password@fe.example.com:9030/glue_iceberg.sales
```

The path is the Database field, so it takes `catalog.database` too. **Copy Connection String** gives the same form.

## Catalogs and databases

Catalogs fill the database level and each catalog's databases fill the schema level, so the sidebar shows `default_catalog` and every external catalog, with their databases beneath. `Cmd+K` switches catalog, and the database picker switches database within it.

The Database field takes the same two levels. Write `glue_iceberg.sales` to open on database `sales` in catalog `glue_iceberg`, or `glue_iceberg.` to open the catalog with no database selected. A name with no dot is a database of `default_catalog`, as in other StarRocks clients. Leave the field empty to start in `default_catalog`.

Materialized views in `default_catalog` list apart from views, and open on their `CREATE MATERIALIZED VIEW`. The sidebar hides `_statistics_`, `information_schema` and `sys`.

## Editing rows

What a save can do depends on the table's key model. Edits save one statement at a time with no transaction.

| Key model | Row matched on | Edit a cell | Delete a row |
|---|---|---|---|
| Primary key | Key columns | Yes | Yes |
| Unique key, aggregate key | Key columns | No, the server refuses `UPDATE` | Yes |
| Duplicate key | Every column | No, the server refuses `UPDATE` | Yes |
| External catalog table | Every column | Up to the connector | Up to the connector |

A match on every column leaves out ARRAY, MAP, STRUCT, JSON, BITMAP, HLL, PERCENTILE, BINARY and VARBINARY columns, and compares FLOAT columns as text. A delete from a duplicate key table reports 0 rows even when it removes some, so a delete matched on every column is not checked against the row count. To change a row the server refuses to update, delete it and insert it again in the SQL editor.

JSON and VARIANT columns read as text in the grid and the inspector.

## Limitations

- No indexes, foreign keys, triggers, routines, events or partitions. The Structure tab shows columns, with key columns marked, and does not edit them.
- No Create Database, Drop Database, renames or import. Create catalogs and databases in the SQL editor.
- The table info panel shows row counts and sizes for `default_catalog` tables only. An external catalog's tables show none.
- `EXPLAIN ANALYZE` is not in the plan menu. Run it in the SQL editor; its report carries terminal color codes.
- No Users & Roles, Server Dashboard or Table Maintenance.
- Not available on iPhone and iPad.

## Related

- [MySQL](/databases/mysql), for connection fields, SSL/TLS, and troubleshooting
- [Trino](/databases/trino), which browses catalogs the same way
- [SSH Tunneling](/connections/ssh-tunneling)
1 change: 1 addition & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@
"databases/sap-hana",
"databases/snowflake",
"databases/spanner",
"databases/starrocks",
"databases/sqlite",
"databases/surrealdb",
"databases/teradata",
Expand Down
2 changes: 1 addition & 1 deletion index.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Introduction
description: Native macOS database client for MySQL, PostgreSQL, SQLite, MongoDB, Redis, and 37 more
description: Native macOS database client for MySQL, PostgreSQL, SQLite, MongoDB, Redis, and 38 more
---

import DriverCounts from "/snippets/driver-counts.mdx";
Expand Down
4 changes: 2 additions & 2 deletions snippets/driver-counts.mdx
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Five drivers ship inside the app and cover twelve databases. Twenty-six registry plugins cover the
other thirty and install on the first connection that needs one. See
Five drivers ship inside the app and cover twelve databases. Twenty-seven registry plugins cover the
other thirty-one and install on the first connection that needs one. See
[Plugins](/features/plugins).
Loading