TLEErweiterungen für erstellen SQL - Amazon Relational Database Service

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 und Euklidische Geometrie in Wikipedia.

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.

  1. Wird verwendetpsql, 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=labdb
  2. Erstellen Sie eine TLE Erweiterung mit dem Namen, pg_distance indem Sie den folgenden Code kopieren und in Ihre psql 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 dem CREATE 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.

  3. 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 die CREATE-Berechtigungen in der Datenbank verfügen.

    CREATE EXTENSION pg_distance;
  4. Um die pg_distance TLE Erweiterung zu testen, können Sie sie verwenden, um die Manhattan-Entfernung zwischen 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 – Das IMMUTABLE-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— Das PARALLEL 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
  1. Connect für SQL Postgre-DB-Instance her, indem Sie psql oder ein anderes Client-Tool verwenden, z. pgAdmin

    psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
  2. Ä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.

  3. 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.

  4. 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;