Skip to content

cloud: add Starter PostgreSQL Compatible docs - #23907

Open
qiqi-power wants to merge 20 commits into
pingcap:release-8.5from
qiqi-power:PGonStarter
Open

qiqi-power wants to merge 20 commits into
pingcap:release-8.5from
qiqi-power:PGonStarter

Conversation

@qiqi-power

@qiqi-power qiqi-power commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

First-time contributors' checklist

What is changed, added, or deleted? (Required)

Which TiDB version(s) do your changes apply to? (Required)

Tips for choosing the affected version(s):

By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.

For details, see tips for choosing the affected versions.

  • master (the latest development version)
  • v9.0 (TiDB 9.0 versions)
  • v8.5 (TiDB 8.5 versions)
  • v8.1 (TiDB 8.1 versions)
  • v7.5 (TiDB 7.5 versions)
  • v7.1 (TiDB 7.1 versions)
  • v6.5 (TiDB 6.5 versions)

What is the related PR or file link(s)?

  • Related code change PR links (if applicable):
  • This PR is translated from:
  • Other reference link(s):

AI agent involvement

  • The changes in this PR were primarily made by an AI agent on behalf of the PR author.

Do your changes match any of the following descriptions?

  • Delete files
  • Change aliases
  • Need modification after applied to another branch
  • Might cause conflicts after applied to another branch

Summary by CodeRabbit

  • New Features
    • Added PostgreSQL-compatible TiDB Cloud Starter support in Limited Public Preview.
    • Added guidance for creating, connecting to, monitoring, and migrating PostgreSQL-compatible Starter instances.
    • Documented PostgreSQL-compatible SQL features, data types, transactions, roles, row-level security, extensions, full-text search, vector search, Parquet imports, and system catalogs.
  • Documentation
    • Added compatibility references covering supported features, limitations, and behavioral differences.
    • Clarified plan-specific quotas, billing, backups, endpoints, branching, and capacity behavior.
    • Updated connection and restore instructions for Starter instances.

@ti-chi-bot

ti-chi-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign overvenus for approval. For more information see the Code Review Process.
Please ensure that each of them provides their approval before proceeding.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot Bot added contribution This PR is from a community contributor. missing-translation-status This PR does not have translation status info. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Sep 20, 2026
@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingcap/docs/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: fac724ab-3df3-4f81-96de-93a86b2158cf

📥 Commits

Reviewing files that changed from the base of the PR and between 4d8acab and 7c00f40.

📒 Files selected for processing (1)
  • tidb-cloud/connect-via-standard-connection-serverless.md

Included review availability: Your plan provides up to 4 included reviews per hour; 2 remain after this review.


📝 Walkthrough

Walkthrough

The PR documents PostgreSQL-compatible TiDB Cloud Starter in Limited Public Preview. It adds guides for creation, connectivity, migration, SQL support, administration, monitoring, extensions, vector search, full-text search, and operational limits. Existing Starter documentation now distinguishes compatibility modes.

Changes

PostgreSQL-compatible Starter documentation

Layer / File(s) Summary
Starter offering and access
tidb-cloud/backup-and-restore-serverless.md, tidb-cloud/connect-via-standard-connection-serverless.md, tidb-cloud/create-tidb-cluster-serverless.md, tidb-cloud/select-cluster-tier.md, tidb-cloud/tidb-cloud-intro.md
Existing pages distinguish MySQL-compatible and PostgreSQL-compatible Starter modes, quotas, endpoints, branches, backups, and creation rules.
Starter onboarding and operations
tidb-cloud/pg-on-starter/pg-quickstart.md, tidb-cloud/pg-on-starter/Import-with-psql.md, tidb-cloud/pg-on-starter/built-in-monitoring-pg.md, tidb-cloud/pg-on-starter/pg-parquet-import.md, tidb-cloud/pg-on-starter/pg-transactions-copy.md
New pages document instance setup, PostgreSQL migration, metrics, Parquet import, transactions, and COPY behavior.
Compatibility contract and data types
tidb-cloud/pg-on-starter/postgresql-compatibility.md, tidb-cloud/pg-on-starter/pg-data-types.md
The documentation defines supported and unsupported PostgreSQL behavior, data types, isolation, indexes, procedures, replication, and migration constraints.
SQL reference and language features
tidb-cloud/pg-on-starter/pg-sql-reference-overview.md, tidb-cloud/pg-on-starter/pg-ddl.md, tidb-cloud/pg-on-starter/pg-dml-queries.md, tidb-cloud/pg-on-starter/pg-built-in-functions.md
New reference pages cover SQL categories, DDL, DML, queries, built-in functions, and PostgreSQL-compatible examples.
Advanced SQL and database administration
tidb-cloud/pg-on-starter/pg-advanced-sql.md, tidb-cloud/pg-on-starter/pg-auth-roles.md, tidb-cloud/pg-on-starter/pg-row-level-security.md, tidb-cloud/pg-on-starter/pg-session-parameters.md, tidb-cloud/pg-on-starter/pg-system-catalog.md
New pages cover PL/pgSQL, triggers, sequences, types, collations, roles, privileges, row-level security, session parameters, and system catalogs.
Specialized capabilities and limits
tidb-cloud/pg-on-starter/pg-extensions-overview.md, tidb-cloud/pg-on-starter/pg-full-text-search.md, tidb-cloud/pg-on-starter/pg-limits-constraints.md, tidb-cloud/pg-on-starter/pg-vector-search.md
New pages cover extensions, full-text search, engine limits, constraints, and vector search capabilities.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Other

