clickhouse-upgrade-migration
Upgrade ClickHouse server versions and @clickhouse/client SDK safely. Use when upgrading ClickHouse, handling breaking changes between versions, or migrating from older client libraries. Trigger: "upgrade clickhouse", "clickhouse version upgrade", "update clickhouse client", "clickhouse breaking changes", "new clickhouse version".
Best use case
clickhouse-upgrade-migration is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Upgrade ClickHouse server versions and @clickhouse/client SDK safely. Use when upgrading ClickHouse, handling breaking changes between versions, or migrating from older client libraries. Trigger: "upgrade clickhouse", "clickhouse version upgrade", "update clickhouse client", "clickhouse breaking changes", "new clickhouse version".
Teams using clickhouse-upgrade-migration should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/clickhouse-upgrade-migration/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How clickhouse-upgrade-migration Compares
| Feature / Agent | clickhouse-upgrade-migration | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Upgrade ClickHouse server versions and @clickhouse/client SDK safely. Use when upgrading ClickHouse, handling breaking changes between versions, or migrating from older client libraries. Trigger: "upgrade clickhouse", "clickhouse version upgrade", "update clickhouse client", "clickhouse breaking changes", "new clickhouse version".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# ClickHouse Upgrade & Migration
## Overview
Safely upgrade ClickHouse server and the `@clickhouse/client` Node.js SDK,
with rollback procedures and breaking change detection.
## Prerequisites
- Current ClickHouse version known (`SELECT version()`)
- Git for version control
- Test suite for integration validation
- Staging environment for pre-production testing
## Instructions
### Step 1: Check Current Versions
```bash
# Check server version (via HTTP)
curl 'http://localhost:8123/?query=SELECT+version()'
# Check Node.js client version
npm list @clickhouse/client
# Check latest available
npm view @clickhouse/client version
```
```sql
-- Server-side version details
SELECT
version() AS server_version,
uptime() AS uptime_sec,
currentDatabase() AS current_db;
```
### Step 2: Review Changelog
```bash
# View release notes
open https://github.com/ClickHouse/clickhouse-js/releases
# Server changelog
open https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md
```
**Key breaking changes to watch for:**
- Client API signature changes (`createClient` options)
- Default setting changes (compression, timeouts)
- New query result format behavior
- Deprecated SQL functions removed in server upgrades
- MergeTree settings renamed or defaults changed
### Step 3: Upgrade the Node.js Client
```bash
git checkout -b upgrade/clickhouse-client
npm install @clickhouse/client@latest
npm test
```
**Common migration patterns:**
```typescript
// v0.x → v1.x: createClient options restructured
// Before (v0.x)
import { createClient } from '@clickhouse/client';
const client = createClient({
host: 'http://localhost:8123',
});
// After (v1.x)
const client = createClient({
url: 'http://localhost:8123', // 'host' renamed to 'url'
});
// v0.x → v1.x: query result handling
// Before: rs.json() returned { data: [...], statistics: {...} }
// After: rs.json() returns the rows array directly
// Before
const result = await rs.json();
const rows = result.data;
// After
const rows = await rs.json();
```
### Step 4: Upgrade ClickHouse Server
**ClickHouse Cloud:** Upgrades happen automatically. Check release notes in
the Cloud console.
**Self-hosted upgrade procedure:**
```bash
# 1. Backup current data
clickhouse-client --query "BACKUP DATABASE analytics TO Disk('backups', 'pre-upgrade')"
# 2. Check compatibility
clickhouse-client --query "SELECT * FROM system.settings WHERE changed"
# 3. Stop server gracefully
sudo systemctl stop clickhouse-server
# 4. Update packages
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install clickhouse-server clickhouse-client
# 5. Start and verify
sudo systemctl start clickhouse-server
clickhouse-client --query "SELECT version()"
# 6. Check for schema issues
clickhouse-client --query "
SELECT database, table, engine, metadata_modification_time
FROM system.tables WHERE database NOT IN ('system', 'INFORMATION_SCHEMA')
"
```
### Step 5: Validate After Upgrade
```typescript
// Post-upgrade validation script
import { createClient } from '@clickhouse/client';
const client = createClient({ url: process.env.CLICKHOUSE_HOST! });
async function validateUpgrade() {
const checks = [
{ name: 'ping', fn: () => client.ping() },
{ name: 'version', fn: async () => {
const rs = await client.query({ query: 'SELECT version()', format: 'JSONEachRow' });
return rs.json();
}},
{ name: 'schema', fn: async () => {
const rs = await client.query({
query: 'SELECT database, name, engine FROM system.tables WHERE database = {db:String}',
query_params: { db: 'analytics' },
format: 'JSONEachRow',
});
return rs.json();
}},
{ name: 'insert', fn: async () => {
await client.insert({
table: 'analytics.events',
values: [{ event_type: 'upgrade_test', user_id: 0, payload: '{}' }],
format: 'JSONEachRow',
});
return { success: true };
}},
{ name: 'query', fn: async () => {
const rs = await client.query({
query: 'SELECT count() AS cnt FROM analytics.events',
format: 'JSONEachRow',
});
return rs.json();
}},
];
for (const check of checks) {
try {
const result = await check.fn();
console.log(`[PASS] ${check.name}:`, JSON.stringify(result));
} catch (err) {
console.error(`[FAIL] ${check.name}:`, (err as Error).message);
}
}
}
validateUpgrade();
```
### Step 6: Rollback Procedure
```bash
# Node.js client rollback
npm install @clickhouse/client@<previous-version> --save-exact
# Server rollback (self-hosted)
sudo systemctl stop clickhouse-server
sudo apt-get install clickhouse-server=<previous-version>
sudo systemctl start clickhouse-server
# Restore from backup if needed
clickhouse-client --query "RESTORE DATABASE analytics FROM Disk('backups', 'pre-upgrade')"
```
## Version Compatibility Matrix
| Client Version | Min Server Version | Node.js | Key Changes |
|---------------|-------------------|---------|-------------|
| 1.x | 22.6+ | 18+ | Stable API, `url` option |
| 0.3.x | 22.6+ | 16+ | `host` option, different JSON result shape |
| 0.2.x | 21.8+ | 14+ | Initial release |
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| `Unknown setting` | New default in config | Remove deprecated setting |
| `Cannot parse datetime` | Format change | Update date format strings |
| `Method not found` | Client API changed | Check migration guide |
| `Checksum mismatch` | Corrupted upgrade | Rollback and re-download |
## Resources
- [Client Releases](https://github.com/ClickHouse/clickhouse-js/releases)
- [Server Changelog](https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md)
- [Cloud Upgrades](https://clickhouse.com/docs/cloud/manage/upgrades)
## Next Steps
For CI/CD integration, see `clickhouse-ci-integration`.Related Skills
sql-migration-generator
Sql Migration Generator - Auto-activating skill for Backend Development. Triggers on: sql migration generator, sql migration generator Part of the Backend Development skill category.
managing-database-migrations
Process use when you need to work with database migrations. This skill provides schema migration management with comprehensive guidance and automation. Trigger with phrases like "create migration", "run migrations", or "manage schema versions".
exa-upgrade-migration
Upgrade exa-js SDK versions and handle breaking changes safely. Use when upgrading the Exa SDK, detecting deprecations, or migrating between exa-js versions. Trigger with phrases like "upgrade exa", "exa update", "exa breaking changes", "update exa-js", "exa new version".
exa-migration-deep-dive
Migrate from other search APIs (Google, Bing, Tavily, Serper) to Exa neural search. Use when switching to Exa from another search provider, migrating search pipelines, or evaluating Exa as a replacement for traditional search APIs. Trigger with phrases like "migrate to exa", "switch to exa", "replace google search with exa", "exa vs tavily", "exa migration", "move to exa".
evernote-upgrade-migration
Upgrade Evernote SDK versions and migrate between API versions. Use when upgrading SDK, handling breaking changes, or migrating to newer API patterns. Trigger with phrases like "upgrade evernote sdk", "evernote migration", "update evernote", "evernote breaking changes".
evernote-migration-deep-dive
Deep dive into Evernote data migration strategies. Use when migrating to/from Evernote, bulk data transfers, or complex migration scenarios. Trigger with phrases like "migrate to evernote", "migrate from evernote", "evernote data transfer", "bulk evernote migration".
elevenlabs-upgrade-migration
Upgrade ElevenLabs SDK versions and migrate between API model generations. Use when upgrading the elevenlabs-js or elevenlabs Python SDK, migrating from v1 to v2 models, or handling deprecations. Trigger: "upgrade elevenlabs", "elevenlabs migration", "elevenlabs breaking changes", "update elevenlabs SDK", "migrate elevenlabs model", "eleven_v3 migration".
documenso-upgrade-migration
Manage Documenso API version upgrades and SDK migrations. Use when upgrading from v1 to v2 API, updating SDK versions, or migrating between Documenso versions. Trigger with phrases like "documenso upgrade", "documenso v2 migration", "update documenso SDK", "documenso API version".
documenso-migration-deep-dive
Execute comprehensive Documenso migration strategies for platform switches. Use when migrating from other signing platforms, re-platforming to Documenso, or performing major infrastructure changes. Trigger with phrases like "migrate to documenso", "documenso migration", "switch to documenso", "documenso replatform", "replace docusign".
deepgram-upgrade-migration
Plan and execute Deepgram SDK upgrades and model migrations. Use when upgrading SDK versions (v3->v4->v5), migrating models (Nova-2 to Nova-3), or planning API version transitions. Trigger: "upgrade deepgram", "deepgram migration", "update deepgram SDK", "deepgram version upgrade", "nova-3 migration".
deepgram-migration-deep-dive
Deep dive into migrating to Deepgram from other transcription providers. Use when migrating from AWS Transcribe, Google Cloud STT, Azure Speech, OpenAI Whisper, AssemblyAI, or Rev.ai to Deepgram. Trigger: "deepgram migration", "switch to deepgram", "migrate transcription", "deepgram from AWS", "deepgram from Google", "replace whisper with deepgram".
databricks-upgrade-migration
Upgrade Databricks runtime versions and migrate between features. Use when upgrading DBR versions, migrating to Unity Catalog, or updating deprecated APIs and features. Trigger with phrases like "databricks upgrade", "DBR upgrade", "databricks migration", "unity catalog migration", "hive to unity".