Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Integer division by -1 on INT64_MIN raises a misclassified floating-point exception (22P01) instead of bigint out of range

Abierto Apto para principiantes
#2,590 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

@sean0407 ya está trabajando en esto.

Desde el 11/10/2026.

  • #2591 de @sean0407 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
c, postgresql
Área
database

Línea de trabajo

Empieza por la reproducción: ejecuta la consulta Cypher RETURN (-9223372036854775807 - 1) / -1 después de LOAD 'age' y observa el error de punto flotante 22P01. Busca la división entera en la aritmética de agtype de AGE en C, que es donde se realiza la división sin comprobar. Compárala con int84div en int8.c de PostgreSQL, que genera 22003 bigint out of range en este caso. Está terminado cuando la consulta Cypher falla con un error de bigint fuera de rango y el comportamiento existente de la aritmética no cambia en lo demás.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

AGE Version: Apache AGE extension 1.8.0 on PostgreSQL 18.6

Installation Method: Docker

API: Cypher

Steps to reproduce
LOAD 'age';
SET search_path = ag_catalog, public;
SELECT * FROM ag_catalog.create_graph('gdbug');
SELECT * FROM cypher('gdbug', $$ RETURN (-9223372036854775807 - 1) / -1 $$) AS (r agtype);
Expected behavior

+9223372036854775808 is outside the signed 64-bit range, so this should fail with a range error. The host database already does exactly that for the identical expression, and AGE inherits that behaviour everywhere except in its own agtype arithmetic:

SELECT (-9223372036854775807 - 1) / -1;
-- ERROR:  22003: bigint out of range
-- LOCATION:  int84div, int8.c:986
Actual behavior

The Cypher path does not report a range error. The integer division is executed unchecked; the hardware raises #DE/SIGFPE, and PostgreSQL's signal handler converts it into a floating-point exception:

ERROR:  22P01: floating-point exception
DETAIL:  An invalid floating-point operation was signaled. This probably means
         an out-of-range result or an invalid operation, such as division by zero.
LOCATION:  FloatExceptionHandler, postgres.c:3077
Lenguaje dominante
C
Estrellas
4.9k
Forks
532
Merge medio
9 d 18 h
PR fusionados (30 d)
10

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/age

Todos los issues de apache/age

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.