dsinterval multiply/divide silently wraps day count past int32 (dead overflow check)
Les mainteneurs répondent en général sous 1 jour
@123123213weqw y travaille déjà.
Depuis le 28/10/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 25/100
Piste de recherche
Read contrib/ivorysql_ora/src/datatype/dsinterval.c, focusing on dsinterval_mul() and dsinterval_div() and the day-folding overflow checks. Reproduce the supplied SQL cases and inspect nearby checks for the expected error behavior. Done means both cases return ERROR: interval out of range; pull requests #2958 and #2961 show that work is already underway.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Environment
- IvorySQL 5.6 (official deb) +
ivorysql_oraextension built from current master (2c5e8dd) ivorysql.compatible_mode = oracle
Reproduction
SELECT interval '21 23:59:59.999999' day to second * 102261126;
-- +0-0 -2045222525 +23:58:17.739264000 (negative day count!)
SELECT interval '21 23:59:59.999999' day to second / 0.00000001;
-- +0-0 -2094967297 +23:58:20.000256000
Root cause
In contrib/ivorysql_ora/src/datatype/dsinterval.c, both dsinterval_mul() and dsinterval_div() fold whole days out of the time field with:
result->day += result->time / USECS_PER_DAY;
if (result->day > INT_MAX || result->day < INT_MIN) /* dead code */
result->day is int32; by the time the comparison runs, the += has already converted the int64 sum to int32 and wrapped, so the check can never fire. In the examples above, day * factor fits int32 and time * factor fits int64 individually, but their sum (~2.25e9 days) does not.
Expected
ERROR: interval out of range (matching the checks that guard the day/time products earlier in the same functions).
- Langage dominant
- C
- Étoiles
- 1.1k
- Forks
- 232
- Merge moyen
- 2 j 3 h
- PR mergées (30 j)
- 8
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de IvorySQL/IvorySQL
-
PostgreSQL::Version rejects documented full psql version outputPeut-être pris @feitiansiyan l’a pris il y a 1 jour. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
IvorySQL/IvorySQL#2999 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
UTL_FILE.NEW_LINE silently ignores negative line countsPeut-être pris @X-LightYear l’a pris il y a 9 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
IvorySQL/IvorySQL#2634 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Character function regression assumes normal identifier case on default interchange clustersPeut-être pris @zhouxj52 l’a pris il y a 15 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
IvorySQL/IvorySQL#2470 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
xml2 no-libxslt expected files do not match PG/Oracle input scriptsPeut-être pris @zhouxj52 l’a pris il y a 15 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
IvorySQL/IvorySQL#2468 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Title: Build failure in DBMS_SCHEDULER due to incorrect placement of pg_noreturnPeut-être pris @darshan-s-44 l’a pris il y a 22 jours. Ouvertebug good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de IvorySQL/IvorySQL
Issues similaires
-
examples/dnsdoctor: cleanup.sh stops at the first missing piece of a setup.sh that did not finishOuverteseverity: low
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
luainkernel/lunatik#2263 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 Une demi-journée Accessibilité débutants 72/100
vercel-labs/scriptc#2910 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
darktable-org/darktable#22939 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
espressif/idf-extra-components#903 ·
Les mainteneurs répondent en général sous 1 jour
-
os: input_password leaves terminal echo disabled when reading failsPeut-être pris @davlgd l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour