Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
TLEErweiterungen für erstellen SQL
Sie können alle Erweiterungen, die Sie mit erstellen, TLE in jedem installieren, auf dem die pg_tle
Erweiterung installiert ist. Die pg_tle
Erweiterung ist auf die SQL Postgre-Datenbank beschränkt, in der sie installiert ist. Die Erweiterungen, mit denen Sie erstellen, TLE sind auf dieselbe Datenbank beschränkt.
Verwenden Sie die verschiedenen pgtle
Funktionen, um den Code zu installieren, aus dem Ihre TLE Erweiterung besteht. Die folgenden Funktionen von Trusted Language Extensions erfordern alle die pgtle_admin
-Rolle.
Beispiel: Erstellen einer vertrauenswürdigen Spracherweiterung mit SQL
Das folgende Beispiel zeigt Ihnen, wie Sie eine TLE Erweiterung mit dem Namen erstellenpg_distance
, die einige SQL Funktionen zur Berechnung von Entfernungen mithilfe verschiedener Formeln enthält. In der Liste finden Sie die Funktion zur Berechnung der Manhattan-Distanz und die Funktion zur Berechnung des euklidischen Abstands. Weitere Informationen zum Unterschied zwischen diesen Formeln finden Sie unter Taxi-Geometerie
Sie können dieses Beispiel in Ihrem eigenen für die SQL Postgre-DB-Instance verwenden, wenn Sie die pg_tle
Erweiterung wie unter beschrieben eingerichtet haben. Einrichtung vertrauenswürdiger Spracherweiterungen in Ihrem
Anmerkung
Sie benötigen die Rechte der pgtle_admin
-Rolle, um dieses Verfahren ausführen zu können.
Um die Beispielerweiterung zu erstellen TLE
In den folgenden Schritten wird eine Beispieldatenbank namens labdb
verwendet. Diese Datenbank gehört dem postgres
-Hauptbenutzer. Die postgres
-Rolle verfügt auch über die Berechtigungen der pgtle_admin
-Rolle.
Wird verwendet
psql
, um eine Verbindung herzustellen. RDSfür die SQL Postgre-DB-Instance.psql --host=
db-instance-123456789012
.aws-region
.rds.amazonaws.com --port=5432
--username=postgres
--password --dbname=labdbErstellen Sie eine TLE Erweiterung mit dem Namen,
pg_distance
indem Sie den folgenden Code kopieren und in Ihrepsql
Sitzungskonsole einfügen.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_$ );
Die Ausgabe sollte folgendermaßen aussehen.
install_extension --------------- t (1 row)
Die Artefakte, aus denen die
pg_distance
-Erweiterung besteht, sind jetzt in Ihrer Datenbank installiert. Zu diesen Artefakten gehören die Steuerdatei und der Code für die Erweiterung. Diese Elemente müssen vorhanden sein, damit die Erweiterung mit demCREATE EXTENSION
-Befehl erstellt werden kann. Mit anderen Worten, Sie müssen die Erweiterung nach wie vor erstellen, um ihre Funktionen Datenbankbenutzern zur Verfügung zu stellen.Um die Erweiterung zu erstellen, verwenden Sie den
CREATE EXTENSION
-Befehl wie für jede andere Erweiterung. Wie bei anderen Erweiterungen muss der Datenbankbenutzer über dieCREATE
-Berechtigungen in der Datenbank verfügen.CREATE EXTENSION pg_distance;
Um die
pg_distance
TLE Erweiterung zu testen, können Sie sie verwenden, um die Manhattan-Entfernungzwischen vier Punkten zu berechnen. labdb=>
SELECT manhattan_dist(1, 1, 5, 5);
8
Um den euklidischen Abstand
zwischen derselben Menge von Punkten zu berechnen, können Sie Folgendes verwenden. labdb=>
SELECT euclidean_dist(1, 1, 5, 5);
5.656854249492381
Die pg_distance
-Erweiterung lädt die Funktionen in die Datenbank und stellt sie allen Benutzern mit Berechtigungen für die Datenbank zur Verfügung.
Ändern Sie Ihre TLE Erweiterung
Um die Abfrageleistung für die in dieser TLE Erweiterung enthaltenen Funktionen zu verbessern, fügen Sie ihren Spezifikationen die folgenden beiden SQL Postgre-Attribute hinzu.
IMMUTABLE
– DasIMMUTABLE
-Attribut stellt sicher, dass der Abfrageoptimierer Optimierungen verwenden kann, um die Antwortzeiten von Abfragen zu verbessern. Weitere Informationen finden Sie in der Postgre-Dokumentation unter Kategorien der Funktionsvolatilität. SQL PARALLEL SAFE
— DasPARALLEL SAFE
Attribut ist ein weiteres Attribut, das es Postgre SQL ermöglicht, die Funktion im Parallelmodus auszuführen. Weitere Informationen finden Sie CREATEFUNCTIONin der Postgre-Dokumentation. SQL
Im folgenden Beispiel können Sie sehen, wie die pgtle.install_update_path
Funktion verwendet wird, um diese Attribute zu jeder Funktion hinzuzufügen, um eine Version 0.2
der pg_distance
TLE Erweiterung zu erstellen. Weitere Informationen zu dieser Funktion finden Sie unter pgtle.install_update_path. Sie benötigen die pgtle_admin
Rolle, um diese Aufgabe auszuführen.
Um eine bestehende TLE Erweiterung zu aktualisieren und die Standardversion anzugeben
Connect für SQL Postgre-DB-Instance her, indem Sie
psql
oder ein anderes Client-Tool verwenden, z. pgAdminpsql --host=
db-instance-123456789012
.aws-region
.rds.amazonaws.com --port=5432
--username=postgres
--password --dbname=labdbÄndern Sie die vorhandene TLE Erweiterung, indem Sie den folgenden Code kopieren und in Ihre
psql
Sitzungskonsole einfügen.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_$ );
Es wird eine Antwort ähnlich dem folgenden Beispiel angezeigt.
install_update_path --------------------- t (1 row)
Sie können diese Version der Erweiterung zur Standardversion machen, sodass Datenbankbenutzer keine Version angeben müssen, wenn sie die Erweiterung in ihrer Datenbank erstellen oder aktualisieren.
Um anzugeben, dass die geänderte Version (Version 0.2) Ihrer TLE Erweiterung die Standardversion ist, verwenden Sie die
pgtle.set_default_version
Funktion wie im folgenden Beispiel gezeigt.SELECT pgtle.set_default_version('pg_distance', '0.2');
Weitere Informationen zu dieser Funktion finden Sie unter pgtle.set_default_version.
Wenn der Code vorhanden ist, können Sie die installierte TLE Erweiterung auf die übliche Weise aktualisieren, indem Sie den
ALTER EXTENSION ... UPDATE
Befehl verwenden, wie hier gezeigt:ALTER EXTENSION pg_distance UPDATE;