Je me mêle a la conversation car nous essayons actuellement de remplacer Oracle par HSQLDB pour exécuter les tests d’intégrations sur notre logiciel, car HSQLDB dispose d'un mode de compatibilité avec Oracle (syntaxe, mais je ne suis pas sur pour l’exécution (De toute façon, c'est configurable). J'ai entendu dire que H2 avait aussi une compatibilité avec Oracle, mais je ne l'ai pas essayé.
Il y avait bien sûr les minimes différences syntaxiques facilement corrigées dans le code de l'appli:
-- utiliser le nom de la table avec la colonne ne marche pas dans HSQLDBINSERTINTOTABLE_NAME(TABLE_NAME.COL1,TABLE_NAME.COL2)VALUES("","")
-- HSQLDB n'aimait pas ces parenthèses:SELECT*FROMTABLE1(LEFTOUTERJOINTABLE2ON...)
-- La syntaxe oracle avec un '+' pour les left outer join:-- Oracle8iselectlast_name,d.department_idfromemployeese,departmentsdwheree.department_id=d.department_id(+);-- Oracle9iselectlast_name,d.department_idfromemployeeseLEFTOUTERJOINDepartmentsdONe.department_id=d.department_id;
Nous avons trouvé quelques autres bugs qui ont été corrigés depuis:
utilisation de ROWNUM dans des requêtes imbriquées
différence dans l'implémentation de JDBC
…
Il y a également des truc plus lourd, genre SELECT COUNT(*) OVER() et START WITH… CONNECT BY PRIOR. Pour START WITH… CONNECT BY PRIOR, le mainteneur de HSQLDB nous suggérait de le remplacer par une requête "WITH RECURSIVE" standard. Pas possible pour nous :( Alors on essaie de rentrer en contact avec le mainteneur de HSQLDB pour qu'il les implémente pour nous.
Heureusement que l'on n'utilise pas MERGE dans notre appli :) Cette instruction ressemble a la méthode merge() dans Hibernate.
Bref au final, ce petit project réalisé pour un logiciel propriétaire (hélas) aura permis d'améliorer un projet libre ce qui peut être permettra a d'autres personnes de sauter le pas et de remplacer Oracle par HSQLDB?
[^] # Re: Oui mais Oracle n'est pas un moteur SQL...
Posté par djano . En réponse à la dépêche Migrer de Oracle à PostgreSQL : Ora2Pg. Évalué à 3.
Dites donc le sujet devient très intéressant :)
Je me mêle a la conversation car nous essayons actuellement de remplacer Oracle par HSQLDB pour exécuter les tests d’intégrations sur notre logiciel, car HSQLDB dispose d'un mode de compatibilité avec Oracle (syntaxe, mais je ne suis pas sur pour l’exécution (De toute façon, c'est configurable). J'ai entendu dire que H2 avait aussi une compatibilité avec Oracle, mais je ne l'ai pas essayé.
Il y avait bien sûr les minimes différences syntaxiques facilement corrigées dans le code de l'appli:
Nous avons trouvé quelques autres bugs qui ont été corrigés depuis:
utilisation de ROWNUM dans des requêtes imbriquées
différence dans l'implémentation de JDBC
…
Il y a également des truc plus lourd, genre SELECT COUNT(*) OVER() et START WITH… CONNECT BY PRIOR. Pour START WITH… CONNECT BY PRIOR, le mainteneur de HSQLDB nous suggérait de le remplacer par une requête "WITH RECURSIVE" standard. Pas possible pour nous :( Alors on essaie de rentrer en contact avec le mainteneur de HSQLDB pour qu'il les implémente pour nous.
Heureusement que l'on n'utilise pas MERGE dans notre appli :) Cette instruction ressemble a la méthode merge() dans Hibernate.
Bref au final, ce petit project réalisé pour un logiciel propriétaire (hélas) aura permis d'améliorer un projet libre ce qui peut être permettra a d'autres personnes de sauter le pas et de remplacer Oracle par HSQLDB?