[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-databricks-databricks-lakebase":3,"mdc--aig53-key":33,"related-org-databricks-databricks-lakebase":4986,"related-repo-databricks-databricks-lakebase":5174},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"databricks-lakebase","manage Databricks Lakebase Postgres databases","Databricks Lakebase Postgres: projects, scaling, connectivity, Lakebase synced tables, and Data API. Use when asked about Lakebase databases, OLTP storage, or connecting apps to Postgres on Databricks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"databricks","Databricks","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdatabricks.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Database","database","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"API Development","api-development",{"name":21,"slug":22,"type":15},"PostgreSQL","postgresql",204,"https:\u002F\u002Fgithub.com\u002Fdatabricks\u002Fdatabricks-agent-skills","2026-07-12T08:04:52.513565",null,60,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fdatabricks\u002Fdatabricks-agent-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fdatabricks\u002Fcopilot\u002Fskills\u002Fdatabricks-lakebase","---\nname: databricks-lakebase\ndescription: \"Databricks Lakebase Postgres: projects, scaling, connectivity, Lakebase synced tables, and Data API. Use when asked about Lakebase databases, OLTP storage, or connecting apps to Postgres on Databricks.\"\ncompatibility: Requires databricks CLI (>= v0.294.0)\nmetadata:\n  version: \"0.1.0\"\nparent: databricks-core\n---\n\n# Lakebase Postgres Autoscaling\n\n**FIRST**: Use the parent `databricks-core` skill for CLI basics, authentication, and profile selection.\n\nLakebase is Databricks' serverless Postgres-compatible database, available on both AWS and Azure (GA). It provides fully managed OLTP storage with autoscaling, branching, and scale-to-zero.\n\n> **Provisioned Lakebase no longer exists — never create it.** The old Provisioned tier (static, non-scalable Postgres; `databricks database` CLI \u002F `w.database` SDK) is being migrated to Autoscaling over summer 2026, with no customer action required. Lakebase today is Autoscaling-only (`databricks postgres` \u002F `w.postgres`). Do not attempt to create Provisioned instances; if a user asks for one, tell them Provisioned instances don't exist anymore and point them to Autoscaling. Treat the legacy `database` resource key in app configs as retired — migrate to the `postgres` resource key. For the legacy DAB `synced_database_tables` resource, use the `databricks postgres create-synced-table` CLI flow instead (see the Common Issues row and `references\u002Fsynced-tables.md`).\n\nFor context when reading older configs or docs, here is how the retired Provisioned tier maps to Autoscaling:\n\n| Aspect | Provisioned (retired) | Autoscaling (current) |\n|--------|-----------------------|-----------------------|\n| CLI group | `databricks database` | `databricks postgres` |\n| Top-level resource | Instance | Project |\n| Capacity | CU_1–CU_8 (16 GB\u002FCU) | 0.5–112 CU (2 GB\u002FCU) |\n| Branching | Not supported | Full support |\n| Scale-to-zero | Not supported | Configurable |\n| HA | Readable secondaries | 1–3 secondaries + read replicas |\n| Data API | Not available | PostgREST HTTP API |\n| Cloud | AWS only | AWS and Azure |\n\n**Compliance:** Supports HIPAA, C5, TISAX, or None.\n\n## Capabilities\n\n- **Project lifecycle** -- create, update, delete Lakebase Postgres Autoscaling projects\n- **Branching** -- copy-on-write branches with TTL, point-in-time recovery, and reset\n- **Compute scaling** -- autoscale 0.5--32 CU, fixed 36--112 CU, scale-to-zero\n- **High availability** -- 1 primary + 1--3 secondaries, automatic failover\n- **PostgreSQL connectivity** -- OAuth token refresh, connection pooling, SSL\n- **Data API** -- PostgREST-compatible HTTP CRUD (Autoscaling only)\n- **Lakebase synced tables** -- sync Unity Catalog Delta tables into Postgres (previously known as Reverse ETL)\n- **Databricks App integration** -- scaffold apps with Lakebase feature, deploy-first workflow\n- **Cloud support** -- AWS and Azure (GA)\n\n**Reference docs:**\n- [computes-and-scaling.md](references\u002Fcomputes-and-scaling.md) — Sizing, endpoint management, scale-to-zero, HA\n- [connectivity.md](references\u002Fconnectivity.md) — Connection patterns, token refresh, Data API\n- [synced-tables.md](references\u002Fsynced-tables.md) — Lakebase synced tables, data type mapping, capacity planning\n- [lakehouse-sync.md](references\u002Flakehouse-sync.md) — CDC from Lakebase Postgres to Unity Catalog Delta tables (**UI-only** — cannot be configured via CLI or API)\n- [pgvector.md](references\u002Fpgvector.md) — Vector similarity search with pgvector extension\n- [off-platform.md](references\u002Foff-platform.md) — Off-platform Lakebase (NOT Databricks Apps): external Node.js apps connecting via `@databricks\u002Flakebase`, env management, token refresh, Drizzle ORM\n\n## Resource Hierarchy\n\n```\nProject (top-level container)\n  └── Branch (isolated database environment, copy-on-write)\n        ├── Endpoint (read-write or read-only)\n        ├── Database (standard Postgres DB)\n        └── Role (Postgres role)\n```\n\n- **Project**: Top-level container. Creating one auto-provisions a `production` branch and a `primary` read-write endpoint.\n- **Branch**: Isolated database environment sharing storage with parent (copy-on-write). States: `READY`, `ARCHIVED`.\n- **Endpoint** (called **Compute** in UI): Compute resource powering a branch. Types: `ENDPOINT_TYPE_READ_WRITE`, `ENDPOINT_TYPE_READ_ONLY`.\n- **Database**: Standard Postgres database within a branch. Default: `databricks_postgres`.\n- **Role**: Postgres role within a branch.\n\n### Resource Name Formats\n\n| Resource | Format |\n|----------|--------|\n| Project | `projects\u002F{project_id}` |\n| Branch | `projects\u002F{project_id}\u002Fbranches\u002F{branch_id}` |\n| Endpoint | `projects\u002F{project_id}\u002Fbranches\u002F{branch_id}\u002Fendpoints\u002F{endpoint_id}` |\n| Database | `projects\u002F{project_id}\u002Fbranches\u002F{branch_id}\u002Fdatabases\u002F{database_id}` |\n\nAll IDs: 1-63 characters, start with lowercase letter, lowercase letters\u002Fnumbers\u002Fhyphens only (RFC 1123).\n\n## CLI Discovery -- ALWAYS Do This First\n\n> **Note:** \"Lakebase\" is the product name; the CLI command group is `postgres`. All commands use `databricks postgres ...`.\n\n**Do NOT guess command syntax.** Discover available commands dynamically:\n\n```bash\ndatabricks postgres -h                    # List all subcommands\ndatabricks postgres \u003Csubcommand> -h       # Flags, args, JSON fields\n```\n\n## Create a Project\n\n> **First decide: reuse or create.** When building or attaching to an app, ask the user whether to reuse an existing project\u002Fbranch\u002Fdatabase — list them with `databricks postgres list-projects` (then `list-branches` \u002F `list-databases`), let the user pick, and confirm which schema the app will own — or create a new project. Only skip listing and create directly when the user explicitly asked for a brand-new project.\n\n```bash\ndatabricks postgres create-project \u003CPROJECT_ID> \\\n  --json '{\"spec\": {\"display_name\": \"\u003CDISPLAY_NAME>\"}}' \\\n  --profile \u003CPROFILE>\n```\n\nAuto-creates: `production` branch + `primary` read-write endpoint (1 CU min\u002Fmax, scale-to-zero). Long-running operation; CLI waits by default. Use `--no-wait` to return immediately.\n\nAfter creation, verify:\n\n```bash\ndatabricks postgres list-branches projects\u002F\u003CPROJECT_ID> --profile \u003CPROFILE>\ndatabricks postgres list-endpoints projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\ndatabricks postgres list-databases projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\n```\n\n**Extract connection values from JSON output:**\n\n| Value | JSON path | Used for |\n|-------|-----------|----------|\n| Endpoint host | `status.hosts.host` | `PGHOST`, `lakebase.postgres.host` |\n| Endpoint resource path | `name` | `LAKEBASE_ENDPOINT`, `lakebase.postgres.endpointPath` |\n| Database resource path | `name` | `lakebase.postgres.database` |\n| PostgreSQL database name | `status.postgres_database` | `PGDATABASE`, `lakebase.postgres.databaseName` |\n\n### Updating a Project\n\n```bash\ndatabricks postgres update-project projects\u002F\u003CPROJECT_ID> spec.display_name \\\n  --json '{\"spec\": {\"display_name\": \"My Updated Application\"}}' \\\n  --profile \u003CPROFILE>\n```\n\n### Deleting a Project\n\n**WARNING:** Permanent -- deletes all branches, computes, databases, roles, and data. **Do not delete without explicit user permission.**\n\n```bash\ndatabricks postgres delete-project projects\u002F\u003CPROJECT_ID> --profile \u003CPROFILE>\n```\n\n## Autoscaling\n\nEndpoints use **compute units (CU)** (~2 GB RAM per CU). Range: 0.5--32 CU (dynamic), 36--112 CU (fixed). Scale-to-zero enabled by default (5 min timeout).\n\nSee [computes-and-scaling.md](references\u002Fcomputes-and-scaling.md) for sizing tables, endpoint CRUD, and configuration details.\n\n## Branches\n\nBranches are copy-on-write snapshots. Use for testing schema migrations, trying queries, or previewing data changes without affecting production.\n\n```bash\ndatabricks postgres create-branch projects\u002F\u003CPROJECT_ID> \u003CBRANCH_ID> \\\n  --json '{\"spec\": {\"source_branch\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CSOURCE>\", \"no_expiry\": true}}' \\\n  --profile \u003CPROFILE>\n```\n\nBranches require an expiration policy: `\"no_expiry\": true` for permanent, or `\"ttl\": \"\u003Cseconds>s\"` (max 30 days).\n\n**Limits:** 10 unarchived branches per project. 8 TB logical data per branch. 1,000 projects per workspace.\n\n| Use Case | TTL |\n|----------|-----|\n| CI\u002FCD environments | 2--4 hours (`\"ttl\": \"14400s\"`) |\n| Demos | 24--48 hours (`\"ttl\": \"172800s\"`) |\n| Feature development | 1--7 days (`\"ttl\": \"604800s\"`) |\n| Long-term testing | Up to 30 days (`\"ttl\": \"2592000s\"`) |\n\n**Point-in-time branching:** Create from a past state (within restore window) for recovery. Run `databricks postgres create-branch -h` for time specification fields.\n\n**Reset:** Replaces branch data with latest from parent. Local changes are lost. Root branches and branches with children cannot be reset.\n\n```bash\ndatabricks postgres reset-branch projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\n```\n\n**Delete:** Protected branches must be unprotected first (`update-branch` to set `spec.is_protected` to `false`). Cannot delete branches with children. **Never delete the `production` branch.**\n\n## What's Next\n\n### Build a Databricks App\n\nAfter creating a project, scaffold a connected Databricks App:\n\n```bash\n# 1. Get branch name\ndatabricks postgres list-branches projects\u002F\u003CPROJECT_ID> --profile \u003CPROFILE>\n\n# 2. Get database name\ndatabricks postgres list-databases projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\n\n# 3. Scaffold with lakebase feature\ndatabricks apps init --name \u003CAPP_NAME> --features lakebase \\\n  --set \"lakebase.postgres.branch=\u003CBRANCH_NAME>\" \\\n  --set \"lakebase.postgres.database=\u003CDATABASE_NAME>\" \\\n  --run none --profile \u003CPROFILE>\n```\n\nFor the full app workflow, use the **`databricks-apps`** skill.\n\n### Attach Lakebase to an existing app\n\n`apps init --features lakebase` (above) wires the database at scaffold time. To\nattach a project to an **existing** app, update its resources.\n\n**Use the `postgres` resource key** — its fields are `branch` + `database`\n(full resource paths from the table above). The legacy `database` key\n(`instance_name` + `database_name`) is deprecated; using it fails with\n`Database instance \u003Cname> does not exist`. Get the exact paths from\n`list-branches` \u002F `list-databases` (the DB name is often hyphenated, e.g.\n`databricks-postgres`).\n\nUpdate the app's resources with **`databricks apps create-update`** — the method to use for any app (the older `databricks apps update` is legacy and can't change resources for an app in a space). `update_mask=resources` replaces the whole `resources` array, so read the app's current resources and **merge** the new one in (or you'll detach the rest). Pass everything in `--json`; only `APP_NAME` is positional:\n\n```bash\ndatabricks apps create-update \u003CAPP_NAME> --json @update.json --profile \u003CPROFILE>   # waits for completion; --no-wait to return early\n```\n\n```json\n{\n  \"update_mask\": \"resources\",\n  \"app\": {\n    \"resources\": [\n      {\n        \"name\": \"postgres\",\n        \"postgres\": {\n          \"branch\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\",\n          \"database\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fdatabases\u002F\u003CDATABASE_ID>\",\n          \"permission\": \"CAN_CONNECT_AND_CREATE\"\n        }\n      }\n    ]\n  }\n}\n```\n\n**Confirm the branch\u002Fdatabase with the user — don't default to `production` silently.** The app's service principal must be able to create and **own** the schema(s) it uses there, so avoid a branch\u002Fdatabase where those schema names are already owned by a user (the SP will hit `permission denied … 42501`) — a fresh\u002Fdedicated branch, or a new app-owned schema, is cleanest. See **Schema Permissions for Deployed Apps** below for the full ownership model.\n\n### Schema Permissions for Deployed Apps\n\nThe app's Service Principal has `CAN_CONNECT_AND_CREATE` -- it can create new objects but **cannot access existing schemas**. The SP must create the schema to become its owner.\n\n**ALWAYS deploy the app before running it locally.** This is the #1 source of Lakebase permission errors.\n\n**Correct workflow:**\n1. **Deploy first**: `databricks apps deploy \u003CAPP_NAME> --profile \u003CPROFILE>`\n2. **Grant local access** *(if needed)*: assign `databricks_superuser` via UI (project creators already have access)\n3. **Develop locally**: your credentials get DML access to SP-owned schemas\n\n**If you already ran locally first** and hit `permission denied`: the schema is owned by your credentials, not the SP. **Do NOT drop the schema without asking the user** -- dropping it deletes all data.\n\nAsk the user to choose:\n- **(A) Drop and redeploy:** `databricks psql --project \u003CPROJECT_ID> -- -c \"DROP SCHEMA IF EXISTS \u003CSCHEMA_NAME> CASCADE;\"`, then `databricks apps deploy` from the app directory. The SP recreates the schema on startup.\n- **(B) Export first, then drop and redeploy:** export via `pg_dump` (use connection details from `databricks postgres get-endpoint`; see **Other Workflows** below for HOST and TOKEN) or copy tables to a temp schema using `databricks psql --project \u003CPROJECT_ID>`, then do option A. After the SP recreates the schema on redeploy, restore with `pg_restore` or re-INSERT from the temp schema.\n\n### Other Workflows\n\n```bash\n# Connect a Postgres client -- get connection string\ndatabricks postgres get-endpoint projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID> --profile \u003CPROFILE>\n\n# Manage roles\ndatabricks postgres create-role -h\n\n# Add a read replica\ndatabricks postgres create-endpoint projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> \u003CENDPOINT_ID> \\\n  --json '{\"spec\": {\"type\": \"ENDPOINT_TYPE_READ_ONLY\"}}' --profile \u003CPROFILE>\n```\n\n**Run SQL against Lakebase** (GRANT, CREATE INDEX, etc.):\n```bash\n# 1. Get endpoint host\ndatabricks postgres get-endpoint projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID> --profile \u003CPROFILE>\n\n# 2. Generate OAuth token\ndatabricks postgres generate-database-credential \\\n  projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID> \\\n  --profile \u003CPROFILE>\n\n# 3. Connect (use token from step 2 as password, host from step 1)\nPGPASSWORD='\u003CTOKEN>' psql \"host=\u003CHOST> user=\u003CUSERNAME> dbname=databricks_postgres sslmode=require\"\n```\n\n> **Note:** `generate-database-credential` requires the **endpoint** resource path (`...\u002Fendpoints\u002F\u003CENDPOINT_ID>`), not a database or branch path.\n\n**Scriptable version** (single copy-paste, useful for agents):\n```bash\nEP=projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID>\n# get-endpoint JSON shape: {\"status\": {\"hosts\": {\"host\": \"\u003CHOSTNAME>\"}, ...}, ...}\nHOST=$(databricks postgres get-endpoint $EP --profile \u003CPROFILE> -o json \\\n  | python3 -c \"import json,sys; print(json.load(sys.stdin)['status']['hosts']['host'])\")\nTOKEN=$(databricks postgres generate-database-credential $EP --profile \u003CPROFILE> -o json \\\n  | python3 -c \"import json,sys; print(json.load(sys.stdin)['token'])\")\nPGPASSWORD=\"$TOKEN\" psql \"host=$HOST user=\u003CUSERNAME> dbname=databricks_postgres sslmode=require\"\n```\n\n**Grant app SP access to synced tables** (run as project owner after sync is ONLINE and app is deployed):\n```sql\nGRANT USAGE ON SCHEMA public TO \"\u003CSP_CLIENT_ID>\";\nGRANT SELECT ON ALL TABLES IN SCHEMA public TO \"\u003CSP_CLIENT_ID>\";\nALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO \"\u003CSP_CLIENT_ID>\";\n```\nFor least-privilege, consider syncing into a dedicated schema instead of `public` so the grant is scoped to synced data only.\n\nGet SP client ID: `databricks apps get \u003CAPP_NAME> --profile \u003CPROFILE>` → `service_principal_client_id` field.\n\n**Data API:** PostgREST-compatible HTTP CRUD on Postgres tables. See [connectivity.md](references\u002Fconnectivity.md).\n**Synced Tables:** Sync Delta tables into Lakebase. See [synced-tables.md](references\u002Fsynced-tables.md).\n\n## PostgreSQL Extensions\n\nLakebase supports PostgreSQL extensions (e.g., `pgvector` for vector embeddings, `pg_stat_statements` for query statistics). See the [full list of supported extensions](https:\u002F\u002Fdocs.databricks.com\u002Faws\u002Fen\u002Foltp\u002Fprojects\u002Fextensions).\n\n```sql\n-- List available extensions\nSELECT * FROM pg_available_extensions ORDER BY name;\n\n-- Install an extension\nCREATE EXTENSION IF NOT EXISTS \u003Cextension_name>;\n```\n\nFor vector embeddings with pgvector, see [pgvector.md](references\u002Fpgvector.md).\n\n## Troubleshooting\n\n| Error | Solution |\n|-------|----------|\n| `cannot configure default credentials` | Use `--profile` flag or authenticate first |\n| `PERMISSION_DENIED` | Check workspace permissions |\n| `permission denied for schema` | Schema owned by another role. If app not yet deployed: deploy first so the SP creates and owns the schema. If deployed but hitting this error (dev ran locally first): warn user about data loss, offer to export first (`pg_dump` with connection details from `databricks postgres get-endpoint`, or temp schema copy via `databricks psql`), then `DROP SCHEMA IF EXISTS \u003CSCHEMA_NAME> CASCADE` + redeploy. |\n| Protected branch won't delete | `update-branch` to set `spec.is_protected` to `false` first |\n| Long-running operation timeout | Use `--no-wait` and poll with `get-operation` |\n| Token expired during long query | Tokens expire after 1 hour; implement refresh (see [connectivity.md](references\u002Fconnectivity.md)) |\n| Connection refused after scale-to-zero | Compute wakes in ~100ms; implement retry logic |\n| Branch deletion blocked | Delete child branches first |\n| Autoscaling range too wide | Max - Min cannot exceed 16 CU |\n| SSL required error | Always use `sslmode=require` |\n| Update mask required | All `update-*` operations require specifying fields (see `-h`) |\n| Connection closed after idle | 24h idle timeout; max lifetime beyond 24h not guaranteed. Implement retry. |\n| DNS resolution fails (macOS) | Python `socket.getaddrinfo()` fails with long hostnames. Use `dig` to resolve IP, pass via `hostaddr` param alongside `host` (for TLS SNI). See [connectivity.md](references\u002Fconnectivity.md). |\n| `storage_catalog` pipeline failure | `new_pipeline_spec.storage_catalog` must be a regular UC catalog, not the Lakebase catalog. DLT cannot write event logs to Postgres-backed schemas. |\n| Synced table CDF error | Enable CDF on source: `ALTER TABLE ... SET TBLPROPERTIES (delta.enableChangeDataFeed = true)`. Required for Triggered\u002FContinuous modes. |\n| Sync permissions error | Ensure `USE CATALOG`\u002F`USE SCHEMA` on source table and `CREATE TABLE` in storage catalog |\n| Synced table null bytes | Null bytes (0x00) in STRING\u002FARRAY\u002FMAP\u002FSTRUCT columns cause sync failures. Sanitize source data: `REPLACE(col, CAST(CHAR(0) AS STRING), '')` |\n| Synced table data modified | Only read queries, indexes, and DROP TABLE allowed on synced tables in Postgres. Modifications break sync pipeline. |\n| DABs `synced_database_tables` | Deprecated — maps to a legacy API and fails on current Lakebase. Use `databricks postgres create-synced-table` CLI instead. DAB support via `postgres_synced_tables` is not yet available. |\n\n## SDK and Version Requirements\n\n| Component | Minimum Version |\n|-----------|----------------|\n| Databricks CLI | >= v0.294.0 |\n| Databricks SDK for Python | >= 0.81.0 (for `w.postgres` module) |\n| psycopg | 2.x or 3.x (3.x recommended for async\u002Fpooling) |\n| Postgres | 16 or 17 (default: PG 17) |\n",{"data":34,"body":39},{"name":4,"description":6,"compatibility":35,"metadata":36,"parent":38},"Requires databricks CLI (>= v0.294.0)",{"version":37},"0.1.0","databricks-core",{"type":40,"children":41},"root",[42,51,71,76,161,166,348,358,365,458,466,550,556,568,679,686,772,777,783,810,820,900,906,942,1043,1070,1075,1295,1303,1454,1460,1559,1565,1580,1643,1649,1661,1672,1678,1683,1793,1814,1824,1927,1945,1955,2038,2084,2090,2096,2101,2423,2439,2445,2463,2545,2608,2682,3009,3048,3053,3072,3082,3090,3146,3171,3176,3253,3258,3538,3548,3843,3877,3887,4210,4220,4253,4266,4287,4315,4321,4351,4397,4407,4413,4893,4899,4980],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"lakebase-postgres-autoscaling",[48],{"type":49,"value":50},"text","Lakebase Postgres Autoscaling",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,61,63,69],{"type":43,"tag":56,"props":57,"children":58},"strong",{},[59],{"type":49,"value":60},"FIRST",{"type":49,"value":62},": Use the parent ",{"type":43,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":49,"value":38},{"type":49,"value":70}," skill for CLI basics, authentication, and profile selection.",{"type":43,"tag":52,"props":72,"children":73},{},[74],{"type":49,"value":75},"Lakebase is Databricks' serverless Postgres-compatible database, available on both AWS and Azure (GA). It provides fully managed OLTP storage with autoscaling, branching, and scale-to-zero.",{"type":43,"tag":77,"props":78,"children":79},"blockquote",{},[80],{"type":43,"tag":52,"props":81,"children":82},{},[83,88,90,96,98,104,106,112,114,120,122,127,129,135,137,143,145,151,153,159],{"type":43,"tag":56,"props":84,"children":85},{},[86],{"type":49,"value":87},"Provisioned Lakebase no longer exists — never create it.",{"type":49,"value":89}," The old Provisioned tier (static, non-scalable Postgres; ",{"type":43,"tag":64,"props":91,"children":93},{"className":92},[],[94],{"type":49,"value":95},"databricks database",{"type":49,"value":97}," CLI \u002F ",{"type":43,"tag":64,"props":99,"children":101},{"className":100},[],[102],{"type":49,"value":103},"w.database",{"type":49,"value":105}," SDK) is being migrated to Autoscaling over summer 2026, with no customer action required. Lakebase today is Autoscaling-only (",{"type":43,"tag":64,"props":107,"children":109},{"className":108},[],[110],{"type":49,"value":111},"databricks postgres",{"type":49,"value":113}," \u002F ",{"type":43,"tag":64,"props":115,"children":117},{"className":116},[],[118],{"type":49,"value":119},"w.postgres",{"type":49,"value":121},"). Do not attempt to create Provisioned instances; if a user asks for one, tell them Provisioned instances don't exist anymore and point them to Autoscaling. Treat the legacy ",{"type":43,"tag":64,"props":123,"children":125},{"className":124},[],[126],{"type":49,"value":14},{"type":49,"value":128}," resource key in app configs as retired — migrate to the ",{"type":43,"tag":64,"props":130,"children":132},{"className":131},[],[133],{"type":49,"value":134},"postgres",{"type":49,"value":136}," resource key. For the legacy DAB ",{"type":43,"tag":64,"props":138,"children":140},{"className":139},[],[141],{"type":49,"value":142},"synced_database_tables",{"type":49,"value":144}," resource, use the ",{"type":43,"tag":64,"props":146,"children":148},{"className":147},[],[149],{"type":49,"value":150},"databricks postgres create-synced-table",{"type":49,"value":152}," CLI flow instead (see the Common Issues row and ",{"type":43,"tag":64,"props":154,"children":156},{"className":155},[],[157],{"type":49,"value":158},"references\u002Fsynced-tables.md",{"type":49,"value":160},").",{"type":43,"tag":52,"props":162,"children":163},{},[164],{"type":49,"value":165},"For context when reading older configs or docs, here is how the retired Provisioned tier maps to Autoscaling:",{"type":43,"tag":167,"props":168,"children":169},"table",{},[170,194],{"type":43,"tag":171,"props":172,"children":173},"thead",{},[174],{"type":43,"tag":175,"props":176,"children":177},"tr",{},[178,184,189],{"type":43,"tag":179,"props":180,"children":181},"th",{},[182],{"type":49,"value":183},"Aspect",{"type":43,"tag":179,"props":185,"children":186},{},[187],{"type":49,"value":188},"Provisioned (retired)",{"type":43,"tag":179,"props":190,"children":191},{},[192],{"type":49,"value":193},"Autoscaling (current)",{"type":43,"tag":195,"props":196,"children":197},"tbody",{},[198,223,241,259,277,294,312,330],{"type":43,"tag":175,"props":199,"children":200},{},[201,207,215],{"type":43,"tag":202,"props":203,"children":204},"td",{},[205],{"type":49,"value":206},"CLI group",{"type":43,"tag":202,"props":208,"children":209},{},[210],{"type":43,"tag":64,"props":211,"children":213},{"className":212},[],[214],{"type":49,"value":95},{"type":43,"tag":202,"props":216,"children":217},{},[218],{"type":43,"tag":64,"props":219,"children":221},{"className":220},[],[222],{"type":49,"value":111},{"type":43,"tag":175,"props":224,"children":225},{},[226,231,236],{"type":43,"tag":202,"props":227,"children":228},{},[229],{"type":49,"value":230},"Top-level resource",{"type":43,"tag":202,"props":232,"children":233},{},[234],{"type":49,"value":235},"Instance",{"type":43,"tag":202,"props":237,"children":238},{},[239],{"type":49,"value":240},"Project",{"type":43,"tag":175,"props":242,"children":243},{},[244,249,254],{"type":43,"tag":202,"props":245,"children":246},{},[247],{"type":49,"value":248},"Capacity",{"type":43,"tag":202,"props":250,"children":251},{},[252],{"type":49,"value":253},"CU_1–CU_8 (16 GB\u002FCU)",{"type":43,"tag":202,"props":255,"children":256},{},[257],{"type":49,"value":258},"0.5–112 CU (2 GB\u002FCU)",{"type":43,"tag":175,"props":260,"children":261},{},[262,267,272],{"type":43,"tag":202,"props":263,"children":264},{},[265],{"type":49,"value":266},"Branching",{"type":43,"tag":202,"props":268,"children":269},{},[270],{"type":49,"value":271},"Not supported",{"type":43,"tag":202,"props":273,"children":274},{},[275],{"type":49,"value":276},"Full support",{"type":43,"tag":175,"props":278,"children":279},{},[280,285,289],{"type":43,"tag":202,"props":281,"children":282},{},[283],{"type":49,"value":284},"Scale-to-zero",{"type":43,"tag":202,"props":286,"children":287},{},[288],{"type":49,"value":271},{"type":43,"tag":202,"props":290,"children":291},{},[292],{"type":49,"value":293},"Configurable",{"type":43,"tag":175,"props":295,"children":296},{},[297,302,307],{"type":43,"tag":202,"props":298,"children":299},{},[300],{"type":49,"value":301},"HA",{"type":43,"tag":202,"props":303,"children":304},{},[305],{"type":49,"value":306},"Readable secondaries",{"type":43,"tag":202,"props":308,"children":309},{},[310],{"type":49,"value":311},"1–3 secondaries + read replicas",{"type":43,"tag":175,"props":313,"children":314},{},[315,320,325],{"type":43,"tag":202,"props":316,"children":317},{},[318],{"type":49,"value":319},"Data API",{"type":43,"tag":202,"props":321,"children":322},{},[323],{"type":49,"value":324},"Not available",{"type":43,"tag":202,"props":326,"children":327},{},[328],{"type":49,"value":329},"PostgREST HTTP API",{"type":43,"tag":175,"props":331,"children":332},{},[333,338,343],{"type":43,"tag":202,"props":334,"children":335},{},[336],{"type":49,"value":337},"Cloud",{"type":43,"tag":202,"props":339,"children":340},{},[341],{"type":49,"value":342},"AWS only",{"type":43,"tag":202,"props":344,"children":345},{},[346],{"type":49,"value":347},"AWS and Azure",{"type":43,"tag":52,"props":349,"children":350},{},[351,356],{"type":43,"tag":56,"props":352,"children":353},{},[354],{"type":49,"value":355},"Compliance:",{"type":49,"value":357}," Supports HIPAA, C5, TISAX, or None.",{"type":43,"tag":359,"props":360,"children":362},"h2",{"id":361},"capabilities",[363],{"type":49,"value":364},"Capabilities",{"type":43,"tag":366,"props":367,"children":368},"ul",{},[369,380,389,399,409,419,428,438,448],{"type":43,"tag":370,"props":371,"children":372},"li",{},[373,378],{"type":43,"tag":56,"props":374,"children":375},{},[376],{"type":49,"value":377},"Project lifecycle",{"type":49,"value":379}," -- create, update, delete Lakebase Postgres Autoscaling projects",{"type":43,"tag":370,"props":381,"children":382},{},[383,387],{"type":43,"tag":56,"props":384,"children":385},{},[386],{"type":49,"value":266},{"type":49,"value":388}," -- copy-on-write branches with TTL, point-in-time recovery, and reset",{"type":43,"tag":370,"props":390,"children":391},{},[392,397],{"type":43,"tag":56,"props":393,"children":394},{},[395],{"type":49,"value":396},"Compute scaling",{"type":49,"value":398}," -- autoscale 0.5--32 CU, fixed 36--112 CU, scale-to-zero",{"type":43,"tag":370,"props":400,"children":401},{},[402,407],{"type":43,"tag":56,"props":403,"children":404},{},[405],{"type":49,"value":406},"High availability",{"type":49,"value":408}," -- 1 primary + 1--3 secondaries, automatic failover",{"type":43,"tag":370,"props":410,"children":411},{},[412,417],{"type":43,"tag":56,"props":413,"children":414},{},[415],{"type":49,"value":416},"PostgreSQL connectivity",{"type":49,"value":418}," -- OAuth token refresh, connection pooling, SSL",{"type":43,"tag":370,"props":420,"children":421},{},[422,426],{"type":43,"tag":56,"props":423,"children":424},{},[425],{"type":49,"value":319},{"type":49,"value":427}," -- PostgREST-compatible HTTP CRUD (Autoscaling only)",{"type":43,"tag":370,"props":429,"children":430},{},[431,436],{"type":43,"tag":56,"props":432,"children":433},{},[434],{"type":49,"value":435},"Lakebase synced tables",{"type":49,"value":437}," -- sync Unity Catalog Delta tables into Postgres (previously known as Reverse ETL)",{"type":43,"tag":370,"props":439,"children":440},{},[441,446],{"type":43,"tag":56,"props":442,"children":443},{},[444],{"type":49,"value":445},"Databricks App integration",{"type":49,"value":447}," -- scaffold apps with Lakebase feature, deploy-first workflow",{"type":43,"tag":370,"props":449,"children":450},{},[451,456],{"type":43,"tag":56,"props":452,"children":453},{},[454],{"type":49,"value":455},"Cloud support",{"type":49,"value":457}," -- AWS and Azure (GA)",{"type":43,"tag":52,"props":459,"children":460},{},[461],{"type":43,"tag":56,"props":462,"children":463},{},[464],{"type":49,"value":465},"Reference docs:",{"type":43,"tag":366,"props":467,"children":468},{},[469,481,492,502,520,531],{"type":43,"tag":370,"props":470,"children":471},{},[472,479],{"type":43,"tag":473,"props":474,"children":476},"a",{"href":475},"references\u002Fcomputes-and-scaling.md",[477],{"type":49,"value":478},"computes-and-scaling.md",{"type":49,"value":480}," — Sizing, endpoint management, scale-to-zero, HA",{"type":43,"tag":370,"props":482,"children":483},{},[484,490],{"type":43,"tag":473,"props":485,"children":487},{"href":486},"references\u002Fconnectivity.md",[488],{"type":49,"value":489},"connectivity.md",{"type":49,"value":491}," — Connection patterns, token refresh, Data API",{"type":43,"tag":370,"props":493,"children":494},{},[495,500],{"type":43,"tag":473,"props":496,"children":497},{"href":158},[498],{"type":49,"value":499},"synced-tables.md",{"type":49,"value":501}," — Lakebase synced tables, data type mapping, capacity planning",{"type":43,"tag":370,"props":503,"children":504},{},[505,511,513,518],{"type":43,"tag":473,"props":506,"children":508},{"href":507},"references\u002Flakehouse-sync.md",[509],{"type":49,"value":510},"lakehouse-sync.md",{"type":49,"value":512}," — CDC from Lakebase Postgres to Unity Catalog Delta tables (",{"type":43,"tag":56,"props":514,"children":515},{},[516],{"type":49,"value":517},"UI-only",{"type":49,"value":519}," — cannot be configured via CLI or API)",{"type":43,"tag":370,"props":521,"children":522},{},[523,529],{"type":43,"tag":473,"props":524,"children":526},{"href":525},"references\u002Fpgvector.md",[527],{"type":49,"value":528},"pgvector.md",{"type":49,"value":530}," — Vector similarity search with pgvector extension",{"type":43,"tag":370,"props":532,"children":533},{},[534,540,542,548],{"type":43,"tag":473,"props":535,"children":537},{"href":536},"references\u002Foff-platform.md",[538],{"type":49,"value":539},"off-platform.md",{"type":49,"value":541}," — Off-platform Lakebase (NOT Databricks Apps): external Node.js apps connecting via ",{"type":43,"tag":64,"props":543,"children":545},{"className":544},[],[546],{"type":49,"value":547},"@databricks\u002Flakebase",{"type":49,"value":549},", env management, token refresh, Drizzle ORM",{"type":43,"tag":359,"props":551,"children":553},{"id":552},"resource-hierarchy",[554],{"type":49,"value":555},"Resource Hierarchy",{"type":43,"tag":557,"props":558,"children":562},"pre",{"className":559,"code":561,"language":49},[560],"language-text","Project (top-level container)\n  └── Branch (isolated database environment, copy-on-write)\n        ├── Endpoint (read-write or read-only)\n        ├── Database (standard Postgres DB)\n        └── Role (Postgres role)\n",[563],{"type":43,"tag":64,"props":564,"children":566},{"__ignoreMap":565},"",[567],{"type":49,"value":561},{"type":43,"tag":366,"props":569,"children":570},{},[571,596,622,653,669],{"type":43,"tag":370,"props":572,"children":573},{},[574,578,580,586,588,594],{"type":43,"tag":56,"props":575,"children":576},{},[577],{"type":49,"value":240},{"type":49,"value":579},": Top-level container. Creating one auto-provisions a ",{"type":43,"tag":64,"props":581,"children":583},{"className":582},[],[584],{"type":49,"value":585},"production",{"type":49,"value":587}," branch and a ",{"type":43,"tag":64,"props":589,"children":591},{"className":590},[],[592],{"type":49,"value":593},"primary",{"type":49,"value":595}," read-write endpoint.",{"type":43,"tag":370,"props":597,"children":598},{},[599,604,606,612,614,620],{"type":43,"tag":56,"props":600,"children":601},{},[602],{"type":49,"value":603},"Branch",{"type":49,"value":605},": Isolated database environment sharing storage with parent (copy-on-write). States: ",{"type":43,"tag":64,"props":607,"children":609},{"className":608},[],[610],{"type":49,"value":611},"READY",{"type":49,"value":613},", ",{"type":43,"tag":64,"props":615,"children":617},{"className":616},[],[618],{"type":49,"value":619},"ARCHIVED",{"type":49,"value":621},".",{"type":43,"tag":370,"props":623,"children":624},{},[625,630,632,637,639,645,646,652],{"type":43,"tag":56,"props":626,"children":627},{},[628],{"type":49,"value":629},"Endpoint",{"type":49,"value":631}," (called ",{"type":43,"tag":56,"props":633,"children":634},{},[635],{"type":49,"value":636},"Compute",{"type":49,"value":638}," in UI): Compute resource powering a branch. Types: ",{"type":43,"tag":64,"props":640,"children":642},{"className":641},[],[643],{"type":49,"value":644},"ENDPOINT_TYPE_READ_WRITE",{"type":49,"value":613},{"type":43,"tag":64,"props":647,"children":649},{"className":648},[],[650],{"type":49,"value":651},"ENDPOINT_TYPE_READ_ONLY",{"type":49,"value":621},{"type":43,"tag":370,"props":654,"children":655},{},[656,660,662,668],{"type":43,"tag":56,"props":657,"children":658},{},[659],{"type":49,"value":13},{"type":49,"value":661},": Standard Postgres database within a branch. Default: ",{"type":43,"tag":64,"props":663,"children":665},{"className":664},[],[666],{"type":49,"value":667},"databricks_postgres",{"type":49,"value":621},{"type":43,"tag":370,"props":670,"children":671},{},[672,677],{"type":43,"tag":56,"props":673,"children":674},{},[675],{"type":49,"value":676},"Role",{"type":49,"value":678},": Postgres role within a branch.",{"type":43,"tag":680,"props":681,"children":683},"h3",{"id":682},"resource-name-formats",[684],{"type":49,"value":685},"Resource Name Formats",{"type":43,"tag":167,"props":687,"children":688},{},[689,705],{"type":43,"tag":171,"props":690,"children":691},{},[692],{"type":43,"tag":175,"props":693,"children":694},{},[695,700],{"type":43,"tag":179,"props":696,"children":697},{},[698],{"type":49,"value":699},"Resource",{"type":43,"tag":179,"props":701,"children":702},{},[703],{"type":49,"value":704},"Format",{"type":43,"tag":195,"props":706,"children":707},{},[708,724,740,756],{"type":43,"tag":175,"props":709,"children":710},{},[711,715],{"type":43,"tag":202,"props":712,"children":713},{},[714],{"type":49,"value":240},{"type":43,"tag":202,"props":716,"children":717},{},[718],{"type":43,"tag":64,"props":719,"children":721},{"className":720},[],[722],{"type":49,"value":723},"projects\u002F{project_id}",{"type":43,"tag":175,"props":725,"children":726},{},[727,731],{"type":43,"tag":202,"props":728,"children":729},{},[730],{"type":49,"value":603},{"type":43,"tag":202,"props":732,"children":733},{},[734],{"type":43,"tag":64,"props":735,"children":737},{"className":736},[],[738],{"type":49,"value":739},"projects\u002F{project_id}\u002Fbranches\u002F{branch_id}",{"type":43,"tag":175,"props":741,"children":742},{},[743,747],{"type":43,"tag":202,"props":744,"children":745},{},[746],{"type":49,"value":629},{"type":43,"tag":202,"props":748,"children":749},{},[750],{"type":43,"tag":64,"props":751,"children":753},{"className":752},[],[754],{"type":49,"value":755},"projects\u002F{project_id}\u002Fbranches\u002F{branch_id}\u002Fendpoints\u002F{endpoint_id}",{"type":43,"tag":175,"props":757,"children":758},{},[759,763],{"type":43,"tag":202,"props":760,"children":761},{},[762],{"type":49,"value":13},{"type":43,"tag":202,"props":764,"children":765},{},[766],{"type":43,"tag":64,"props":767,"children":769},{"className":768},[],[770],{"type":49,"value":771},"projects\u002F{project_id}\u002Fbranches\u002F{branch_id}\u002Fdatabases\u002F{database_id}",{"type":43,"tag":52,"props":773,"children":774},{},[775],{"type":49,"value":776},"All IDs: 1-63 characters, start with lowercase letter, lowercase letters\u002Fnumbers\u002Fhyphens only (RFC 1123).",{"type":43,"tag":359,"props":778,"children":780},{"id":779},"cli-discovery-always-do-this-first",[781],{"type":49,"value":782},"CLI Discovery -- ALWAYS Do This First",{"type":43,"tag":77,"props":784,"children":785},{},[786],{"type":43,"tag":52,"props":787,"children":788},{},[789,794,796,801,803,809],{"type":43,"tag":56,"props":790,"children":791},{},[792],{"type":49,"value":793},"Note:",{"type":49,"value":795}," \"Lakebase\" is the product name; the CLI command group is ",{"type":43,"tag":64,"props":797,"children":799},{"className":798},[],[800],{"type":49,"value":134},{"type":49,"value":802},". All commands use ",{"type":43,"tag":64,"props":804,"children":806},{"className":805},[],[807],{"type":49,"value":808},"databricks postgres ...",{"type":49,"value":621},{"type":43,"tag":52,"props":811,"children":812},{},[813,818],{"type":43,"tag":56,"props":814,"children":815},{},[816],{"type":49,"value":817},"Do NOT guess command syntax.",{"type":49,"value":819}," Discover available commands dynamically:",{"type":43,"tag":557,"props":821,"children":825},{"className":822,"code":823,"language":824,"meta":565,"style":565},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","databricks postgres -h                    # List all subcommands\ndatabricks postgres \u003Csubcommand> -h       # Flags, args, JSON fields\n","bash",[826],{"type":43,"tag":64,"props":827,"children":828},{"__ignoreMap":565},[829,857],{"type":43,"tag":830,"props":831,"children":834},"span",{"class":832,"line":833},"line",1,[835,840,846,851],{"type":43,"tag":830,"props":836,"children":838},{"style":837},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[839],{"type":49,"value":8},{"type":43,"tag":830,"props":841,"children":843},{"style":842},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[844],{"type":49,"value":845}," postgres",{"type":43,"tag":830,"props":847,"children":848},{"style":842},[849],{"type":49,"value":850}," -h",{"type":43,"tag":830,"props":852,"children":854},{"style":853},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[855],{"type":49,"value":856},"                    # List all subcommands\n",{"type":43,"tag":830,"props":858,"children":860},{"class":832,"line":859},2,[861,865,869,875,880,886,891,895],{"type":43,"tag":830,"props":862,"children":863},{"style":837},[864],{"type":49,"value":8},{"type":43,"tag":830,"props":866,"children":867},{"style":842},[868],{"type":49,"value":845},{"type":43,"tag":830,"props":870,"children":872},{"style":871},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[873],{"type":49,"value":874}," \u003C",{"type":43,"tag":830,"props":876,"children":877},{"style":842},[878],{"type":49,"value":879},"subcomman",{"type":43,"tag":830,"props":881,"children":883},{"style":882},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[884],{"type":49,"value":885},"d",{"type":43,"tag":830,"props":887,"children":888},{"style":871},[889],{"type":49,"value":890},">",{"type":43,"tag":830,"props":892,"children":893},{"style":842},[894],{"type":49,"value":850},{"type":43,"tag":830,"props":896,"children":897},{"style":853},[898],{"type":49,"value":899},"       # Flags, args, JSON fields\n",{"type":43,"tag":359,"props":901,"children":903},{"id":902},"create-a-project",[904],{"type":49,"value":905},"Create a Project",{"type":43,"tag":77,"props":907,"children":908},{},[909],{"type":43,"tag":52,"props":910,"children":911},{},[912,917,919,925,927,933,934,940],{"type":43,"tag":56,"props":913,"children":914},{},[915],{"type":49,"value":916},"First decide: reuse or create.",{"type":49,"value":918}," When building or attaching to an app, ask the user whether to reuse an existing project\u002Fbranch\u002Fdatabase — list them with ",{"type":43,"tag":64,"props":920,"children":922},{"className":921},[],[923],{"type":49,"value":924},"databricks postgres list-projects",{"type":49,"value":926}," (then ",{"type":43,"tag":64,"props":928,"children":930},{"className":929},[],[931],{"type":49,"value":932},"list-branches",{"type":49,"value":113},{"type":43,"tag":64,"props":935,"children":937},{"className":936},[],[938],{"type":49,"value":939},"list-databases",{"type":49,"value":941},"), let the user pick, and confirm which schema the app will own — or create a new project. Only skip listing and create directly when the user explicitly asked for a brand-new project.",{"type":43,"tag":557,"props":943,"children":945},{"className":822,"code":944,"language":824,"meta":565,"style":565},"databricks postgres create-project \u003CPROJECT_ID> \\\n  --json '{\"spec\": {\"display_name\": \"\u003CDISPLAY_NAME>\"}}' \\\n  --profile \u003CPROFILE>\n",[946],{"type":43,"tag":64,"props":947,"children":948},{"__ignoreMap":565},[949,988,1015],{"type":43,"tag":830,"props":950,"children":951},{"class":832,"line":833},[952,956,960,965,969,974,979,983],{"type":43,"tag":830,"props":953,"children":954},{"style":837},[955],{"type":49,"value":8},{"type":43,"tag":830,"props":957,"children":958},{"style":842},[959],{"type":49,"value":845},{"type":43,"tag":830,"props":961,"children":962},{"style":842},[963],{"type":49,"value":964}," create-project",{"type":43,"tag":830,"props":966,"children":967},{"style":871},[968],{"type":49,"value":874},{"type":43,"tag":830,"props":970,"children":971},{"style":842},[972],{"type":49,"value":973},"PROJECT_I",{"type":43,"tag":830,"props":975,"children":976},{"style":882},[977],{"type":49,"value":978},"D",{"type":43,"tag":830,"props":980,"children":981},{"style":871},[982],{"type":49,"value":890},{"type":43,"tag":830,"props":984,"children":985},{"style":882},[986],{"type":49,"value":987}," \\\n",{"type":43,"tag":830,"props":989,"children":990},{"class":832,"line":859},[991,996,1001,1006,1011],{"type":43,"tag":830,"props":992,"children":993},{"style":842},[994],{"type":49,"value":995},"  --json",{"type":43,"tag":830,"props":997,"children":998},{"style":871},[999],{"type":49,"value":1000}," '",{"type":43,"tag":830,"props":1002,"children":1003},{"style":842},[1004],{"type":49,"value":1005},"{\"spec\": {\"display_name\": \"\u003CDISPLAY_NAME>\"}}",{"type":43,"tag":830,"props":1007,"children":1008},{"style":871},[1009],{"type":49,"value":1010},"'",{"type":43,"tag":830,"props":1012,"children":1013},{"style":882},[1014],{"type":49,"value":987},{"type":43,"tag":830,"props":1016,"children":1018},{"class":832,"line":1017},3,[1019,1024,1028,1033,1038],{"type":43,"tag":830,"props":1020,"children":1021},{"style":842},[1022],{"type":49,"value":1023},"  --profile",{"type":43,"tag":830,"props":1025,"children":1026},{"style":871},[1027],{"type":49,"value":874},{"type":43,"tag":830,"props":1029,"children":1030},{"style":842},[1031],{"type":49,"value":1032},"PROFIL",{"type":43,"tag":830,"props":1034,"children":1035},{"style":882},[1036],{"type":49,"value":1037},"E",{"type":43,"tag":830,"props":1039,"children":1040},{"style":871},[1041],{"type":49,"value":1042},">\n",{"type":43,"tag":52,"props":1044,"children":1045},{},[1046,1048,1053,1055,1060,1062,1068],{"type":49,"value":1047},"Auto-creates: ",{"type":43,"tag":64,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":49,"value":585},{"type":49,"value":1054}," branch + ",{"type":43,"tag":64,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":49,"value":593},{"type":49,"value":1061}," read-write endpoint (1 CU min\u002Fmax, scale-to-zero). Long-running operation; CLI waits by default. Use ",{"type":43,"tag":64,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":49,"value":1067},"--no-wait",{"type":49,"value":1069}," to return immediately.",{"type":43,"tag":52,"props":1071,"children":1072},{},[1073],{"type":49,"value":1074},"After creation, verify:",{"type":43,"tag":557,"props":1076,"children":1078},{"className":822,"code":1077,"language":824,"meta":565,"style":565},"databricks postgres list-branches projects\u002F\u003CPROJECT_ID> --profile \u003CPROFILE>\ndatabricks postgres list-endpoints projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\ndatabricks postgres list-databases projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\n",[1079],{"type":43,"tag":64,"props":1080,"children":1081},{"__ignoreMap":565},[1082,1141,1219],{"type":43,"tag":830,"props":1083,"children":1084},{"class":832,"line":833},[1085,1089,1093,1098,1103,1108,1112,1116,1120,1125,1129,1133,1137],{"type":43,"tag":830,"props":1086,"children":1087},{"style":837},[1088],{"type":49,"value":8},{"type":43,"tag":830,"props":1090,"children":1091},{"style":842},[1092],{"type":49,"value":845},{"type":43,"tag":830,"props":1094,"children":1095},{"style":842},[1096],{"type":49,"value":1097}," list-branches",{"type":43,"tag":830,"props":1099,"children":1100},{"style":842},[1101],{"type":49,"value":1102}," projects\u002F",{"type":43,"tag":830,"props":1104,"children":1105},{"style":871},[1106],{"type":49,"value":1107},"\u003C",{"type":43,"tag":830,"props":1109,"children":1110},{"style":842},[1111],{"type":49,"value":973},{"type":43,"tag":830,"props":1113,"children":1114},{"style":882},[1115],{"type":49,"value":978},{"type":43,"tag":830,"props":1117,"children":1118},{"style":871},[1119],{"type":49,"value":890},{"type":43,"tag":830,"props":1121,"children":1122},{"style":842},[1123],{"type":49,"value":1124}," --profile",{"type":43,"tag":830,"props":1126,"children":1127},{"style":871},[1128],{"type":49,"value":874},{"type":43,"tag":830,"props":1130,"children":1131},{"style":842},[1132],{"type":49,"value":1032},{"type":43,"tag":830,"props":1134,"children":1135},{"style":882},[1136],{"type":49,"value":1037},{"type":43,"tag":830,"props":1138,"children":1139},{"style":871},[1140],{"type":49,"value":1042},{"type":43,"tag":830,"props":1142,"children":1143},{"class":832,"line":859},[1144,1148,1152,1157,1161,1165,1169,1173,1177,1182,1186,1191,1195,1199,1203,1207,1211,1215],{"type":43,"tag":830,"props":1145,"children":1146},{"style":837},[1147],{"type":49,"value":8},{"type":43,"tag":830,"props":1149,"children":1150},{"style":842},[1151],{"type":49,"value":845},{"type":43,"tag":830,"props":1153,"children":1154},{"style":842},[1155],{"type":49,"value":1156}," list-endpoints",{"type":43,"tag":830,"props":1158,"children":1159},{"style":842},[1160],{"type":49,"value":1102},{"type":43,"tag":830,"props":1162,"children":1163},{"style":871},[1164],{"type":49,"value":1107},{"type":43,"tag":830,"props":1166,"children":1167},{"style":842},[1168],{"type":49,"value":973},{"type":43,"tag":830,"props":1170,"children":1171},{"style":882},[1172],{"type":49,"value":978},{"type":43,"tag":830,"props":1174,"children":1175},{"style":871},[1176],{"type":49,"value":890},{"type":43,"tag":830,"props":1178,"children":1179},{"style":842},[1180],{"type":49,"value":1181},"\u002Fbranches\u002F",{"type":43,"tag":830,"props":1183,"children":1184},{"style":871},[1185],{"type":49,"value":1107},{"type":43,"tag":830,"props":1187,"children":1188},{"style":842},[1189],{"type":49,"value":1190},"BRANCH_I",{"type":43,"tag":830,"props":1192,"children":1193},{"style":882},[1194],{"type":49,"value":978},{"type":43,"tag":830,"props":1196,"children":1197},{"style":871},[1198],{"type":49,"value":890},{"type":43,"tag":830,"props":1200,"children":1201},{"style":842},[1202],{"type":49,"value":1124},{"type":43,"tag":830,"props":1204,"children":1205},{"style":871},[1206],{"type":49,"value":874},{"type":43,"tag":830,"props":1208,"children":1209},{"style":842},[1210],{"type":49,"value":1032},{"type":43,"tag":830,"props":1212,"children":1213},{"style":882},[1214],{"type":49,"value":1037},{"type":43,"tag":830,"props":1216,"children":1217},{"style":871},[1218],{"type":49,"value":1042},{"type":43,"tag":830,"props":1220,"children":1221},{"class":832,"line":1017},[1222,1226,1230,1235,1239,1243,1247,1251,1255,1259,1263,1267,1271,1275,1279,1283,1287,1291],{"type":43,"tag":830,"props":1223,"children":1224},{"style":837},[1225],{"type":49,"value":8},{"type":43,"tag":830,"props":1227,"children":1228},{"style":842},[1229],{"type":49,"value":845},{"type":43,"tag":830,"props":1231,"children":1232},{"style":842},[1233],{"type":49,"value":1234}," list-databases",{"type":43,"tag":830,"props":1236,"children":1237},{"style":842},[1238],{"type":49,"value":1102},{"type":43,"tag":830,"props":1240,"children":1241},{"style":871},[1242],{"type":49,"value":1107},{"type":43,"tag":830,"props":1244,"children":1245},{"style":842},[1246],{"type":49,"value":973},{"type":43,"tag":830,"props":1248,"children":1249},{"style":882},[1250],{"type":49,"value":978},{"type":43,"tag":830,"props":1252,"children":1253},{"style":871},[1254],{"type":49,"value":890},{"type":43,"tag":830,"props":1256,"children":1257},{"style":842},[1258],{"type":49,"value":1181},{"type":43,"tag":830,"props":1260,"children":1261},{"style":871},[1262],{"type":49,"value":1107},{"type":43,"tag":830,"props":1264,"children":1265},{"style":842},[1266],{"type":49,"value":1190},{"type":43,"tag":830,"props":1268,"children":1269},{"style":882},[1270],{"type":49,"value":978},{"type":43,"tag":830,"props":1272,"children":1273},{"style":871},[1274],{"type":49,"value":890},{"type":43,"tag":830,"props":1276,"children":1277},{"style":842},[1278],{"type":49,"value":1124},{"type":43,"tag":830,"props":1280,"children":1281},{"style":871},[1282],{"type":49,"value":874},{"type":43,"tag":830,"props":1284,"children":1285},{"style":842},[1286],{"type":49,"value":1032},{"type":43,"tag":830,"props":1288,"children":1289},{"style":882},[1290],{"type":49,"value":1037},{"type":43,"tag":830,"props":1292,"children":1293},{"style":871},[1294],{"type":49,"value":1042},{"type":43,"tag":52,"props":1296,"children":1297},{},[1298],{"type":43,"tag":56,"props":1299,"children":1300},{},[1301],{"type":49,"value":1302},"Extract connection values from JSON output:",{"type":43,"tag":167,"props":1304,"children":1305},{},[1306,1327],{"type":43,"tag":171,"props":1307,"children":1308},{},[1309],{"type":43,"tag":175,"props":1310,"children":1311},{},[1312,1317,1322],{"type":43,"tag":179,"props":1313,"children":1314},{},[1315],{"type":49,"value":1316},"Value",{"type":43,"tag":179,"props":1318,"children":1319},{},[1320],{"type":49,"value":1321},"JSON path",{"type":43,"tag":179,"props":1323,"children":1324},{},[1325],{"type":49,"value":1326},"Used for",{"type":43,"tag":195,"props":1328,"children":1329},{},[1330,1363,1396,1421],{"type":43,"tag":175,"props":1331,"children":1332},{},[1333,1338,1347],{"type":43,"tag":202,"props":1334,"children":1335},{},[1336],{"type":49,"value":1337},"Endpoint host",{"type":43,"tag":202,"props":1339,"children":1340},{},[1341],{"type":43,"tag":64,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":49,"value":1346},"status.hosts.host",{"type":43,"tag":202,"props":1348,"children":1349},{},[1350,1356,1357],{"type":43,"tag":64,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":49,"value":1355},"PGHOST",{"type":49,"value":613},{"type":43,"tag":64,"props":1358,"children":1360},{"className":1359},[],[1361],{"type":49,"value":1362},"lakebase.postgres.host",{"type":43,"tag":175,"props":1364,"children":1365},{},[1366,1371,1380],{"type":43,"tag":202,"props":1367,"children":1368},{},[1369],{"type":49,"value":1370},"Endpoint resource path",{"type":43,"tag":202,"props":1372,"children":1373},{},[1374],{"type":43,"tag":64,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":49,"value":1379},"name",{"type":43,"tag":202,"props":1381,"children":1382},{},[1383,1389,1390],{"type":43,"tag":64,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":49,"value":1388},"LAKEBASE_ENDPOINT",{"type":49,"value":613},{"type":43,"tag":64,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":49,"value":1395},"lakebase.postgres.endpointPath",{"type":43,"tag":175,"props":1397,"children":1398},{},[1399,1404,1412],{"type":43,"tag":202,"props":1400,"children":1401},{},[1402],{"type":49,"value":1403},"Database resource path",{"type":43,"tag":202,"props":1405,"children":1406},{},[1407],{"type":43,"tag":64,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":49,"value":1379},{"type":43,"tag":202,"props":1413,"children":1414},{},[1415],{"type":43,"tag":64,"props":1416,"children":1418},{"className":1417},[],[1419],{"type":49,"value":1420},"lakebase.postgres.database",{"type":43,"tag":175,"props":1422,"children":1423},{},[1424,1429,1438],{"type":43,"tag":202,"props":1425,"children":1426},{},[1427],{"type":49,"value":1428},"PostgreSQL database name",{"type":43,"tag":202,"props":1430,"children":1431},{},[1432],{"type":43,"tag":64,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":49,"value":1437},"status.postgres_database",{"type":43,"tag":202,"props":1439,"children":1440},{},[1441,1447,1448],{"type":43,"tag":64,"props":1442,"children":1444},{"className":1443},[],[1445],{"type":49,"value":1446},"PGDATABASE",{"type":49,"value":613},{"type":43,"tag":64,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":49,"value":1453},"lakebase.postgres.databaseName",{"type":43,"tag":680,"props":1455,"children":1457},{"id":1456},"updating-a-project",[1458],{"type":49,"value":1459},"Updating a Project",{"type":43,"tag":557,"props":1461,"children":1463},{"className":822,"code":1462,"language":824,"meta":565,"style":565},"databricks postgres update-project projects\u002F\u003CPROJECT_ID> spec.display_name \\\n  --json '{\"spec\": {\"display_name\": \"My Updated Application\"}}' \\\n  --profile \u003CPROFILE>\n",[1464],{"type":43,"tag":64,"props":1465,"children":1466},{"__ignoreMap":565},[1467,1512,1536],{"type":43,"tag":830,"props":1468,"children":1469},{"class":832,"line":833},[1470,1474,1478,1483,1487,1491,1495,1499,1503,1508],{"type":43,"tag":830,"props":1471,"children":1472},{"style":837},[1473],{"type":49,"value":8},{"type":43,"tag":830,"props":1475,"children":1476},{"style":842},[1477],{"type":49,"value":845},{"type":43,"tag":830,"props":1479,"children":1480},{"style":842},[1481],{"type":49,"value":1482}," update-project",{"type":43,"tag":830,"props":1484,"children":1485},{"style":842},[1486],{"type":49,"value":1102},{"type":43,"tag":830,"props":1488,"children":1489},{"style":871},[1490],{"type":49,"value":1107},{"type":43,"tag":830,"props":1492,"children":1493},{"style":842},[1494],{"type":49,"value":973},{"type":43,"tag":830,"props":1496,"children":1497},{"style":882},[1498],{"type":49,"value":978},{"type":43,"tag":830,"props":1500,"children":1501},{"style":871},[1502],{"type":49,"value":890},{"type":43,"tag":830,"props":1504,"children":1505},{"style":842},[1506],{"type":49,"value":1507}," spec.display_name",{"type":43,"tag":830,"props":1509,"children":1510},{"style":882},[1511],{"type":49,"value":987},{"type":43,"tag":830,"props":1513,"children":1514},{"class":832,"line":859},[1515,1519,1523,1528,1532],{"type":43,"tag":830,"props":1516,"children":1517},{"style":842},[1518],{"type":49,"value":995},{"type":43,"tag":830,"props":1520,"children":1521},{"style":871},[1522],{"type":49,"value":1000},{"type":43,"tag":830,"props":1524,"children":1525},{"style":842},[1526],{"type":49,"value":1527},"{\"spec\": {\"display_name\": \"My Updated Application\"}}",{"type":43,"tag":830,"props":1529,"children":1530},{"style":871},[1531],{"type":49,"value":1010},{"type":43,"tag":830,"props":1533,"children":1534},{"style":882},[1535],{"type":49,"value":987},{"type":43,"tag":830,"props":1537,"children":1538},{"class":832,"line":1017},[1539,1543,1547,1551,1555],{"type":43,"tag":830,"props":1540,"children":1541},{"style":842},[1542],{"type":49,"value":1023},{"type":43,"tag":830,"props":1544,"children":1545},{"style":871},[1546],{"type":49,"value":874},{"type":43,"tag":830,"props":1548,"children":1549},{"style":842},[1550],{"type":49,"value":1032},{"type":43,"tag":830,"props":1552,"children":1553},{"style":882},[1554],{"type":49,"value":1037},{"type":43,"tag":830,"props":1556,"children":1557},{"style":871},[1558],{"type":49,"value":1042},{"type":43,"tag":680,"props":1560,"children":1562},{"id":1561},"deleting-a-project",[1563],{"type":49,"value":1564},"Deleting a Project",{"type":43,"tag":52,"props":1566,"children":1567},{},[1568,1573,1575],{"type":43,"tag":56,"props":1569,"children":1570},{},[1571],{"type":49,"value":1572},"WARNING:",{"type":49,"value":1574}," Permanent -- deletes all branches, computes, databases, roles, and data. ",{"type":43,"tag":56,"props":1576,"children":1577},{},[1578],{"type":49,"value":1579},"Do not delete without explicit user permission.",{"type":43,"tag":557,"props":1581,"children":1583},{"className":822,"code":1582,"language":824,"meta":565,"style":565},"databricks postgres delete-project projects\u002F\u003CPROJECT_ID> --profile \u003CPROFILE>\n",[1584],{"type":43,"tag":64,"props":1585,"children":1586},{"__ignoreMap":565},[1587],{"type":43,"tag":830,"props":1588,"children":1589},{"class":832,"line":833},[1590,1594,1598,1603,1607,1611,1615,1619,1623,1627,1631,1635,1639],{"type":43,"tag":830,"props":1591,"children":1592},{"style":837},[1593],{"type":49,"value":8},{"type":43,"tag":830,"props":1595,"children":1596},{"style":842},[1597],{"type":49,"value":845},{"type":43,"tag":830,"props":1599,"children":1600},{"style":842},[1601],{"type":49,"value":1602}," delete-project",{"type":43,"tag":830,"props":1604,"children":1605},{"style":842},[1606],{"type":49,"value":1102},{"type":43,"tag":830,"props":1608,"children":1609},{"style":871},[1610],{"type":49,"value":1107},{"type":43,"tag":830,"props":1612,"children":1613},{"style":842},[1614],{"type":49,"value":973},{"type":43,"tag":830,"props":1616,"children":1617},{"style":882},[1618],{"type":49,"value":978},{"type":43,"tag":830,"props":1620,"children":1621},{"style":871},[1622],{"type":49,"value":890},{"type":43,"tag":830,"props":1624,"children":1625},{"style":842},[1626],{"type":49,"value":1124},{"type":43,"tag":830,"props":1628,"children":1629},{"style":871},[1630],{"type":49,"value":874},{"type":43,"tag":830,"props":1632,"children":1633},{"style":842},[1634],{"type":49,"value":1032},{"type":43,"tag":830,"props":1636,"children":1637},{"style":882},[1638],{"type":49,"value":1037},{"type":43,"tag":830,"props":1640,"children":1641},{"style":871},[1642],{"type":49,"value":1042},{"type":43,"tag":359,"props":1644,"children":1646},{"id":1645},"autoscaling",[1647],{"type":49,"value":1648},"Autoscaling",{"type":43,"tag":52,"props":1650,"children":1651},{},[1652,1654,1659],{"type":49,"value":1653},"Endpoints use ",{"type":43,"tag":56,"props":1655,"children":1656},{},[1657],{"type":49,"value":1658},"compute units (CU)",{"type":49,"value":1660}," (~2 GB RAM per CU). Range: 0.5--32 CU (dynamic), 36--112 CU (fixed). Scale-to-zero enabled by default (5 min timeout).",{"type":43,"tag":52,"props":1662,"children":1663},{},[1664,1666,1670],{"type":49,"value":1665},"See ",{"type":43,"tag":473,"props":1667,"children":1668},{"href":475},[1669],{"type":49,"value":478},{"type":49,"value":1671}," for sizing tables, endpoint CRUD, and configuration details.",{"type":43,"tag":359,"props":1673,"children":1675},{"id":1674},"branches",[1676],{"type":49,"value":1677},"Branches",{"type":43,"tag":52,"props":1679,"children":1680},{},[1681],{"type":49,"value":1682},"Branches are copy-on-write snapshots. Use for testing schema migrations, trying queries, or previewing data changes without affecting production.",{"type":43,"tag":557,"props":1684,"children":1686},{"className":822,"code":1685,"language":824,"meta":565,"style":565},"databricks postgres create-branch projects\u002F\u003CPROJECT_ID> \u003CBRANCH_ID> \\\n  --json '{\"spec\": {\"source_branch\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CSOURCE>\", \"no_expiry\": true}}' \\\n  --profile \u003CPROFILE>\n",[1687],{"type":43,"tag":64,"props":1688,"children":1689},{"__ignoreMap":565},[1690,1746,1770],{"type":43,"tag":830,"props":1691,"children":1692},{"class":832,"line":833},[1693,1697,1701,1706,1710,1714,1718,1722,1726,1730,1734,1738,1742],{"type":43,"tag":830,"props":1694,"children":1695},{"style":837},[1696],{"type":49,"value":8},{"type":43,"tag":830,"props":1698,"children":1699},{"style":842},[1700],{"type":49,"value":845},{"type":43,"tag":830,"props":1702,"children":1703},{"style":842},[1704],{"type":49,"value":1705}," create-branch",{"type":43,"tag":830,"props":1707,"children":1708},{"style":842},[1709],{"type":49,"value":1102},{"type":43,"tag":830,"props":1711,"children":1712},{"style":871},[1713],{"type":49,"value":1107},{"type":43,"tag":830,"props":1715,"children":1716},{"style":842},[1717],{"type":49,"value":973},{"type":43,"tag":830,"props":1719,"children":1720},{"style":882},[1721],{"type":49,"value":978},{"type":43,"tag":830,"props":1723,"children":1724},{"style":871},[1725],{"type":49,"value":890},{"type":43,"tag":830,"props":1727,"children":1728},{"style":871},[1729],{"type":49,"value":874},{"type":43,"tag":830,"props":1731,"children":1732},{"style":842},[1733],{"type":49,"value":1190},{"type":43,"tag":830,"props":1735,"children":1736},{"style":882},[1737],{"type":49,"value":978},{"type":43,"tag":830,"props":1739,"children":1740},{"style":871},[1741],{"type":49,"value":890},{"type":43,"tag":830,"props":1743,"children":1744},{"style":882},[1745],{"type":49,"value":987},{"type":43,"tag":830,"props":1747,"children":1748},{"class":832,"line":859},[1749,1753,1757,1762,1766],{"type":43,"tag":830,"props":1750,"children":1751},{"style":842},[1752],{"type":49,"value":995},{"type":43,"tag":830,"props":1754,"children":1755},{"style":871},[1756],{"type":49,"value":1000},{"type":43,"tag":830,"props":1758,"children":1759},{"style":842},[1760],{"type":49,"value":1761},"{\"spec\": {\"source_branch\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CSOURCE>\", \"no_expiry\": true}}",{"type":43,"tag":830,"props":1763,"children":1764},{"style":871},[1765],{"type":49,"value":1010},{"type":43,"tag":830,"props":1767,"children":1768},{"style":882},[1769],{"type":49,"value":987},{"type":43,"tag":830,"props":1771,"children":1772},{"class":832,"line":1017},[1773,1777,1781,1785,1789],{"type":43,"tag":830,"props":1774,"children":1775},{"style":842},[1776],{"type":49,"value":1023},{"type":43,"tag":830,"props":1778,"children":1779},{"style":871},[1780],{"type":49,"value":874},{"type":43,"tag":830,"props":1782,"children":1783},{"style":842},[1784],{"type":49,"value":1032},{"type":43,"tag":830,"props":1786,"children":1787},{"style":882},[1788],{"type":49,"value":1037},{"type":43,"tag":830,"props":1790,"children":1791},{"style":871},[1792],{"type":49,"value":1042},{"type":43,"tag":52,"props":1794,"children":1795},{},[1796,1798,1804,1806,1812],{"type":49,"value":1797},"Branches require an expiration policy: ",{"type":43,"tag":64,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":49,"value":1803},"\"no_expiry\": true",{"type":49,"value":1805}," for permanent, or ",{"type":43,"tag":64,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":49,"value":1811},"\"ttl\": \"\u003Cseconds>s\"",{"type":49,"value":1813}," (max 30 days).",{"type":43,"tag":52,"props":1815,"children":1816},{},[1817,1822],{"type":43,"tag":56,"props":1818,"children":1819},{},[1820],{"type":49,"value":1821},"Limits:",{"type":49,"value":1823}," 10 unarchived branches per project. 8 TB logical data per branch. 1,000 projects per workspace.",{"type":43,"tag":167,"props":1825,"children":1826},{},[1827,1843],{"type":43,"tag":171,"props":1828,"children":1829},{},[1830],{"type":43,"tag":175,"props":1831,"children":1832},{},[1833,1838],{"type":43,"tag":179,"props":1834,"children":1835},{},[1836],{"type":49,"value":1837},"Use Case",{"type":43,"tag":179,"props":1839,"children":1840},{},[1841],{"type":49,"value":1842},"TTL",{"type":43,"tag":195,"props":1844,"children":1845},{},[1846,1867,1887,1907],{"type":43,"tag":175,"props":1847,"children":1848},{},[1849,1854],{"type":43,"tag":202,"props":1850,"children":1851},{},[1852],{"type":49,"value":1853},"CI\u002FCD environments",{"type":43,"tag":202,"props":1855,"children":1856},{},[1857,1859,1865],{"type":49,"value":1858},"2--4 hours (",{"type":43,"tag":64,"props":1860,"children":1862},{"className":1861},[],[1863],{"type":49,"value":1864},"\"ttl\": \"14400s\"",{"type":49,"value":1866},")",{"type":43,"tag":175,"props":1868,"children":1869},{},[1870,1875],{"type":43,"tag":202,"props":1871,"children":1872},{},[1873],{"type":49,"value":1874},"Demos",{"type":43,"tag":202,"props":1876,"children":1877},{},[1878,1880,1886],{"type":49,"value":1879},"24--48 hours (",{"type":43,"tag":64,"props":1881,"children":1883},{"className":1882},[],[1884],{"type":49,"value":1885},"\"ttl\": \"172800s\"",{"type":49,"value":1866},{"type":43,"tag":175,"props":1888,"children":1889},{},[1890,1895],{"type":43,"tag":202,"props":1891,"children":1892},{},[1893],{"type":49,"value":1894},"Feature development",{"type":43,"tag":202,"props":1896,"children":1897},{},[1898,1900,1906],{"type":49,"value":1899},"1--7 days (",{"type":43,"tag":64,"props":1901,"children":1903},{"className":1902},[],[1904],{"type":49,"value":1905},"\"ttl\": \"604800s\"",{"type":49,"value":1866},{"type":43,"tag":175,"props":1908,"children":1909},{},[1910,1915],{"type":43,"tag":202,"props":1911,"children":1912},{},[1913],{"type":49,"value":1914},"Long-term testing",{"type":43,"tag":202,"props":1916,"children":1917},{},[1918,1920,1926],{"type":49,"value":1919},"Up to 30 days (",{"type":43,"tag":64,"props":1921,"children":1923},{"className":1922},[],[1924],{"type":49,"value":1925},"\"ttl\": \"2592000s\"",{"type":49,"value":1866},{"type":43,"tag":52,"props":1928,"children":1929},{},[1930,1935,1937,1943],{"type":43,"tag":56,"props":1931,"children":1932},{},[1933],{"type":49,"value":1934},"Point-in-time branching:",{"type":49,"value":1936}," Create from a past state (within restore window) for recovery. Run ",{"type":43,"tag":64,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":49,"value":1942},"databricks postgres create-branch -h",{"type":49,"value":1944}," for time specification fields.",{"type":43,"tag":52,"props":1946,"children":1947},{},[1948,1953],{"type":43,"tag":56,"props":1949,"children":1950},{},[1951],{"type":49,"value":1952},"Reset:",{"type":49,"value":1954}," Replaces branch data with latest from parent. Local changes are lost. Root branches and branches with children cannot be reset.",{"type":43,"tag":557,"props":1956,"children":1958},{"className":822,"code":1957,"language":824,"meta":565,"style":565},"databricks postgres reset-branch projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\n",[1959],{"type":43,"tag":64,"props":1960,"children":1961},{"__ignoreMap":565},[1962],{"type":43,"tag":830,"props":1963,"children":1964},{"class":832,"line":833},[1965,1969,1973,1978,1982,1986,1990,1994,1998,2002,2006,2010,2014,2018,2022,2026,2030,2034],{"type":43,"tag":830,"props":1966,"children":1967},{"style":837},[1968],{"type":49,"value":8},{"type":43,"tag":830,"props":1970,"children":1971},{"style":842},[1972],{"type":49,"value":845},{"type":43,"tag":830,"props":1974,"children":1975},{"style":842},[1976],{"type":49,"value":1977}," reset-branch",{"type":43,"tag":830,"props":1979,"children":1980},{"style":842},[1981],{"type":49,"value":1102},{"type":43,"tag":830,"props":1983,"children":1984},{"style":871},[1985],{"type":49,"value":1107},{"type":43,"tag":830,"props":1987,"children":1988},{"style":842},[1989],{"type":49,"value":973},{"type":43,"tag":830,"props":1991,"children":1992},{"style":882},[1993],{"type":49,"value":978},{"type":43,"tag":830,"props":1995,"children":1996},{"style":871},[1997],{"type":49,"value":890},{"type":43,"tag":830,"props":1999,"children":2000},{"style":842},[2001],{"type":49,"value":1181},{"type":43,"tag":830,"props":2003,"children":2004},{"style":871},[2005],{"type":49,"value":1107},{"type":43,"tag":830,"props":2007,"children":2008},{"style":842},[2009],{"type":49,"value":1190},{"type":43,"tag":830,"props":2011,"children":2012},{"style":882},[2013],{"type":49,"value":978},{"type":43,"tag":830,"props":2015,"children":2016},{"style":871},[2017],{"type":49,"value":890},{"type":43,"tag":830,"props":2019,"children":2020},{"style":842},[2021],{"type":49,"value":1124},{"type":43,"tag":830,"props":2023,"children":2024},{"style":871},[2025],{"type":49,"value":874},{"type":43,"tag":830,"props":2027,"children":2028},{"style":842},[2029],{"type":49,"value":1032},{"type":43,"tag":830,"props":2031,"children":2032},{"style":882},[2033],{"type":49,"value":1037},{"type":43,"tag":830,"props":2035,"children":2036},{"style":871},[2037],{"type":49,"value":1042},{"type":43,"tag":52,"props":2039,"children":2040},{},[2041,2046,2048,2054,2056,2062,2064,2070,2072],{"type":43,"tag":56,"props":2042,"children":2043},{},[2044],{"type":49,"value":2045},"Delete:",{"type":49,"value":2047}," Protected branches must be unprotected first (",{"type":43,"tag":64,"props":2049,"children":2051},{"className":2050},[],[2052],{"type":49,"value":2053},"update-branch",{"type":49,"value":2055}," to set ",{"type":43,"tag":64,"props":2057,"children":2059},{"className":2058},[],[2060],{"type":49,"value":2061},"spec.is_protected",{"type":49,"value":2063}," to ",{"type":43,"tag":64,"props":2065,"children":2067},{"className":2066},[],[2068],{"type":49,"value":2069},"false",{"type":49,"value":2071},"). Cannot delete branches with children. ",{"type":43,"tag":56,"props":2073,"children":2074},{},[2075,2077,2082],{"type":49,"value":2076},"Never delete the ",{"type":43,"tag":64,"props":2078,"children":2080},{"className":2079},[],[2081],{"type":49,"value":585},{"type":49,"value":2083}," branch.",{"type":43,"tag":359,"props":2085,"children":2087},{"id":2086},"whats-next",[2088],{"type":49,"value":2089},"What's Next",{"type":43,"tag":680,"props":2091,"children":2093},{"id":2092},"build-a-databricks-app",[2094],{"type":49,"value":2095},"Build a Databricks App",{"type":43,"tag":52,"props":2097,"children":2098},{},[2099],{"type":49,"value":2100},"After creating a project, scaffold a connected Databricks App:",{"type":43,"tag":557,"props":2102,"children":2104},{"className":822,"code":2103,"language":824,"meta":565,"style":565},"# 1. Get branch name\ndatabricks postgres list-branches projects\u002F\u003CPROJECT_ID> --profile \u003CPROFILE>\n\n# 2. Get database name\ndatabricks postgres list-databases projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> --profile \u003CPROFILE>\n\n# 3. Scaffold with lakebase feature\ndatabricks apps init --name \u003CAPP_NAME> --features lakebase \\\n  --set \"lakebase.postgres.branch=\u003CBRANCH_NAME>\" \\\n  --set \"lakebase.postgres.database=\u003CDATABASE_NAME>\" \\\n  --run none --profile \u003CPROFILE>\n",[2105],{"type":43,"tag":64,"props":2106,"children":2107},{"__ignoreMap":565},[2108,2116,2171,2180,2189,2265,2273,2282,2336,2364,2389],{"type":43,"tag":830,"props":2109,"children":2110},{"class":832,"line":833},[2111],{"type":43,"tag":830,"props":2112,"children":2113},{"style":853},[2114],{"type":49,"value":2115},"# 1. Get branch name\n",{"type":43,"tag":830,"props":2117,"children":2118},{"class":832,"line":859},[2119,2123,2127,2131,2135,2139,2143,2147,2151,2155,2159,2163,2167],{"type":43,"tag":830,"props":2120,"children":2121},{"style":837},[2122],{"type":49,"value":8},{"type":43,"tag":830,"props":2124,"children":2125},{"style":842},[2126],{"type":49,"value":845},{"type":43,"tag":830,"props":2128,"children":2129},{"style":842},[2130],{"type":49,"value":1097},{"type":43,"tag":830,"props":2132,"children":2133},{"style":842},[2134],{"type":49,"value":1102},{"type":43,"tag":830,"props":2136,"children":2137},{"style":871},[2138],{"type":49,"value":1107},{"type":43,"tag":830,"props":2140,"children":2141},{"style":842},[2142],{"type":49,"value":973},{"type":43,"tag":830,"props":2144,"children":2145},{"style":882},[2146],{"type":49,"value":978},{"type":43,"tag":830,"props":2148,"children":2149},{"style":871},[2150],{"type":49,"value":890},{"type":43,"tag":830,"props":2152,"children":2153},{"style":842},[2154],{"type":49,"value":1124},{"type":43,"tag":830,"props":2156,"children":2157},{"style":871},[2158],{"type":49,"value":874},{"type":43,"tag":830,"props":2160,"children":2161},{"style":842},[2162],{"type":49,"value":1032},{"type":43,"tag":830,"props":2164,"children":2165},{"style":882},[2166],{"type":49,"value":1037},{"type":43,"tag":830,"props":2168,"children":2169},{"style":871},[2170],{"type":49,"value":1042},{"type":43,"tag":830,"props":2172,"children":2173},{"class":832,"line":1017},[2174],{"type":43,"tag":830,"props":2175,"children":2177},{"emptyLinePlaceholder":2176},true,[2178],{"type":49,"value":2179},"\n",{"type":43,"tag":830,"props":2181,"children":2183},{"class":832,"line":2182},4,[2184],{"type":43,"tag":830,"props":2185,"children":2186},{"style":853},[2187],{"type":49,"value":2188},"# 2. Get database name\n",{"type":43,"tag":830,"props":2190,"children":2192},{"class":832,"line":2191},5,[2193,2197,2201,2205,2209,2213,2217,2221,2225,2229,2233,2237,2241,2245,2249,2253,2257,2261],{"type":43,"tag":830,"props":2194,"children":2195},{"style":837},[2196],{"type":49,"value":8},{"type":43,"tag":830,"props":2198,"children":2199},{"style":842},[2200],{"type":49,"value":845},{"type":43,"tag":830,"props":2202,"children":2203},{"style":842},[2204],{"type":49,"value":1234},{"type":43,"tag":830,"props":2206,"children":2207},{"style":842},[2208],{"type":49,"value":1102},{"type":43,"tag":830,"props":2210,"children":2211},{"style":871},[2212],{"type":49,"value":1107},{"type":43,"tag":830,"props":2214,"children":2215},{"style":842},[2216],{"type":49,"value":973},{"type":43,"tag":830,"props":2218,"children":2219},{"style":882},[2220],{"type":49,"value":978},{"type":43,"tag":830,"props":2222,"children":2223},{"style":871},[2224],{"type":49,"value":890},{"type":43,"tag":830,"props":2226,"children":2227},{"style":842},[2228],{"type":49,"value":1181},{"type":43,"tag":830,"props":2230,"children":2231},{"style":871},[2232],{"type":49,"value":1107},{"type":43,"tag":830,"props":2234,"children":2235},{"style":842},[2236],{"type":49,"value":1190},{"type":43,"tag":830,"props":2238,"children":2239},{"style":882},[2240],{"type":49,"value":978},{"type":43,"tag":830,"props":2242,"children":2243},{"style":871},[2244],{"type":49,"value":890},{"type":43,"tag":830,"props":2246,"children":2247},{"style":842},[2248],{"type":49,"value":1124},{"type":43,"tag":830,"props":2250,"children":2251},{"style":871},[2252],{"type":49,"value":874},{"type":43,"tag":830,"props":2254,"children":2255},{"style":842},[2256],{"type":49,"value":1032},{"type":43,"tag":830,"props":2258,"children":2259},{"style":882},[2260],{"type":49,"value":1037},{"type":43,"tag":830,"props":2262,"children":2263},{"style":871},[2264],{"type":49,"value":1042},{"type":43,"tag":830,"props":2266,"children":2268},{"class":832,"line":2267},6,[2269],{"type":43,"tag":830,"props":2270,"children":2271},{"emptyLinePlaceholder":2176},[2272],{"type":49,"value":2179},{"type":43,"tag":830,"props":2274,"children":2276},{"class":832,"line":2275},7,[2277],{"type":43,"tag":830,"props":2278,"children":2279},{"style":853},[2280],{"type":49,"value":2281},"# 3. Scaffold with lakebase feature\n",{"type":43,"tag":830,"props":2283,"children":2285},{"class":832,"line":2284},8,[2286,2290,2295,2300,2305,2309,2314,2318,2322,2327,2332],{"type":43,"tag":830,"props":2287,"children":2288},{"style":837},[2289],{"type":49,"value":8},{"type":43,"tag":830,"props":2291,"children":2292},{"style":842},[2293],{"type":49,"value":2294}," apps",{"type":43,"tag":830,"props":2296,"children":2297},{"style":842},[2298],{"type":49,"value":2299}," init",{"type":43,"tag":830,"props":2301,"children":2302},{"style":842},[2303],{"type":49,"value":2304}," --name",{"type":43,"tag":830,"props":2306,"children":2307},{"style":871},[2308],{"type":49,"value":874},{"type":43,"tag":830,"props":2310,"children":2311},{"style":842},[2312],{"type":49,"value":2313},"APP_NAM",{"type":43,"tag":830,"props":2315,"children":2316},{"style":882},[2317],{"type":49,"value":1037},{"type":43,"tag":830,"props":2319,"children":2320},{"style":871},[2321],{"type":49,"value":890},{"type":43,"tag":830,"props":2323,"children":2324},{"style":842},[2325],{"type":49,"value":2326}," --features",{"type":43,"tag":830,"props":2328,"children":2329},{"style":842},[2330],{"type":49,"value":2331}," lakebase",{"type":43,"tag":830,"props":2333,"children":2334},{"style":882},[2335],{"type":49,"value":987},{"type":43,"tag":830,"props":2337,"children":2339},{"class":832,"line":2338},9,[2340,2345,2350,2355,2360],{"type":43,"tag":830,"props":2341,"children":2342},{"style":842},[2343],{"type":49,"value":2344},"  --set",{"type":43,"tag":830,"props":2346,"children":2347},{"style":871},[2348],{"type":49,"value":2349}," \"",{"type":43,"tag":830,"props":2351,"children":2352},{"style":842},[2353],{"type":49,"value":2354},"lakebase.postgres.branch=\u003CBRANCH_NAME>",{"type":43,"tag":830,"props":2356,"children":2357},{"style":871},[2358],{"type":49,"value":2359},"\"",{"type":43,"tag":830,"props":2361,"children":2362},{"style":882},[2363],{"type":49,"value":987},{"type":43,"tag":830,"props":2365,"children":2367},{"class":832,"line":2366},10,[2368,2372,2376,2381,2385],{"type":43,"tag":830,"props":2369,"children":2370},{"style":842},[2371],{"type":49,"value":2344},{"type":43,"tag":830,"props":2373,"children":2374},{"style":871},[2375],{"type":49,"value":2349},{"type":43,"tag":830,"props":2377,"children":2378},{"style":842},[2379],{"type":49,"value":2380},"lakebase.postgres.database=\u003CDATABASE_NAME>",{"type":43,"tag":830,"props":2382,"children":2383},{"style":871},[2384],{"type":49,"value":2359},{"type":43,"tag":830,"props":2386,"children":2387},{"style":882},[2388],{"type":49,"value":987},{"type":43,"tag":830,"props":2390,"children":2392},{"class":832,"line":2391},11,[2393,2398,2403,2407,2411,2415,2419],{"type":43,"tag":830,"props":2394,"children":2395},{"style":842},[2396],{"type":49,"value":2397},"  --run",{"type":43,"tag":830,"props":2399,"children":2400},{"style":842},[2401],{"type":49,"value":2402}," none",{"type":43,"tag":830,"props":2404,"children":2405},{"style":842},[2406],{"type":49,"value":1124},{"type":43,"tag":830,"props":2408,"children":2409},{"style":871},[2410],{"type":49,"value":874},{"type":43,"tag":830,"props":2412,"children":2413},{"style":842},[2414],{"type":49,"value":1032},{"type":43,"tag":830,"props":2416,"children":2417},{"style":882},[2418],{"type":49,"value":1037},{"type":43,"tag":830,"props":2420,"children":2421},{"style":871},[2422],{"type":49,"value":1042},{"type":43,"tag":52,"props":2424,"children":2425},{},[2426,2428,2437],{"type":49,"value":2427},"For the full app workflow, use the ",{"type":43,"tag":56,"props":2429,"children":2430},{},[2431],{"type":43,"tag":64,"props":2432,"children":2434},{"className":2433},[],[2435],{"type":49,"value":2436},"databricks-apps",{"type":49,"value":2438}," skill.",{"type":43,"tag":680,"props":2440,"children":2442},{"id":2441},"attach-lakebase-to-an-existing-app",[2443],{"type":49,"value":2444},"Attach Lakebase to an existing app",{"type":43,"tag":52,"props":2446,"children":2447},{},[2448,2454,2456,2461],{"type":43,"tag":64,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":49,"value":2453},"apps init --features lakebase",{"type":49,"value":2455}," (above) wires the database at scaffold time. To\nattach a project to an ",{"type":43,"tag":56,"props":2457,"children":2458},{},[2459],{"type":49,"value":2460},"existing",{"type":49,"value":2462}," app, update its resources.",{"type":43,"tag":52,"props":2464,"children":2465},{},[2466,2478,2480,2486,2488,2493,2495,2500,2502,2508,2509,2515,2517,2523,2525,2530,2531,2536,2538,2544],{"type":43,"tag":56,"props":2467,"children":2468},{},[2469,2471,2476],{"type":49,"value":2470},"Use the ",{"type":43,"tag":64,"props":2472,"children":2474},{"className":2473},[],[2475],{"type":49,"value":134},{"type":49,"value":2477}," resource key",{"type":49,"value":2479}," — its fields are ",{"type":43,"tag":64,"props":2481,"children":2483},{"className":2482},[],[2484],{"type":49,"value":2485},"branch",{"type":49,"value":2487}," + ",{"type":43,"tag":64,"props":2489,"children":2491},{"className":2490},[],[2492],{"type":49,"value":14},{"type":49,"value":2494},"\n(full resource paths from the table above). The legacy ",{"type":43,"tag":64,"props":2496,"children":2498},{"className":2497},[],[2499],{"type":49,"value":14},{"type":49,"value":2501}," key\n(",{"type":43,"tag":64,"props":2503,"children":2505},{"className":2504},[],[2506],{"type":49,"value":2507},"instance_name",{"type":49,"value":2487},{"type":43,"tag":64,"props":2510,"children":2512},{"className":2511},[],[2513],{"type":49,"value":2514},"database_name",{"type":49,"value":2516},") is deprecated; using it fails with\n",{"type":43,"tag":64,"props":2518,"children":2520},{"className":2519},[],[2521],{"type":49,"value":2522},"Database instance \u003Cname> does not exist",{"type":49,"value":2524},". Get the exact paths from\n",{"type":43,"tag":64,"props":2526,"children":2528},{"className":2527},[],[2529],{"type":49,"value":932},{"type":49,"value":113},{"type":43,"tag":64,"props":2532,"children":2534},{"className":2533},[],[2535],{"type":49,"value":939},{"type":49,"value":2537}," (the DB name is often hyphenated, e.g.\n",{"type":43,"tag":64,"props":2539,"children":2541},{"className":2540},[],[2542],{"type":49,"value":2543},"databricks-postgres",{"type":49,"value":160},{"type":43,"tag":52,"props":2546,"children":2547},{},[2548,2550,2559,2561,2567,2569,2575,2577,2583,2585,2590,2592,2598,2600,2606],{"type":49,"value":2549},"Update the app's resources with ",{"type":43,"tag":56,"props":2551,"children":2552},{},[2553],{"type":43,"tag":64,"props":2554,"children":2556},{"className":2555},[],[2557],{"type":49,"value":2558},"databricks apps create-update",{"type":49,"value":2560}," — the method to use for any app (the older ",{"type":43,"tag":64,"props":2562,"children":2564},{"className":2563},[],[2565],{"type":49,"value":2566},"databricks apps update",{"type":49,"value":2568}," is legacy and can't change resources for an app in a space). ",{"type":43,"tag":64,"props":2570,"children":2572},{"className":2571},[],[2573],{"type":49,"value":2574},"update_mask=resources",{"type":49,"value":2576}," replaces the whole ",{"type":43,"tag":64,"props":2578,"children":2580},{"className":2579},[],[2581],{"type":49,"value":2582},"resources",{"type":49,"value":2584}," array, so read the app's current resources and ",{"type":43,"tag":56,"props":2586,"children":2587},{},[2588],{"type":49,"value":2589},"merge",{"type":49,"value":2591}," the new one in (or you'll detach the rest). Pass everything in ",{"type":43,"tag":64,"props":2593,"children":2595},{"className":2594},[],[2596],{"type":49,"value":2597},"--json",{"type":49,"value":2599},"; only ",{"type":43,"tag":64,"props":2601,"children":2603},{"className":2602},[],[2604],{"type":49,"value":2605},"APP_NAME",{"type":49,"value":2607}," is positional:",{"type":43,"tag":557,"props":2609,"children":2611},{"className":822,"code":2610,"language":824,"meta":565,"style":565},"databricks apps create-update \u003CAPP_NAME> --json @update.json --profile \u003CPROFILE>   # waits for completion; --no-wait to return early\n",[2612],{"type":43,"tag":64,"props":2613,"children":2614},{"__ignoreMap":565},[2615],{"type":43,"tag":830,"props":2616,"children":2617},{"class":832,"line":833},[2618,2622,2626,2631,2635,2639,2643,2647,2652,2657,2661,2665,2669,2673,2677],{"type":43,"tag":830,"props":2619,"children":2620},{"style":837},[2621],{"type":49,"value":8},{"type":43,"tag":830,"props":2623,"children":2624},{"style":842},[2625],{"type":49,"value":2294},{"type":43,"tag":830,"props":2627,"children":2628},{"style":842},[2629],{"type":49,"value":2630}," create-update",{"type":43,"tag":830,"props":2632,"children":2633},{"style":871},[2634],{"type":49,"value":874},{"type":43,"tag":830,"props":2636,"children":2637},{"style":842},[2638],{"type":49,"value":2313},{"type":43,"tag":830,"props":2640,"children":2641},{"style":882},[2642],{"type":49,"value":1037},{"type":43,"tag":830,"props":2644,"children":2645},{"style":871},[2646],{"type":49,"value":890},{"type":43,"tag":830,"props":2648,"children":2649},{"style":842},[2650],{"type":49,"value":2651}," --json",{"type":43,"tag":830,"props":2653,"children":2654},{"style":842},[2655],{"type":49,"value":2656}," @update.json",{"type":43,"tag":830,"props":2658,"children":2659},{"style":842},[2660],{"type":49,"value":1124},{"type":43,"tag":830,"props":2662,"children":2663},{"style":871},[2664],{"type":49,"value":874},{"type":43,"tag":830,"props":2666,"children":2667},{"style":842},[2668],{"type":49,"value":1032},{"type":43,"tag":830,"props":2670,"children":2671},{"style":882},[2672],{"type":49,"value":1037},{"type":43,"tag":830,"props":2674,"children":2675},{"style":871},[2676],{"type":49,"value":890},{"type":43,"tag":830,"props":2678,"children":2679},{"style":853},[2680],{"type":49,"value":2681},"   # waits for completion; --no-wait to return early\n",{"type":43,"tag":557,"props":2683,"children":2687},{"className":2684,"code":2685,"language":2686,"meta":565,"style":565},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"update_mask\": \"resources\",\n  \"app\": {\n    \"resources\": [\n      {\n        \"name\": \"postgres\",\n        \"postgres\": {\n          \"branch\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\",\n          \"database\": \"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fdatabases\u002F\u003CDATABASE_ID>\",\n          \"permission\": \"CAN_CONNECT_AND_CREATE\"\n        }\n      }\n    ]\n  }\n}\n","json",[2688],{"type":43,"tag":64,"props":2689,"children":2690},{"__ignoreMap":565},[2691,2699,2739,2764,2789,2797,2834,2857,2895,2931,2965,2973,2982,2991,3000],{"type":43,"tag":830,"props":2692,"children":2693},{"class":832,"line":833},[2694],{"type":43,"tag":830,"props":2695,"children":2696},{"style":871},[2697],{"type":49,"value":2698},"{\n",{"type":43,"tag":830,"props":2700,"children":2701},{"class":832,"line":859},[2702,2707,2713,2717,2722,2726,2730,2734],{"type":43,"tag":830,"props":2703,"children":2704},{"style":871},[2705],{"type":49,"value":2706},"  \"",{"type":43,"tag":830,"props":2708,"children":2710},{"style":2709},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2711],{"type":49,"value":2712},"update_mask",{"type":43,"tag":830,"props":2714,"children":2715},{"style":871},[2716],{"type":49,"value":2359},{"type":43,"tag":830,"props":2718,"children":2719},{"style":871},[2720],{"type":49,"value":2721},":",{"type":43,"tag":830,"props":2723,"children":2724},{"style":871},[2725],{"type":49,"value":2349},{"type":43,"tag":830,"props":2727,"children":2728},{"style":842},[2729],{"type":49,"value":2582},{"type":43,"tag":830,"props":2731,"children":2732},{"style":871},[2733],{"type":49,"value":2359},{"type":43,"tag":830,"props":2735,"children":2736},{"style":871},[2737],{"type":49,"value":2738},",\n",{"type":43,"tag":830,"props":2740,"children":2741},{"class":832,"line":1017},[2742,2746,2751,2755,2759],{"type":43,"tag":830,"props":2743,"children":2744},{"style":871},[2745],{"type":49,"value":2706},{"type":43,"tag":830,"props":2747,"children":2748},{"style":2709},[2749],{"type":49,"value":2750},"app",{"type":43,"tag":830,"props":2752,"children":2753},{"style":871},[2754],{"type":49,"value":2359},{"type":43,"tag":830,"props":2756,"children":2757},{"style":871},[2758],{"type":49,"value":2721},{"type":43,"tag":830,"props":2760,"children":2761},{"style":871},[2762],{"type":49,"value":2763}," {\n",{"type":43,"tag":830,"props":2765,"children":2766},{"class":832,"line":2182},[2767,2772,2776,2780,2784],{"type":43,"tag":830,"props":2768,"children":2769},{"style":871},[2770],{"type":49,"value":2771},"    \"",{"type":43,"tag":830,"props":2773,"children":2774},{"style":837},[2775],{"type":49,"value":2582},{"type":43,"tag":830,"props":2777,"children":2778},{"style":871},[2779],{"type":49,"value":2359},{"type":43,"tag":830,"props":2781,"children":2782},{"style":871},[2783],{"type":49,"value":2721},{"type":43,"tag":830,"props":2785,"children":2786},{"style":871},[2787],{"type":49,"value":2788}," [\n",{"type":43,"tag":830,"props":2790,"children":2791},{"class":832,"line":2191},[2792],{"type":43,"tag":830,"props":2793,"children":2794},{"style":871},[2795],{"type":49,"value":2796},"      {\n",{"type":43,"tag":830,"props":2798,"children":2799},{"class":832,"line":2267},[2800,2805,2810,2814,2818,2822,2826,2830],{"type":43,"tag":830,"props":2801,"children":2802},{"style":871},[2803],{"type":49,"value":2804},"        \"",{"type":43,"tag":830,"props":2806,"children":2808},{"style":2807},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2809],{"type":49,"value":1379},{"type":43,"tag":830,"props":2811,"children":2812},{"style":871},[2813],{"type":49,"value":2359},{"type":43,"tag":830,"props":2815,"children":2816},{"style":871},[2817],{"type":49,"value":2721},{"type":43,"tag":830,"props":2819,"children":2820},{"style":871},[2821],{"type":49,"value":2349},{"type":43,"tag":830,"props":2823,"children":2824},{"style":842},[2825],{"type":49,"value":134},{"type":43,"tag":830,"props":2827,"children":2828},{"style":871},[2829],{"type":49,"value":2359},{"type":43,"tag":830,"props":2831,"children":2832},{"style":871},[2833],{"type":49,"value":2738},{"type":43,"tag":830,"props":2835,"children":2836},{"class":832,"line":2275},[2837,2841,2845,2849,2853],{"type":43,"tag":830,"props":2838,"children":2839},{"style":871},[2840],{"type":49,"value":2804},{"type":43,"tag":830,"props":2842,"children":2843},{"style":2807},[2844],{"type":49,"value":134},{"type":43,"tag":830,"props":2846,"children":2847},{"style":871},[2848],{"type":49,"value":2359},{"type":43,"tag":830,"props":2850,"children":2851},{"style":871},[2852],{"type":49,"value":2721},{"type":43,"tag":830,"props":2854,"children":2855},{"style":871},[2856],{"type":49,"value":2763},{"type":43,"tag":830,"props":2858,"children":2859},{"class":832,"line":2284},[2860,2865,2870,2874,2878,2882,2887,2891],{"type":43,"tag":830,"props":2861,"children":2862},{"style":871},[2863],{"type":49,"value":2864},"          \"",{"type":43,"tag":830,"props":2866,"children":2868},{"style":2867},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2869],{"type":49,"value":2485},{"type":43,"tag":830,"props":2871,"children":2872},{"style":871},[2873],{"type":49,"value":2359},{"type":43,"tag":830,"props":2875,"children":2876},{"style":871},[2877],{"type":49,"value":2721},{"type":43,"tag":830,"props":2879,"children":2880},{"style":871},[2881],{"type":49,"value":2349},{"type":43,"tag":830,"props":2883,"children":2884},{"style":842},[2885],{"type":49,"value":2886},"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>",{"type":43,"tag":830,"props":2888,"children":2889},{"style":871},[2890],{"type":49,"value":2359},{"type":43,"tag":830,"props":2892,"children":2893},{"style":871},[2894],{"type":49,"value":2738},{"type":43,"tag":830,"props":2896,"children":2897},{"class":832,"line":2338},[2898,2902,2906,2910,2914,2918,2923,2927],{"type":43,"tag":830,"props":2899,"children":2900},{"style":871},[2901],{"type":49,"value":2864},{"type":43,"tag":830,"props":2903,"children":2904},{"style":2867},[2905],{"type":49,"value":14},{"type":43,"tag":830,"props":2907,"children":2908},{"style":871},[2909],{"type":49,"value":2359},{"type":43,"tag":830,"props":2911,"children":2912},{"style":871},[2913],{"type":49,"value":2721},{"type":43,"tag":830,"props":2915,"children":2916},{"style":871},[2917],{"type":49,"value":2349},{"type":43,"tag":830,"props":2919,"children":2920},{"style":842},[2921],{"type":49,"value":2922},"projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fdatabases\u002F\u003CDATABASE_ID>",{"type":43,"tag":830,"props":2924,"children":2925},{"style":871},[2926],{"type":49,"value":2359},{"type":43,"tag":830,"props":2928,"children":2929},{"style":871},[2930],{"type":49,"value":2738},{"type":43,"tag":830,"props":2932,"children":2933},{"class":832,"line":2366},[2934,2938,2943,2947,2951,2955,2960],{"type":43,"tag":830,"props":2935,"children":2936},{"style":871},[2937],{"type":49,"value":2864},{"type":43,"tag":830,"props":2939,"children":2940},{"style":2867},[2941],{"type":49,"value":2942},"permission",{"type":43,"tag":830,"props":2944,"children":2945},{"style":871},[2946],{"type":49,"value":2359},{"type":43,"tag":830,"props":2948,"children":2949},{"style":871},[2950],{"type":49,"value":2721},{"type":43,"tag":830,"props":2952,"children":2953},{"style":871},[2954],{"type":49,"value":2349},{"type":43,"tag":830,"props":2956,"children":2957},{"style":842},[2958],{"type":49,"value":2959},"CAN_CONNECT_AND_CREATE",{"type":43,"tag":830,"props":2961,"children":2962},{"style":871},[2963],{"type":49,"value":2964},"\"\n",{"type":43,"tag":830,"props":2966,"children":2967},{"class":832,"line":2391},[2968],{"type":43,"tag":830,"props":2969,"children":2970},{"style":871},[2971],{"type":49,"value":2972},"        }\n",{"type":43,"tag":830,"props":2974,"children":2976},{"class":832,"line":2975},12,[2977],{"type":43,"tag":830,"props":2978,"children":2979},{"style":871},[2980],{"type":49,"value":2981},"      }\n",{"type":43,"tag":830,"props":2983,"children":2985},{"class":832,"line":2984},13,[2986],{"type":43,"tag":830,"props":2987,"children":2988},{"style":871},[2989],{"type":49,"value":2990},"    ]\n",{"type":43,"tag":830,"props":2992,"children":2994},{"class":832,"line":2993},14,[2995],{"type":43,"tag":830,"props":2996,"children":2997},{"style":871},[2998],{"type":49,"value":2999},"  }\n",{"type":43,"tag":830,"props":3001,"children":3003},{"class":832,"line":3002},15,[3004],{"type":43,"tag":830,"props":3005,"children":3006},{"style":871},[3007],{"type":49,"value":3008},"}\n",{"type":43,"tag":52,"props":3010,"children":3011},{},[3012,3024,3026,3031,3033,3039,3041,3046],{"type":43,"tag":56,"props":3013,"children":3014},{},[3015,3017,3022],{"type":49,"value":3016},"Confirm the branch\u002Fdatabase with the user — don't default to ",{"type":43,"tag":64,"props":3018,"children":3020},{"className":3019},[],[3021],{"type":49,"value":585},{"type":49,"value":3023}," silently.",{"type":49,"value":3025}," The app's service principal must be able to create and ",{"type":43,"tag":56,"props":3027,"children":3028},{},[3029],{"type":49,"value":3030},"own",{"type":49,"value":3032}," the schema(s) it uses there, so avoid a branch\u002Fdatabase where those schema names are already owned by a user (the SP will hit ",{"type":43,"tag":64,"props":3034,"children":3036},{"className":3035},[],[3037],{"type":49,"value":3038},"permission denied … 42501",{"type":49,"value":3040},") — a fresh\u002Fdedicated branch, or a new app-owned schema, is cleanest. See ",{"type":43,"tag":56,"props":3042,"children":3043},{},[3044],{"type":49,"value":3045},"Schema Permissions for Deployed Apps",{"type":49,"value":3047}," below for the full ownership model.",{"type":43,"tag":680,"props":3049,"children":3051},{"id":3050},"schema-permissions-for-deployed-apps",[3052],{"type":49,"value":3045},{"type":43,"tag":52,"props":3054,"children":3055},{},[3056,3058,3063,3065,3070],{"type":49,"value":3057},"The app's Service Principal has ",{"type":43,"tag":64,"props":3059,"children":3061},{"className":3060},[],[3062],{"type":49,"value":2959},{"type":49,"value":3064}," -- it can create new objects but ",{"type":43,"tag":56,"props":3066,"children":3067},{},[3068],{"type":49,"value":3069},"cannot access existing schemas",{"type":49,"value":3071},". The SP must create the schema to become its owner.",{"type":43,"tag":52,"props":3073,"children":3074},{},[3075,3080],{"type":43,"tag":56,"props":3076,"children":3077},{},[3078],{"type":49,"value":3079},"ALWAYS deploy the app before running it locally.",{"type":49,"value":3081}," This is the #1 source of Lakebase permission errors.",{"type":43,"tag":52,"props":3083,"children":3084},{},[3085],{"type":43,"tag":56,"props":3086,"children":3087},{},[3088],{"type":49,"value":3089},"Correct workflow:",{"type":43,"tag":3091,"props":3092,"children":3093},"ol",{},[3094,3110,3136],{"type":43,"tag":370,"props":3095,"children":3096},{},[3097,3102,3104],{"type":43,"tag":56,"props":3098,"children":3099},{},[3100],{"type":49,"value":3101},"Deploy first",{"type":49,"value":3103},": ",{"type":43,"tag":64,"props":3105,"children":3107},{"className":3106},[],[3108],{"type":49,"value":3109},"databricks apps deploy \u003CAPP_NAME> --profile \u003CPROFILE>",{"type":43,"tag":370,"props":3111,"children":3112},{},[3113,3118,3120,3126,3128,3134],{"type":43,"tag":56,"props":3114,"children":3115},{},[3116],{"type":49,"value":3117},"Grant local access",{"type":49,"value":3119}," ",{"type":43,"tag":3121,"props":3122,"children":3123},"em",{},[3124],{"type":49,"value":3125},"(if needed)",{"type":49,"value":3127},": assign ",{"type":43,"tag":64,"props":3129,"children":3131},{"className":3130},[],[3132],{"type":49,"value":3133},"databricks_superuser",{"type":49,"value":3135}," via UI (project creators already have access)",{"type":43,"tag":370,"props":3137,"children":3138},{},[3139,3144],{"type":43,"tag":56,"props":3140,"children":3141},{},[3142],{"type":49,"value":3143},"Develop locally",{"type":49,"value":3145},": your credentials get DML access to SP-owned schemas",{"type":43,"tag":52,"props":3147,"children":3148},{},[3149,3154,3156,3162,3164,3169],{"type":43,"tag":56,"props":3150,"children":3151},{},[3152],{"type":49,"value":3153},"If you already ran locally first",{"type":49,"value":3155}," and hit ",{"type":43,"tag":64,"props":3157,"children":3159},{"className":3158},[],[3160],{"type":49,"value":3161},"permission denied",{"type":49,"value":3163},": the schema is owned by your credentials, not the SP. ",{"type":43,"tag":56,"props":3165,"children":3166},{},[3167],{"type":49,"value":3168},"Do NOT drop the schema without asking the user",{"type":49,"value":3170}," -- dropping it deletes all data.",{"type":43,"tag":52,"props":3172,"children":3173},{},[3174],{"type":49,"value":3175},"Ask the user to choose:",{"type":43,"tag":366,"props":3177,"children":3178},{},[3179,3204],{"type":43,"tag":370,"props":3180,"children":3181},{},[3182,3187,3188,3194,3196,3202],{"type":43,"tag":56,"props":3183,"children":3184},{},[3185],{"type":49,"value":3186},"(A) Drop and redeploy:",{"type":49,"value":3119},{"type":43,"tag":64,"props":3189,"children":3191},{"className":3190},[],[3192],{"type":49,"value":3193},"databricks psql --project \u003CPROJECT_ID> -- -c \"DROP SCHEMA IF EXISTS \u003CSCHEMA_NAME> CASCADE;\"",{"type":49,"value":3195},", then ",{"type":43,"tag":64,"props":3197,"children":3199},{"className":3198},[],[3200],{"type":49,"value":3201},"databricks apps deploy",{"type":49,"value":3203}," from the app directory. The SP recreates the schema on startup.",{"type":43,"tag":370,"props":3205,"children":3206},{},[3207,3212,3214,3220,3222,3228,3230,3235,3237,3243,3245,3251],{"type":43,"tag":56,"props":3208,"children":3209},{},[3210],{"type":49,"value":3211},"(B) Export first, then drop and redeploy:",{"type":49,"value":3213}," export via ",{"type":43,"tag":64,"props":3215,"children":3217},{"className":3216},[],[3218],{"type":49,"value":3219},"pg_dump",{"type":49,"value":3221}," (use connection details from ",{"type":43,"tag":64,"props":3223,"children":3225},{"className":3224},[],[3226],{"type":49,"value":3227},"databricks postgres get-endpoint",{"type":49,"value":3229},"; see ",{"type":43,"tag":56,"props":3231,"children":3232},{},[3233],{"type":49,"value":3234},"Other Workflows",{"type":49,"value":3236}," below for HOST and TOKEN) or copy tables to a temp schema using ",{"type":43,"tag":64,"props":3238,"children":3240},{"className":3239},[],[3241],{"type":49,"value":3242},"databricks psql --project \u003CPROJECT_ID>",{"type":49,"value":3244},", then do option A. After the SP recreates the schema on redeploy, restore with ",{"type":43,"tag":64,"props":3246,"children":3248},{"className":3247},[],[3249],{"type":49,"value":3250},"pg_restore",{"type":49,"value":3252}," or re-INSERT from the temp schema.",{"type":43,"tag":680,"props":3254,"children":3256},{"id":3255},"other-workflows",[3257],{"type":49,"value":3234},{"type":43,"tag":557,"props":3259,"children":3261},{"className":822,"code":3260,"language":824,"meta":565,"style":565},"# Connect a Postgres client -- get connection string\ndatabricks postgres get-endpoint projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID> --profile \u003CPROFILE>\n\n# Manage roles\ndatabricks postgres create-role -h\n\n# Add a read replica\ndatabricks postgres create-endpoint projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID> \u003CENDPOINT_ID> \\\n  --json '{\"spec\": {\"type\": \"ENDPOINT_TYPE_READ_ONLY\"}}' --profile \u003CPROFILE>\n",[3262],{"type":43,"tag":64,"props":3263,"children":3264},{"__ignoreMap":565},[3265,3273,3371,3378,3386,3407,3414,3422,3498],{"type":43,"tag":830,"props":3266,"children":3267},{"class":832,"line":833},[3268],{"type":43,"tag":830,"props":3269,"children":3270},{"style":853},[3271],{"type":49,"value":3272},"# Connect a Postgres client -- get connection string\n",{"type":43,"tag":830,"props":3274,"children":3275},{"class":832,"line":859},[3276,3280,3284,3289,3293,3297,3301,3305,3309,3313,3317,3321,3325,3329,3334,3338,3343,3347,3351,3355,3359,3363,3367],{"type":43,"tag":830,"props":3277,"children":3278},{"style":837},[3279],{"type":49,"value":8},{"type":43,"tag":830,"props":3281,"children":3282},{"style":842},[3283],{"type":49,"value":845},{"type":43,"tag":830,"props":3285,"children":3286},{"style":842},[3287],{"type":49,"value":3288}," get-endpoint",{"type":43,"tag":830,"props":3290,"children":3291},{"style":842},[3292],{"type":49,"value":1102},{"type":43,"tag":830,"props":3294,"children":3295},{"style":871},[3296],{"type":49,"value":1107},{"type":43,"tag":830,"props":3298,"children":3299},{"style":842},[3300],{"type":49,"value":973},{"type":43,"tag":830,"props":3302,"children":3303},{"style":882},[3304],{"type":49,"value":978},{"type":43,"tag":830,"props":3306,"children":3307},{"style":871},[3308],{"type":49,"value":890},{"type":43,"tag":830,"props":3310,"children":3311},{"style":842},[3312],{"type":49,"value":1181},{"type":43,"tag":830,"props":3314,"children":3315},{"style":871},[3316],{"type":49,"value":1107},{"type":43,"tag":830,"props":3318,"children":3319},{"style":842},[3320],{"type":49,"value":1190},{"type":43,"tag":830,"props":3322,"children":3323},{"style":882},[3324],{"type":49,"value":978},{"type":43,"tag":830,"props":3326,"children":3327},{"style":871},[3328],{"type":49,"value":890},{"type":43,"tag":830,"props":3330,"children":3331},{"style":842},[3332],{"type":49,"value":3333},"\u002Fendpoints\u002F",{"type":43,"tag":830,"props":3335,"children":3336},{"style":871},[3337],{"type":49,"value":1107},{"type":43,"tag":830,"props":3339,"children":3340},{"style":842},[3341],{"type":49,"value":3342},"ENDPOINT_I",{"type":43,"tag":830,"props":3344,"children":3345},{"style":882},[3346],{"type":49,"value":978},{"type":43,"tag":830,"props":3348,"children":3349},{"style":871},[3350],{"type":49,"value":890},{"type":43,"tag":830,"props":3352,"children":3353},{"style":842},[3354],{"type":49,"value":1124},{"type":43,"tag":830,"props":3356,"children":3357},{"style":871},[3358],{"type":49,"value":874},{"type":43,"tag":830,"props":3360,"children":3361},{"style":842},[3362],{"type":49,"value":1032},{"type":43,"tag":830,"props":3364,"children":3365},{"style":882},[3366],{"type":49,"value":1037},{"type":43,"tag":830,"props":3368,"children":3369},{"style":871},[3370],{"type":49,"value":1042},{"type":43,"tag":830,"props":3372,"children":3373},{"class":832,"line":1017},[3374],{"type":43,"tag":830,"props":3375,"children":3376},{"emptyLinePlaceholder":2176},[3377],{"type":49,"value":2179},{"type":43,"tag":830,"props":3379,"children":3380},{"class":832,"line":2182},[3381],{"type":43,"tag":830,"props":3382,"children":3383},{"style":853},[3384],{"type":49,"value":3385},"# Manage roles\n",{"type":43,"tag":830,"props":3387,"children":3388},{"class":832,"line":2191},[3389,3393,3397,3402],{"type":43,"tag":830,"props":3390,"children":3391},{"style":837},[3392],{"type":49,"value":8},{"type":43,"tag":830,"props":3394,"children":3395},{"style":842},[3396],{"type":49,"value":845},{"type":43,"tag":830,"props":3398,"children":3399},{"style":842},[3400],{"type":49,"value":3401}," create-role",{"type":43,"tag":830,"props":3403,"children":3404},{"style":842},[3405],{"type":49,"value":3406}," -h\n",{"type":43,"tag":830,"props":3408,"children":3409},{"class":832,"line":2267},[3410],{"type":43,"tag":830,"props":3411,"children":3412},{"emptyLinePlaceholder":2176},[3413],{"type":49,"value":2179},{"type":43,"tag":830,"props":3415,"children":3416},{"class":832,"line":2275},[3417],{"type":43,"tag":830,"props":3418,"children":3419},{"style":853},[3420],{"type":49,"value":3421},"# Add a read replica\n",{"type":43,"tag":830,"props":3423,"children":3424},{"class":832,"line":2284},[3425,3429,3433,3438,3442,3446,3450,3454,3458,3462,3466,3470,3474,3478,3482,3486,3490,3494],{"type":43,"tag":830,"props":3426,"children":3427},{"style":837},[3428],{"type":49,"value":8},{"type":43,"tag":830,"props":3430,"children":3431},{"style":842},[3432],{"type":49,"value":845},{"type":43,"tag":830,"props":3434,"children":3435},{"style":842},[3436],{"type":49,"value":3437}," create-endpoint",{"type":43,"tag":830,"props":3439,"children":3440},{"style":842},[3441],{"type":49,"value":1102},{"type":43,"tag":830,"props":3443,"children":3444},{"style":871},[3445],{"type":49,"value":1107},{"type":43,"tag":830,"props":3447,"children":3448},{"style":842},[3449],{"type":49,"value":973},{"type":43,"tag":830,"props":3451,"children":3452},{"style":882},[3453],{"type":49,"value":978},{"type":43,"tag":830,"props":3455,"children":3456},{"style":871},[3457],{"type":49,"value":890},{"type":43,"tag":830,"props":3459,"children":3460},{"style":842},[3461],{"type":49,"value":1181},{"type":43,"tag":830,"props":3463,"children":3464},{"style":871},[3465],{"type":49,"value":1107},{"type":43,"tag":830,"props":3467,"children":3468},{"style":842},[3469],{"type":49,"value":1190},{"type":43,"tag":830,"props":3471,"children":3472},{"style":882},[3473],{"type":49,"value":978},{"type":43,"tag":830,"props":3475,"children":3476},{"style":871},[3477],{"type":49,"value":890},{"type":43,"tag":830,"props":3479,"children":3480},{"style":871},[3481],{"type":49,"value":874},{"type":43,"tag":830,"props":3483,"children":3484},{"style":842},[3485],{"type":49,"value":3342},{"type":43,"tag":830,"props":3487,"children":3488},{"style":882},[3489],{"type":49,"value":978},{"type":43,"tag":830,"props":3491,"children":3492},{"style":871},[3493],{"type":49,"value":890},{"type":43,"tag":830,"props":3495,"children":3496},{"style":882},[3497],{"type":49,"value":987},{"type":43,"tag":830,"props":3499,"children":3500},{"class":832,"line":2338},[3501,3505,3509,3514,3518,3522,3526,3530,3534],{"type":43,"tag":830,"props":3502,"children":3503},{"style":842},[3504],{"type":49,"value":995},{"type":43,"tag":830,"props":3506,"children":3507},{"style":871},[3508],{"type":49,"value":1000},{"type":43,"tag":830,"props":3510,"children":3511},{"style":842},[3512],{"type":49,"value":3513},"{\"spec\": {\"type\": \"ENDPOINT_TYPE_READ_ONLY\"}}",{"type":43,"tag":830,"props":3515,"children":3516},{"style":871},[3517],{"type":49,"value":1010},{"type":43,"tag":830,"props":3519,"children":3520},{"style":842},[3521],{"type":49,"value":1124},{"type":43,"tag":830,"props":3523,"children":3524},{"style":871},[3525],{"type":49,"value":874},{"type":43,"tag":830,"props":3527,"children":3528},{"style":842},[3529],{"type":49,"value":1032},{"type":43,"tag":830,"props":3531,"children":3532},{"style":882},[3533],{"type":49,"value":1037},{"type":43,"tag":830,"props":3535,"children":3536},{"style":871},[3537],{"type":49,"value":1042},{"type":43,"tag":52,"props":3539,"children":3540},{},[3541,3546],{"type":43,"tag":56,"props":3542,"children":3543},{},[3544],{"type":49,"value":3545},"Run SQL against Lakebase",{"type":49,"value":3547}," (GRANT, CREATE INDEX, etc.):",{"type":43,"tag":557,"props":3549,"children":3551},{"className":822,"code":3550,"language":824,"meta":565,"style":565},"# 1. Get endpoint host\ndatabricks postgres get-endpoint projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID> --profile \u003CPROFILE>\n\n# 2. Generate OAuth token\ndatabricks postgres generate-database-credential \\\n  projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID> \\\n  --profile \u003CPROFILE>\n\n# 3. Connect (use token from step 2 as password, host from step 1)\nPGPASSWORD='\u003CTOKEN>' psql \"host=\u003CHOST> user=\u003CUSERNAME> dbname=databricks_postgres sslmode=require\"\n",[3552],{"type":43,"tag":64,"props":3553,"children":3554},{"__ignoreMap":565},[3555,3563,3658,3665,3673,3693,3761,3784,3791,3799],{"type":43,"tag":830,"props":3556,"children":3557},{"class":832,"line":833},[3558],{"type":43,"tag":830,"props":3559,"children":3560},{"style":853},[3561],{"type":49,"value":3562},"# 1. Get endpoint host\n",{"type":43,"tag":830,"props":3564,"children":3565},{"class":832,"line":859},[3566,3570,3574,3578,3582,3586,3590,3594,3598,3602,3606,3610,3614,3618,3622,3626,3630,3634,3638,3642,3646,3650,3654],{"type":43,"tag":830,"props":3567,"children":3568},{"style":837},[3569],{"type":49,"value":8},{"type":43,"tag":830,"props":3571,"children":3572},{"style":842},[3573],{"type":49,"value":845},{"type":43,"tag":830,"props":3575,"children":3576},{"style":842},[3577],{"type":49,"value":3288},{"type":43,"tag":830,"props":3579,"children":3580},{"style":842},[3581],{"type":49,"value":1102},{"type":43,"tag":830,"props":3583,"children":3584},{"style":871},[3585],{"type":49,"value":1107},{"type":43,"tag":830,"props":3587,"children":3588},{"style":842},[3589],{"type":49,"value":973},{"type":43,"tag":830,"props":3591,"children":3592},{"style":882},[3593],{"type":49,"value":978},{"type":43,"tag":830,"props":3595,"children":3596},{"style":871},[3597],{"type":49,"value":890},{"type":43,"tag":830,"props":3599,"children":3600},{"style":842},[3601],{"type":49,"value":1181},{"type":43,"tag":830,"props":3603,"children":3604},{"style":871},[3605],{"type":49,"value":1107},{"type":43,"tag":830,"props":3607,"children":3608},{"style":842},[3609],{"type":49,"value":1190},{"type":43,"tag":830,"props":3611,"children":3612},{"style":882},[3613],{"type":49,"value":978},{"type":43,"tag":830,"props":3615,"children":3616},{"style":871},[3617],{"type":49,"value":890},{"type":43,"tag":830,"props":3619,"children":3620},{"style":842},[3621],{"type":49,"value":3333},{"type":43,"tag":830,"props":3623,"children":3624},{"style":871},[3625],{"type":49,"value":1107},{"type":43,"tag":830,"props":3627,"children":3628},{"style":842},[3629],{"type":49,"value":3342},{"type":43,"tag":830,"props":3631,"children":3632},{"style":882},[3633],{"type":49,"value":978},{"type":43,"tag":830,"props":3635,"children":3636},{"style":871},[3637],{"type":49,"value":890},{"type":43,"tag":830,"props":3639,"children":3640},{"style":842},[3641],{"type":49,"value":1124},{"type":43,"tag":830,"props":3643,"children":3644},{"style":871},[3645],{"type":49,"value":874},{"type":43,"tag":830,"props":3647,"children":3648},{"style":842},[3649],{"type":49,"value":1032},{"type":43,"tag":830,"props":3651,"children":3652},{"style":882},[3653],{"type":49,"value":1037},{"type":43,"tag":830,"props":3655,"children":3656},{"style":871},[3657],{"type":49,"value":1042},{"type":43,"tag":830,"props":3659,"children":3660},{"class":832,"line":1017},[3661],{"type":43,"tag":830,"props":3662,"children":3663},{"emptyLinePlaceholder":2176},[3664],{"type":49,"value":2179},{"type":43,"tag":830,"props":3666,"children":3667},{"class":832,"line":2182},[3668],{"type":43,"tag":830,"props":3669,"children":3670},{"style":853},[3671],{"type":49,"value":3672},"# 2. Generate OAuth token\n",{"type":43,"tag":830,"props":3674,"children":3675},{"class":832,"line":2191},[3676,3680,3684,3689],{"type":43,"tag":830,"props":3677,"children":3678},{"style":837},[3679],{"type":49,"value":8},{"type":43,"tag":830,"props":3681,"children":3682},{"style":842},[3683],{"type":49,"value":845},{"type":43,"tag":830,"props":3685,"children":3686},{"style":842},[3687],{"type":49,"value":3688}," generate-database-credential",{"type":43,"tag":830,"props":3690,"children":3691},{"style":882},[3692],{"type":49,"value":987},{"type":43,"tag":830,"props":3694,"children":3695},{"class":832,"line":2267},[3696,3701,3705,3709,3713,3717,3721,3725,3729,3733,3737,3741,3745,3749,3753,3757],{"type":43,"tag":830,"props":3697,"children":3698},{"style":842},[3699],{"type":49,"value":3700},"  projects\u002F",{"type":43,"tag":830,"props":3702,"children":3703},{"style":871},[3704],{"type":49,"value":1107},{"type":43,"tag":830,"props":3706,"children":3707},{"style":842},[3708],{"type":49,"value":973},{"type":43,"tag":830,"props":3710,"children":3711},{"style":882},[3712],{"type":49,"value":978},{"type":43,"tag":830,"props":3714,"children":3715},{"style":871},[3716],{"type":49,"value":890},{"type":43,"tag":830,"props":3718,"children":3719},{"style":842},[3720],{"type":49,"value":1181},{"type":43,"tag":830,"props":3722,"children":3723},{"style":871},[3724],{"type":49,"value":1107},{"type":43,"tag":830,"props":3726,"children":3727},{"style":842},[3728],{"type":49,"value":1190},{"type":43,"tag":830,"props":3730,"children":3731},{"style":882},[3732],{"type":49,"value":978},{"type":43,"tag":830,"props":3734,"children":3735},{"style":871},[3736],{"type":49,"value":890},{"type":43,"tag":830,"props":3738,"children":3739},{"style":842},[3740],{"type":49,"value":3333},{"type":43,"tag":830,"props":3742,"children":3743},{"style":871},[3744],{"type":49,"value":1107},{"type":43,"tag":830,"props":3746,"children":3747},{"style":842},[3748],{"type":49,"value":3342},{"type":43,"tag":830,"props":3750,"children":3751},{"style":882},[3752],{"type":49,"value":978},{"type":43,"tag":830,"props":3754,"children":3755},{"style":871},[3756],{"type":49,"value":890},{"type":43,"tag":830,"props":3758,"children":3759},{"style":882},[3760],{"type":49,"value":987},{"type":43,"tag":830,"props":3762,"children":3763},{"class":832,"line":2275},[3764,3768,3772,3776,3780],{"type":43,"tag":830,"props":3765,"children":3766},{"style":842},[3767],{"type":49,"value":1023},{"type":43,"tag":830,"props":3769,"children":3770},{"style":871},[3771],{"type":49,"value":874},{"type":43,"tag":830,"props":3773,"children":3774},{"style":842},[3775],{"type":49,"value":1032},{"type":43,"tag":830,"props":3777,"children":3778},{"style":882},[3779],{"type":49,"value":1037},{"type":43,"tag":830,"props":3781,"children":3782},{"style":871},[3783],{"type":49,"value":1042},{"type":43,"tag":830,"props":3785,"children":3786},{"class":832,"line":2284},[3787],{"type":43,"tag":830,"props":3788,"children":3789},{"emptyLinePlaceholder":2176},[3790],{"type":49,"value":2179},{"type":43,"tag":830,"props":3792,"children":3793},{"class":832,"line":2338},[3794],{"type":43,"tag":830,"props":3795,"children":3796},{"style":853},[3797],{"type":49,"value":3798},"# 3. Connect (use token from step 2 as password, host from step 1)\n",{"type":43,"tag":830,"props":3800,"children":3801},{"class":832,"line":2366},[3802,3807,3812,3816,3821,3825,3830,3834,3839],{"type":43,"tag":830,"props":3803,"children":3804},{"style":882},[3805],{"type":49,"value":3806},"PGPASSWORD",{"type":43,"tag":830,"props":3808,"children":3809},{"style":871},[3810],{"type":49,"value":3811},"=",{"type":43,"tag":830,"props":3813,"children":3814},{"style":871},[3815],{"type":49,"value":1010},{"type":43,"tag":830,"props":3817,"children":3818},{"style":842},[3819],{"type":49,"value":3820},"\u003CTOKEN>",{"type":43,"tag":830,"props":3822,"children":3823},{"style":871},[3824],{"type":49,"value":1010},{"type":43,"tag":830,"props":3826,"children":3827},{"style":837},[3828],{"type":49,"value":3829}," psql",{"type":43,"tag":830,"props":3831,"children":3832},{"style":871},[3833],{"type":49,"value":2349},{"type":43,"tag":830,"props":3835,"children":3836},{"style":842},[3837],{"type":49,"value":3838},"host=\u003CHOST> user=\u003CUSERNAME> dbname=databricks_postgres sslmode=require",{"type":43,"tag":830,"props":3840,"children":3841},{"style":871},[3842],{"type":49,"value":2964},{"type":43,"tag":77,"props":3844,"children":3845},{},[3846],{"type":43,"tag":52,"props":3847,"children":3848},{},[3849,3853,3854,3860,3862,3867,3869,3875],{"type":43,"tag":56,"props":3850,"children":3851},{},[3852],{"type":49,"value":793},{"type":49,"value":3119},{"type":43,"tag":64,"props":3855,"children":3857},{"className":3856},[],[3858],{"type":49,"value":3859},"generate-database-credential",{"type":49,"value":3861}," requires the ",{"type":43,"tag":56,"props":3863,"children":3864},{},[3865],{"type":49,"value":3866},"endpoint",{"type":49,"value":3868}," resource path (",{"type":43,"tag":64,"props":3870,"children":3872},{"className":3871},[],[3873],{"type":49,"value":3874},"...\u002Fendpoints\u002F\u003CENDPOINT_ID>",{"type":49,"value":3876},"), not a database or branch path.",{"type":43,"tag":52,"props":3878,"children":3879},{},[3880,3885],{"type":43,"tag":56,"props":3881,"children":3882},{},[3883],{"type":49,"value":3884},"Scriptable version",{"type":49,"value":3886}," (single copy-paste, useful for agents):",{"type":43,"tag":557,"props":3888,"children":3890},{"className":822,"code":3889,"language":824,"meta":565,"style":565},"EP=projects\u002F\u003CPROJECT_ID>\u002Fbranches\u002F\u003CBRANCH_ID>\u002Fendpoints\u002F\u003CENDPOINT_ID>\n# get-endpoint JSON shape: {\"status\": {\"hosts\": {\"host\": \"\u003CHOSTNAME>\"}, ...}, ...}\nHOST=$(databricks postgres get-endpoint $EP --profile \u003CPROFILE> -o json \\\n  | python3 -c \"import json,sys; print(json.load(sys.stdin)['status']['hosts']['host'])\")\nTOKEN=$(databricks postgres generate-database-credential $EP --profile \u003CPROFILE> -o json \\\n  | python3 -c \"import json,sys; print(json.load(sys.stdin)['token'])\")\nPGPASSWORD=\"$TOKEN\" psql \"host=$HOST user=\u003CUSERNAME> dbname=databricks_postgres sslmode=require\"\n",[3891],{"type":43,"tag":64,"props":3892,"children":3893},{"__ignoreMap":565},[3894,3958,3966,4031,4067,4127,4159],{"type":43,"tag":830,"props":3895,"children":3896},{"class":832,"line":833},[3897,3902,3906,3911,3915,3920,3924,3928,3932,3937,3941,3945,3949,3954],{"type":43,"tag":830,"props":3898,"children":3899},{"style":882},[3900],{"type":49,"value":3901},"EP",{"type":43,"tag":830,"props":3903,"children":3904},{"style":871},[3905],{"type":49,"value":3811},{"type":43,"tag":830,"props":3907,"children":3908},{"style":842},[3909],{"type":49,"value":3910},"projects\u002F",{"type":43,"tag":830,"props":3912,"children":3913},{"style":871},[3914],{"type":49,"value":1107},{"type":43,"tag":830,"props":3916,"children":3917},{"style":842},[3918],{"type":49,"value":3919},"PROJECT_ID",{"type":43,"tag":830,"props":3921,"children":3922},{"style":871},[3923],{"type":49,"value":890},{"type":43,"tag":830,"props":3925,"children":3926},{"style":842},[3927],{"type":49,"value":1181},{"type":43,"tag":830,"props":3929,"children":3930},{"style":871},[3931],{"type":49,"value":1107},{"type":43,"tag":830,"props":3933,"children":3934},{"style":842},[3935],{"type":49,"value":3936},"BRANCH_ID",{"type":43,"tag":830,"props":3938,"children":3939},{"style":871},[3940],{"type":49,"value":890},{"type":43,"tag":830,"props":3942,"children":3943},{"style":842},[3944],{"type":49,"value":3333},{"type":43,"tag":830,"props":3946,"children":3947},{"style":871},[3948],{"type":49,"value":1107},{"type":43,"tag":830,"props":3950,"children":3951},{"style":842},[3952],{"type":49,"value":3953},"ENDPOINT_ID",{"type":43,"tag":830,"props":3955,"children":3956},{"style":871},[3957],{"type":49,"value":1042},{"type":43,"tag":830,"props":3959,"children":3960},{"class":832,"line":859},[3961],{"type":43,"tag":830,"props":3962,"children":3963},{"style":853},[3964],{"type":49,"value":3965},"# get-endpoint JSON shape: {\"status\": {\"hosts\": {\"host\": \"\u003CHOSTNAME>\"}, ...}, ...}\n",{"type":43,"tag":830,"props":3967,"children":3968},{"class":832,"line":1017},[3969,3974,3979,3983,3987,3991,3996,4001,4005,4009,4013,4017,4022,4027],{"type":43,"tag":830,"props":3970,"children":3971},{"style":882},[3972],{"type":49,"value":3973},"HOST",{"type":43,"tag":830,"props":3975,"children":3976},{"style":871},[3977],{"type":49,"value":3978},"=$(",{"type":43,"tag":830,"props":3980,"children":3981},{"style":837},[3982],{"type":49,"value":8},{"type":43,"tag":830,"props":3984,"children":3985},{"style":842},[3986],{"type":49,"value":845},{"type":43,"tag":830,"props":3988,"children":3989},{"style":842},[3990],{"type":49,"value":3288},{"type":43,"tag":830,"props":3992,"children":3993},{"style":882},[3994],{"type":49,"value":3995}," $EP ",{"type":43,"tag":830,"props":3997,"children":3998},{"style":842},[3999],{"type":49,"value":4000},"--profile",{"type":43,"tag":830,"props":4002,"children":4003},{"style":871},[4004],{"type":49,"value":874},{"type":43,"tag":830,"props":4006,"children":4007},{"style":842},[4008],{"type":49,"value":1032},{"type":43,"tag":830,"props":4010,"children":4011},{"style":882},[4012],{"type":49,"value":1037},{"type":43,"tag":830,"props":4014,"children":4015},{"style":871},[4016],{"type":49,"value":890},{"type":43,"tag":830,"props":4018,"children":4019},{"style":842},[4020],{"type":49,"value":4021}," -o",{"type":43,"tag":830,"props":4023,"children":4024},{"style":842},[4025],{"type":49,"value":4026}," json",{"type":43,"tag":830,"props":4028,"children":4029},{"style":882},[4030],{"type":49,"value":987},{"type":43,"tag":830,"props":4032,"children":4033},{"class":832,"line":2182},[4034,4039,4044,4049,4053,4058,4062],{"type":43,"tag":830,"props":4035,"children":4036},{"style":871},[4037],{"type":49,"value":4038},"  |",{"type":43,"tag":830,"props":4040,"children":4041},{"style":837},[4042],{"type":49,"value":4043}," python3",{"type":43,"tag":830,"props":4045,"children":4046},{"style":842},[4047],{"type":49,"value":4048}," -c",{"type":43,"tag":830,"props":4050,"children":4051},{"style":871},[4052],{"type":49,"value":2349},{"type":43,"tag":830,"props":4054,"children":4055},{"style":842},[4056],{"type":49,"value":4057},"import json,sys; print(json.load(sys.stdin)['status']['hosts']['host'])",{"type":43,"tag":830,"props":4059,"children":4060},{"style":871},[4061],{"type":49,"value":2359},{"type":43,"tag":830,"props":4063,"children":4064},{"style":871},[4065],{"type":49,"value":4066},")\n",{"type":43,"tag":830,"props":4068,"children":4069},{"class":832,"line":2191},[4070,4075,4079,4083,4087,4091,4095,4099,4103,4107,4111,4115,4119,4123],{"type":43,"tag":830,"props":4071,"children":4072},{"style":882},[4073],{"type":49,"value":4074},"TOKEN",{"type":43,"tag":830,"props":4076,"children":4077},{"style":871},[4078],{"type":49,"value":3978},{"type":43,"tag":830,"props":4080,"children":4081},{"style":837},[4082],{"type":49,"value":8},{"type":43,"tag":830,"props":4084,"children":4085},{"style":842},[4086],{"type":49,"value":845},{"type":43,"tag":830,"props":4088,"children":4089},{"style":842},[4090],{"type":49,"value":3688},{"type":43,"tag":830,"props":4092,"children":4093},{"style":882},[4094],{"type":49,"value":3995},{"type":43,"tag":830,"props":4096,"children":4097},{"style":842},[4098],{"type":49,"value":4000},{"type":43,"tag":830,"props":4100,"children":4101},{"style":871},[4102],{"type":49,"value":874},{"type":43,"tag":830,"props":4104,"children":4105},{"style":842},[4106],{"type":49,"value":1032},{"type":43,"tag":830,"props":4108,"children":4109},{"style":882},[4110],{"type":49,"value":1037},{"type":43,"tag":830,"props":4112,"children":4113},{"style":871},[4114],{"type":49,"value":890},{"type":43,"tag":830,"props":4116,"children":4117},{"style":842},[4118],{"type":49,"value":4021},{"type":43,"tag":830,"props":4120,"children":4121},{"style":842},[4122],{"type":49,"value":4026},{"type":43,"tag":830,"props":4124,"children":4125},{"style":882},[4126],{"type":49,"value":987},{"type":43,"tag":830,"props":4128,"children":4129},{"class":832,"line":2267},[4130,4134,4138,4142,4146,4151,4155],{"type":43,"tag":830,"props":4131,"children":4132},{"style":871},[4133],{"type":49,"value":4038},{"type":43,"tag":830,"props":4135,"children":4136},{"style":837},[4137],{"type":49,"value":4043},{"type":43,"tag":830,"props":4139,"children":4140},{"style":842},[4141],{"type":49,"value":4048},{"type":43,"tag":830,"props":4143,"children":4144},{"style":871},[4145],{"type":49,"value":2349},{"type":43,"tag":830,"props":4147,"children":4148},{"style":842},[4149],{"type":49,"value":4150},"import json,sys; print(json.load(sys.stdin)['token'])",{"type":43,"tag":830,"props":4152,"children":4153},{"style":871},[4154],{"type":49,"value":2359},{"type":43,"tag":830,"props":4156,"children":4157},{"style":871},[4158],{"type":49,"value":4066},{"type":43,"tag":830,"props":4160,"children":4161},{"class":832,"line":2275},[4162,4166,4170,4174,4179,4183,4187,4191,4196,4201,4206],{"type":43,"tag":830,"props":4163,"children":4164},{"style":882},[4165],{"type":49,"value":3806},{"type":43,"tag":830,"props":4167,"children":4168},{"style":871},[4169],{"type":49,"value":3811},{"type":43,"tag":830,"props":4171,"children":4172},{"style":871},[4173],{"type":49,"value":2359},{"type":43,"tag":830,"props":4175,"children":4176},{"style":882},[4177],{"type":49,"value":4178},"$TOKEN",{"type":43,"tag":830,"props":4180,"children":4181},{"style":871},[4182],{"type":49,"value":2359},{"type":43,"tag":830,"props":4184,"children":4185},{"style":837},[4186],{"type":49,"value":3829},{"type":43,"tag":830,"props":4188,"children":4189},{"style":871},[4190],{"type":49,"value":2349},{"type":43,"tag":830,"props":4192,"children":4193},{"style":842},[4194],{"type":49,"value":4195},"host=",{"type":43,"tag":830,"props":4197,"children":4198},{"style":882},[4199],{"type":49,"value":4200},"$HOST",{"type":43,"tag":830,"props":4202,"children":4203},{"style":842},[4204],{"type":49,"value":4205}," user=\u003CUSERNAME> dbname=databricks_postgres sslmode=require",{"type":43,"tag":830,"props":4207,"children":4208},{"style":871},[4209],{"type":49,"value":2964},{"type":43,"tag":52,"props":4211,"children":4212},{},[4213,4218],{"type":43,"tag":56,"props":4214,"children":4215},{},[4216],{"type":49,"value":4217},"Grant app SP access to synced tables",{"type":49,"value":4219}," (run as project owner after sync is ONLINE and app is deployed):",{"type":43,"tag":557,"props":4221,"children":4225},{"className":4222,"code":4223,"language":4224,"meta":565,"style":565},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GRANT USAGE ON SCHEMA public TO \"\u003CSP_CLIENT_ID>\";\nGRANT SELECT ON ALL TABLES IN SCHEMA public TO \"\u003CSP_CLIENT_ID>\";\nALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO \"\u003CSP_CLIENT_ID>\";\n","sql",[4226],{"type":43,"tag":64,"props":4227,"children":4228},{"__ignoreMap":565},[4229,4237,4245],{"type":43,"tag":830,"props":4230,"children":4231},{"class":832,"line":833},[4232],{"type":43,"tag":830,"props":4233,"children":4234},{},[4235],{"type":49,"value":4236},"GRANT USAGE ON SCHEMA public TO \"\u003CSP_CLIENT_ID>\";\n",{"type":43,"tag":830,"props":4238,"children":4239},{"class":832,"line":859},[4240],{"type":43,"tag":830,"props":4241,"children":4242},{},[4243],{"type":49,"value":4244},"GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"\u003CSP_CLIENT_ID>\";\n",{"type":43,"tag":830,"props":4246,"children":4247},{"class":832,"line":1017},[4248],{"type":43,"tag":830,"props":4249,"children":4250},{},[4251],{"type":49,"value":4252},"ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO \"\u003CSP_CLIENT_ID>\";\n",{"type":43,"tag":52,"props":4254,"children":4255},{},[4256,4258,4264],{"type":49,"value":4257},"For least-privilege, consider syncing into a dedicated schema instead of ",{"type":43,"tag":64,"props":4259,"children":4261},{"className":4260},[],[4262],{"type":49,"value":4263},"public",{"type":49,"value":4265}," so the grant is scoped to synced data only.",{"type":43,"tag":52,"props":4267,"children":4268},{},[4269,4271,4277,4279,4285],{"type":49,"value":4270},"Get SP client ID: ",{"type":43,"tag":64,"props":4272,"children":4274},{"className":4273},[],[4275],{"type":49,"value":4276},"databricks apps get \u003CAPP_NAME> --profile \u003CPROFILE>",{"type":49,"value":4278}," → ",{"type":43,"tag":64,"props":4280,"children":4282},{"className":4281},[],[4283],{"type":49,"value":4284},"service_principal_client_id",{"type":49,"value":4286}," field.",{"type":43,"tag":52,"props":4288,"children":4289},{},[4290,4295,4297,4301,4303,4308,4310,4314],{"type":43,"tag":56,"props":4291,"children":4292},{},[4293],{"type":49,"value":4294},"Data API:",{"type":49,"value":4296}," PostgREST-compatible HTTP CRUD on Postgres tables. See ",{"type":43,"tag":473,"props":4298,"children":4299},{"href":486},[4300],{"type":49,"value":489},{"type":49,"value":4302},".\n",{"type":43,"tag":56,"props":4304,"children":4305},{},[4306],{"type":49,"value":4307},"Synced Tables:",{"type":49,"value":4309}," Sync Delta tables into Lakebase. See ",{"type":43,"tag":473,"props":4311,"children":4312},{"href":158},[4313],{"type":49,"value":499},{"type":49,"value":621},{"type":43,"tag":359,"props":4316,"children":4318},{"id":4317},"postgresql-extensions",[4319],{"type":49,"value":4320},"PostgreSQL Extensions",{"type":43,"tag":52,"props":4322,"children":4323},{},[4324,4326,4332,4334,4340,4342,4350],{"type":49,"value":4325},"Lakebase supports PostgreSQL extensions (e.g., ",{"type":43,"tag":64,"props":4327,"children":4329},{"className":4328},[],[4330],{"type":49,"value":4331},"pgvector",{"type":49,"value":4333}," for vector embeddings, ",{"type":43,"tag":64,"props":4335,"children":4337},{"className":4336},[],[4338],{"type":49,"value":4339},"pg_stat_statements",{"type":49,"value":4341}," for query statistics). See the ",{"type":43,"tag":473,"props":4343,"children":4347},{"href":4344,"rel":4345},"https:\u002F\u002Fdocs.databricks.com\u002Faws\u002Fen\u002Foltp\u002Fprojects\u002Fextensions",[4346],"nofollow",[4348],{"type":49,"value":4349},"full list of supported extensions",{"type":49,"value":621},{"type":43,"tag":557,"props":4352,"children":4354},{"className":4222,"code":4353,"language":4224,"meta":565,"style":565},"-- List available extensions\nSELECT * FROM pg_available_extensions ORDER BY name;\n\n-- Install an extension\nCREATE EXTENSION IF NOT EXISTS \u003Cextension_name>;\n",[4355],{"type":43,"tag":64,"props":4356,"children":4357},{"__ignoreMap":565},[4358,4366,4374,4381,4389],{"type":43,"tag":830,"props":4359,"children":4360},{"class":832,"line":833},[4361],{"type":43,"tag":830,"props":4362,"children":4363},{},[4364],{"type":49,"value":4365},"-- List available extensions\n",{"type":43,"tag":830,"props":4367,"children":4368},{"class":832,"line":859},[4369],{"type":43,"tag":830,"props":4370,"children":4371},{},[4372],{"type":49,"value":4373},"SELECT * FROM pg_available_extensions ORDER BY name;\n",{"type":43,"tag":830,"props":4375,"children":4376},{"class":832,"line":1017},[4377],{"type":43,"tag":830,"props":4378,"children":4379},{"emptyLinePlaceholder":2176},[4380],{"type":49,"value":2179},{"type":43,"tag":830,"props":4382,"children":4383},{"class":832,"line":2182},[4384],{"type":43,"tag":830,"props":4385,"children":4386},{},[4387],{"type":49,"value":4388},"-- Install an extension\n",{"type":43,"tag":830,"props":4390,"children":4391},{"class":832,"line":2191},[4392],{"type":43,"tag":830,"props":4393,"children":4394},{},[4395],{"type":49,"value":4396},"CREATE EXTENSION IF NOT EXISTS \u003Cextension_name>;\n",{"type":43,"tag":52,"props":4398,"children":4399},{},[4400,4402,4406],{"type":49,"value":4401},"For vector embeddings with pgvector, see ",{"type":43,"tag":473,"props":4403,"children":4404},{"href":525},[4405],{"type":49,"value":528},{"type":49,"value":621},{"type":43,"tag":359,"props":4408,"children":4410},{"id":4409},"troubleshooting",[4411],{"type":49,"value":4412},"Troubleshooting",{"type":43,"tag":167,"props":4414,"children":4415},{},[4416,4432],{"type":43,"tag":171,"props":4417,"children":4418},{},[4419],{"type":43,"tag":175,"props":4420,"children":4421},{},[4422,4427],{"type":43,"tag":179,"props":4423,"children":4424},{},[4425],{"type":49,"value":4426},"Error",{"type":43,"tag":179,"props":4428,"children":4429},{},[4430],{"type":49,"value":4431},"Solution",{"type":43,"tag":195,"props":4433,"children":4434},{},[4435,4459,4476,4523,4553,4578,4596,4609,4622,4635,4654,4682,4695,4745,4770,4791,4828,4847,4860],{"type":43,"tag":175,"props":4436,"children":4437},{},[4438,4447],{"type":43,"tag":202,"props":4439,"children":4440},{},[4441],{"type":43,"tag":64,"props":4442,"children":4444},{"className":4443},[],[4445],{"type":49,"value":4446},"cannot configure default credentials",{"type":43,"tag":202,"props":4448,"children":4449},{},[4450,4452,4457],{"type":49,"value":4451},"Use ",{"type":43,"tag":64,"props":4453,"children":4455},{"className":4454},[],[4456],{"type":49,"value":4000},{"type":49,"value":4458}," flag or authenticate first",{"type":43,"tag":175,"props":4460,"children":4461},{},[4462,4471],{"type":43,"tag":202,"props":4463,"children":4464},{},[4465],{"type":43,"tag":64,"props":4466,"children":4468},{"className":4467},[],[4469],{"type":49,"value":4470},"PERMISSION_DENIED",{"type":43,"tag":202,"props":4472,"children":4473},{},[4474],{"type":49,"value":4475},"Check workspace permissions",{"type":43,"tag":175,"props":4477,"children":4478},{},[4479,4488],{"type":43,"tag":202,"props":4480,"children":4481},{},[4482],{"type":43,"tag":64,"props":4483,"children":4485},{"className":4484},[],[4486],{"type":49,"value":4487},"permission denied for schema",{"type":43,"tag":202,"props":4489,"children":4490},{},[4491,4493,4498,4500,4505,4507,4513,4515,4521],{"type":49,"value":4492},"Schema owned by another role. If app not yet deployed: deploy first so the SP creates and owns the schema. If deployed but hitting this error (dev ran locally first): warn user about data loss, offer to export first (",{"type":43,"tag":64,"props":4494,"children":4496},{"className":4495},[],[4497],{"type":49,"value":3219},{"type":49,"value":4499}," with connection details from ",{"type":43,"tag":64,"props":4501,"children":4503},{"className":4502},[],[4504],{"type":49,"value":3227},{"type":49,"value":4506},", or temp schema copy via ",{"type":43,"tag":64,"props":4508,"children":4510},{"className":4509},[],[4511],{"type":49,"value":4512},"databricks psql",{"type":49,"value":4514},"), then ",{"type":43,"tag":64,"props":4516,"children":4518},{"className":4517},[],[4519],{"type":49,"value":4520},"DROP SCHEMA IF EXISTS \u003CSCHEMA_NAME> CASCADE",{"type":49,"value":4522}," + redeploy.",{"type":43,"tag":175,"props":4524,"children":4525},{},[4526,4531],{"type":43,"tag":202,"props":4527,"children":4528},{},[4529],{"type":49,"value":4530},"Protected branch won't delete",{"type":43,"tag":202,"props":4532,"children":4533},{},[4534,4539,4540,4545,4546,4551],{"type":43,"tag":64,"props":4535,"children":4537},{"className":4536},[],[4538],{"type":49,"value":2053},{"type":49,"value":2055},{"type":43,"tag":64,"props":4541,"children":4543},{"className":4542},[],[4544],{"type":49,"value":2061},{"type":49,"value":2063},{"type":43,"tag":64,"props":4547,"children":4549},{"className":4548},[],[4550],{"type":49,"value":2069},{"type":49,"value":4552}," first",{"type":43,"tag":175,"props":4554,"children":4555},{},[4556,4561],{"type":43,"tag":202,"props":4557,"children":4558},{},[4559],{"type":49,"value":4560},"Long-running operation timeout",{"type":43,"tag":202,"props":4562,"children":4563},{},[4564,4565,4570,4572],{"type":49,"value":4451},{"type":43,"tag":64,"props":4566,"children":4568},{"className":4567},[],[4569],{"type":49,"value":1067},{"type":49,"value":4571}," and poll with ",{"type":43,"tag":64,"props":4573,"children":4575},{"className":4574},[],[4576],{"type":49,"value":4577},"get-operation",{"type":43,"tag":175,"props":4579,"children":4580},{},[4581,4586],{"type":43,"tag":202,"props":4582,"children":4583},{},[4584],{"type":49,"value":4585},"Token expired during long query",{"type":43,"tag":202,"props":4587,"children":4588},{},[4589,4591,4595],{"type":49,"value":4590},"Tokens expire after 1 hour; implement refresh (see ",{"type":43,"tag":473,"props":4592,"children":4593},{"href":486},[4594],{"type":49,"value":489},{"type":49,"value":1866},{"type":43,"tag":175,"props":4597,"children":4598},{},[4599,4604],{"type":43,"tag":202,"props":4600,"children":4601},{},[4602],{"type":49,"value":4603},"Connection refused after scale-to-zero",{"type":43,"tag":202,"props":4605,"children":4606},{},[4607],{"type":49,"value":4608},"Compute wakes in ~100ms; implement retry logic",{"type":43,"tag":175,"props":4610,"children":4611},{},[4612,4617],{"type":43,"tag":202,"props":4613,"children":4614},{},[4615],{"type":49,"value":4616},"Branch deletion blocked",{"type":43,"tag":202,"props":4618,"children":4619},{},[4620],{"type":49,"value":4621},"Delete child branches first",{"type":43,"tag":175,"props":4623,"children":4624},{},[4625,4630],{"type":43,"tag":202,"props":4626,"children":4627},{},[4628],{"type":49,"value":4629},"Autoscaling range too wide",{"type":43,"tag":202,"props":4631,"children":4632},{},[4633],{"type":49,"value":4634},"Max - Min cannot exceed 16 CU",{"type":43,"tag":175,"props":4636,"children":4637},{},[4638,4643],{"type":43,"tag":202,"props":4639,"children":4640},{},[4641],{"type":49,"value":4642},"SSL required error",{"type":43,"tag":202,"props":4644,"children":4645},{},[4646,4648],{"type":49,"value":4647},"Always use ",{"type":43,"tag":64,"props":4649,"children":4651},{"className":4650},[],[4652],{"type":49,"value":4653},"sslmode=require",{"type":43,"tag":175,"props":4655,"children":4656},{},[4657,4662],{"type":43,"tag":202,"props":4658,"children":4659},{},[4660],{"type":49,"value":4661},"Update mask required",{"type":43,"tag":202,"props":4663,"children":4664},{},[4665,4667,4673,4675,4681],{"type":49,"value":4666},"All ",{"type":43,"tag":64,"props":4668,"children":4670},{"className":4669},[],[4671],{"type":49,"value":4672},"update-*",{"type":49,"value":4674}," operations require specifying fields (see ",{"type":43,"tag":64,"props":4676,"children":4678},{"className":4677},[],[4679],{"type":49,"value":4680},"-h",{"type":49,"value":1866},{"type":43,"tag":175,"props":4683,"children":4684},{},[4685,4690],{"type":43,"tag":202,"props":4686,"children":4687},{},[4688],{"type":49,"value":4689},"Connection closed after idle",{"type":43,"tag":202,"props":4691,"children":4692},{},[4693],{"type":49,"value":4694},"24h idle timeout; max lifetime beyond 24h not guaranteed. Implement retry.",{"type":43,"tag":175,"props":4696,"children":4697},{},[4698,4703],{"type":43,"tag":202,"props":4699,"children":4700},{},[4701],{"type":49,"value":4702},"DNS resolution fails (macOS)",{"type":43,"tag":202,"props":4704,"children":4705},{},[4706,4708,4714,4716,4722,4724,4730,4732,4738,4740,4744],{"type":49,"value":4707},"Python ",{"type":43,"tag":64,"props":4709,"children":4711},{"className":4710},[],[4712],{"type":49,"value":4713},"socket.getaddrinfo()",{"type":49,"value":4715}," fails with long hostnames. Use ",{"type":43,"tag":64,"props":4717,"children":4719},{"className":4718},[],[4720],{"type":49,"value":4721},"dig",{"type":49,"value":4723}," to resolve IP, pass via ",{"type":43,"tag":64,"props":4725,"children":4727},{"className":4726},[],[4728],{"type":49,"value":4729},"hostaddr",{"type":49,"value":4731}," param alongside ",{"type":43,"tag":64,"props":4733,"children":4735},{"className":4734},[],[4736],{"type":49,"value":4737},"host",{"type":49,"value":4739}," (for TLS SNI). See ",{"type":43,"tag":473,"props":4741,"children":4742},{"href":486},[4743],{"type":49,"value":489},{"type":49,"value":621},{"type":43,"tag":175,"props":4746,"children":4747},{},[4748,4759],{"type":43,"tag":202,"props":4749,"children":4750},{},[4751,4757],{"type":43,"tag":64,"props":4752,"children":4754},{"className":4753},[],[4755],{"type":49,"value":4756},"storage_catalog",{"type":49,"value":4758}," pipeline failure",{"type":43,"tag":202,"props":4760,"children":4761},{},[4762,4768],{"type":43,"tag":64,"props":4763,"children":4765},{"className":4764},[],[4766],{"type":49,"value":4767},"new_pipeline_spec.storage_catalog",{"type":49,"value":4769}," must be a regular UC catalog, not the Lakebase catalog. DLT cannot write event logs to Postgres-backed schemas.",{"type":43,"tag":175,"props":4771,"children":4772},{},[4773,4778],{"type":43,"tag":202,"props":4774,"children":4775},{},[4776],{"type":49,"value":4777},"Synced table CDF error",{"type":43,"tag":202,"props":4779,"children":4780},{},[4781,4783,4789],{"type":49,"value":4782},"Enable CDF on source: ",{"type":43,"tag":64,"props":4784,"children":4786},{"className":4785},[],[4787],{"type":49,"value":4788},"ALTER TABLE ... SET TBLPROPERTIES (delta.enableChangeDataFeed = true)",{"type":49,"value":4790},". Required for Triggered\u002FContinuous modes.",{"type":43,"tag":175,"props":4792,"children":4793},{},[4794,4799],{"type":43,"tag":202,"props":4795,"children":4796},{},[4797],{"type":49,"value":4798},"Sync permissions error",{"type":43,"tag":202,"props":4800,"children":4801},{},[4802,4804,4810,4812,4818,4820,4826],{"type":49,"value":4803},"Ensure ",{"type":43,"tag":64,"props":4805,"children":4807},{"className":4806},[],[4808],{"type":49,"value":4809},"USE CATALOG",{"type":49,"value":4811},"\u002F",{"type":43,"tag":64,"props":4813,"children":4815},{"className":4814},[],[4816],{"type":49,"value":4817},"USE SCHEMA",{"type":49,"value":4819}," on source table and ",{"type":43,"tag":64,"props":4821,"children":4823},{"className":4822},[],[4824],{"type":49,"value":4825},"CREATE TABLE",{"type":49,"value":4827}," in storage catalog",{"type":43,"tag":175,"props":4829,"children":4830},{},[4831,4836],{"type":43,"tag":202,"props":4832,"children":4833},{},[4834],{"type":49,"value":4835},"Synced table null bytes",{"type":43,"tag":202,"props":4837,"children":4838},{},[4839,4841],{"type":49,"value":4840},"Null bytes (0x00) in STRING\u002FARRAY\u002FMAP\u002FSTRUCT columns cause sync failures. Sanitize source data: ",{"type":43,"tag":64,"props":4842,"children":4844},{"className":4843},[],[4845],{"type":49,"value":4846},"REPLACE(col, CAST(CHAR(0) AS STRING), '')",{"type":43,"tag":175,"props":4848,"children":4849},{},[4850,4855],{"type":43,"tag":202,"props":4851,"children":4852},{},[4853],{"type":49,"value":4854},"Synced table data modified",{"type":43,"tag":202,"props":4856,"children":4857},{},[4858],{"type":49,"value":4859},"Only read queries, indexes, and DROP TABLE allowed on synced tables in Postgres. Modifications break sync pipeline.",{"type":43,"tag":175,"props":4861,"children":4862},{},[4863,4873],{"type":43,"tag":202,"props":4864,"children":4865},{},[4866,4868],{"type":49,"value":4867},"DABs ",{"type":43,"tag":64,"props":4869,"children":4871},{"className":4870},[],[4872],{"type":49,"value":142},{"type":43,"tag":202,"props":4874,"children":4875},{},[4876,4878,4883,4885,4891],{"type":49,"value":4877},"Deprecated — maps to a legacy API and fails on current Lakebase. Use ",{"type":43,"tag":64,"props":4879,"children":4881},{"className":4880},[],[4882],{"type":49,"value":150},{"type":49,"value":4884}," CLI instead. DAB support via ",{"type":43,"tag":64,"props":4886,"children":4888},{"className":4887},[],[4889],{"type":49,"value":4890},"postgres_synced_tables",{"type":49,"value":4892}," is not yet available.",{"type":43,"tag":359,"props":4894,"children":4896},{"id":4895},"sdk-and-version-requirements",[4897],{"type":49,"value":4898},"SDK and Version Requirements",{"type":43,"tag":167,"props":4900,"children":4901},{},[4902,4918],{"type":43,"tag":171,"props":4903,"children":4904},{},[4905],{"type":43,"tag":175,"props":4906,"children":4907},{},[4908,4913],{"type":43,"tag":179,"props":4909,"children":4910},{},[4911],{"type":49,"value":4912},"Component",{"type":43,"tag":179,"props":4914,"children":4915},{},[4916],{"type":49,"value":4917},"Minimum Version",{"type":43,"tag":195,"props":4919,"children":4920},{},[4921,4934,4954,4967],{"type":43,"tag":175,"props":4922,"children":4923},{},[4924,4929],{"type":43,"tag":202,"props":4925,"children":4926},{},[4927],{"type":49,"value":4928},"Databricks CLI",{"type":43,"tag":202,"props":4930,"children":4931},{},[4932],{"type":49,"value":4933},">= v0.294.0",{"type":43,"tag":175,"props":4935,"children":4936},{},[4937,4942],{"type":43,"tag":202,"props":4938,"children":4939},{},[4940],{"type":49,"value":4941},"Databricks SDK for Python",{"type":43,"tag":202,"props":4943,"children":4944},{},[4945,4947,4952],{"type":49,"value":4946},">= 0.81.0 (for ",{"type":43,"tag":64,"props":4948,"children":4950},{"className":4949},[],[4951],{"type":49,"value":119},{"type":49,"value":4953}," module)",{"type":43,"tag":175,"props":4955,"children":4956},{},[4957,4962],{"type":43,"tag":202,"props":4958,"children":4959},{},[4960],{"type":49,"value":4961},"psycopg",{"type":43,"tag":202,"props":4963,"children":4964},{},[4965],{"type":49,"value":4966},"2.x or 3.x (3.x recommended for async\u002Fpooling)",{"type":43,"tag":175,"props":4968,"children":4969},{},[4970,4975],{"type":43,"tag":202,"props":4971,"children":4972},{},[4973],{"type":49,"value":4974},"Postgres",{"type":43,"tag":202,"props":4976,"children":4977},{},[4978],{"type":49,"value":4979},"16 or 17 (default: PG 17)",{"type":43,"tag":4981,"props":4982,"children":4983},"style",{},[4984],{"type":49,"value":4985},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4987,"total":5173},[4988,5005,5019,5036,5053,5073,5083,5106,5117,5134,5148,5159],{"slug":4989,"name":4989,"fn":4990,"description":4991,"org":4992,"tags":4993,"stars":23,"repoUrl":24,"updatedAt":5004},"databricks-agent-bricks","create Databricks Agent Bricks","Create Agent Bricks: Knowledge Assistants (KA) for document Q&A and Supervisor Agents for multi-agent orchestration (MAS).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4994,4997,4998,5001],{"name":4995,"slug":4996,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":4999,"slug":5000,"type":15},"Knowledge Management","knowledge-management",{"name":5002,"slug":5003,"type":15},"Multi-Agent","multi-agent","2026-07-15T05:41:38.548954",{"slug":5006,"name":5006,"fn":5007,"description":5008,"org":5009,"tags":5010,"stars":23,"repoUrl":24,"updatedAt":5018},"databricks-ai-functions","use Databricks built-in AI functions","Use Databricks built-in AI Functions (ai_classify, ai_extract, ai_summarize, ai_mask, ai_translate, ai_fix_grammar, ai_gen, ai_analyze_sentiment, ai_similarity, ai_parse_document, ai_prep_search, ai_query, ai_forecast) to add AI capabilities directly to SQL and PySpark pipelines without managing model endpoints. Also covers document parsing and building custom RAG pipelines (parse → prep_search → index → query).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5011,5014,5015],{"name":5012,"slug":5013,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":5016,"slug":5017,"type":15},"LLM","llm","2026-07-31T05:53:33.562077",{"slug":5020,"name":5020,"fn":5021,"description":5022,"org":5023,"tags":5024,"stars":23,"repoUrl":24,"updatedAt":5035},"databricks-ai-runtime","submit and manage Databricks GPU workloads","Databricks AI Runtime (`air`) CLI — the command-line tool for submitting and managing GPU training workloads on Databricks serverless compute. Use for: running `air` workloads, custom Docker image setup, environment configuration, and troubleshooting `air` jobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5025,5028,5029,5032],{"name":5026,"slug":5027,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":5030,"slug":5031,"type":15},"Docker","docker",{"name":5033,"slug":5034,"type":15},"Engineering","engineering","2026-07-12T08:04:55.843982",{"slug":5037,"name":5037,"fn":5038,"description":5039,"org":5040,"tags":5041,"stars":23,"repoUrl":24,"updatedAt":5052},"databricks-aibi-dashboards","create Databricks AI\u002FBI dashboards","Create Databricks AI\u002FBI dashboards. Must use when creating, updating, or deploying Lakeview dashboards as Databricks Dashboard have a unique json structure. CRITICAL: You MUST test ALL SQL queries via CLI BEFORE deploying. Follow guidelines strictly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5042,5045,5048,5051],{"name":5043,"slug":5044,"type":15},"Analytics","analytics",{"name":5046,"slug":5047,"type":15},"Dashboards","dashboards",{"name":5049,"slug":5050,"type":15},"Data Visualization","data-visualization",{"name":9,"slug":8,"type":15},"2026-07-12T08:04:25.314591",{"slug":5054,"name":5054,"fn":5055,"description":5056,"org":5057,"tags":5058,"stars":23,"repoUrl":24,"updatedAt":5072},"databricks-app-design","design UX for Databricks AppKit applications","Design the UX of custom-code Databricks Apps (AppKit\u002FReact) data screens — KPI\u002Foverview pages, reports, charts, tables, and Genie\u002Fchat data assistants — mapped to concrete AppKit components. Use when BUILDING or reviewing the UI of an AppKit\u002FReact app that displays data or answers data questions: choosing genre, layout, charts, KPIs, semantic color, required states (loading\u002Fempty\u002Ferror), IBCS notation, and AI-result trust (showing generated SQL\u002Fsources for Genie\u002Fchat). A plain \"create a dashboard\" request means a managed AI\u002FBI (Lakeview) dashboard → use databricks-aibi-dashboards, NOT this skill. Also NOT for non-data frontend (forms, settings, auth, marketing) or scaffolding\u002Fbuild\u002Fdeploy (→ databricks-apps). Complements databricks-apps; use it alongside whenever a custom app has a chart, table, KPI, report, or Genie\u002Fchat\u002FAI surface.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5059,5060,5063,5066,5069],{"name":9,"slug":8,"type":15},{"name":5061,"slug":5062,"type":15},"Design","design",{"name":5064,"slug":5065,"type":15},"Frontend","frontend",{"name":5067,"slug":5068,"type":15},"React","react",{"name":5070,"slug":5071,"type":15},"UI Components","ui-components","2026-07-12T08:04:02.02398",{"slug":2436,"name":2436,"fn":5074,"description":5075,"org":5076,"tags":5077,"stars":23,"repoUrl":24,"updatedAt":5082},"build applications on Databricks Apps","Build apps on Databricks Apps platform. Use when asked to create data apps, analytics tools, or custom interactive visualizations. A plain \"create a dashboard\" request means a managed AI\u002FBI (Lakeview) dashboard → use databricks-aibi-dashboards, not this skill. Evaluates data access patterns (analytics vs Lakebase synced tables) before scaffolding. Invoke BEFORE starting implementation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5078,5079,5080,5081],{"name":5043,"slug":5044,"type":15},{"name":5046,"slug":5047,"type":15},{"name":5012,"slug":5013,"type":15},{"name":9,"slug":8,"type":15},"2026-07-12T08:03:59.061458",{"slug":5084,"name":5084,"fn":5085,"description":5086,"org":5087,"tags":5088,"stars":23,"repoUrl":24,"updatedAt":5105},"databricks-apps-python","build Python backends for Databricks Apps","Python backend for Databricks Apps — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex. **Default for a new Databricks App is `databricks-apps` (AppKit — Node\u002FTypeScript\u002FReact) — reach for it first.** Use this skill only when the user asks for a Python backend, extends an existing Python app, or the team is Python-only. Covers OAuth auth, app resources, SQL warehouse and Lakebase connectivity, foundation-model \u002F Vector Search \u002F model-serving APIs (via `databricks-python-sdk`), and deployment via CLI or DABs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5089,5090,5093,5096,5099,5102],{"name":9,"slug":8,"type":15},{"name":5091,"slug":5092,"type":15},"FastAPI","fastapi",{"name":5094,"slug":5095,"type":15},"Flask","flask",{"name":5097,"slug":5098,"type":15},"Gradio","gradio",{"name":5100,"slug":5101,"type":15},"Python","python",{"name":5103,"slug":5104,"type":15},"Streamlit","streamlit","2026-07-12T08:04:10.970845",{"slug":38,"name":38,"fn":5107,"description":5108,"org":5109,"tags":5110,"stars":23,"repoUrl":24,"updatedAt":5116},"configure Databricks CLI and authentication","Databricks CLI operations and the parent\u002Fentry-point skill for Databricks CLI use: authentication, profile selection, and bundles. Load this first for CLI, auth, profile, and bundle tasks, then load the matching product skill. For finding or exploring data, answering questions about the data, or generating SQL, load the databricks-data-discovery skill (it routes to Genie One). Contains up-to-date guidelines for Databricks-related CLI tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5111,5114,5115],{"name":5112,"slug":5113,"type":15},"Authentication","authentication",{"name":5026,"slug":5027,"type":15},{"name":9,"slug":8,"type":15},"2026-07-18T05:11:05.45506",{"slug":5118,"name":5118,"fn":5119,"description":5120,"org":5121,"tags":5122,"stars":23,"repoUrl":24,"updatedAt":5133},"databricks-dabs","manage Databricks Declarative Automation Bundles","Create, configure, validate, deploy, run, and manage Declarative Automation Bundles (DABs, formerly Databricks Asset Bundles). Use when working with Databricks resources via DABs including dashboards, jobs, pipelines, alerts, volumes, and apps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5123,5126,5129,5130],{"name":5124,"slug":5125,"type":15},"Automation","automation",{"name":5127,"slug":5128,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},{"name":5131,"slug":5132,"type":15},"Deployment","deployment","2026-07-15T05:41:35.930355",{"slug":5135,"name":5135,"fn":5136,"description":5137,"org":5138,"tags":5139,"stars":23,"repoUrl":24,"updatedAt":5147},"databricks-data-discovery","discover and query Databricks data","Discover, explore, and query Databricks data via Genie — the CLI equivalent of the Genie One MCP. MUST be invoked whenever the user asks to find or locate data ('what tables are in X', 'where does X live', 'which catalog\u002Fschema has Y'), answer a natural-language question about the data, or write a SQL query.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5140,5141,5144,5145],{"name":5012,"slug":5013,"type":15},{"name":5142,"slug":5143,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":5146,"slug":4224,"type":15},"SQL","2026-07-31T05:53:32.561877",{"slug":5149,"name":5149,"fn":5150,"description":5151,"org":5152,"tags":5153,"stars":23,"repoUrl":24,"updatedAt":5158},"databricks-dbsql","query and script Databricks SQL warehouses","Databricks SQL (DBSQL) advanced features and SQL warehouse capabilities. This skill MUST be invoked when the user mentions: \"DBSQL\", \"Databricks SQL\", \"SQL warehouse\", \"SQL scripting\", \"stored procedure\", \"CALL procedure\", \"materialized view\", \"CREATE MATERIALIZED VIEW\", \"pipe syntax\", \"|>\", \"geospatial\", \"H3\", \"ST_\", \"spatial SQL\", \"collation\", \"COLLATE\", \"ai_query\", \"ai_classify\", \"ai_extract\", \"ai_gen\", \"AI function\", \"http_request\", \"remote_query\", \"read_files\", \"Lakehouse Federation\", \"recursive CTE\", \"WITH RECURSIVE\", \"multi-statement transaction\", \"temp table\", \"temporary view\", \"pipe operator\". SHOULD also invoke when the user asks about SQL best practices, data modeling patterns, or advanced SQL features on Databricks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5154,5155,5156,5157],{"name":5012,"slug":5013,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":5146,"slug":4224,"type":15},"2026-07-12T08:04:08.678282",{"slug":5160,"name":5160,"fn":5161,"description":5162,"org":5163,"tags":5164,"stars":23,"repoUrl":24,"updatedAt":5172},"databricks-docs","search Databricks documentation","Databricks documentation reference via llms.txt index. Use when other skills do not cover a topic, looking up unfamiliar Databricks features, or needing authoritative docs on APIs, configurations, or platform capabilities.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5165,5166,5169],{"name":9,"slug":8,"type":15},{"name":5167,"slug":5168,"type":15},"Documentation","documentation",{"name":5170,"slug":5171,"type":15},"Reference","reference","2026-07-15T05:41:34.697746",31,{"items":5175,"total":5173},[5176,5183,5189,5196,5203,5211,5218],{"slug":4989,"name":4989,"fn":4990,"description":4991,"org":5177,"tags":5178,"stars":23,"repoUrl":24,"updatedAt":5004},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5179,5180,5181,5182],{"name":4995,"slug":4996,"type":15},{"name":9,"slug":8,"type":15},{"name":4999,"slug":5000,"type":15},{"name":5002,"slug":5003,"type":15},{"slug":5006,"name":5006,"fn":5007,"description":5008,"org":5184,"tags":5185,"stars":23,"repoUrl":24,"updatedAt":5018},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5186,5187,5188],{"name":5012,"slug":5013,"type":15},{"name":9,"slug":8,"type":15},{"name":5016,"slug":5017,"type":15},{"slug":5020,"name":5020,"fn":5021,"description":5022,"org":5190,"tags":5191,"stars":23,"repoUrl":24,"updatedAt":5035},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5192,5193,5194,5195],{"name":5026,"slug":5027,"type":15},{"name":9,"slug":8,"type":15},{"name":5030,"slug":5031,"type":15},{"name":5033,"slug":5034,"type":15},{"slug":5037,"name":5037,"fn":5038,"description":5039,"org":5197,"tags":5198,"stars":23,"repoUrl":24,"updatedAt":5052},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5199,5200,5201,5202],{"name":5043,"slug":5044,"type":15},{"name":5046,"slug":5047,"type":15},{"name":5049,"slug":5050,"type":15},{"name":9,"slug":8,"type":15},{"slug":5054,"name":5054,"fn":5055,"description":5056,"org":5204,"tags":5205,"stars":23,"repoUrl":24,"updatedAt":5072},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5206,5207,5208,5209,5210],{"name":9,"slug":8,"type":15},{"name":5061,"slug":5062,"type":15},{"name":5064,"slug":5065,"type":15},{"name":5067,"slug":5068,"type":15},{"name":5070,"slug":5071,"type":15},{"slug":2436,"name":2436,"fn":5074,"description":5075,"org":5212,"tags":5213,"stars":23,"repoUrl":24,"updatedAt":5082},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5214,5215,5216,5217],{"name":5043,"slug":5044,"type":15},{"name":5046,"slug":5047,"type":15},{"name":5012,"slug":5013,"type":15},{"name":9,"slug":8,"type":15},{"slug":5084,"name":5084,"fn":5085,"description":5086,"org":5219,"tags":5220,"stars":23,"repoUrl":24,"updatedAt":5105},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5221,5222,5223,5224,5225,5226],{"name":9,"slug":8,"type":15},{"name":5091,"slug":5092,"type":15},{"name":5094,"slug":5095,"type":15},{"name":5097,"slug":5098,"type":15},{"name":5100,"slug":5101,"type":15},{"name":5103,"slug":5104,"type":15}]