Syntaxe ASOF JOIN : utilisation restreinte des mots-clés (en attente)

Attention

Ce changement de comportement est présent dans le bundle 2024_01.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

La fonction ASOF JOIN se comporte comme suit :

Avant la modification:

L’utilisation de ASOF et MATCH_CONDITION comme noms d’objets, alias d’objets, variables de session et variables de liaison n’est pas limitée.

Après la modification:

ASOF et MATCH_CONDITION sont de nouveaux mots-clés. L’utilisation de ces mots-clés dans les commandes SELECT et les commandes qui définissent ou utilisent des variables de session ou des variables de liaison est limitée.

Noms d’objets

Si une instruction SELECT utilise ASOF ou MATCH_CONDITION comme nom d’une table, d’une vue ou d’une vue en ligne, vous devez l’identifier comme suit :

  • Si l’objet a été créé avec des guillemets doubles dans le nom, utilisez le même nom entre guillemets doubles.

  • Si l’objet a été créé sans guillemets doubles dans le nom, utilisez des guillemets doubles et des lettres majuscules.

Par exemple, les instructions suivantes ne sont plus autorisées et renvoient des erreurs :

SELECT * FROM asof;
WITH match_condition AS (SELECT * FROM T1)
  SELECT * FROM match_condition;
Copy

Si vous avez créé les objets avec des guillemets doubles, corrigez le problème en utilisant des guillemets doubles :

SELECT * FROM "asof";
WITH "match_condition" AS (SELECT * FROM T1)
  SELECT * FROM "match_condition";
Copy

Si vous avez créé les objets sans guillemets doubles, corrigez le problème en utilisant des guillemets doubles et des lettres majuscules :

SELECT * FROM "ASOF";
WITH "MATCH_CONDITION" AS (SELECT * FROM T1)
  SELECT * FROM "MATCH_CONDITION";
Copy

Note

Snowflake vous recommande de ne plus utiliser ces noms d’objets dans vos applications.

Noms d’alias

Si une instruction SELECT utilise ASOF ou MATCH_CONDITION comme alias, vous devez utiliser AS avant l’alias ou mettre l’alias entre guillemets doubles. Par exemple, les instructions suivantes ne sont plus autorisées et renvoient des erreurs :

SELECT * FROM t1 asof;
SELECT * FROM t2 match_condition;
Copy

Réglez le problème de l’une des manières suivantes :

SELECT * FROM t1 AS asof;
SELECT * FROM t1 "asof";
SELECT * FROM t2 AS match_condition;
SELECT * FROM t2 "match_condition";
Copy

Noms des variables

Si vous utilisez des variables de session ou des variables de liaison portant le nom ASOF ou MATCH_CONDITION et que leurs noms n’ont pas été mis entre guillemets lors de leur création, ils doivent être renommés ou supprimés.

Par exemple, vous ne pouvez plus définir une variable de session nommée asof :

set asof ='2024/01/15';
Copy
001003 (42000): SQL compilation error:
syntax error line 1 at position 4 unexpected 'asof'.

Cependant, vous pouvez définir une variable explicitement entre guillemets doubles et nommée "asof" ou "ASOF" :

set "asof" ='2024/01/15';
Copy
+----------------------------------+
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+

Les mêmes règles s’appliquent aux variables de liaison, telles que :asof et :match_condition.

Réf : 1138