Suggested reviewers: lilin90

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description includes the template, CLA confirmation, and v8.5 selection, but the required change summary is empty. It therefore does not provide enough information about the purpose or scope of th… Add a concise summary of the documentation added or updated, including the PostgreSQL-compatible Starter pages, affected product behavior, and target branch or release.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the main change: adding Starter PostgreSQL Compatible documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description includes the template, CLA confirmation, and v8.5 selection, but the required change summary is empty. It therefore does not provide enough information about the purpose or scope of the pull request.

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 18

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

🟡 Minor · Extend the backup-setting instructions to… · backup-and-restore-serverless.md:60

tidb-cloud/backup-and-restore-serverless.md:60
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Extend the backup-setting instructions to PostgreSQL-compatible Starter.

The new note states that PostgreSQL-compatible Starter supports configurable backup settings. This section still says the procedure applies only to Essential instances. Update Line 60 to include PostgreSQL-compatible Starter and Starter instances with configurable backup settings.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: pingcap/docs/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 2a80beba-a179-4c14-a2ef-a205d3b55ee6

📥 Commits

Reviewing files that changed from the base of the PR and between 743161b and b091661.

📒 Files selected for processing (25)
  • tidb-cloud/backup-and-restore-serverless.md
  • tidb-cloud/connect-via-standard-connection-serverless.md
  • tidb-cloud/create-tidb-cluster-serverless.md
  • tidb-cloud/pg-on-starter/Import-with-psql.md
  • tidb-cloud/pg-on-starter/built-in-monitoring-pg.md
  • tidb-cloud/pg-on-starter/pg-advanced-sql.md
  • tidb-cloud/pg-on-starter/pg-auth-roles.md
  • tidb-cloud/pg-on-starter/pg-built-in-functions.md
  • tidb-cloud/pg-on-starter/pg-data-types.md
  • tidb-cloud/pg-on-starter/pg-ddl.md
  • tidb-cloud/pg-on-starter/pg-dml-queries.md
  • tidb-cloud/pg-on-starter/pg-extensions-overview.md
  • tidb-cloud/pg-on-starter/pg-full-text-search.md
  • tidb-cloud/pg-on-starter/pg-limits-constraints.md
  • tidb-cloud/pg-on-starter/pg-parquet-import.md
  • tidb-cloud/pg-on-starter/pg-quickstart.md
  • tidb-cloud/pg-on-starter/pg-row-level-security.md
  • tidb-cloud/pg-on-starter/pg-session-parameters.md
  • tidb-cloud/pg-on-starter/pg-sql-reference-overview.md
  • tidb-cloud/pg-on-starter/pg-system-catalog.md
  • tidb-cloud/pg-on-starter/pg-transactions-copy.md
  • tidb-cloud/pg-on-starter/pg-vector-search.md
  • tidb-cloud/pg-on-starter/postgresql-compatibility.md
  • tidb-cloud/select-cluster-tier.md
  • tidb-cloud/tidb-cloud-intro.md

Included review availability: Your plan provides up to 4 included reviews per hour; 3 remain after this review.

@@ -0,0 +1,291 @@
---

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use a lowercase filename.

This new file is named Import-with-psql.md. Rename it to import-with-psql.md and update references.

As per path instructions, new file names must use lowercase words separated by hyphens.

Source: Path instructions

