

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Amazon Redshift e PostgreSQL
<a name="c_redshift-and-postgres-sql"></a>

**Topics**
+ [JDBC e ODBC do Amazon Redshift e PostgreSQL](c_redshift-postgres-jdbc.md)
+ [Recursos que são implementados de forma diferente](c_redshift-sql-implementated-differently.md)
+ [Recursos incompatíveis do PostgreSQL](c_unsupported-postgresql-features.md)
+ [Tipos de dados do PostgreSQL não compatíveis](c_unsupported-postgresql-datatypes.md)
+ [Funções incompatíveis do PostgreSQL](c_unsupported-postgresql-functions.md)

O Amazon Redshift é baseado no PostgreSQL. O Amazon Redshift e o PostgreSQL têm uma série de diferenças muito importantes que você deve conhecer ao projetar e desenvolver suas aplicações de data warehouse.

O Amazon Redshift foi projetado especificamente para aplicações de processamento analítico online (OLAP) e business intelligence (BI), que exigem consultas complexas em grandes conjuntos de dados. Por atender a requisitos muito diferentes, o esquema de armazenamento de dados especializado e o mecanismo de execução de consultas que o Amazon Redshift usa são completamente diferentes da implementação do PostgreSQL. Por exemplo, onde aplicações de processamento de transações online (OLTP) normalmente armazenam dados em linhas, o Amazon Redshift armazena dados em colunas, usando codificações especializadas de compactação de dados para uso de memória e E/S de disco otimizadas. Alguns recursos do PostgreSQL que são adequados para processamento OLTP em menor escala, tais como Índices secundários e operações eficientes de manipulação de dados de linha única, foram omitidos para melhorar a performance.

Consulte [Arquitetura do Amazon Redshift](c_redshift_system_overview.md) para uma explicação detalhada da arquitetura do sistema de data warehouse do Amazon Redshift.

PostgreSQL 9.x inclui alguns recursos que não são suportados no Amazon Redshift. Além disso, existem diferenças importantes entre o Amazon Redshift SQL e o PostgreSQL que você deve conhecer. Esta seção destaca as diferenças entre o Amazon Redshift e o PostgreSQL e fornece orientação para o desenvolvimento de um data warehouse que aproveita ao máximo a implementação do Amazon Redshift SQL.

# JDBC e ODBC do Amazon Redshift e PostgreSQL
<a name="c_redshift-postgres-jdbc"></a>

 Como o Amazon Redshift é baseado no PostgreSQL, recomendamos anteriormente o uso da versão 8.4.703 do driver JDBC4 do Postgresql e da versão 9.x dos drivers psqlODBC. Se você estiver usando esses drivers atualmente, recomendamos mudar para os novos drivers específicos do Amazon Redshift do Amazon Redshift. Para obter mais informações sobre drivers e configuração de conexões, consulte “[Drivers JDBC, Pyhton e ODBC para o Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-drivers)” no *Guia de gerenciamento de clusters do Amazon Redshift*.

Para evitar erros de falta de memória por parte do cliente ao recuperar grandes conjuntos de dados usando JDBC, você pode habilitar seu cliente para obter dados em lotes definindo o parâmetro JDBC para o tamanho da busca. Para obter mais informações, consulte [Como configurar o parâmetro JDBC para o tamanho da busca](set-the-JDBC-fetch-size-parameter.md).

