Documentation
This document in English.
L’utilisation de ce logiciel vous soumet à nos Conditions d’utilisation
Introduction:
jdbcDriverOOo fait partie d’une Suite d’extensions LibreOffice et/ou OpenOffice permettant de vous offrir des services inovants dans ces suites bureautique.
Cette extension est la transcription en Java pur de l’API java.sql.* vers l’API com.sun.star.sdbc, com.sun.star.sdbcx et com.sun.star.sdb de UNO.
Elle vous permet d’utiliser le pilote JDBC de votre choix directement dans Base.
Elle embarque les pilotes pour les base de données suivantes:
Grâce aux pilotes fournissant un moteur de base de données intégré tels que: HsqlDB, H2, SQLite ou Derby, il est possible dans Base de créer et gérer très facilement des bases de données, aussi facilement que de créer des documents Writer.
Vous trouverez les informations nécessaires à la création d’une base de données avec ces pilotes dans la section: URL de connexion
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:
jdbcDriverOOo est un pilote JDBC écrit en Java.
Son utilisation nécessite l’installation et la configuration dans LibreOffice d’un JRE version 11 ou ultérieure.
Je vous recommande Adoptium comme source d’installation de Java.
Si vous utilisez le pilote HsqlDB avec LibreOffice sous Linux, alors vous êtes sujet au dysfonctionnement #139538. Pour contourner le problème, veuillez désinstaller les paquets avec les commandes:
-
sudo apt remove libreoffice-sdbc-hsqldb
(pour désinstaller le paquet libreoffice-sdbc-hsqldb)
-
sudo apt remove libhsqldb1.8.0-java
(pour désinstaller le paquet libhsqldb1.8.0-java)
Si vous souhaitez quand même utiliser la fonctionnalité HsqlDB intégré fournie par LibreOffice, alors installez l’extension HyperSQLOOo.
Sous Linux et macOS les paquets Python utilisés par l’extension, peuvent s’il sont déja installé provenir du système et donc, peuvent ne pas être à jour.
Afin de s’assurer que vos paquets Python sont à jour il est recommandé d’utiliser l’option Info système dans les Options de l’extension accessible par:
Outils -> Options -> LibreOffice Base -> Pilote JDBC pur Java -> Options du pilote UNO -> Voir journal -> Info système
Si des paquets obsolètes apparaissent, vous pouvez les mettre à jour avec la commande:
pip install --upgrade <package-name>
Pour plus d’information voir: Ce qui a été fait pour la version 1.1.0.
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.
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).
Utilisation:
Ceci explique comment utiliser une base de données HsqlDB.
Les protocoles pris en charge par HsqlDB sont: hsql://, hsqls://, http://, https://, mem://, file:// et res://.
Ce mode d’utilisation vous explique comment vous connecter avec les protocoles file:// et hsql://.
Dans LibreOffice / OpenOffice aller au menu: Fichier -> Nouveau -> Base de données
A l’étape: Sélectionner une base de données
- selectionner: Connecter une base de données existante
- choisir: Pilote HsqlDB
- cliquer sur le bouton: Suivant
A l’étape: Paramètres de connexion
- pour le protocole: file://
- dans URL de la source de données saisir:
- pour Linux:
file:///tmp/testdb;shutdown=true;hsqldb.default_table_type=cached;get_column_name=false
- pour Windows:
file:///c:/tmp/testdb;shutdown=true;hsqldb.default_table_type=cached;get_column_name=false
- pour le protocole: hsql://
- Dans un terminal, se placer dans un dossier contenant l’archive hsqldb.jar et lancer:
- pour Linux:
java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:///tmp/testdb --silent false
- pour Windows:
java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:///c:/tmp/testdb --silent false
- dans URL de la source de données saisir:
hsql://localhost/
- cliquer sur le bouton: Suivant
A l’étape: Paramétrer l’authentification de l’utilisateur
- cliquer sur le bouton: Tester la connexion
Si la connexion a réussi, vous devriez voir cette fenêtre de dialogue:
Maintenant à vous d’en profiter…
Si vous souhaitez mettre à jour une base de données HsqlDB intégrée (un seul fichier odb), veuillez vous référer à la section: Comment migrer une base de données intégrée.
Il est possible de mettre à jour le pilote JDBC (hsqldb.jar, h2.jar, derbytools.jar) vers une version plus récente.
Si vous utilisez HsqlDB comme base de données, procédez comme suit:
- Faite une copie (sauvegarde) du dossier contenant votre base de données.
- Lancer LibreOffice / OpenOffice et changez la version du pilote JDBC par le menu: Outils -> Options -> LibreOffice Base -> Pilote JDBC pur Java -> Options des pilotes JDBC, par une version plus récente.
- Redémarrer LibreOffice / OpenOffice aprés le changement du pilote (hsqldb.jar, h2.jar, derbytools.jar).
- Dans Base, aprés avoir ouvert votre base de données, allez au menu: Outils -> SQL et tapez la commande SQL:
SHUTDOWN COMPACT
ou SHUTDOWN SCRIPT
.
Maintenant votre base de données est à jour.
Amélioration dans LibreOffice/OpenOffice Base:
Ce pilote permet dans LibreOffice / OpenOffice Base la gestion des utilisateurs, des rôles (groupes) et de leurs privilèges associés de la base de données sous jacente.
La gestion des utilisateurs et des privilèges dans Base:
La gestion des utilisateurs de la base de données sous jacente est accessible dans Base par le menu: Administration -> Gestion des utilisateurs
La gestion des privilèges des utilisateurs de la base de données sous jacente est accessible dans cette fenêtre par le bouton: Modifier les privilèges
Si le privilège est hérité d’un rôle assigné, la case à cocher est de type à trois états.
La gestion des rôles (groupes) dans Base:
La gestion des rôles (groupes) de la base de données sous jacente est accessible dans Base par le menu: Administration -> Gestion des groupes
La gestion des utilisateurs membres du groupe de la base de données sous jacente est accessible dans cette fenêtre par le bouton: Utilisateurs du groupe
La gestion des roles assignés au groupe de la base de données sous jacente est accessible dans cette fenêtre par le bouton: Roles du groupe
Cette fonctionnalité est une extension de l’API UNO et ne sera disponible que si le pilote LibreOffice / OpenOffice sous jacent le permet.
URL de connexion:
Certaines bases de données comme hsqlDB, H2, SQLite ou Derby permettent la création de la base de données lors de la connexion si cette base de données n’existe pas encore.
Cette fonctionnalité rend la création de bases de données aussi simple que celle de documents Writer. Généralement il suffit d’ajouter l’option attendue par le driver à l’URL de connexion.
Cette URL de connexion peut être différente selon le système d’exploitation de votre ordinateur (Windows, Linux ou MacOS).
Pour créer une base de données, dans LibreOffice allez dans le menu: Fichier -> Nouveau -> Base de données -> Connecter une base de données existante, puis selon votre choix:
-
Pilote HsqlDB:
- Linux:
file:///home/prrvchr/testdb/hsqldb/db;hsqldb.default_table_type=cached;create=true
- Windows:
C:\Utilisateurs\prrvc\testdb\hsqldb\db;hsqldb.default_table_type=cached;create=true
-
Pilote H2:
- Linux:
file:///home/prrvchr/testdb/h2/db
- Windows:
C:\Utilisateurs\prrvc\testdb\h2\db
-
Pilote SQLite:
- Linux:
file:///home/prrvchr/testdb/sqlite/test.db
- Windows:
C:/Utilisateurs/prrvc/testdb/sqlite/test.db
-
Pilote Derby:
- Linux:
/home/prrvchr/testdb/derby;create=true
- Windows:
C:\Utilisateurs\prrvc\testdb\derby;create=true
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:
Introduction:
Ce pilote a été écrit pour contourner certains problèmes inhérents à l’implémentation UNO du pilote JDBC intégré dans LibreOffice / OpenOffice, à savoir:
- L’impossibilité de fournir le chemin de l’archive Java du driver (hsqldb.jar) lors du chargement du pilote JDBC.
- Ne pas pouvoir utiliser les instructions SQL préparées (PreparedStatement) voir dysfonctionnement #132195.
Afin de profiter des dernières fonctionnalités offertes par les bases de données et entre autre HsqlDB, il était nécessaire d’écrire un nouveau pilote.
Jusqu’à la version 0.0.3, ce nouveau pilote n’est qu’une surcouche ou emballage (wrapper) en Python autour des services UNO fournis par le pilote LibreOffice / OpenOffice JDBC défectueux.
Depuis la version 0.0.4, il a été complètement réécrit en Java sous Eclipse, car qui mieux que Java peut donner accès à JDBC dans l’API UNO…
Afin de ne pas empêcher le pilote JDBC natif de fonctionner, il se charge lors de l’appel des protocoles suivants:
xdbc:*
xdbc:hsqldb:*
xdbc:sqlite:*
xdbc:mariadb:*
xdbc:...
mais utilise le protocole jdbc:*
en interne pour se connecter.
Il permet également d’offrir des fonctionnalités que le pilote JDBC implémenté dans LibreOffice ne fournit pas, à savoir:
- La gestion des utilisateurs, des roles (groupes) et des privilèges dans Base.
- L’utilisation du type SQL Array dans les requêtes.
- Tout ce que nous sommes prêts à mettre en œuvre.
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 la nouvelle version de HsqlDB 2.5.1.
-
Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 0.0.2:
Ce qui a été fait pour la version 0.0.3:
-
Je tiens particulièrement à remercier fredt à hsqldb.org pour:
-
Son accueil pour ce projet et sa permission d’utiliser le logo HsqlDB dans l’extension.
-
Son implication dans la phase de test qui a permis de produire cette version 0.0.3.
-
La qualité de sa base de données HsqlDB.
-
Fonctionne désormais avec OpenOffice sous Windows.
-
Un protocole non pris en charge affiche désormais une erreur précise.
-
Une url non analysable 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:
- Réécriture de Driver en Java version 11 OpenJDK amd64 sous Eclipse IDE for Java Developers version 4.23.0 avec les plugins:
- LOEclipse ou LibreOffice Eclipse plugin for extension development version 4.0.1.
- PyDev ou Python IDE for Eclipse version 9.3.0.
-
Ecriture des services Statement
, PreparedStatement
, CallableStatement
, ResultSet
, ...
de JDBC (merci à hanya pour MRI qui m’a été d’une aide précieuse…)
-
Intégration dans jdbcDriverOOo des pilotes JDBC H2 et Derby en plus de HsqlDB. Implémentation de Services Java:
Afin de corriger d’éventuels défauts, ou incompatibilité avec l’API UNO, des pilotes JDBC embarqués.
-
Renommage du dépot et de l’extension HsqlDBDriverOOo en jdbcDriverOOo.
-
Prise en charge dans Base des clés primaires auto incrémentées pour HsqlDB, H2 et Derby.
-
Ecriture de com.sun.star.sdbcx.Driver. Ce pilote de haut niveau doit permettre la gestion des utilisateurs, des rôles et des privilèges dans Base. Son utilisation peut être désactivée via le menu: Outils -> Options -> LibreOffice Base -> Pilote JDBC pur Java.
-
Implémentation d’un fournisseur de services Java UnoLogger.jar pour l’API SLF4J afin de pouvoir rediriger la journalisation des pilotes des bases de données sous-jacentes vers l’API UNO com.sun.star.logging.*.
-
Réécriture, en suivant le modèle MVC, de la fenêtre des Options, accessible par le menu: Outils -> Options -> Pilotes Base -> Pilote JDBC, pour permettre:
- La mise à jour et/ou l’ajout d’archives Java de pilotes JDBC.
- L’activation de la journalisation du pilote de la base de la données sous-jacente.
-
Ecriture, en suivant le modèle MVC, des fenêtres d’administration des utilisateurs et des rôles (groupes) et de leurs privilèges associés, accessible dans Base par le menu: Administration -> Gestion des utilisateurs et/ou Administration -> Gestion des groupes, permettant:
Ces nouvelles fonctionnalités n’ont étés testées pour l’instant qu’avec le pilote HsqlDB.
- Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 1.0.0:
- Intégration de HyperSQL version 2.7.2.
Ce qui a été fait pour la version 1.0.1:
-
Intégration de SQLite JDBC version 3.42.0.0. Je tiens tout particulièrement à remercier gotson pour les nombreuses améliorations apportées au pilote SQLite JDBC qui ont rendu possible l’utilisation de SQLite dans LibreOffice/OpenOffice.
-
Ce pilote peut être enveloppé par un autre pilote ([HyperSQLOOo][26] ou SQLiteOOo) grâce à une url de connexion désormais modifiable.
-
Il est possible d’afficher ou non les tables système dans: Outils -> Options -> Pilotes Base -> Pilote JDBC -> Options du pilote UNO -> Afficher les tables système
-
Il est possible d’interdire l’utilisation de jeux de résultats actualisables dans: Outils -> Options -> Pilotes Base -> Pilote JDBC -> Options du pilote UNO -> Utiliser les bookmarks
-
De nombreuses corrections ont été apportées afin de rendre l’extension SQLiteOOo fonctionnelle.
Ce qui a été fait pour la version 1.0.2:
Ce qui a été fait pour la version 1.0.3:
Ce qui a été fait pour la version 1.0.4:
Ce qui a été fait pour la version 1.0.5:
Ce qui a été fait pour la version 1.0.6:
- Ajout du paquet Python
packaging
dans le pythonpath
de l’extension. Merci à artem78 d’avoir permis cette correction en signalant cet oubli dans le dysfonctionnement #4.
Ce qui a été fait pour la version 1.0.7:
- Désormais, le pilote lève une exception si la création d’une nouvelle table échoue. Ceci est pour répondre au dysfonctionnement #1 sur l’extension [HyperSQLOOo][26].
Ce qui a été fait pour la version 1.0.8:
- Utilisation de la dernière version de l’API de journalisation.
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:
- Le pilote n’utilise plus de jeux de résultats (ResultSet) pouvant être mis en signet (Bookmarkable) pour des raisons de performances dans LibreOffice Base. Ceci peut être changé dans les options d’extension.
Ce qui a été fait pour la version 1.1.2:
- Implementation de l’interface UNO com.sun.star.sdbc.XGeneratedResultSet. Cette interface permet, lors d’une insertion de plusieurs lignes (ie:
INSERT INTO matable (Colonne1, Colonne2) VALUES (valeur1, valeur2), (valeur1, valeur2), ...
) dans une table disposant d’une clé primaire auto-incrémentée, de récupérer un ensemble de résultats à partir des lignes insérées dans la table et vous donne donc accès aux clés générées automatiquement en un seul coup.
- Implémentation de l’interface UNO com.sun.star.sdbcx.XAlterTable. Cette interface permet la modification des colonnes d’une table. Avec HsqlDB, il est maintenant possible dans Base:
- D’attribuez une description aux colonnes des tables.
- De modifier le type d’une colonne si le transtypage (CAST) des données contenues dans cette colonne le permet, sinon il vous sera proposé de remplacer cette colonne ce qui entraîne la suppression des données…
- Toutes les commandes DDL (ie:
CREATE TABLE...
, ALTER TABLE...
) générées par jdbcDriverOOo sont désormais enregistrées dans la journalisation.
- Pilote SQLite mis à jour vers la dernière version 3.45.1.0.
- Beaucoup d’autres correctifs…
Ce qui a été fait pour la version 1.1.3:
Ce qui a été fait pour la version 1.1.4:
- Pilote SQLite mis à jour vers la dernière version SQLite-jdbc-3.45.1.6-SNAPSHOT.jar.
- Intégration du driver PostgreSQL pgJDBC version 42.7.1 dans l’archive de jdbcDriverOOo. Cette intégration a été réalisée sans utiliser de service Java spécifique à PostgreSQL mais uniquement en configurant le fichier Drivers.xcu permettant de déclarer le pilote JDBC à LibreOffice.
- Ouverture d’un dysfonctionnement pour le pilote MariaDB Connector/J afin qu’il prenne en charge
java.sql.Statement.getGeneratedKeys()
comme demandé par JDBC 4.1.
- Normalement les prochaines versions de jdbcDriverOOo devraient pouvoir être mises à jour dans la liste des extensions installées sous LibreOffice: Outils -> Gestionnaire des extensions… -> Vérifier les mises à jour.
- Désormais, seul le pilote HsqlDB a accès dans Base à l’administration des droits des utilisateurs et des groupes. Ceci est déterminé par le paramètre
IgnoreDriverPrivileges
dans le fichier Drivers.xcu.
- De nombreuses améliorations.
Ce qui a été fait pour la version 1.1.5:
- Vous pouvez désormais éditer une vue en mode SQL avec le pilote SQLite. Pour les pilotes qui ne prennent pas en charge la modification des vues, les vues sont supprimées puis recréées.
Ce qui a été fait pour la version 1.1.6:
- Vous pouvez désormais renommer les tables et les vues dans Base. Toute la configuration nécessaire au renommage pour chaque pilote JDBC intégré est stockée uniquement dans le fichier Drivers.xcu.
- Tous les pilotes JDBC intégrés à jdbcDriverOOo sont capables de renommer des tables ou des vues et même certains (ie: MariaDB et PostgreSQL) permettent de modifier le catalogue ou le schéma.
- De nombreuses améliorations.
Ce qui a été fait pour la version 1.2.0:
- Tous les pilotes intégrés à l’extension sont désormais entièrement fonctionnels dans Base pour la gestion des tables et des vues.
- Des fonctions intelligentes sont appelées pour:
- Le déplacement avec renommage des tables, pour les drivers le permettant et utilisant deux commandes SQL, l’ordre des commandes SQL sera optimisé (PostgreSQL).
- Le Renommage d’une vue, si le pilote ne le supporte pas, elle sera supprimée puis recréée (SQLite).
- Utilisation de classe générique Java pour la gestion des conteneurs utilisés pour la gestion des tables, des vues, des colonnes, des clefs et des indexes. L’utilisation de classes génériques dans les conteneurs permettra de se passer de l’interface UNO XPropertySet et de pouvoir retranscrire le code existant en Java pur.
- De nombreuses améliorations.
Ce qui a été fait pour la version 1.2.1:
- Résolution d’une régression interdisant la suppression de colonnes dans une table.
- Mise à jour du pilote mariadb-java-client-3.3.3.jar.
- Généralisation des classes Java génériques pour toutes les classes devant être partagées au niveau de l’API UNO (ie: sdb, sdbc et sdbcx).
- On peut désormais renommer les colonnes des tables sous SQLite et MariaDB.
- Il est également possible de renommer les colonnes déclarées comme clé primaire dans tous les pilotes embarqués.
- De nombreuses améliorations.
Ce qui a été fait pour la version 1.2.2:
- Mise en place de la gestion des index.
- Renommer une colonne déclarée comme clé primaire renommera également l’index associé à la clé primaire.
- Seuls les membres des classes Java répondant à l’API UNO ont un niveau de visibilité public, tous les autres membres ont une visibilité protégée ou privée.
- Résolution de nombreux problèmes et régressions.
Ce qui a été fait pour la version 1.2.3:
- Renommer une colonne déclarée comme index renommera également la colonne de l’index associée.
Ce qui a été fait pour la version 1.2.4:
- Suppression de SmallSQL.
- Intégration de Jaybird 5.0.4 le pilote JDBC pour Firebird.
- Vous pouvez désormais supprimer une clé primaire avec PostgreSQL.
- L’ajout ou la suppression d’une clé primaire génère une erreur si le pilote sous-jacent ne le supporte pas (SQLite).
- Lors de la création d’une table avec une clé primaire, si le pilote sous-jacent le prend en charge, la création de la clé primaire peut être effectuée par une commande DDL distincte. Cela permet à Jaybird de contourner le dysfonctionnement #791 en créant une clé primaire nommée et permet de gérer des cas particuliers comme MariaDB ou SQLite pour leur gestion des auto-increments.
- Si le pilote sous-jacent le permet, lors de la modification des colonnes d’une table vous pouvez désormais:
- La déclarer en auto-incrément (Identity) sans qu’elle soit nécessairement la clé primaire.
- Ajouter ou retirer la contrainte Identity (auto-incrément).
- Ajouter des commentaires.
- De nombreuses améliorations.
Ce qui a été fait pour la version 1.3.0:
- Intégration de la gestion des clés étrangères dans Base (Outils -> Relations…).
- Lorsque vous renommez une table, cela renommera également le référencement de cette table dans les éventuelles clés étrangères pointant vers cette table.
- Lorsque vous renommez une colonne, cela renommera également le référencement de cette colonne dans les éventuelles clés étrangères pointant vers cette colonne.
- Ces mises à jour de clés étrangères prennent en compte le chargement paresseux des conteneurs des tables et des clés et ne seront effectuées que si Base a déjà accédé aux données impliquées.
- Un problème persiste lors de la création de clés étrangères entre des tables qui n’ont pas le même catalogue et/ou schéma, voir dysfonctionnement #160375. Ce problème semble être lié à Base, j’espère qu’il sera résolu rapidement.
- Meilleure gestion des exceptions avec la possibilité de connaître l’état, le code SQL et le message de l’exception qui a été générée par le pilote sous-jacent.
- De nombreuses corrections et améliorations.
Normalement, je suis arrivé à couvrir toute l’étendue de l’API UNO (com.sun.star.sdbc, sdbcx et sdb), ce qui à pris pas mal de temps, mais je ne pensais pas au départ y arriver.
Ce qui a été fait pour la version 1.3.1:
- Correction de l’implémentation de l’interface XRowLocate responsable de la gestion des signets (Bookmark) dans les jeux de résultats (ResultSet). Cette nouvelle implémentation fonctionne avec tous les pilotes à l’exception de SQLite qui ne prend pas en charge la mise à jour des jeux de résultats. La présence de cette interface dans les jeux de résultats permet à Base d’éditer des tables même en l’absence de clé primaire. Avec certains pilotes (HsqlDB, H2 et Derby) le rafraîchissement en cours de saisie ne sera pas automatique et devra être fait manuellement. L’utilisation des signets peut être désactivée dans les options de l’extension.
- Mise en place de jeu de resultats simulé (java.sql.ResultSet) permettant de produire des ResultSet à partir des données de connexion fourni par le pilote, plus exactement à partir du fichier Drivers.xcu. L’utilisation de ces resultset simulé permet de fournir à Base des resultset conforme à ce qu’il attend même si le pilote sous jancent n’est pas capable de les produire. Ils servent à patcher les résultats obtenus les méthodes
getTypeInfo()
, getTableTypes
et getTablePrivileges()
de l’interface java.sql.DatabaseMetaData en utilisant respectivement les propriétés TypeInfoSettings
, TableTypesSettings
et TablePrivilegesSettings
du fichier Drivers.xcu.
- Ecriture d’un conteneur spécifique pour gérer les utilisateurs d’un rôle ou les rôles d’un rôle. Ce conteneur n’est qu’un pointeur vers les elements des conteneurs utilisateur et/ou role de la base de données. Lors de la suppression d’un utilisateur ou d’un rôle, ce conteneur sera mis à jour si nécessaire.
- Réécriture des fenêtres Administration des utilisateurs et Administration des groupes accessibles dans le menu Administration de Base. Désormais, si la propriété
TablePrivilegesSettings
est fournie par le pilote sous-jacent, seuls les privilèges déclarés dans cette propriété seront affichés. Cela permet une utilisation plus facile. Une demande d’amélioration #160516 a été faite afin d’intégrer cette fonctionalité dans le code de Base.
- Intégration de tous les pilotes embarqués dans l’extension (hors SQLite) dans la gestion des utilisateurs, des rôles et des privilèges sur les tables et les vues. Je suppose que de nombreux dysfonctionnements restent à corriger, merci de me le faire savoir, détecter les dysfonctionnements me prend plus de temps que les corriger….
- De nombreuses corrections et améliorations…
Ce qui a été fait pour la version 1.3.2:
Désormais l’API UNO SDBCX peut être utilisée pour la création de bases de données, comme c’est le cas pour les dernières versions des extensions utilisant jdbcDriverOOo. Il est possible de créer des tables, grâce à l’API UNO, avec les caractéristiques suivantes:
- Déclaration de colonnes de types TIMESTAMP WITH TIME ZONE, TIMESTAMP, TIME WITH TIME ZONE, TIME avec gestion de la précision (ie: de 0 à 9).
- Déclaration de tables temporelles versionnées par le système (temporal system versioned tables). Ces types de tables sont utilisés dans les mêmes extensions pour faciliter la réplication des données.
- Déclaration de tables au format texte. Ces tables vous permettent d’utiliser les données de fichiers au format csv.
- Déclaration des clés primaires, clés étrangères, index, utilisateurs, rôles et privilèges associés.
L’utilisation de l’API UNO pour créer des bases de données vous permettra d’utiliser du code indépendant de la base de données sous-jacente.
Les clients utilisant le pilote jdbcDriverOOo peuvent accéder aux fonctionnalités du pilote JDBC sous-jacent à l’aide de la méthode XDriver.getPropertyInfo() afin d’accéder au paramètre nécessaire lors de la création de tables et d’afficher correctement les privilèges. Ces paramètres étant accessibles directement par le pilote, peuvent être obtenus avant toute connexion, et permettent donc la création de la base de données lors de la première connexion.
Ce qui a été fait pour la version 1.3.3:
-
Modification de la gestion du paramètre de connexion
JavaDriverClassPath
. Ce paramètre peut désormais désigner un répertoire et dans ce cas tous les fichiers jar contenus seront ajoutés au Java ClassPath
. Cela permet le chargement dynamique des pilotes JDBC nécessitant plusieurs archives (ie: Derby et Jaybird embedded). Cette modification a été apportée pour permettre à la nouvelle extension JaybirdOOo de fonctionner.
- Reprise d’une partie de l’implémentation de
javax.sql.rowset.CachedRowSet
dans les jeux de résultats ScrollableResultSet.java et SensitiveResultSet.java afin de simuler le type TYPE_SCROLL_SENSITIVE
à partir des jeux de résultats de type TYPE_FORWARD_ONLY
et TYPE_SCROLL_INSENSITIVE
respectivement. Cela permet à LibreOffice Base d’utiliser des signets (ie : l’interface UNO XRowLocate) qui permettent des insertions, mises à jour et suppressions positionnées et donc, pour les bases de données le supportant, la possibilité d’éditer des tables ne contenant aucune clé primaire. De plus, un mode SQL permet de rendre éditable n’importe quel ResultSet. Ce mode peut être validée dans les options de l’extension, elle est trés puissante et donc à utiliser avec prudence. Concernant les jeux de résultats de type TYPE_FORWARD_ONLY
, leur implémentation chargeant progressivement l’intégralité des données du jeu de résultats en mémoire peut conduire à un débordement de mémoire. La mise en oeuvre d’une pagination éliminera ce risque.
- Ajout du pilote MySQL Connector/J version 8.4.0. Ce driver ne semble pas fonctionner correctement, des erreurs assez surprenantes apparaissent… Je le laisse en place au cas où des gens seraient prêts à participer à son intégration? A utiliser avec précaution.
- Suite à la demande de PeterSchmidt23 ajout du pilote Trino version 448. Ne connaissant pas Trino, qui a l’air étonnant par ailleur, seulement un début d’intégration a été réalisée. L’edition du contenu des tables n’est pas encore possible, voir dysfonctionnement #22306. Le nom des tables doit être en minuscule afin d’autoriser leur création.
- L’implémentation de
CachedRowSet
semble avoir résolu le problème d’insertion de cellules depuis Calc, voir dysfonctionnement #7.
- De nombreuses corrections et améliorations…
Ce qui a été fait pour la version 1.4.0:
- Mise à jour du pilote Jaybird vers la version finale 5.0.5.
- Modification de l’implémentation de l’interface UNO com.sun.star.sdbc.XGeneratedResultSet. Cette nouvelle implémentation prend en charge les pilotes qui ne suivent pas l’API JDBC mais proposent une implémentation spécifique (ie: MariaDB et Derby). Pour être activé lors de l’utilisation de fichiers odb créés avec une version précédente, s’il est présent, il est nécessaire de modifier le paramètre :
Requête des valeurs générées
accessible par le menu : Edition -> Base de données -> Paramètres avancés… -> Valeurs générées par la valeur : SELECT * FROM %s WHERE %s
.
- Ajout de nouveaux paramètres pris en charge par le fichier de configuration Drivers.xcu. Ces nouveaux paramètres permettent de modifier les valeurs renvoyées par les pilotes concernant la visibilité des modifications dans les jeux de résultats (ie: insertion, mise à jour et suppression). Ils permettent également de forcer le mode SQL pour les modifications souhaitées dans les jeux de résultats.
- Finalisation de l’implémentation de l’émulation rendant tout jeu de résultats modifiable, si l’enregistrement est unique dans ce jeu de résultats. Cette implémentation, utilisant les signets (ie: bookmark), permet l’édition de jeu de résultats provenant de Requêtes Base, cela rend tout simplement les Requêtes LibreOffice Base éditables. Les requêtes joignant plusieurs tables ne sont pas encore supportées et je suis ouvert à toute proposition technique concernant une éventuelle implémentation.
- Afin de rendre modifiables les jeux de résultats retournés par le driver Trino et de précéder la demande d’amélioration #22408, une recherche de la clé primaire sera lancée afin de retrouver la première colonne, du jeu de résultats, ayant pas de doublons.
- Afin de contourner le dysfonctionnement #368 le driver HsqlDB utilise des mises à jour en mode SQL dans les jeux de résultats.
- De nombreuses corrections et améliorations…
Ce qui a été fait pour la version 1.4.1:
- Nouvelle implémentation, que j’espère définitive, des signets (bookmarks). Il est basé sur trois fichiers et est tiré de l’implémentation par Sun de
javax.sql.rowset.CachedRowSet
:
-
Ces ResultSets sont capables d’éditer presque toutes les requêtes créées dans LibreOffice Base, même les vues… Mais afin de garantir une bonne fonctionnalité, certaines règles doivent être respectées afin de rendre un jeu de résultats éditable. Si la requête concerne plusieurs tables alors il est impératif d’inclure les clés primaires de chaque table dans la liste des colonnes du jeu de résultats. Si la requête ne concerne qu’une seule table alors le jeu de résultats sera modifiable s’il existe une colonne qui ne contient pas de doublon (ie: une clé naturelle). Cela permet de rendre modifiables les jeux de résultats provenant du pilote Trino.
- Suppression de l’utilisation de classes génériques là où elles n’étaient pas nécessaires. Cela a rendu le pilote plus rapide…
- Ajout de paramètres spéciaux dans: Edition -> Base de données -> Paramètres avancés… -> Paramètres spéciaux afin de répondre à la demande d’intégration du pilote Trino (voir demande d’amélioration n°8). Il est nécessaire de recréer les fichiers odb afin d’avoir accès à ces nouveaux paramètres.
Ce qui a été fait pour la version 1.4.2:
Ce qui a été fait pour la version 1.4.3:
- Mise à jour du paquet Python setuptools vers la version 73.0.1.
- La journalisation accessible dans les options de l’extension s’affiche désormais correctement sous Windows.
- Les options de l’extension sont désormais accessibles via: Outils -> Options… -> LibreOffice Base -> Pilote JDBC
- Les modifications apportées aux options d’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.4.4:
- Il est désormais possible d’insérer des données dans une table vide lors de l’utilisation d’un ResultSet
TYPE_FORWARD_ONLY
(ie: SQLite, Trino).
- Le bouton options est désormais accessible dans la liste des extensions installées obtenue par le menu : Outils -> Gestionnaire d’extensions…
- Les options de l’extension sont désormais accessibles via: Outils -> Options… -> LibreOffice Base -> Pilote JDBC pur Java
- Les options de l’extension: Voir les tables système, Utiliser les signets et Forcer le mode SQL seront recherchées dans les informations fournies lors de la connexion et auront la priorité si elles sont présentes.
- Pilote Trino mis à jour vers la version 455.
Ce qui a été fait pour la version 1.4.5:
- Correction pour permettre à l’extension eMailerOOo de fonctionner correctement dans la version 1.2.5.
Ce qui a été fait pour la version 1.4.6:
- Modification de l’implémentation de l’interface UNO XPropertySet. Cette nouvelle implémentation assure l’unicité des Handle pour chaque propriété. Cette implémentation étant partagée avec l’extension vCardOOo, elle rend toutes les versions existantes de vCardOOo obsolètes. Elle est basée sur trois fichiers:
- Correction de problèmes dans l’implémentation des signets (bookmark). Ces modifications ont été testées plus particulièrement avec les pilotes HsqlDB 2.7.4 et Jaybird 5.0.6.
- Nouvelle implémentation des options de l’extension et plus particulièrement de l’onglet Options du pilote JDBC ce qui devrait permettre à terme la configuration à partir de zéro d’un pilote JDBC pour pouvoir fonctionner avec LibreOffice Base. L’opération de mise à jour de l’archive du pilote JDBC a été simplifiée. Elle prend en charge la mise à jour des pilotes qui nécessitent plusieurs archives jar pour fonctionner (ie: Derby, Jaybird 6.x). Cette nouvelle fenêtre qui semble assez simple, nécessite en réalité une gestion assez compliquée, n’hésitez donc pas à me signaler d’éventuels dysfonctionnements.
- De nombreuses autres améliorations.
Que reste-t-il à faire pour la version 1.4.6: