IvorySQL 5.0+ : un tournant pour les transitions Oracle vers PostgreSQL

IvorySQL : « un PostgreSQL avancé, complet, open source, compatible Oracle, avec un engagement ferme de rester toujours 100% compatible et un remplacement direct de la dernière version de PostgreSQL. » (GitHub)
C’est aussi le moteur préféré de notre équipe pour traduire à la fois le SQL étranger et les applications étrangères pour PostgreSQL ! Nous croyons en les transitions, pas les migrations — un déplacement progressif de l’ancien moteur de base de données vers le nouveau, spécifiquement pour réduire les risques et optimiser les résultats. Utiliser un projet comme celui-ci fait toute la différence pour atteindre ces deux objectifs.
La dernière version majeure est sortie il y a un peu de temps, mais nous sommes toujours enthousiastes quant à ce qui est nouveau et nous avons tenu à le partager.
Nouveautés
La version 5.0 (notes de version) est sortie le 25 novembre 2025 et une version mineure a déjà été publiée depuis (notes de version 5.1) le 18 décembre 2025. Ces éditions du projet sont le résultat direct des efforts massifs de l’équipe IvorySQL pour fournir de nombreuses améliorations de qualité ainsi que pour implémenter la compatibilité avec PostgreSQL 18.
IvorySQL 5 a apporté de nombreux changements nécessaires, notamment :
- PLiSQL — un sous-ensemble compatible d’Oracle PL/SQL
- Support des paquets compatibles Oracle
- Support des séquences style Oracle
- les améliorations de v5.0 telles que ROWID, %TYPE, %ROWTYPE et les sous-fonctions imbriquées
En particulier, nous apprécions beaucoup les améliorations fonctionnelles.
Par exemple, IvorySQL dispose désormais d’un meilleur traitement des valeurs NULL, où NULL est désormais traité comme une chaîne vide en mode compatible (correspondant au comportement Oracle) pour éviter des bugs lors de la migration. Ainsi, dans des situations telles que SELECT CONCAT('a' || NULL), IvorySQL retournera désormais 'a' au lieu de suivre le comportement de PostgreSQL qui retournerait NULL.
Une amélioration que nous apprécions particulièrement est qu’il est désormais possible d’imbriquer des fonctions et des procédures. Les fonctions peuvent être intégrées dans d’autres fonctions (à la manière des paquets Oracle, mais plus simplement, en utilisant uniquement des méthodes privées). Cela permet d’organiser une logique complexe en un seul endroit.
Dans le même ordre d’idées, le support a également été ajouté pour DO [ LANGUAGE lang_name ] code [USING IN | OUT | IN OUT, ...].
L’essayer
Actuellement, nous intégrons des applications allant de quelques paquets, procédures et fonctions (environ 10 à 50 objets) à des chargements de données massifs incluant environ 50 000 objets (plus de 10 000 procédures et des centaines de paquets).
Bien que de nombreuses fonctionnalités devront encore être ajoutées avec le temps, cela réduit considérablement l’effort nécessaire pour achever avec succès la transition d’Oracle vers PostgreSQL.
Si vous envisagez de le tester vous-même, il existe une pléthore d’options pour commencer (y compris la compilation depuis la source, l’utilisation de conteneurs, etc.)… et même une compilation WASM ! En particulier, cela permet d’exécuter IvorySQL directement dans le navigateur sans avoir à l’installer localement ; c’est très pratique pour examiner le support de syntaxe et faire le premier pas vers le monde de PostgreSQL.
Vous pouvez déployer le projet IvorySQL-WASM localement en quelques étapes, en suivant le billet de blog publié par IvorySQL sur le sujet.
Sinon, vous pouvez essayer le WASM hébergé sur le site web d’IvorySQL.
Et la suite ?
Vous souhaitez en apprendre davantage sur l’utilisation d’IvorySQL ? Restez à l’affût des webinaires enregistrés sur leur site web (à venir !), ou consultez les enregistrements de la conférence HOW2025 à Jinan, en Chine, en attendant.
La prochaine conférence à Jinan est déjà prévue, du 26 au 28 avril ! (Au passage, l’appel à contributions est ouvert jusqu’au 27 février 2026.)
Notre équipe est heureuse d’employer des contributeurs au projet IvorySQL. Certains de nos membres (Cédric Villemain, Yasir Hussain Shah) ont été reconnus dans les notes de version de 5.0 et 5.1 — et nous avons d’autres ajouts prévus. Pour la prochaine version, nous avons prévu des développements passionnants, notamment :
- la syntaxe de contrainte
ENABLE/DISABLE - l’ajout du paquet
UTL_FILE - le corps de
CREATE TRIGGERstyle Oracle (sans avoir besoin de créer une fonction au préalable) - le support de l’opérateur de jointure legacy d’Oracle
(+)
Nous avons hâte de voir les résultats du travail communautaire en cours pour la prochaine version. De nombreuses fonctionnalités excellentes sont activement ajoutées ; par exemple, récemment, un nouveau contributeur au projet, Rophy Tsai, a ajouté les paquets DBMS_OUTPUT et DBMS_UTILITY : des éléments largement utilisés dans les bases de code SQL basées sur Oracle. Ils ont récemment été fusionnés dans la branche principale d’IvorySQL et seront probablement inclus dans la prochaine version mineure ou majeure.
Pour ceux qui souhaitent passer à PostgreSQL ou l’explorer sans modifications importantes de leur logique de base de données et de leurs applications existantes, IvorySQL (en particulier v5.x) offre une solution pratique. Une migration directe vers PostgreSQL pourrait, dans certains cas, nécessiter des changements importants tant au niveau des objets de base de données qu’au niveau du code applicatif. IvorySQL aide à combler cet écart, permettant une adoption plus fluide de PostgreSQL avec une plus grande compatibilité.