Skip to content
OpenSmartRoute
Skillv1.0.0

clickhouse-upgrade-migration

Use when upgrading ClickHouse server versions or the @clickhouse/client SDK, handling breaking changes between versions, or migrating from older client libraries — covers version checks, changelog rev

by jeremylongshore(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from jeremylongshore/tons-of-skills-marketplace (skills/.curated/clickhouse-upgrade-migration/SKILL.md). Install upstream with npx skills add jeremylongshore/tons-of-skills-marketplace --skill clickhouse-upgrade-migration. Copyright stays with the author (MIT).

ClickHouse Upgrade & Migration

Overview

Safely upgrade ClickHouse server and the @clickhouse/client Node.js SDK, with rollback procedures and breaking-change detection. The workflow is check versions → review changelogs → upgrade the client → upgrade the server → validate → rollback if needed. Full command sequences live in references/implementation.md; the runnable migration, validation, and rollback code lives in references/examples.md.

Prerequisites

  • Current ClickHouse version known (SELECT version())
  • Git for version control (client changes land on an upgrade/ branch)
  • Test suite for integration validation (npm test)
  • Staging environment for pre-production testing
  • CLICKHOUSE_HOST set (and credentials — see Authentication)

Authentication

The client and validation scripts read the server URL from the CLICKHOUSE_HOST environment variable (e.g. http://localhost:8123 locally, or your ClickHouse Cloud endpoint). Keep credentials in the environment, never hardcoded: pass username / password to createClient from process.env.CLICKHOUSE_USER / CLICKHOUSE_PASSWORD, and for raw curl send them via the X-ClickHouse-User / X-ClickHouse-Key headers. ClickHouse Cloud endpoints require TLS (https://) and a password; self-hosted default installs often run open on 8123 (the HTTP port) in dev only.

Instructions

Work the steps in order — the client upgrade and the server upgrade are separate, independently reversible changes. Read references/implementation.md for the full command sequence of each step.

Step 1: Check Current Versions

Capture the server version, the installed client version, and the latest published client before changing anything — this is your rollback target.

curl 'http://localhost:8123/?query=SELECT+version()'   # server
npm list @clickhouse/client                            # installed client
npm view @clickhouse/client version                    # latest available

Step 2: Review Changelog

Read the client and server changelogs and note breaking changes: createClient option renames, default setting changes (compression, timeouts), query result-format behavior, removed SQL functions, and renamed MergeTree settings. Full checklist and links: implementation.md Step 2.

Step 3: Upgrade the Node.js Client

Isolate the client bump on a branch so it is reversible independent of the server.

git checkout -b upgrade/clickhouse-client
npm install @clickhouse/client@latest
npm test

Then apply the code-migration patterns (the hosturl option rename and the rs.json() result-shape change) — full before/after in references/examples.md under "Common migration patterns". Edit the client-initialization and result-handling code to match.

Step 4: Upgrade ClickHouse Server

ClickHouse Cloud upgrades automatically — just read the console release notes. Self-hosted follows a fixed sequence: backup → check changed settings → stop → apt-get install → start → verify version → scan schema. Full command block: implementation.md Step 4.

Step 5: Validate After Upgrade

Run the post-upgrade validation script — ping, version, schema, insert, and query checks, each reporting PASS/FAIL. Full script: references/examples.md under "Post-upgrade validation script".

Step 6: Rollback Procedure

If validation fails, roll back the client (npm install the previous version with --save-exact), the server package, and — if data is affected — RESTORE from the pre-upgrade backup. Full commands: references/examples.md under "Rollback commands".

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

Output

  • Current and target versions recorded (server + client) as the rollback baseline
  • Client upgraded on an isolated upgrade/ branch with npm test green
  • Code migrated for known breaking changes (hosturl, rs.json() shape)
  • Server upgraded via the backup → stop → install → verify sequence
  • Post-upgrade validation run: ping, version, schema, insert, and query all PASS
  • Documented rollback path for both client and server if any check fails

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

Examples

Two ready-to-run starting points live in references/examples.md:

  • Common migration patterns — before/after for the createClient option rename and the rs.json() result-shape change between v0.x and v1.x.
  • Post-upgrade validation script — a self-contained check runner that exercises ping → version → schema → insert → query.
// Validation entry point — full runner in references/examples.md
const client = createClient({ url: process.env.CLICKHOUSE_HOST! });
await client.ping();                                          // 1. reachable
await client.query({ query: 'SELECT version()', format: 'JSONEachRow' }); // 2. new version live
// 3. schema, insert, and query checks follow in the full script

Resources

Next Steps

For CI/CD integration of the upgraded client, see clickhouse-ci-integration. For pre-production release gating, see clickhouse-prod-checklist.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jeremylongshore-tons-of-skills-marketplace-clickhouse-up-431efb/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jeremylongshore-tons-of-skills-marketplace-clickhouse-up-431efb.ocm.jsonjson
{
  "ocm": "1",
  "id": "jeremylongshore-tons-of-skills-marketplace-clickhouse-up-431efb",
  "kind": "skill",
  "name": "clickhouse-upgrade-migration",
  "description": "Use when upgrading ClickHouse server versions or the @clickhouse/client SDK, handling breaking changes between versions, or migrating from older client libraries — covers version checks, changelog review, staged upgrade, post-upgrade validation, and rollback. Trigger with phrases like \"upgrade clickhouse\", \"clickhouse version upgrade\", \"update clickhouse client\", \"clickhouse breaking changes\", \"new clickhouse version\".",
  "publisher": "jeremylongshore",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "saas",
      "database",
      "analytics",
      "clickhouse",
      "olap",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Use when upgrading ClickHouse server versions or the @clickhouse/client SDK, handling breaking changes between versions, or migrating from older client libraries — covers version checks, changelog review, staged upgrade, post-upgrade validation, and rollback. Trigger with phrases like \"upgrade clickhouse\", \"clickhouse version upgrade\", \"update clickhouse client\", \"clickhouse breaking changes\", \"new clickhouse version\"."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/jeremylongshore/tons-of-skills-marketplace",
      "path": "skills/.curated/clickhouse-upgrade-migration/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/jeremylongshore/tons-of-skills-marketplace/blob/HEAD/skills/.curated/clickhouse-upgrade-migration/SKILL.md",
      "key": "jeremylongshore/tons-of-skills-marketplace/skills/.curated/clickhouse-upgrade-migration/SKILL.md"
    },
    "compatibility": "Designed for Claude Code",
    "allowed_tools": [
      "Read,",
      "Edit,",
      "Bash(npm:*),",
      "Bash(git:*)"
    ],
    "license": "MIT"
  },
  "instructions": "# ClickHouse Upgrade & Migration\n\n## Overview\n\nSafely upgrade ClickHouse server and the `@clickhouse/client` Node.js SDK, with\nrollback procedures and breaking-change detection. The workflow is check versions\n→ review changelogs → upgrade the client → upgrade the server → validate →\nrollback if needed. Full command sequences live in\n[references/implementation.md](references/implementation.md); the runnable\nmigration, validation, and rollback code lives in\n[references/examples.md](references/examples.md).\n\n## Prerequisites\n\n- Current ClickHouse version known (`SELECT version()`)\n- Git for versi",
  "cost": {
    "context_tokens": 1528
  }
}

Fetch it by URL: GET /api/v1/registry/jeremylongshore-tons-of-skills-marketplace-clickhouse-up-431efb/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.