tidb-sql

Write, review, and adapt SQL for TiDB with correct handling of TiDB-vs-MySQL differences (VECTOR type + vector indexes/functions, full-text search, AUTO_RANDOM, optimistic/pessimistic transactions, foreign keys, views, DDL limitations, and unsupported MySQL features like procedures/triggers/events/GEOMETRY/SPATIAL). Use when generating SQL that must run on TiDB, migrating MySQL SQL to TiDB, or debugging TiDB SQL compatibility errors.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "tidb-sql" with this command: npx skills add pingcap/agent-rules/pingcap-agent-rules-tidb-sql

TiDB SQL (MySQL-compat-focused)

Goal: generate SQL that runs correctly on TiDB by default, and avoid "works on MySQL but breaks on TiDB" constructs.

Workflow (use every time)

  1. Identify the target engine and version:
    • Run SELECT VERSION();
    • If the result contains TiDB, treat it as TiDB and parse the version (needed for feature gates like Vector / Foreign Key).
    • If connecting to TiDB Cloud, ensure the client enables SSL with certificate + identity verification (see skills/tidb-sql/references/tidb-cloud-ssl.md).
  2. Ask 2 quick capability questions if the request depends on them:
    • "Do you have TiFlash?" (needed for vector indexes)
    • "Is this TiDB Cloud Starter/Essential in a supported region for Full-Text Search?" (availability is limited)
  3. Generate SQL using TiDB-safe defaults:
    • Avoid unsupported MySQL features (procedures/triggers/events/UDF/GEOMETRY/SPATIAL, etc.)
    • Treat views as read-only
    • Treat primary key changes as migration/rebuild work
  4. If the user provides MySQL SQL, do a compatibility pass:
    • Replace unsupported features with TiDB alternatives
    • Call out behavior differences and version prerequisites explicitly
  5. If SQL is slow or fails unexpectedly, use TiDB-native diagnostics:
    • Use EXPLAIN FORMAT = "tidb_json" for structured plans and operator trees.
    • Use EXPLAIN ANALYZE to compare estRows vs actRows (it executes the query).
    • If the plan looks wrong, consider ANALYZE TABLE ... to refresh statistics.

High-signal differences (keep in mind)

  • Vector: TiDB supports VECTOR / VECTOR(D) types and vector functions/indexes; MySQL does not.
  • No GEOMETRY/SPATIAL: avoid GEOMETRY, spatial functions, and SPATIAL indexes.
  • No procedures / functions / triggers / events: move logic to the application layer or an external scheduler.
  • Full-text search (TiDB feature): use TiDB full-text search SQL when available; don't assume MySQL FULLTEXT works everywhere.
  • Views are read-only: no UPDATE/INSERT/DELETE against views.
  • Foreign keys: supported in TiDB v6.6.0+; otherwise, don't rely on FK enforcement.
  • Primary key changes are restricted: assume "create new table + backfill + swap" for PK changes.
  • AUTO_RANDOM: prefer AUTO_RANDOM over AUTO_INCREMENT for write-hotspot avoidance when appropriate.
  • Transactions: TiDB supports pessimistic and optimistic modes; handle optimistic COMMIT failures in application logic.

Use these references (inside this skill)

  • skills/tidb-sql/references/vector.md - VECTOR types, functions, vector index DDL, and query patterns.
  • skills/tidb-sql/references/full-text-search.md - Full-text search SQL patterns and availability gotchas.
  • skills/tidb-sql/references/auto-random.md - AUTO_RANDOM rules, DDL patterns, and restrictions.
  • skills/tidb-sql/references/transactions.md - pessimistic vs optimistic mode and session/global knobs.
  • skills/tidb-sql/references/mysql-compatibility-notes.md - other "MySQL vs TiDB" differences that commonly break SQL.
  • skills/tidb-sql/references/explain.md - EXPLAIN / EXPLAIN ANALYZE usage, tidb_json and dot formats.
  • skills/tidb-sql/references/flashback.md - FLASHBACK TABLE/DATABASE and FLASHBACK CLUSTER recovery playbooks.
  • skills/tidb-sql/references/tidb-cloud-ssl.md - TiDB Cloud SSL verification requirements and client flags.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

pytidb

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tidbx-serverless-driver

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tidbx

No summary provided by upstream source.

Repository SourceNeeds Review