Tabellenfunktionen (außer SQL-UDTFs): Einschränkungen bei lateralen Tabellenfunktionen und äußeren seitlichen Verknüpfungen (Lateral Joins)

Achtung

Diese Verhaltensänderung ist in Bundle 2023_04 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Mit dem aktuellen Release ist Folgendes nicht mehr zulässig:

  • Laterale Tabellenfunktionen (mit Ausnahme von SQL-UDTFs), die mit der ON-Klausel angegeben werden.

  • Äußere seitliche Verknüpfungen (Lateral Joins) zu Tabellenfunktionen (außer SQL-UDTFs), die die ON-Klausel angeben.

Beachten Sie, dass diese Einschränkung auch für Anweisungen gilt, die Klauseln verwenden, die der Klausel-ON entsprechen (USING-Klausel und NATURAL JOIN).

Zu Tabellenfunktionen, die keine SQL-UDTFs sind, gehören integrierte Tabellenfunktionen und UDTFs, die in anderen Sprachen als SQL definiert sind.

Bisher:

Sie können Folgendes angeben:

  • Die ON-Klausel (oder die USING-Klausel oder NATURAL JOIN) für laterale Tabellenfunktionen (außer SQL-UDTFs).

    Beispiel:

    SELECT ... FROM my_table
    JOIN TABLE(FLATTEN(input=>[col_a]))
    ON ... ;
    SELECT ... FROM my_table
    INNER JOIN TABLE(FLATTEN(input=>[col_a]))
    ON ... ;
    SELECT ... FROM my_table
    JOIN TABLE(my_js_udtf(col_a))
    ON ...;
    SELECT ... FROM my_table
    INNER JOIN TABLE(my_js_udtf(col_a))
    ON ... ;
    
    Copy
  • Eine äußere seitliche Verknüpfung (Lateral Join) zu einer Tabellenfunktion (außer SQL-UDTFs), unter Verwendung der ON-Klausel (oder der USING-Klausel oder NATURAL JOIN).

    Beispiel:

    SELECT ... FROM my_table
    LEFT JOIN TABLE(FLATTEN(input=>[col_a]))
    ON ... ;
    SELECT ... FROM my_table
    FULL JOIN TABLE(FLATTEN(input=>[col_a]))
    ON ... ;
    SELECT ... FROM my_table
    LEFT JOIN TABLE(my_js_udtf(col_a))
    ON ... ;
    SELECT ... FROM my_table
    FULL JOIN TABLE(my_js_udtf(col_a))
    ON ... ;
    
    Copy
Jetzt:

Wenn Sie die obigen Anweisungen ausführen, tritt ein Fehler mit der folgenden Meldung auf:

000002 (0A000): Unsupported feature 'lateral table function called with
    OUTER JOIN syntax or a join predicate (ON clause)'
Copy

Diese Einschränkung gilt nicht, wenn Sie bei der Angabe der Verknüpfung (Join) ein Komma verwenden:

SELECT ... FROM <table>,
    TABLE(<ptable_function_other_than_sql_udtf>) ... ;
Copy

Beispiel:

SELECT ... FROM my_table,
TABLE(FLATTEN(input=>[col_a]));
Copy

Diese Einschränkung gilt auch nicht, wenn die ON-Klausel (oder die USING-Klausel oder NATURAL JOIN) nicht angegeben ist:

SELECT ... FROM <table>
[{ [ INNER  | { LEFT | RIGHT | FULL } [ OUTER ] | CROSS } JOIN
TABLE(<table_function_other_than_sql_udtf>) ...;
Copy

Beispiel:

SELECT ... FROM my_table
FULL JOIN TABLE(FLATTEN(input=>[col_a]));
SELECT ... FROM my_table
LEFT JOIN OUTER TABLE(FLATTEN(input=>[col_a]));
Copy

Diese Einschränkung wurde hinzugefügt, weil diese Typen von Abfragen zu inkonsistentem Verhalten führen können. Diese Typen von Abfragen werden nicht unterstützt.

Ref.: 1057