Ces derniers mois ont été occupés alors que nous travaillons à la fusion de Postgres-XL avec la dernière et la meilleure version de PostgreSQL. Postgres-XL est un fork open source de PostgreSQL qui fournit une plate-forme évolutive pour OLTP et Business Intelligence. La version actuelle de PostgreSQL-XL est basée sur PostgreSQL 9.2, il lui manque donc toutes les améliorations apportées à PostgreSQL au cours des trois dernières années.
2ndQuadrant et d'autres sociétés travaillent à apporter une évolutivité distribuée dans le noyau PostgreSQL ainsi qu'à créer des outils et des extensions en dehors du noyau. Dans ce cadre, Postgres-XL possède un certain nombre de fonctionnalités que nous aimerions réintégrer dans le cœur de PostgreSQL. 2ndQuadrant s'est donc chargé de mettre à jour la base de code Postgres-XL vers la dernière version de PostgreSQL comme première étape. Après plus de 3 mois de travail, PostgreSQL 9.5 est toujours en phase alpha, nous voulions donc faire un rapport d'avancement sur l'avancée des travaux. Je dois également dire les mots magiques :ce travail en cours sur Postgres-XL fait partie du projet AXLE, financé par l'Union européenne dans le cadre de l'accord de subvention 318633.
Préparation de la fusion
Étant donné que PostgreSQL et Postgres-XL utilisent tous deux GIT comme système de contrôle de source, cela rend le processus de fusion beaucoup plus simple puisque GIT fournit de nombreux outils pour assister le processus. Mais dès que nous avons essayé la fusion, nous avons rencontré le premier obstacle.
Nous avons réalisé que le référentiel Postgres-XL actuel est basé sur une ancienne version mineure 9.2 de PostgreSQL. Cela signifie qu'il y a eu des validations et des modifications dans la branche principale de PostgreSQL qui n'ont jamais été apportées à la branche principale de PostgreSQL ou qui avaient des identifiants de validation différents. Ainsi, la fusion avec la branche principale de PostgreSQL a généré beaucoup plus de conflits que ce à quoi nous nous attendions. Ainsi, la première tâche que nous devions accomplir était de rebaser le référentiel Postgres-XL 9.2 sur un point de validation ultérieur. Cela nécessitait évidemment une marche prudente, en s'assurant que rien ne se casse pendant le processus. Une fois la rebase de base terminée, nous avons également fusionné tous les correctifs de bogues et améliorations de PostgreSQL, créé une branche stable PostgreSQL 9.2 et fusionné la branche 9.2 avec la dernière version mineure PostgreSQL 9.2 disponible.
Défis rencontrés lors de la fusion
La fusion proprement dite avec la branche principale de PostgreSQL n'a pas non plus été une tâche facile. Notez que nous sautions 3 versions majeures de PostgreSQL, ce qui représentait presque 3 ans de travail de développement. Heureusement, git-mergetool est très pratique pour les fusions à grande échelle. Vous pouvez utiliser votre éditeur préféré (vimdiff dans notre cas) pour bien voir les conflits de fusion et les résoudre. Bien que certains conflits soient simples et nécessitent des ajustements mineurs, beaucoup nécessitent une lecture et une compréhension attentives du code. Bien qu'il ne soit pas trivial de prendre en charge toutes les nouvelles fonctionnalités, nous avons essayé de préserver autant que possible et nous avons plutôt bien réussi.
L'autre défi majeur était la fusion des modifications de la documentation. Étant donné que le projet Postgres-XL avait créé une copie de la documentation SGML existante, la fusion de GIT avec la branche master n'a généré aucune mise à jour de la copie. Cette fusion manuelle requise. Pour nous assurer que cela ne sera plus nécessaire lors de futures fusions, nous apportons désormais les modifications de documentation sur place.
Quelle est la prochaine ?
Il y a beaucoup de choses qui doivent être complétées avant que nous puissions publier Postgres-XL 9.5 au grand public :
- Améliorer la couverture des tests de régression pour Postgres-XL
- Corrigez les bugs et ajoutez la prise en charge de nouvelles fonctionnalités
- Effectuer des tests de performances et des ajustements systématiques
- Créer une branche PostgreSQL 9.5 et fusionner avec la dernière branche stable PostgreSQL 9.5
Nous ne sommes pas encore prêts pour l'examen de PostgreSQL-XL, mais nous nous attendons à ce que PostgreSQL 9.5 Beta soit prêt à peu près au même moment que PostgreSQL 9.5 Beta.
Recherchez mon prochain article de blog dans environ un mois pour la prochaine mise à jour.