Java-UDF-Einschränkungen

Unter diesem Thema werden die Einschränkungen beschrieben, die für in Java geschriebene Handler gelten.

Unter diesem Thema:

Allgemeine Einschränkungen

  • Obwohl Ihre Java-Methode Klassen und Methoden aus Standard-Java-Bibliotheken verwenden kann, deaktivieren die Sicherheitseinschränkungen von Snowflake einige Funktionen, wie z. B. das Schreiben in Dateien. Weitere Informationen dazu finden Sie im Abschnitt Einsetzen von bewährten Sicherheitsmethoden.

  • Java-UDFs können nicht freigegeben werden. Datenbankobjekte, die Java-UDFs verwenden, können ebenfalls nicht freigegeben werden. So ist Folgendes zum Beispiel nicht möglich:

    • Direktes Freigeben einer Java-UDF.

    • Freigeben einer Ansicht, die eine Java-UDF aufruft.

    • Freigeben einer Funktion, die eine Java-UDF aufruft.

    • Freigeben einer Tabelle mit einer Maskierungs- oder Zeilenzugriffsrichtlinie, die eine Java-UDF aufruft.

  • Durch Erteilen der USAGE-Berechtigung für eine Java-UDF kann der Empfänger den Inhalt von Dateien anzeigen, die von dieser UDF importiert wurden. Wenn Sie einer Rolle die USAGE-Berechtigung für eine Java-UDF erteilen und diese Rolle eine Anweisung ausführt, die diese Java-UDF aufruft, könnte jede Java-UDF in derselben Anweisung den Inhalt aller Dateien lesen, die von der Java-UDF importiert wurden, für die Sie eine USAGE-Berechtigung erteilt haben.

  • Bei der Replikation werden externe oder interne Stagingbereiche noch nicht berücksichtigt. Wenn Sie eine Sekundärdatenbank zur Primärdatenbank hochstufen, müssen Sie die Stagingobjekte neu erstellen und alle Dateien, die in den internen Stagingbereichen fehlen, erneut importieren. Die Dateien müssen denselben Pfad und dieselben Dateinamen wie in der ursprünglichen Primärdatenbank haben.

  • Die maximale Größe für eine Java-UDF-Ausgabezeile ist 16 MB.

Einschränkungen beim Klonen

Eine Java-UDF kann geklont werden, wenn die Datenbank oder das Schema, das die Java-UDF enthält, geklont wird. Um geklont zu werden, muss eine Java-UDF die folgende(n) Bedingung(en) erfüllen:

  • Wenn die Java-UDF auf einen Stagingbereich verweist (z. B. den Stagingbereich, der die UDF-JAR-Datei enthält), muss sich dieser Stagingbereich außerhalb des Schemas (oder der Datenbank) befinden, das (die) geklont wird.

    Sie können eine Java-UDF und deren referenzierte Stagingbereiche in getrennten Schemas (und/oder getrennten Datenbanken) auf eine der folgenden Arten speichern:

    • Verwenden Sie überall dort, wo die Java-UDF auf einen Stagingbereich verweist, einen qualifizierten Stagingbereichsnamen (z. B. „my_db.my_schema.my_stage()“), der sich von dem Schema oder der Datenbank der Java-UDF unterscheidet. Wenn die Klonoperation eine Datenbank klont, muss der Stagingbereichsverweis die Datenbank und das Schema enthalten. Wenn die Klonoperation ein Schema klont, muss der Stagingbereichsverweis das Schema (und optional die Datenbank) enthalten.

    • Erstellen Sie den referenzierten Stagingbereich unter Verwendung eines nicht qualifizierten Stagingbereichsnamens (der implizit die aktive Datenbank und das aktive Schema der aktuellen Sitzung verwendet), und erstellen Sie die Java-UDF unter Verwendung eines qualifizierten Namens, der nicht mit der aktuellen Datenbank und dem aktuellen Schema der Sitzung übereinstimmt.

    • Verwenden Sie den Stagingbereich des Benutzers als referenzierten Stagingbereich (der Stagingbereich des Benutzers ist von allen anderen Stagingbereichen der Datenbank oder des Schemas getrennt).

Wenn eine oder mehrere Java-UDFs im Schema oder in der Datenbank die erforderlichen Bedingungen nicht erfüllen, kann das Schema oder die Datenbank trotzdem geklont werden, wobei die nicht konformen Java-UDFs allerdings ohne Fehler- oder Warnmeldung ausgelassen werden.

Jede geklonte Java-UDF hat die gleiche Definition wie das Original. Diese Definition schließt alle Verweise auf Stagingbereiche ein. Die Stagingbereichsverweise in der Java-UDF müssen vollqualifiziert sein und sind daher absolut und nicht relativ zu dem Schema oder der Datenbank, die geklont wird. Da sowohl Original als auch Klon auf dieselben Stagingbereiche und Dateien verweisen, gilt Folgendes:

  • Wenn Sie den Stagingbereich löschen oder erforderliche Dateien aus dem Stagingbereich entfernen, werden sowohl die Original- als auch die geklonte-UDF deaktiviert.

  • Das Ändern des Stagingbereichs oder der Dateien im Stagingbereich (z. B. das Ersetzen der JAR-Datei durch eine neuere JAR-Datei) wirkt sich sowohl auf die Original- als auch auf die geklonte UDF-Datei aus.

Weitere Informationen zum Klonen finden Sie unter Hinweise zum Klonen.