fix(cluster): ha_nodes INET-Spalten → TEXT — pgx-Scan-Fehler OID 869

pgx kann INET-Typen (OID 869) nicht direkt in *string scannen.
Migration 0028 konvertiert public_ip, internal_ip, mgmt_ip auf TEXT
(USING ip::TEXT erhält bestehende Werte). Basis-Migrationen 0002 + 0020
auf TEXT umgestellt damit frische Installs keine INET anlegen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-29 15:41:20 +02:00
parent 33f6fef009
commit a0b3bccbc6
7 changed files with 28 additions and 8 deletions

View File

@@ -15,8 +15,8 @@ CREATE TABLE IF NOT EXISTS ha_nodes (
name TEXT NOT NULL,
fqdn TEXT NOT NULL,
api_url TEXT NOT NULL,
public_ip INET,
internal_ip INET,
public_ip TEXT,
internal_ip TEXT,
role TEXT NOT NULL DEFAULT 'peer',
last_seen TIMESTAMPTZ,
joined_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),

View File

@@ -14,7 +14,7 @@
ALTER TABLE ha_nodes
ADD COLUMN IF NOT EXISTS version TEXT,
ADD COLUMN IF NOT EXISTS config_hash TEXT,
ADD COLUMN IF NOT EXISTS mgmt_ip INET,
ADD COLUMN IF NOT EXISTS mgmt_ip TEXT,
ADD COLUMN IF NOT EXISTS status TEXT NOT NULL DEFAULT 'unknown';
ALTER TABLE ha_nodes
@@ -33,7 +33,7 @@ ALTER TABLE ha_nodes
DROP CONSTRAINT IF EXISTS ha_nodes_status_check;
ALTER TABLE ha_nodes
DROP COLUMN IF EXISTS status,
DROP COLUMN IF EXISTS mgmt_ip,
DROP COLUMN IF EXISTS mgmt_ip, -- TEXT
DROP COLUMN IF EXISTS config_hash,
DROP COLUMN IF EXISTS version;
-- +goose StatementEnd

View File

@@ -0,0 +1,20 @@
-- +goose Up
-- +goose StatementBegin
-- pgx scannt INET-Spalten nicht direkt in *string (OID 869-Fehler).
-- Go-Modell speichert IPs als string — TEXT ist hier korrekt.
-- Bestehende Werte bleiben erhalten (USING public_ip::TEXT).
ALTER TABLE ha_nodes
ALTER COLUMN public_ip TYPE TEXT USING public_ip::TEXT,
ALTER COLUMN internal_ip TYPE TEXT USING internal_ip::TEXT,
ALTER COLUMN mgmt_ip TYPE TEXT USING mgmt_ip::TEXT;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
ALTER TABLE ha_nodes
ALTER COLUMN public_ip TYPE INET USING public_ip::INET,
ALTER COLUMN internal_ip TYPE INET USING internal_ip::INET,
ALTER COLUMN mgmt_ip TYPE INET USING mgmt_ip::INET;
-- +goose StatementEnd