Comment on lines +203 to +209
```shell
pg_dump \
--data-only \
--no-owner \
--no-privileges \
"<SOURCE_DATABASE_URL>" \
| psql "<TARGET_DATABASE_URL>" -v ON_ERROR_STOP=1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Do not hide pg_dump failures in the pipeline.

Without pipefail, the shell reports the status of the final psql command. If pg_dump fails after emitting a valid prefix, the command can appear successful after importing only part of the data. Run this pipeline in a shell that supports pipefail, or export and validate the dump before importing.

Committable change
+set -o pipefail
 pg_dump \
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```shell
pg_dump \
--data-only \
--no-owner \
--no-privileges \
"<SOURCE_DATABASE_URL>" \
| psql "<TARGET_DATABASE_URL>" -v ON_ERROR_STOP=1
```shell
set -o pipefail
pg_dump \
--data-only \
--no-owner \
--no-privileges \
"<SOURCE_DATABASE_URL>" \
| psql "<TARGET_DATABASE_URL>" -v ON_ERROR_STOP=1

Comment on lines +144 to +151
CREATE FUNCTION create_order(p_item TEXT)
RETURNS BIGINT AS $$
DECLARE
new_id BIGINT;
BEGIN
INSERT INTO orders (item)
VALUES (p_item)
RETURNING id INTO new_id;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Align create_order with the documented orders table.

tidb-cloud/pg-on-starter/pg-ddl.md defines orders with id, user_id, and amount; it has no item column. A reader who follows both pages cannot create this function successfully.

Committable replacement
-CREATE FUNCTION create_order(p_item TEXT)
+CREATE FUNCTION create_order(p_user_id BIGINT, p_amount NUMERIC)
@@
-    INSERT INTO orders (item)
-    VALUES (p_item)
+    INSERT INTO orders (user_id, amount)
+    VALUES (p_user_id, p_amount)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
CREATE FUNCTION create_order(p_item TEXT)
RETURNS BIGINT AS $$
DECLARE
new_id BIGINT;
BEGIN
INSERT INTO orders (item)
VALUES (p_item)
RETURNING id INTO new_id;
CREATE FUNCTION create_order(p_user_id BIGINT, p_amount NUMERIC)
RETURNS BIGINT AS $$
DECLARE
new_id BIGINT;
BEGIN
INSERT INTO orders (user_id, amount)
VALUES (p_user_id, p_amount)
RETURNING id INTO new_id;

Comment on lines +335 to +342
A `CASE` expression, such as `NEW.status := CASE WHEN ... END`, can still be used in an assignment.

### AFTER trigger formatting

In an `AFTER` trigger function, keep a bare `RETURN NEW;` or `RETURN OLD;` on its own line.

For example:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🛡️ Analyzed with Security Review | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

sed -n '320,355p' tidb-cloud/pg-on-starter/pg-row-level-security.md
rg -n "search_path|ALTER FUNCTION|SET search_path|SECURITY DEFINER" tidb-cloud/pg-on-starter

Repository: pingcap/docs

Length of output: 2185


🏁 Script executed:

#!/bin/bash
set -eu
cat -n tidb-cloud/pg-on-starter/pg-row-level-security.md | sed -n '323,353p'
cat -n tidb-cloud/pg-on-starter/pg-session-parameters.md | sed -n '118,145p'
printf '\n-- function search_path controls in Starter docs --\n'
rg -n -C 2 "CREATE FUNCTION|SET search_path|function-local|ALTER FUNCTION|SET clause|configuration parameter" tidb-cloud/pg-on-starter/pg-*.md

Repository: pingcap/docs

Length of output: 7234


Security Misconfiguration

Exploitability: Moderate
CWE: CWE-427

Schema-qualify the SECURITY DEFINER example. RETURNS SETOF posts is fixed when the function is created, so the caller's search_path does not redirect the return type. However, SELECT * FROM posts can resolve through the caller-controlled search path while running with the owner's privileges. Use the trusted schema for both references.

Use schema-qualified references
Suggested change
A `CASE` expression, such as `NEW.status := CASE WHEN ... END`, can still be used in an assignment.
### AFTER trigger formatting
In an `AFTER` trigger function, keep a bare `RETURN NEW;` or `RETURN OLD;` on its own line.
For example:
CREATE FUNCTION list_all_posts()
RETURNS SETOF public.posts
LANGUAGE SQL
SECURITY DEFINER
AS $$
SELECT * FROM public.posts
$$;

| `INTEGER` | `INT`, `INT4` | 4-byte signed integer. |
| `BIGINT` | `INT8` | 8-byte signed integer. |
| `DOUBLE PRECISION` | `FLOAT8` | 8-byte IEEE 754 floating-point number. |
| `NUMERIC` | `NUMERIC(p,s)`, `DECIMAL` | Exact numeric value with optional precision and scale. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Move NUMERIC(p,s) out of the alias column.

NUMERIC(p,s) is parameterized type syntax, not a type alias. Listing it as an alias can mislead users about the accepted type name.

Apply this replacement
-| `NUMERIC` | `NUMERIC(p,s)`, `DECIMAL` | Exact numeric value with optional precision and scale. |
+| `NUMERIC` | `DECIMAL` | Exact numeric value. Use `NUMERIC(p,s)` to specify precision and scale. |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| `NUMERIC` | `NUMERIC(p,s)`, `DECIMAL` | Exact numeric value with optional precision and scale. |
| `NUMERIC` | `DECIMAL` | Exact numeric value. Use `NUMERIC(p,s)` to specify precision and scale. |

Source: Path instructions

Comment thread tidb-cloud/starter/pg-system-catalog.md Outdated
You can configure HNSW index build parameters when creating an index:

```sql
CREATE INDEX idx_documents_embedding

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use a unique name for the tuned HNSW example.

