🪟 Windows TippsThe Gemini desktop app is now available for Windows(11.09.2026 um 17:06 Uhr)
⚠️ Malware / Trojaner / VirenWindows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC(10.09.2026 um 20:11 Uhr)
⚠️ Malware / Trojaner / VirenVorsicht: Android-Malware verschlüsselt Ihre Handys und nimmt heimlich Fotos auf(11.09.2026 um 09:35 Uhr)
🕵️ SicherheitslückenMicrosoft geht endlich eines der nervigsten Probleme von Windows 11 an(11.09.2026 um 11:58 Uhr)
💾 IT Security ToolsSysinternals Suite(11.09.2026 um 12:00 Uhr)
🕵️ SicherheitslückenDefender 0-Day ShieldBreak (CVE-2026-69414) nicht sauber gepatcht - BornCity(11.09.2026 um 12:52 Uhr)
🔧 AI Nachrichten Stealing AI Reasoning Traces(08.09.2026 um 12:20 Uhr)
🔧 AI Nachrichten AIs as Modern Genies(08.09.2026 um 19:12 Uhr)
🪟 Windows TippsThe Gemini desktop app is now available for Windows(11.09.2026 um 17:06 Uhr)
⚠️ Malware / Trojaner / VirenWindows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC(10.09.2026 um 20:11 Uhr)
⚠️ Malware / Trojaner / VirenVorsicht: Android-Malware verschlüsselt Ihre Handys und nimmt heimlich Fotos auf(11.09.2026 um 09:35 Uhr)
🕵️ SicherheitslückenMicrosoft geht endlich eines der nervigsten Probleme von Windows 11 an(11.09.2026 um 11:58 Uhr)
💾 IT Security ToolsSysinternals Suite(11.09.2026 um 12:00 Uhr)
🕵️ SicherheitslückenDefender 0-Day ShieldBreak (CVE-2026-69414) nicht sauber gepatcht - BornCity(11.09.2026 um 12:52 Uhr)
🔧 AI Nachrichten Stealing AI Reasoning Traces(08.09.2026 um 12:20 Uhr)
🔧 AI Nachrichten AIs as Modern Genies(08.09.2026 um 19:12 Uhr)

🔧 Programmierung 🕛 vor 2 Monaten 3 Min Lesezeit
0

PostgreSQL 22P01 Error: Causes and Solutions Complete Guide

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht




PostgreSQL Error 22P01: Floating Point Exception



PostgreSQL error code 22P01 is raised when a floating-point operation produces an exceptional result that cannot be represented as a valid number. This typically occurs during division by zero on float types, operations involving NaN (Not a Number), or arithmetic that yields Infinity. It is most commonly encountered in analytics, financial calculations, and data pipelines processing external or sensor data.









Top 3 Causes






1. Division by Zero on Float Types



Unlike integer division (which raises 22012), dividing a float by zero triggers a floating-point exception. This is especially common in ratio and rate calculations where the denominator can become zero at runtime.




CODE
-- Problematic query
SELECT total_sales::float / total_orders::float AS avg_order_value
FROM daily_stats;

-- Safe fix using NULLIF
SELECT
date,
total_sales::float / NULLIF(total_orders, 0)::float AS avg_order_value
FROM daily_stats;









2. NaN Values in Arithmetic Operations



Data ingested from external systems, CSVs, or APIs may silently introduce NaN values into float columns. Once NaN participates in arithmetic, results become unpredictable and can trigger exceptions downstream.




CODE
-- Detect NaN values (NaN is the only value not equal to itself)
SELECT id, value
FROM sensor_readings
WHERE value != value;

-- Replace NaN with NULL safely
UPDATE sensor_readings
SET value = NULL
WHERE value != value;

-- Filter NaN in aggregations
SELECT
device_id,
AVG(value) FILTER (WHERE value = value) AS clean_avg
FROM sensor_readings
GROUP BY device_id;









3. Infinity Arithmetic Conflicts



Storing 'Infinity'::float or '-Infinity'::float is valid in PostgreSQL, but performing certain operations on them produces mathematically undefined results (e.g., Infinity - Infinity = NaN), which can cascade into a floating-point exception.




CODE
-- Check for Infinity values
SELECT id, measurement
FROM raw_data
WHERE measurement IN ('Infinity'::float, '-Infinity'::float);

-- Create a reusable safe conversion function
CREATE OR REPLACE FUNCTION safe_float(val float)
RETURNS float AS $$
BEGIN
IF val IS NULL THEN RETURN NULL;
ELSIF val != val THEN RETURN NULL; -- catches NaN
ELSIF abs(val) = 'Infinity'::float THEN RETURN NULL; -- catches ±Inf
ELSE RETURN val;
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE;

-- Use the function in queries
SELECT id, safe_float(measurement_a) + safe_float(measurement_b) AS safe_sum
FROM raw_data;












Quick Fix Solutions




  • Use NULLIF(denominator, 0) on every division involving float types.

  • Filter NaN with WHERE value = value before aggregating.

  • Wrap suspicious float inputs with a sanitization function like safe_float() above.

  • Use CASE WHEN guards in complex expressions to short-circuit dangerous operand values.









Prevention Tips



1. Enforce constraints at the table level using a custom domain:




CODE
CREATE DOMAIN safe_float AS float
CHECK (
VALUE IS NULL
OR (VALUE = VALUE
AND VALUE != 'Infinity'::float
AND VALUE != '-Infinity'::float)
);

CREATE TABLE measurements (
id SERIAL PRIMARY KEY,
sensor_id INT NOT NULL,
value safe_float -- rejects NaN and Infinity on INSERT/UPDATE
);






2. Run periodic data quality checks:




CODE
-- Schedule this with pg_cron to catch bad data early
SELECT COUNT(*) AS problematic_rows
FROM measurements
WHERE value != value
OR value = 'Infinity'::float
OR value = '-Infinity'::float;






Applying these two practices consistently will prevent 22P01 errors from ever reaching production queries.









Related Errors




























Code Name Notes
22012 division_by_zero Integer division by zero; sibling of 22P01
22003 numeric_value_out_of_range Overflow on numeric/integer types
22000 data_exception Parent class covering all 22xxx data errors






📖 Want a more detailed guide?

Check out the full in-depth version (Korean) on oraerror.com — includes detailed analysis, additional SQL examples, and prevention tips.


Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
The Gemini desktop app is now available for Windows
1 Quelle
Windows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC
1 Quelle
Vorsicht: Android-Malware verschlüsselt Ihre Handys und nimmt heimlich Fotos auf
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten PostgreSQL 22P01 Error: Causes and Solutions Complete Guide

Thematisch verwandte Begriffe: PostgreSQL, 22P01, Error, Causes · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...