Sintaxe ASOF JOIN: uso restrito de palavras-chave (pendente)

Atenção

Essa mudança de comportamento está no pacote 2024_01.

Para saber o status atual do pacote, consulte Histórico do pacote.

O recurso ASOF JOIN se comporta da seguinte maneira:

Antes da mudança:

O uso de ASOF e MATCH_CONDITION como nomes de objetos, aliases de objetos, variáveis de sessão e variáveis de ligação não é restrito.

Após a mudança:

ASOF e MATCH_CONDITION são novas palavras-chave. O uso dessas palavras-chave em comandos SELECT e comandos que configuram ou usam variáveis de sessão ou de ligação é restrito.

Nomes de objetos

Se uma instrução SELECT usar ASOF ou MATCH_CONDITION como nome de uma tabela, exibição ou exibição inline, você deverá identificá-la da seguinte forma:

  • Se o objeto foi criado com aspas duplas no nome, use o mesmo nome entre aspas duplas.

  • Se o objeto foi criado sem aspas duplas no nome, use aspas duplas e letras maiúsculas.

Por exemplo, as seguintes instruções não são mais permitidas e retornam erros:

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

Se você criou os objetos com aspas duplas, corrija o problema usando aspas duplas:

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

Se você criou os objetos sem aspas duplas, corrija o problema usando aspas duplas e letras maiúsculas:

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

Nota

Snowflake recomenda que você pare de usar esses nomes de objetos em seus aplicativos.

Nomes de aliases

Se uma instrução SELECT usar ASOF ou MATCH_CONDITION como alias, você deverá usar AS antes do alias ou colocar aspas duplas no alias. Por exemplo, as seguintes instruções não são mais permitidas e retornam erros:

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

Corrija o problema de uma das seguintes maneiras:

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

Nomes de variáveis

Se você estiver usando variáveis de sessão ou variáveis de ligação com o nome ASOF ou MATCH_CONDITION e seus nomes não estiverem entre aspas duplas quando foram criadas, elas deverão ser renomeadas ou removidas.

Por exemplo, você não pode mais definir uma variável de sessão chamada asof:

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

No entanto, você pode definir uma variável explicitamente entre aspas duplas e chamada "asof" ou "ASOF":

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

As mesmas regras se aplicam a variáveis vinculadas, como :asof e :match_condition.

Ref: 1138