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;
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";
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";
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;
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";
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';
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';
+----------------------------------+ | status | |----------------------------------| | Statement executed successfully. | +----------------------------------+
As mesmas regras se aplicam a variáveis vinculadas, como
:asof
e:match_condition
.
Ref: 1138