Yann Moisan

Scala, Web, Linux…

HSQLDB et syntaxe Oracle

La problématique

Nous utilisons Oracle en production et HSQLDB pour les tests unitaires. Ces deux produits n'utilisent pas toujours la même syntaxe SQL. A titre d'exemple, voici la syntaxe pour récuperer la prochaine valeur d'une séquence.
Avec HSQL :

SELECT […] NEXT VALUE FOR <sequencename> […] FROM <tablename>;

Avec Oracle :

SELECT <sequencename>.NEXTVAL FROM dual;

La nouvelle fonctionnalité de HSQLDB 2.0

HSQLDB offre depuis la version 2.0 le support partiel de la syntaxe Oracle, en ajoutant simplement la propriété sql.syntax_ora=true sur l'URL de connexion. Cela permet d'utiliser les mêmes requêtes SQL pour les tests unitaires et la production. Les premiers tests sont concluants…

Un bug…

Malheureusement, notre cas d'utilisation ne fonctionne pas : utilisation d'une séquence dans la requête d'insertion. Après une vaine recherche sur le forum du projet, je décide de poster un message (ce qui passe par la création d'un compte SourceForge). Et un peu moins de 3 heures plus tard, le bug est fixé. La correction sera disponible dans la version snapshot du lendemain. Un grand bravo à Fred Toussi pour sa réactivité.

Conclusion

Cela montre bien la force de l'open source, notamment pour les projets ayant une communauté très active.