The page already creates idx_documents_embedding in Lines [94-96]. Running this example afterward on the same documents table fails because the index name already exists.

Apply this replacement
-CREATE INDEX idx_documents_embedding
+CREATE INDEX idx_documents_embedding_tuned
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
CREATE INDEX idx_documents_embedding
CREATE INDEX idx_documents_embedding_tuned

Source: Path instructions


Arbitrary custom or third-party PostgreSQL extensions cannot be installed. Only extensions explicitly supported by TiDB Cloud are available.

For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Replace the placeholder extension link.

The link target is a placeholder rather than a repository page. It will produce a broken link for the supported extensions reference.

Apply this replacement
-For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).
+For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](/tidb-cloud/pg-on-starter/pg-extensions-overview.md).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).
For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](/tidb-cloud/pg-on-starter/pg-extensions-overview.md).

Source: Path instructions

Comment thread tidb-cloud/select-cluster-tier.md
Comment thread tidb-cloud/tidb-cloud-intro.md Outdated
- TiDB Cloud Starter

{{{ .starter }}} is a fully managed, multi-tenant TiDB offering. It delivers an instant, autoscaling MySQL-compatible database and offers a generous free quota and consumption based billing once free limits are exceeded.
{{{ .starter }}} is a fully managed, multi-tenant TiDB offering. It delivers an instant, autoscaling database with MySQL compatibility, while PostgreSQL compatibility is available in limited Public Preview. It offers a generous free quota and consumption based billing once free limits are exceeded.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Scope the billing statement to MySQL-compatible Starter.

The current wording implies that PostgreSQL-compatible Starter receives consumption-based billing after quota exhaustion. The other changed pages state that PostgreSQL-compatible Starter rejects new connections and throttles existing connections instead. Qualify the billing behavior to MySQL-compatible Starter.

Committable change
-    {{{ .starter }}} is a fully managed, multi-tenant TiDB offering. It delivers an instant, autoscaling database with MySQL compatibility, while PostgreSQL compatibility is available in limited Public Preview. It offers a generous free quota and consumption based billing once free limits are exceeded.
+    {{{ .starter }}} is a fully managed, multi-tenant TiDB offering. It delivers an instant, autoscaling database with MySQL compatibility, while PostgreSQL compatibility is available in Limited Public Preview. MySQL-compatible {{{ .starter }}} offers a generous free quota and consumption-based billing once free limits are exceeded.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{{{ .starter }}} is a fully managed, multi-tenant TiDB offering. It delivers an instant, autoscaling database with MySQL compatibility, while PostgreSQL compatibility is available in limited Public Preview. It offers a generous free quota and consumption based billing once free limits are exceeded.
{{{ .starter }}} is a fully managed, multi-tenant TiDB offering. It delivers an instant, autoscaling database with MySQL compatibility, while PostgreSQL compatibility is available in Limited Public Preview. MySQL-compatible {{{ .starter }}} offers a generous free quota and consumption-based billing once free limits are exceeded.
🧰 Tools
🪛 LanguageTool

[grammar] ~79-~79: Use a hyphen to join words.
Context: ...rs a generous free quota and consumption based billing once free limits are excee...

(QB_NEW_EN_HYPHEN)

@lilin90 lilin90 added the translation/no-need No need to translate this PR. label Sep 20, 2026
@ti-chi-bot ti-chi-bot Bot removed the missing-translation-status This PR does not have translation status info. label Sep 20, 2026
@lilin90 lilin90 changed the title pg-on-starter cloud: add Starter PostgreSQL Compatible docs Sep 20, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: pingcap/docs/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 933ff1bb-f744-470c-afa6-fb14d68f3e75

📥 Commits

Reviewing files that changed from the base of the PR and between b091661 and 4d8acab.

📒 Files selected for processing (3)
  • tidb-cloud/connect-via-standard-connection-serverless.md
  • tidb-cloud/select-cluster-tier.md
  • tidb-cloud/tidb-cloud-intro.md

Included review availability: Your plan provides up to 4 included reviews per hour; 2 remain after this review.

Comment on lines +36 to +37
> - PostgreSQL-compatible {{{ .starter }}} currently supports public endpoints only. Private endpoints are not supported.
> - For MySQL-compatible {{{ .starter }}} and {{{ .essential }}} instances, you can also choose **Private Endpoint** in the **Connection Type** drop-down list. For more information, see the following documents:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🔎 Supported by static analysis

🤖 get_repo_knowledge executed:

get_repo_knowledge pingcap/docs /tmp/coderabbit-repo-knowledge/pingcap-docs-9c73f70c/learnings /tmp/coderabbit-repo-knowledge/pingcap-docs-9c73f70c/conventions

Length of output: 4069


🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- tracked candidate files ---'
git ls-files 'tidb-cloud/*standard*connection*serverless*' 'tidb-cloud/*private*endpoint*serverless*' 'tidb-cloud/*branch*overview*' | sed -n '1,120p'
printf '%s\n' '--- cited source sections ---'
for f in \
  tidb-cloud/connect-via-standard-connection-serverless.md \
  tidb-cloud/set-up-private-endpoint-connections-serverless.md \
  tidb-cloud/branch-overview.md
do
  if [ -f "$f" ]; then
    printf '\n### %s\n' "$f"
    wc -l "$f"
    rg -n -C 5 'PostgreSQL-compatible|MySQL-compatible|Private Endpoint|private endpoint|Starter|starter|branch|Branch' "$f" | sed -n '1,260p'
  fi
done
printf '%s\n' '--- related Japanese paths and matching passages ---'
rg -l -i 'private.?endpoint|postgresql.?compatible|mysql.?compatible|branch' tidb-cloud | rg -i 'connect|private|branch|serverless|mysql|postgres' | sed -n '1,120p'
rg -n -i -C 3 'PostgreSQL-compatible|MySQL-compatible|Private Endpoint|private endpoint' tidb-cloud --glob '*.md' | sed -n '1,320p'

Repository: pingcap/docs

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- compatibility-specific restrictions ---'
rg -n -i -C 4 'PostgreSQL-compatible|MySQL-compatible|private endpoint|private endpoints|branch(es)?' tidb-cloud \
  --glob '*.md' \
  --glob '!connect-via-standard-connection-serverless.md' \
  --glob '!set-up-private-endpoint-connections-serverless.md' \
  --glob '!branch-overview.md' \
  | rg -i -C 3 'PostgreSQL-compatible|MySQL-compatible|private endpoint|private endpoints|branch' \
  | sed -n '1,260p'
printf '%s\n' '--- private guide focused sections ---'
sed -n '1,70p;137,151p' tidb-cloud/set-up-private-endpoint-connections-serverless.md
printf '%s\n' '--- branch guide focused sections ---'
sed -n '1,22p;38,50p' tidb-cloud/branch-overview.md
printf '%s\n' '--- compatibility overview ---'
sed -n '35,75p' tidb-cloud/select-cluster-tier.md
printf '%s\n' '--- branch management references ---'
rg -n -i -C 3 'PostgreSQL-compatible|MySQL-compatible|branch' tidb-cloud/branch-manage.md tidb-cloud/ticloud-branch-*.md tidb-cloud/terraform-use-serverless-branch-resource.md | sed -n '1,260p'

Repository: pingcap/docs

Length of output: 50370


Update the linked guides with the compatibility restrictions.

tidb-cloud/set-up-private-endpoint-connections-serverless.md describes private endpoints for generic Starter instances, and tidb-cloud/branch-overview.md describes branches for generic Starter instances. State that these features apply to MySQL-compatible Starter, not PostgreSQL-compatible Starter. The English and Japanese links and the branch sentence already include the required qualification.

📍 Affects 1 file
  • tidb-cloud/connect-via-standard-connection-serverless.md#L36-L37 (this comment)
  • tidb-cloud/connect-via-standard-connection-serverless.md#L48-L49
  • tidb-cloud/connect-via-standard-connection-serverless.md#L52-L55

Source: Path instructions

Comment thread tidb-cloud/connect-via-standard-connection-serverless.md
@seominjea1942

Copy link
Copy Markdown
Collaborator

@qiqi-power

Read through this and the extension list and compatibility scope look solid. One suggestion and one small heads up.

The preview notes across these pages explain well what the feature can and cannot do, but they do not yet say what users can expect from us operationally while it is in Limited Public Preview. Three things would round that out.

  • How much support is available during the preview, and through which channel
  • Whether the usual SLA applies, and whether the feature is recommended for production workloads. recovery-group-overview.md has a short precedent for that wording
  • What to do when something goes wrong, meaning the escalation path and what to include in a report

A short "Support during the preview" section on postgresql-compatibility.md or pg-limits-constraints.md would probably be the natural home, linked to /tidb-cloud/tidb-cloud-support.md which this PR already references in two other places.

On the small one, the failing internal-links-files check is coming from three links to /tidb-cloud/pg-on-starter/pg-extensions.md, where the file added in this PR is actually named pg-extensions-overview.md. They are in Import-with-psql.md lines 34 and 85, and pg-quickstart.md line 59. Flagging it so you do not have to hunt for it.

