Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'TLEextensions pour SQL
Vous pouvez installer toutes les extensions que vous créez TLE dans n'importe quel pour SQL instance de base de données Postgre sur laquelle l'pg_tle
extension est installée. L'pg_tle
extension est limitée à la base de SQL données Postgre dans laquelle elle est installée. Les extensions que vous créez à l'aide TLE sont limitées à la même base de données.
Utilisez les différentes pgtle
fonctions pour installer le code qui constitue votre TLE extension. Les fonctions Trusted Language Extensions suivantes nécessitent toutes le rôle pgtle_admin
.
Exemple : création d'une extension de langue fiable à l'aide de SQL
L'exemple suivant montre comment créer une TLE extension nommée contenant quelques SQL fonctions pg_distance
permettant de calculer des distances à l'aide de différentes formules. Dans la liste, vous trouverez la fonction de calcul de la distance de Manhattan et la fonction de calcul de la distance euclidienne. Pour plus d'informations sur la différence entre ces formules, consultez Taxicab geometry
Vous pouvez utiliser cet exemple dans votre propre pour une SQL instance de base de données Postgre si l'pg_tle
extension est configurée comme indiqué dans. Configuration d'extensions linguistiques fiables dans votre de base de données Postgre SQL
Note
Vous devez disposer des privilèges du rôle pgtle_admin
pour suivre cette procédure.
Pour créer l'TLEextension d'exemple
Les étapes suivantes utilisent un exemple de base de données nommé labdb
. Cette base de données appartient à l'utilisateur principal postgres
. Le rôle postgres
possède également les autorisations du rôle pgtle_admin
.
Utilisez-le
psql
pour vous connecter à . RDSpour une SQL instance de base de données Postgre.psql --host=
db-instance-123456789012
.aws-region
.rds.amazonaws.com --port=5432
--username=postgres
--password --dbname=labdbCréez une TLE extension nommée
pg_distance
en copiant le code suivant et en le collant dans votre console depsql
session.SELECT pgtle.install_extension ( 'pg_distance', '0.1', 'Distance functions for two points', $_pg_tle_$ CREATE FUNCTION dist(x1 float8, y1 float8, x2 float8, y2 float8, norm int) RETURNS float8 AS $$ SELECT (abs(x2 - x1) ^ norm + abs(y2 - y1) ^ norm) ^ (1::float8 / norm); $$ LANGUAGE SQL; CREATE FUNCTION manhattan_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 1); $$ LANGUAGE SQL; CREATE FUNCTION euclidean_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 2); $$ LANGUAGE SQL; $_pg_tle_$ );
Vous devez voir la sortie suivante.
install_extension --------------- t (1 row)
Les artefacts qui constituent l'extension
pg_distance
sont désormais installés dans votre base de données. Ces artefacts incluent le fichier de contrôle et le code de l'extension, qui sont des éléments qui doivent être présents pour que l'extension puisse être créée à l'aide de la commandeCREATE EXTENSION
. En d'autres termes, il vous reste à créer l'extension pour mettre ses fonctions à la disposition des utilisateurs de la base de données.Pour créer cette extension, utilisez la commande
CREATE EXTENSION
comme vous le feriez pour toute autre extension. Comme pour les autres extensions, l'utilisateur de la base de données doit disposer des autorisationsCREATE
dans la base de données.CREATE EXTENSION pg_distance;
Pour tester l'
pg_distance
TLEextension, vous pouvez l'utiliser pour calculer la distance de Manhattanentre quatre points. labdb=>
SELECT manhattan_dist(1, 1, 5, 5);
8
Pour calculer la distance euclidienne
entre le même ensemble de points, vous pouvez utiliser ce qui suit. labdb=>
SELECT euclidean_dist(1, 1, 5, 5);
5.656854249492381
L'extension pg_distance
charge les fonctions dans la base de données et les met à la disposition de tous les utilisateurs dotés d'autorisations sur la base de données.
Modifier votre TLE extension
Pour améliorer les performances des requêtes pour les fonctions incluses dans cette TLE extension, ajoutez les deux SQL attributs Postgre suivants à leurs spécifications.
IMMUTABLE
: l'attributIMMUTABLE
garantit que l'optimiseur de requêtes peut utiliser des optimisations pour améliorer les temps de réponse aux requêtes. Pour plus d'informations, consultez la section Catégories de volatilité des fonctionsdans la SQL documentation Postgre. PARALLEL SAFE
— L'PARALLEL SAFE
attribut est un autre attribut qui permet à Postgre SQL d'exécuter la fonction en mode parallèle. Pour plus d'informations, consultez CREATEFUNCTIONla SQL documentation Postgre.
Dans l'exemple suivant, vous pouvez voir comment la pgtle.install_update_path
fonction est utilisée pour ajouter ces attributs à chaque fonction afin de créer une version 0.2
de l'pg_distance
TLEextension. Pour de plus amples informations sur cette fonction, veuillez consulter pgtle.install_update_path. Vous devez avoir le rôle pgtle_admin
pour effectuer cette tâche.
Pour mettre à jour une TLE extension existante et spécifier la version par défaut
Connectez-vous à pour SQL instance de base de données Postgre à l'aide
psql
d'un autre outil client, tel que. pgAdminpsql --host=
db-instance-123456789012
.aws-region
.rds.amazonaws.com --port=5432
--username=postgres
--password --dbname=labdbModifiez l'TLEextension existante en copiant le code suivant et en le collant dans votre console de
psql
session.SELECT pgtle.install_update_path ( 'pg_distance', '0.1', '0.2', $_pg_tle_$ CREATE OR REPLACE FUNCTION dist(x1 float8, y1 float8, x2 float8, y2 float8, norm int) RETURNS float8 AS $$ SELECT (abs(x2 - x1) ^ norm + abs(y2 - y1) ^ norm) ^ (1::float8 / norm); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE OR REPLACE FUNCTION manhattan_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 1); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE OR REPLACE FUNCTION euclidean_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 2); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; $_pg_tle_$ );
Vous voyez une réponse similaire à la suivante.
install_update_path --------------------- t (1 row)
Vous pouvez faire de cette version de l'extension la version par défaut, afin que les utilisateurs de base de données n'aient pas à spécifier de version lorsqu'ils créent ou mettent à jour l'extension dans leur base de données.
Pour indiquer que la version modifiée (version 0.2) de votre TLE extension est la version par défaut, utilisez la
pgtle.set_default_version
fonction illustrée dans l'exemple suivant.SELECT pgtle.set_default_version('pg_distance', '0.2');
Pour de plus amples informations sur cette fonction, veuillez consulter pgtle.set_default_version.
Une fois le code en place, vous pouvez mettre à jour l'TLEextension installée de la manière habituelle, en utilisant
ALTER EXTENSION ... UPDATE
la commande, comme indiqué ici :ALTER EXTENSION pg_distance UPDATE;