Documentation
This document in English.
L’utilisation de ce logiciel vous soumet à nos Conditions d’utilisation.
Introduction:
HyperSQLOOo fait partie d’une Suite d’extensions LibreOffice et/ou OpenOffice permettant de vous offrir des services inovants dans ces suites bureautique.
Cette extension vous permet:
- De surmonter le dysfonctionnement 139538 pour les utilisateurs de LibreOffice sur Linux.
- D’utiliser la base de données HyperSQL en mode intégré, rendant la base de donnée portable (un seul fichier odb).
- De profitez des améliorations offertes par l’extension jdbcDriverOOo:
- La gestion des utilisateurs et des rôles (groupes).
- La gestion des nanosecondes et des fuseaux horaires.
- La gestion de
java.sql.Array
, java.sql.Blob
, java.sql.Clob
…
- De remplacer le pilote HsqlDB 1.8 intégré fourni par LibreOffice / OpenOffice, une version qui aura bientôt plus de 20 ans, par une version HsqlDB récente et à votre choix.
- De supporter les propriétés ACID de la base de données HsqlDB sous jancente.
Si vous souhaitez migrer des fichiers odb créés avec LibreOffice ou OpenOffice et HsqlDB version 1.8, il est impératif d’utiliser la dernière version de HyperSQLOOo. La procédure de migration est donnée dans la section Comment migrer une base de données intégrée.
Etant un logiciel libre je vous encourage:
Bref, à participer au developpement de cette extension.
Car c’est ensemble que nous pouvons rendre le Logiciel Libre plus intelligent.
Prérequis:
L’extension HyperSQLOOo utilise l’extension jdbcDriverOOo pour fonctionner.
Elle doit donc répondre aux prérequis de l’extension jdbcDriverOOo.
Installation:
Il semble important que le fichier n’ait pas été renommé lors de son téléchargement.
Si nécessaire, renommez-le avant de l’installer.
-
Installer l’extension jdbcDriverOOo.oxt 
Cette extension est nécessaire pour utiliser HsqlDB version 2.7.4 avec toutes ses fonctionnalités.
-
Installer l’extension HyperSQLOOo.oxt version 
Redémarrez LibreOffice après l’installation.
Attention, redémarrer LibreOffice peut ne pas suffire.
-
Sous Windows pour vous assurer que LibreOffice redémarre correctement, utilisez le Gestionnaire de tâche de Windows pour vérifier qu’aucun service LibreOffice n’est visible après l’arrêt de LibreOffice (et tuez-le si ç’est le cas).
-
Sous Linux ou macOS vous pouvez également vous assurer que LibreOffice redémarre correctement, en le lançant depuis un terminal avec la commande
soffice
et en utilisant la combinaison de touches Ctrl + C
si après l’arrêt de LibreOffice, le terminal n’est pas actif (pas d’invité de commande).
Après avoir redémarré LibreOffice, vous pouvez vous assurer que l’extension et son pilote sont correctement installés en vérifiant que le pilote io.github.prrvchr.HyperSQLOOo.Driver
est répertorié dans le Pool de Connexions, accessible via le menu: Outils -> Options -> LibreOffice Base -> Connexions. Il n’est pas nécessaire d’activer le pool de connexions.
Si le pilote n’est pas répertorié, la raison de l’échec du chargement du pilote peut être trouvée dans la journalisation de l’extension. Cette journalisation est accessible via le menu: Outils -> Options -> LibreOffice Base -> Pilote HslqDB intégré -> Options de journalisation.
La journalisation HyperSQLLogger
doit d’abord être activée, puis LibreOffice redémarré pour obtenir le message d’erreur dans le journal.
N’oubliez pas au préalable de mettre à jour la version du JRE ou JDK Java installée sur votre ordinateur, cette extension utilise la nouvelle version de jdbcDriverOOo qui nécessite Java version 17 ou ultérieure au lieu de Java 11 auparavant.
Utilisation:
Dans LibreOffice aller à: Fichier -> Nouveau -> Base de données…:

A l’étape: Sélectionner une base de données:
- selectionner: Créer une nouvelle base de données
- Dans: Base de données intégrée: choisir: Pilote HsqlDB intégré
- cliquer sur le bouton: Suivant

A l’étape: Enregistrer et continuer:
- ajuster les paramètres selon vos besoins…
- cliquer sur le bouton: Terminer

Maintenant à vous d’en profiter…
LibreOffice vous offre la possibilité d’importer des données depuis Calc directement dans une table existante ou créée pour cet import. Voici la procédure à suivre:
- Vous devez d’abord créer une nouvelle base de données HsqlDB comme décrit dans la section précédente.
- Dans Calc sélectionner une plage de cellules puis: Edition -> Copier. Lors de la création d’une nouvelle table, il est possible de mettre dans la première ligne les noms des colonnes telles qu’elles seront importées dans cette nouvelle table.
- Dans Base (ie: la nouvelle base de données HsqlDB), après avoir sélectionné Tables dans le volet Base de données, faites un clic droit dans le volet Tables puis: Coller et suivez l’assistant proposé par LibreOffice. Il est important de nommer la table avec un nom complet (ie: PUBLIC.PUBLIC.Table1). Voir la documentation HsqlDB sur le catalogue et le schéma par défaut.
Si vous souhaitez migrer une base de données intégrée (HsqlDB version 1.8.0) vers une version plus récente (par exemple 2.7.2), procédez comme suit:
- Faite une copie (sauvegarde) de votre base de données (fichier odb).
- Si elles ne sont pas déjà installées, installez cette extension et l’extension jdbcDriverOOo.
- Changez l’archive du pilote HsqlDB dans: Outils -> Options -> Pilotes Base -> Pilote JDBC -> Options des pilotes JDBC -> Archive -> Changer, par une version 1.8.1.10.
- Redémarrer LibreOffice / OpenOffice aprés le changement du pilote (hsqldb.jar).
- Ouvrir le fichier odb dans Base (double clique sur le fichier odb).
- Dans Base allez à: Outils -> SQL et tapez la commande SQL:
SHUTDOWN COMPACT
ou SHUTDOWN SCRIPT
.
- Recommencez cette procédure à l’étape 3 en utilisant une version 2.4.0 ou 2.4.1 ou 2.5.0.
- Recommencez cette procédure à l’étape 3 en utilisant la version 2.7.2.
HyperSQLOOo est un service com.sun.star.sdbc.Driver UNO écrit en Python.
Il s’agit d’une surcouche à l’extension jdbcDriverOOo permettant de stocker la base de données HsqlDB dans un fichier odb (qui est, en fait, un fichier compressé).
Son fonctionnement est assez basique, à savoir:
- Lors d’une demande de connexion, plusieurs choses sont faites:
- Lors de la fermeture ou du changement de nom (Enregistrer sous) du fichier odb, si la connexion a réussi, le DocumentHandler copie tous les fichiers présents dans le sous-répertoire dans le (nouveau) répertoire database du fichier odb (zip), puis supprime le sous-répertoire.
Le but principal de ce mode de fonctionnement est de profiter des caractéristiques ACID de la base de données sous-jacente en cas de fermeture anormale de LibreOffice.
En contre partie, la fonction: fichier -> Sauvegarder n’a aucun effet sur la base de données sous jacente. Seul la fermeture du fichier odb ou son enregistrement sous un nom different (Fichier -> Enregistrer sous) effectura la sauvegarde de la base de donnée dans le fichier odb.
Normalement, l’extension est créée avec Eclipse pour Java et LOEclipse. Pour contourner Eclipse, j’ai modifié LOEclipse afin de permettre la création de l’extension avec Apache Ant.
Pour créer l’extension HyperSQLOOo avec l’aide d’Apache Ant, vous devez:
- Installer le SDK Java version 8 ou supérieure.
- Installer Apache Ant version 1.10.0 ou supérieure.
- Installer LibreOffice et son SDK version 7.x ou supérieure.
- Cloner le dépôt HyperSQLOOo sur GitHub dans un dossier.
- Depuis ce dossier, accédez au répertoire:
source/HyperSQLOOo/
- Dans ce répertoire, modifiez le fichier
build.properties
afin que les propriétés office.install.dir
et sdk.dir
pointent vers les dossiers d’installation de LibreOffice et de son SDK, respectivement.
- Lancez la création de l’archive avec la commande:
ant
- Vous trouverez l’archive générée dans le sous-dossier:
dist/
A été testé avec:
-
LibreOffice 24.2.1.2 (x86_64)- Windows 10
-
LibreOffice 7.3.7.2 - Lubuntu 22.04
-
LibreOffice 24.2.1.2 - Lubuntu 22.04
-
LibreOffice 24.8.0.3 (X86_64) - Windows 10(x64) - Python version 3.9.19 (sous Lubuntu 22.04 / VirtualBox 6.1.38)
Je vous encourage en cas de problème 
de créer un dysfonctionnement
J’essaierai de le résoudre 
Historique:
Ce qui a été fait pour la version 0.0.1:
-
La rédaction de ce pilote a été facilitée par une discussion avec Villeroy, sur le forum OpenOffice, que je tiens à remercier, car la connaissance ne vaut que si elle est partagée…
-
Utilisation de l’ancienne version de HsqlDB 1.8.0 (peut être facilement mise à jour).
-
Ajout d’une boîte de dialogue permettant de mettre à jour le pilote (hsqldb.jar) dans: Outils -> Options -> Pilotes Base -> Pilote HsqlDB intégré
-
Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 0.0.2:
-
Maintenant, le pilote divise automatiquement un odb lorsqu’il est ouvert… Cela permet la conversion des fichiers odb produits par le pilote LibreOffice / OpenOffice HsqlDB intégré 
-
Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 0.0.3:
-
Je tiens particulièrement à remercier fredt à hsqldb.org pour:
-
Fonctionne désormais avec OpenOffice sous Windows.
-
Lors de la décompression, un conflit de nom de fichier affiche désormais une erreur précise.
-
Gère désormais correctement les espaces dans les noms de fichiers et les chemins.
-
Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 0.0.4:
Ce qui a été fait pour la version 0.0.5:
- Ecriture d’un DocumentHandler responsable:
- De l’extraction des fichiers de base de données contenus dans le fichier odb à la connexion.
- De la sauvegarde des fichiers de base de données dans le fichier odb lors de sa fermeture.
- Réécriture de Driver.py afin de permettre:
- Son fonctionnement avec le nouveau pilote JDBC fourni par l’extension jdbcDriverOOo version 0.0.4.
- La prise en charge du nouveau DocumentHandler afin de rendre les fichiers odb portables tels qu’ils étaient dans LibreOffice / OpenOffice avec la version 1.8 de HsqlDB.
- Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 1.0.0:
Ce qui a été fait pour la version 1.0.1:
-
Renommage de l’extension de HsqlDriverOOo en HyperSQLOOo.
-
Résolution du dysfonctionnement 156511 survenant lors de l’utilisation de l’interface com.sun.star.embed.XStorage. Le contournement consiste à utiliser la méthode copyElementTo() au lieu de moveElementTo(). Les versions de LibreOffice 7.6.x et supérieures deviennent utilisables.
Ce qui a été fait pour la version 1.0.2:
Ce qui a été fait pour la version 1.1.0:
- Tous les paquets Python nécessaires à l’extension sont désormais enregistrés dans un fichier requirements.txt suivant la PEP 508.
- Désormais si vous n’êtes pas sous Windows alors les paquets Python nécessaires à l’extension peuvent être facilement installés avec la commande:
pip install requirements.txt
- Modification de la section Prérequis.
Ce qui a été fait pour la version 1.1.1:
Ce qui a été fait pour la version 1.1.2:
- Prise en charge de la dernière version de jdbcDriverOOo 1.3.1.
- Lors de l’enregistrement sous un nom différent, la base de données si ouverte sera fermée correctement.
- Lors de l’ouverture d’un fichier odb, si la connexion échoue, pour éviter la destruction des données, la recompression des fichiers de la base de données n’aura pas lieu. Merci à Robert d’avoir su détecter ce dysfonctionnement.
Ce qui a été fait pour la version 1.1.3:
- Utilisation du nouveau format de données implémenté dans la version 1.1.2. Par conséquent, si vous devez ouvrir des fichiers odb créés avec une version inférieure à 1.1.2, vous devez d’abord les ouvrir avec la version 1.1.2, sinon une erreur sera générée.
Ce qui a été fait pour la version 1.1.4:
- Mise à jour du paquet Python packaging vers la version 24.1.
- Mise à jour du paquet Python setuptools vers la version 72.1.0.
- L’extension vous demandera d’installer l’extensions jdbcDriverOOo en version 1.4.2 minimum.
Ce qui a été fait pour la version 1.1.5:
- Correction du problème n°2 qui semble être une régression liée à la sortie de JaybirdOOo. Merci à TeddyBoomer de l’avoir signalé.
- Mise à jour du paquet Python setuptools vers la version 73.0.1.
- Les options de l’extension sont désormais accessibles via: Outils -> Options -> LibreOffice Base -> Pilote HsqlDB intégré
Ce qui a été fait pour la version 1.1.6:
- La journalisation accessible dans les options de l’extension s’affiche désormais correctement sous Windows.
- Les modifications apportées aux options de l’extension, qui nécessitent un redémarrage de LibreOffice, entraîneront l’affichage d’un message.
- Support de LibreOffice version 24.8.x.
Ce qui a été fait pour la version 1.1.7:
- Nécessite la dernière version de jdbcDriverOOo 1.4.4.
- Dans les options de l’extension il est possible de définir les options: Afficher les tables système, Utiliser les signets et Forcer le mode SQL qui seront spécifiques à ce pilote.
Ce qui a été fait pour la version 1.1.8:
- L’extension vous demandera d’installer l’extensions jdbcDriverOOo en version 1.4.6 minimum.
- Modification des options de l’extension accessibles via : Outils -> Options -> LibreOffice Base -> Pilote HsqlDB intégré afin de respecter la nouvelle charte graphique.
Ce qui a été fait pour la version 1.2.0:
- Mise à jour du paquet Python packaging vers la version 25.0.
- Mise à jour du paquet Python setuptools vers la version 75.3.2.
- Déploiement de l’enregistrement passif permettant une installation beaucoup plus rapide des extensions et de différencier les services UNO enregistrés de ceux fournis par une implémentation Java ou Python. Cet enregistrement passif est assuré par l’extension LOEclipse via les PR#152 et PR#157.
- Modification de LOEclipse pour prendre en charge le nouveau format de fichier
rdb
produit par l’utilitaire de compilation unoidl-write
. Les fichiers idl
ont été mis à jour pour prendre en charge les deux outils de compilation disponibles: idlc et unoidl-write.
- Il est désormais possible de créer le fichier oxt de l’extension HyperSQLOOo uniquement avec Apache Ant et une copie du dépôt GitHub. La section Comment créer l’extension a été ajoutée à la documentation.
- Toute erreur survenant lors du chargement du pilote sera consignée dans le journal de l’extension si la journalisation a été préalablement activé. Cela facilite l’identification des problèmes d’installation sous Windows.
- Nécessite l’extension jdbcDriverOOo en version 1.5.0 minimum.
Que reste-t-il à faire pour la version 1.2.0: