

 O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na [publicação do blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) publicada em 30 de junho de 2025. 

# Limitações
<a name="limitations-super"></a>

Com o Amazon Redshift, é possível trabalhar com o tipo de dados SUPER para armazenar e consultar dados semiestruturados, como JSON, Avro ou Ion. As limitações do tipo de dados SUPER estão relacionadas aos limites e restrições existentes quando se usa esse tipo de dados no Amazon Redshift. As seções a seguir apresentam detalhes sobre as limitações específicas do tipo de dados SUPER, como tamanho máximo, níveis de aninhamento e tipos de dados compatíveis no conjunto de dados semiestruturados.
+ Você não pode definir colunas SUPER como uma distribuição ou chave de classificação.
+ Um objeto SUPER individual pode armazenar até 16 MB de dados.
+ A profundidade máxima de aninhamento para matrizes e estruturas do tipo de dados SUPER é 1.000.
+ Qualquer string literal armazenada em um único objeto SUPER é limitada a 16 milhões de bytes.
+ Caso contrário, um valor individual dentro de um objeto SUPER é limitado ao comprimento máximo do tipo do Amazon Redshift correspondente.
+ Ao usar o comando COPY para carregar dados em uma coluna SUPER a partir de um formato baseado em linhas (TEXT, CSV, JSON, AVRO), toda a linha deve caber no buffer do scanner do COPY, que é de 64 MB por padrão. O limite de 64 MB do scanner não se aplica a formatos colunares (PARQUET, ORC). Em todos os casos, cada objeto SUPER está limitado a 16 MB, independentemente do formato de origem.
+ A opção TRUNCATECOLUMNS do comando COPY, quando compatível, aplica-se apenas a colunas VARCHAR e não trunca valores de cadeia de caracteres em colunas SUPER.
+ Você não pode executar operações de atualização parcial ou transformação em colunas SUPER.
+ Você não pode usar o tipo de dados SUPER e seu alias em junções à direita ou junções externas completas.
+ O tipo de dados SUPER não suporta XML como formato de serialização de entrada ou saída. 
+ Na cláusula FROM de uma subconsulta (que está correlacionada ou não) que faz referência a uma variável de tabela para desaninhamento, a consulta só pode se referir à sua tabela pai e não a outras tabelas.
+  Não é possível realizar o desaninhamento nem a remoção dinâmica de objetos em colunas SUPER produzidas por uma expressão de tabela comum (CTE) recursiva (`WITH RECURSIVE`). Para ter mais informações sobre CTEs recursivas, consulte [Expressões de tabela comuns recursivas](r_WITH_clause.md#r_WITH_clause-recursive-cte). 
+ Limitações de conversão

  Os valores SUPER podem ser convertidos de e para outros tipos de dados, com as seguintes exceções:
  + O Amazon Redshift não diferencia inteiros e decimais da escala 0.
  + Se a escala não for zero, o tipo de dados SUPER terá o mesmo comportamento de outros tipos de dados do Amazon Redshift, exceto que o Amazon Redshift converte erros relacionados ao Super-em nulo, conforme mostrado no exemplo a seguir.

    ```
    SELECT 5::bool;
     bool
    -------
     True
    (1 row)
    
    SELECT 5::decimal::bool;
    ERROR:  cannot cast type numeric to boolean
    
    SELECT 5::super::bool;
     bool
    -------
     True
    (1 row)
    
    SELECT 5.0::bool;
    ERROR:  cannot cast type numeric to boolean
    
    SELECT 5.0::super::bool;
     bool
    -------
    (1 row)
    ```
  + O Amazon Redshift não converte os tipos de data e hora para o tipo de dados SUPER. O Amazon Redshift só pode converter os tipos de dados de data e hora do tipo de dados SUPER, conforme mostrado no exemplo a seguir.

    ```
    SELECT o.o_orderdate FROM customer_orders_lineitem c,c.c_orders o;
      order_date
    ------------------
     "2001-09-08"
    (1 row)
    
    
    SELECT JSON_TYPEOF(o.o_orderdate) FROM customer_orders_lineitem c,c.c_orders o;
     json_typeof
    -----------------
     string
    (1 row)
    
    
    SELECT o.o_orderdate::date FROM customer_orders_lineitem c,c.c_orders o;
     order_date
    ----------------
     2001-09-08
    (1 row)
    
    
    --date/time cannot be cast to super 
    SELECT '2019-09-09'::date::super;
    ERROR:  cannot cast type date to super
    ```
  + Converter de valores não escalares (objeto e array) para string retorna NULL. Para serializar adequadamente esses valores não escalares, não os converta. Em seu lugar, use `json_serialize` para converter valores não escalares. A função `json_serialize` retorna um varchar. Normalmente, você não precisa converter valores não escalares para o varchar, pois o Amazon Redshift serializa implicitamente, conforme mostrado no primeiro exemplo a seguir. 

    ```
    SELECT r_nations FROM region_nations WHERE r_regionkey=300;
       r_nations
    ----------------
     [1,"abc",null]
    (1 row)
    
    SELECT r_nations::varchar FROM region_nations WHERE r_regionkey=300;
     r_nations
    -------------
    (1 row)
    
    SELECT JSON_SERIALIZE(r_nations) FROM region_nations WHERE r_regionkey=300;
     json_serialize
    -----------------
     [1,"abc",null]
    (1 row)
    ```
+ O Amazon Redshift não oferece suporte a funções voláteis, como RANDOF () ou TIMEOFDAY (), em subconsultas que unnest uma tabela externa ou um lado esquerdo (LHS) de funções IN com tais subconsultas.