O Amazon Redshift não reconhece o parâmetro JDBC maxRows. Em vez disso, especifique uma cláusula [LIMIT](r_ORDER_BY_clause.md#order-by-clause-limit) para restringir o conjunto de resultados. Você também pode usar uma cláusula [OFFSET](r_ORDER_BY_clause.md#order-by-clause-offset) para ir direto para um ponto inicial específico no conjunto de resultados.

# Recursos que são implementados de forma diferente
<a name="c_redshift-sql-implementated-differently"></a>

Muitos elementos da linguagem Amazon Redshift SQL têm características de performance diferentes e usam sintaxe e semântica e que são bastante diferentes da implementação PostgreSQL equivalente.

**Importante**  
Não presuma que a semântica dos elementos que o Amazon Redshift e o PostgreSQL têm em comum são idênticos. Certifique-se de consultar o *Guia do desenvolvedor do Amazon Redshift* [Comandos SQL](c_SQL_commands.md) para compreender as diferenças frequentemente sutis.

Um exemplo em particular é o comando [VACUUM](r_VACUUM_command.md), que é usado para limpar e reorganizar tabelas. VACUUM funciona de forma diferente e usa um conjunto diferente de parâmetros da versão do PostgreSQL. Consulte [Vacuum de tabelas](t_Reclaiming_storage_space202.md) para obter mais informações sobre o uso de VACUUM no Amazon Redshift.

Com frequência, as ferramentas e recursos de administração e gerenciamento de banco de dados também são diferentes. Por exemplo, o Amazon Redshift mantém um conjunto de tabelas e visualizações do sistema que fornecem informações sobre como o sistema está funcionando. Consulte [Visualizações de monitoramento de SYS](serverless_views-monitoring.md) para obter mais informações.

A lista a seguir inclui alguns exemplos de recursos SQL que são implementados de forma diferente no Amazon Redshift.
+  [CRIAR TABELA](r_CREATE_TABLE_NEW.md) 

  O Amazon Redshift não oferece suporte a espaços de tabela, particionamento de tabela, herança e certas restrições. A implementação do Amazon Redshift de CREATE TABLE permite definir os algoritmos de classificação e distribuição de tabelas para otimizar o processamento paralelo.

  O Amazon Redshift Spectrum oferece suporte ao particionamento de tabela usando o comando [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md).
+  [ALTER TABLE](r_ALTER_TABLE.md) 

  Somente um subconjunto de ações ALTER COLUMN é suportado.

  ADD COLUMN oferece suporte à inclusão de somente uma coluna em cada instrução ALTER TABLE.
+  [COPY](r_COPY.md) 

  O comando COPY do Amazon Redshift é altamente especializado para permitir o carregamento de dados de buckets do Amazon S3 e tabelas do Amazon DynamoDB e para facilitar a compactação automática. Consulte a seção [Carregar dados no Amazon Redshift](t_Loading_data.md) e a referência do comando COPY para obter detalhes.
+  [VACUUM](r_VACUUM_command.md) 

  Os parâmetros para VACUUM são totalmente diferentes. Por exemplo, a operação VACUUM padrão no PostgreSQL simplesmente recupera espaço e o torna disponível para reutilização; no entanto, a operação VACUUM padrão no Amazon Redshift é VACUUM FULL, que recupera espaço em disco e recorre a todas as linhas.
+ Os espaços de rastreamento em valores VARCHAR são ignorados quando os valores de strings são comparados. Para obter mais informações, consulte [Significância de espaços em branco](r_Character_types.md#r_Character_types-significance-of-trailing-blanks).

# Recursos incompatíveis do PostgreSQL
<a name="c_unsupported-postgresql-features"></a>

Esses recursos do PostgreSQL são incompatívesi com o Amazon Redshift.

**Importante**  
Não presuma que a semântica dos elementos que o Amazon Redshift e o PostgreSQL têm em comum são idênticos. Certifique-se de consultar o *Guia do desenvolvedor do Amazon Redshift* [Comandos SQL](c_SQL_commands.md) para compreender as diferenças frequentemente sutis.
+ A ferramenta de consulta *psql* não é compatível. O cliente [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) é compatível.
+ Particionamento de tabela (intervalo e particionamento da lista)
+ Tablespaces
+ Restrições
  + Unique
  + Chave externa
  + Chave primária
  + Restrições de verificação
  + Restrições de exclusão

  Restrições exclusivas de chave primária e chave estrangeira são permitidas, mas elas são apenas informativas. Elas não são impostas pelo sistema, mas são utilizadas pelo planejador de consulta.
+ Herança
+ Colunas de sistema PostgreSQL

  O SQL do Amazon Redshift não define colunas do sistema implicitamente. Contudo, os seguintes nomes de coluna de sistema do PostgreSQL não podem ser usados como nomes de colunas definidas pelo usuário: `oid`, `tableoid`, `xmin`, `cmin`, `xmax`, `cmax` e `ctid` Para obter mais informações, consulte [https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html](https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html).
+ Índices
+ Cláusula NULLS em funções de janela
+ Agrupamentos

  O Amazon Redshift não oferece suporte a sequências de intercalação específicas de localidade ou definidas pelo usuário. Consulte [Sequências de colação](c_collation_sequences.md).
+ Expressões de valor
  + Expressões subscritas
  + Construtores de matriz
  + Construtores de linha
+ Acionadores
+ Gerenciamento de dados externos (SQL/MED)
+ Funções da tabela
+ Lista de VALUES usada como tabelas constantes
+ Sequências
+ Pesquisa de texto completo
+ As permissões RULE e TRIGGER.

  O Amazon Redshift concede ou revoga essas permissões quando você executa GRANT ALL ou REVOKE ALL, mas a presença ou ausência das permissões RULE e TRIGGER não afeta de forma alguma as permissões de acesso do beneficiário.

# Tipos de dados do PostgreSQL não compatíveis
<a name="c_unsupported-postgresql-datatypes"></a>

Geralmente, se uma consulta tenta usar um tipo de dado incompatível, incluindo conversões explícitas ou implícitas, ela retornará um erro. Contudo, algumas consultas usando tipos de dados incompatíveis serão executadas no nó de liderança, mas não nos nós de computação. Consulte [Funções SQL compatíveis no nó de liderança](c_sql-functions-leader-node.md).

 Para obter uma lista dos tipos de dados compatíveis, consulte [Tipos de dados](c_Supported_data_types.md).

Esses tipos de dados PostgreSQL são incompatíveis com o Amazon Redshift.
+ Matrizes
+ BIT, BIT VARYING
+ BYTEA
+ Tipos de compostos
+ Tipos enumerados
+ Tipos geométricos (a implementação de tipos geométricos do Amazon Redshift e do PostgreSQL é diferente)
+ HSTORE
+ JSON
+ Tipos de endereço de rede
+ Tipos numéricos
  + SERIAL, BIGSERIAL, SMALLSERIAL
  + MONEY
+ Tipos de identificador de objeto
+ Pseudotipos
+ Tipos de intervalo
+ Tipos de caracteres especiais
  + "char" – Um tipo interno de byte único (onde o tipo de dados denominado char é colocado entre aspas).
  + name – Um tipo interno para nomes de objetos.

  Para obter mais informações sobre esses tipos, consulte [Tipos de caracteres especiais](https://www.postgresql.org/docs/8.0/datatype-character.html) na documentação do PostgreSQL. 
+ Tipos de pesquisa de texto
+ TXID\$1SNAPSHOT
+ UUID
+ XML

# Funções incompatíveis do PostgreSQL
<a name="c_unsupported-postgresql-functions"></a>

Muitas funções que não são excluídas têm semântica ou uso diferentes. Por exemplo, algumas funções compatíveis serão executadas somente no nó de liderança. Além disso, algumas funções incompatíveis não retornarão um erro quando executadas no nó de liderança. O fato de essas funções não retornarem um erro em alguns casos não deve ser considerado como uma indicação de que a função é compatível com o Amazon Redshift. 

**Importante**  
Não presuma que a semântica dos elementos que o Amazon Redshift e o PostgreSQL têm em comum são idênticos. Certifique-se de consultar o [Comandos SQL](c_SQL_commands.md) do *Guia do desenvolvedor de banco de dados do Amazon Redshift* para compreender as diferenças frequentemente sutis.

 Para obter mais informações, consulte [Funções SQL compatíveis no nó de liderança](c_sql-functions-leader-node.md).

Essas funções PostgreSQL são incompatíveis com o Amazon Redshift.
+ Acesso a funções de consulta de privilégio
+ Funções de advisory lock
+ Funções agregadas
  + STRING\$1AGG()
  + ARRAY\$1AGG()
  + EVERY()
  + XML\$1AGG()
  + CORR()
  + COVAR\$1POP()
  + COVAR\$1SAMP()
  + REGR\$1AVGX(), REGR\$1AVGY()
  + REGR\$1COUNT()
  + REGR\$1INTERCEPT()
  + REGR\$1R2()
  + REGR\$1SLOPE()
  + REGR\$1SXX(), REGR\$1SXY(), REGR\$1SYY()
+ Funções e operadores da matriz
+ Funções de controle de backup
+ Funções de informações de comentário
+ Funções de localização de objetos do banco de dados
+ Funções do tamanho de objetos do banco de dados
+ Funções e operadores de data e hora
  + CLOCK\$1TIMESTAMP()
  + JUSTIFY\$1DAYS(), JUSTIFY\$1HOURS(), JUSTIFY\$1INTERVAL()
  + PG\$1SLEEP()
  + TRANSACTION\$1TIMESTAMP()
+ Funções de suporte ENUM
+ Funções e operadores geométricos
+ Funções de acesso de arquivos genéricas
+ IS DISTINCT FROM
+ Funções e operadores de endereço de rede
+ Funções matemáticas
  + DIV()
  + SETSEED()
  + WIDTH\$1BUCKET()
+ Funções de retorno de conjuntos
  + GENERATE\$1SERIES()
  + GENERATE\$1SUBSCRIPTS()
+ Funções e operadores de intervalo
+ Funções de controle de recuperação
+ Funções de informações de recuperação
+ Função ROLLBACK TO SAVEPOINT
+ Funções de consulta de visibilidade do schema
+ Funções de sinalização de servidor
+ Funções de sincronização de snapshot
+ Funções de manipulação de sequências
+ Funções de string
  + BIT\$1LENGTH()
  + OVERLAY()
  + CONVERT(), CONVERT\$1FROM(), CONVERT\$1TO()
  + ENCODE()
  + FORMAT()
  + QUOTE\$1NULLABLE()
  + REGEXP\$1MATCHES()
  + REGEXP\$1SPLIT\$1TO\$1ARRAY()
  + REGEXP\$1SPLIT\$1TO\$1TABLE()
+ Funções de informações de catálogo do sistema
+ Funções de informação do sistema
  + CURRENT\$1CATALOG CURRENT\$1QUERY()
  + INET\$1CLIENT\$1ADDR()
  + INET\$1CLIENT\$1PORT()
  + INET\$1SERVER\$1ADDR() INET\$1SERVER\$1PORT()
  + PG\$1CONF\$1LOAD\$1TIME()
  + PG\$1IS\$1OTHER\$1TEMP\$1SCHEMA()
  + PG\$1LISTENING\$1CHANNELS()
  + PG\$1MY\$1TEMP\$1SCHEMA()
  + PG\$1POSTMASTER\$1START\$1TIME()
  + PG\$1TRIGGER\$1DEPTH()
  + SHOW VERSION()
+ Funções e operadores de pesquisa de texto
+ IDs de transação e funções de snapshots
+ Funções de trigger
+ Funções XML