github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 23, 2026
@qiancai
qiancai self-requested a review September 24, 2026 01:43
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 24, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 24, 2026
+ **Transactions**: `BEGIN`, `COMMIT`, `ROLLBACK`, savepoints, and autocommit.
+ **Data types**: Boolean, integer, bigint, double precision, numeric, text, varchar, bytea, timestamp/timestamptz, date, time, interval, UUID, JSON/JSONB, arrays, serial/bigserial, vector, tsvector, and tsquery.
+ **PL/pgSQL**: Functions, procedures, control flow, and dynamic `EXECUTE`, with some limitations. `WHILE`, `FOREACH`, and cursors are not supported. `EXCEPTION` and nested blocks require a `DO` block.
+ **Triggers**: `BEFORE` and `AFTER` triggers on `INSERT`, `UPDATE`, and `DELETE`, with some limitations. For more information, see [PL/pgSQL](#plpgsql).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
+ **Triggers**: `BEFORE` and `AFTER` triggers on `INSERT`, `UPDATE`, and `DELETE`, with some limitations. For more information, see [PL/pgSQL](#plpgsql).
+ **Triggers**: `BEFORE` and `AFTER` triggers on `INSERT`, `UPDATE`, and `DELETE`, with some limitations. For more information, see [Triggers](#triggers).


The effective isolation level is `REPEATABLE READ`.

If your application relies on true serializability, use explicit row locking such as `SELECT ... FOR UPDATE` or database constraints to protect application invariants.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If your application relies on true serializability, use explicit row locking such as `SELECT ... FOR UPDATE` or database constraints to protect application invariants.
If your application relies on PostgreSQL `SERIALIZABLE` semantics, review and redesign your transaction logic as needed. Explicit row locking or database constraints can protect specific invariants, but they do not provide PostgreSQL Serializable Snapshot Isolation (SSI) semantics.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reason: Explicit row locking and database constraints are not a general substitute for PostgreSQL SERIALIZABLE isolation. The original wording could incorrectly imply that using SELECT ... FOR UPDATE or constraints restores the serializability guarantee lost when SERIALIZABLE is downgraded to REPEATABLE READ.


| PostgreSQL type | Behavior |
| --- | --- |
| `SMALLINT` / `INT2` | Accepted, but stored internally as a 32-bit integer. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `SMALLINT` / `INT2` | Accepted, but stored internally as a 32-bit integer. |
| `SMALLINT` / `INT2` | Not supported. Use `INTEGER` instead. |

@qiancai qiancai Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reason: This conflicts with pg-data-types.md in the same PR, which explicitly lists SMALLINT and INT2 as unsupported and recommends using INTEGER instead. Please confirm which is correct.

| PostgreSQL type | Behavior |
| --- | --- |
| `SMALLINT` / `INT2` | Accepted, but stored internally as a 32-bit integer. |
| `REAL` / `FLOAT4` | Accepted, but stored internally as double precision. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `REAL` / `FLOAT4` | Accepted, but stored internally as double precision. |
| `REAL` / `FLOAT4` | Not supported. Use `DOUBLE PRECISION` instead. |

@qiancai qiancai Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reason: This conflicts with pg-data-types.md in the same PR, which explicitly lists REAL and FLOAT4 as unsupported and recommends using DOUBLE PRECISION instead. Please confirm which is correct.

| --- | --- |
| `SMALLINT` / `INT2` | Accepted, but stored internally as a 32-bit integer. |
| `REAL` / `FLOAT4` | Accepted, but stored internally as double precision. |
| `CHAR(n)` / `CHARACTER(n)` | Accepted, but stored internally as `VARCHAR`. Fixed-length padding semantics differ from PostgreSQL. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `CHAR(n)` / `CHARACTER(n)` | Accepted, but stored internally as `VARCHAR`. Fixed-length padding semantics differ from PostgreSQL. |
| `CHAR(n)` / `CHARACTER(n)` | Not supported. Use `VARCHAR(n)` instead. |

@qiancai qiancai Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reason: This conflicts with pg-data-types.md in the same PR, which explicitly lists CHAR(n) and CHARACTER(n) as unsupported and recommends using VARCHAR(n) instead. Please confirm which is correct.


### `COPY`

`COPY FROM` supports text and CSV formats over the PostgreSQL wire protocol.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`COPY FROM` supports text and CSV formats over the PostgreSQL wire protocol.
`COPY ... FROM STDIN` supports text and CSV formats over the PostgreSQL wire protocol.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reason: The dedicated pg-transactions-copy.md page documents client streaming through COPY ... FROM STDIN. Naming STDIN explicitly avoids implying that all PostgreSQL COPY FROM forms are supported.


HNSW is the supported approximate nearest-neighbor index type for vector workloads. It has additional structural and query-shape requirements.

PostgreSQL vector index types that are not provided by TiDB Cloud, such as IVFFlat, are not available.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
PostgreSQL vector index types that are not provided by TiDB Cloud, such as IVFFlat, are not available.
Other pgvector index types that are not provided by TiDB Cloud, such as IVFFlat, are not available.


Arbitrary custom or third-party PostgreSQL extensions cannot be installed. Only extensions explicitly supported by TiDB Cloud are available.

For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).
For the list of available extensions and extension-specific limitations, see [PostgreSQL Extensions](/tidb-cloud/starter/pg-extensions-overview.md).

>
> PostgreSQL-compatible TiDB Cloud Starter is currently available in limited public preview. To request access, contact [TiDB Cloud Support](/tidb-cloud/tidb-cloud-support.md).
>
> After preview access is enabled, the **Compatibility Mode** section is displayed when you create a Starter instance.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> After preview access is enabled, the **Compatibility Mode** section is displayed when you create a Starter instance.
> After preview access is enabled, the **Compatibility Mode** section is displayed when you create a TiDB Cloud Starter instance.

github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 24, 2026
```sql
INSERT INTO users (name, email)
VALUES
('Alice', 'alice@example.com'),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The preceding single-row example has already inserted Alice with alice@example.com. Because users.email is defined as UNIQUE in pg-ddl.md, running these examples sequentially would make this multi-row insert fail with a uniqueness conflict. Using Charlie also makes the later UPDATE ... WHERE name = 'Charlie' examples operate on an existing row.

Suggested change
('Alice', 'alice@example.com'),
('Charlie', 'charlie@example.com'),


```sql
DELETE FROM users
WHERE id = 1;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both DELETE examples currently target id = 1. If readers run the examples sequentially, the first DELETE removes that row, so the following DELETE ... RETURNING example returns nothing. Using a different existing row keeps the examples runnable in sequence.

Suggested change
WHERE id = 1;
WHERE name = 'Bob';


```sql
DELETE FROM users
WHERE id = 1

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The immediately preceding DELETE example already deletes id = 1, so using the same condition here would not demonstrate RETURNING when the examples are run sequentially. Charlie is available from the earlier insert example and is therefore a clearer target.

Suggested change
WHERE id = 1
WHERE name = 'Charlie'

For example:

```sql
CREATE TABLE orders (

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The related pg-ddl.md example already creates an orders table, and this page otherwise reuses objects such as users and orders from that schema. Reusing CREATE TABLE orders here would fail if users follow the examples across the SQL reference. A distinct table name avoids the conflict while still demonstrating ON DELETE CASCADE.

Suggested change
CREATE TABLE orders (
CREATE TABLE orders_with_cascade (


## Joins

The following join forms are supported:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXISTS and NOT EXISTS are subquery predicates commonly used to express semi-join and anti-join semantics, not SQL join forms. LATERAL is also a modifier for a FROM item rather than a standalone join type. The broader wording accurately covers all entries in the table.

Suggested change
The following join forms are supported:
The following joins and related query patterns are supported:


The following join forms are supported:

| Join type | Supported |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table contains EXISTS and NOT EXISTS patterns in addition to actual join types, so Join type is not accurate for every row.

Suggested change
| Join type | Supported |
| Join or query pattern | Supported |

| `RIGHT [OUTER] JOIN` | Yes |
| `FULL [OUTER] JOIN` | Yes |
| `CROSS JOIN` | Yes |
| `LATERAL JOIN` | Yes |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PostgreSQL does not define LATERAL JOIN as a standalone join type. LATERAL qualifies a subquery or function in the FROM clause and can be combined with joins, as in the later LEFT JOIN LATERAL example.

Suggested change
| `LATERAL JOIN` | Yes |
| `LATERAL` subquery | Yes |


## Common table expressions

Standard CTEs are supported:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Standard CTEs is ambiguous because recursive CTEs are also part of standard SQL/PostgreSQL functionality. This paragraph is specifically contrasting ordinary non-recursive CTEs with the recursive CTEs introduced immediately afterward.

Suggested change
Standard CTEs are supported:
Non-recursive CTEs are supported:


Recursive CTEs are limited to 1,000 iterations.

Use a unique name for each CTE definition in the same `WITH` list. For compatibility details, see [PostgreSQL Compatibility](/tidb-cloud/starter/postgresql-compatibility.md).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The referenced PostgreSQL Compatibility page in this PR does not document the unique-CTE-name rule or the 1,000-iteration recursive CTE limit. The Limits and Constraints page explicitly documents the recursive CTE limit, so it is the more accurate cross-reference.

Suggested change
Use a unique name for each CTE definition in the same `WITH` list. For compatibility details, see [PostgreSQL Compatibility](/tidb-cloud/starter/postgresql-compatibility.md).
Use a unique name for each CTE definition in the same `WITH` list. For recursive CTE limits, see [PostgreSQL Limits and Constraints](/tidb-cloud/starter/pg-limits-constraints.md).

| `BOOLEAN` | `BOOLEAN` |
| `INT32` | `INTEGER` |
| `INT64` | `BIGINT` |
| `FLOAT` | `REAL` |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `FLOAT` | `REAL` |
| `FLOAT` | `DOUBLE PRECISION` |

Reason: This mapping is inconsistent with pg-data-types.md in the same PR, which explicitly states that REAL and FLOAT4 are not supported and recommends DOUBLE PRECISION instead. The Parquet type mapping should use a supported PostgreSQL-compatible TiDB Cloud Starter type, or the documentation should explicitly explain why the Parquet extension can return REAL despite that general limitation.

| `ENCODE(bytea, format)` | Encodes binary data. |
| `DECODE(text, format)` | Decodes text into binary data. |

Additional UUID functions are provided through the `uuid-ossp` compatibility extension.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Additional UUID functions are provided through the `uuid-ossp` compatibility extension.
Additional `uuid-ossp`-compatible UUID functions are built in, and `CREATE EXTENSION "uuid-ossp"` can be used to register the extension metadata.

Reason: Reason: This is inconsistent with pg-extensions-overview.md in the same PR, which states that the uuid-ossp functionality is built in and that CREATE EXTENSION "uuid-ossp" is used to register extension metadata. The original wording incorrectly implies that the functions become available through the extension.

- Text without an explicit custom collation uses bytewise ordering.
- Collation is not applied to `ORDER BY` inside aggregate functions.
- Collation is not applied to window-function `ORDER BY`.
- Custom collations are not fully reflected by `pg_collation` or `pg_attribute.attcollation`.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Custom collations are not fully reflected by `pg_collation` or `pg_attribute.attcollation`.
- Custom collations can be used but are not listed in `pg_collation`.

Reason: The PostgreSQL System Catalog page in the same PR specifically states that custom collations can be used but are not listed in pg_collation. It does not establish the broader claim about pg_attribute.attcollation. The revised wording is also more concrete than "not fully reflected."

@qiancai qiancai added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Sep 24, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 24, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 25, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 26, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 27, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 28, 2026
@ti-chi-bot

ti-chi-bot Bot commented Sep 29, 2026

Copy link
Copy Markdown

@qiqi-power: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-verify 64eaced link true /test pull-verify

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 29, 2026
github-actions Bot pushed a commit to qiancai/pingcap-docsite-preview that referenced this pull request Sep 29, 2026

@seominjea1942 seominjea1942 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dug into the four failing checks so you do not have to read the Actions logs. Three are one-line fixes and I have left them as suggestions below. The fourth is not a problem with your pages.

internal-links-toc, 28 links across 6 targets. The pages are fine. The checker keeps a hardcoded list of valid TiDB Cloud navigation files at scripts/verify-internal-links-in-toc.js line 17, and the new TOC-tidb-cloud-starter-postgresql.md is not on it. Adding it there would clear all 28, but that is shared tooling and a structural decision, so I did not want to suggest it blindly. Worth checking with whoever owns that script.

linkChecker, 7 errors. Six are the new pages not existing on the site yet, and they resolve on merge. The seventh is the _index.md suggestion below, which would stay broken after merge.

Separately, I have a PostgreSQL-compatible Starter instance running and I am going through these pages against it. Three things have already come up that I will raise properly once I have been through everything: the engine is offered in aws-us-east-1 only and no page says which regions support it, the connection user is <prefix>.postgres rather than the <prefix>.root form MySQL uses, and the API cannot set a Postgres password so the console is the only path. Happy to hold those until you have dealt with the checks.


Arbitrary custom or third-party PostgreSQL extensions cannot be installed. Only extensions explicitly supported by TiDB Cloud are available.

For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link target is still the literal placeholder <link>, which is what internal-links-files is failing on. pg-extensions-overview.md has both halves of what this sentence promises, the extension table and a ## Limitations section.

Suggested change
For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](<link>).
For the list of available extensions and extension-specific limitations, see [Supported PostgreSQL extensions](/tidb-cloud/starter/pg-extensions-overview.md).

- **Storage**: Includes a monthly free storage quota.
- **Request Units**: Includes [Request Units (RUs)](/tidb-cloud/tidb-cloud-glossary.md#request-unit-ru) for database operations.

### MySQL-compatible Starter

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what internal-links-anchors is failing on, and it affects two pages outside this PR.

Replacing ### Usage quota removed the #usage-quota anchor. The quota content itself moved here unchanged, but three links to the old anchor are now dead: backup-and-restore-serverless.md line 131, and serverless-faqs.md lines 107 and 117. None of those files is in this PR, so the diff does not show the breakage.

Keeping the anchor on this heading fixes all three, since this is where the content went.

Suggested change
### MySQL-compatible Starter
### MySQL-compatible Starter {#usage-quota}


<LearningPath label="Migrate" icon="cloud3">

[Migrate from PostgreSQL](https://docs.pingcap.com/tidbcloud/starter/Import-with-psql/?plan=starter&compatibility=postgresql)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one will not resolve on merge. The file was renamed to import-with-psql.md with a lowercase i, so this URL will keep returning 404. Every one of the 342 Markdown files under tidb-cloud/ is lowercase, so lowercase is the convention.

Suggested change
[Migrate from PostgreSQL](https://docs.pingcap.com/tidbcloud/starter/Import-with-psql/?plan=starter&compatibility=postgresql)
[Migrate from PostgreSQL](https://docs.pingcap.com/tidbcloud/starter/import-with-psql/?plan=starter&compatibility=postgresql)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contribution This PR is from a community contributor. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. translation/no-need No need to translate this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants