SnowConvert AI – Problemas com o PostgreSQL¶
Nota
Escopo de conversão
O SnowConvert AI para PostgreSQL concentra as capacidades de avaliação e tradução principalmente em TABLES e VIEWS. Embora o SnowConvert AI consiga reconhecer outros tipos de instruções padrão ANSI, estas ainda não são totalmente compatíveis para conversão. Isso significa que, embora a ferramenta possa identificá-las, ela não realizará uma tradução completa para essas unidades de código não compatíveis.
SSC-EWI-PG0001¶
A função age não é compatível com o Snowflake.
Gravidade¶
Medium
Descrição¶
Este erro foi adicionado porque o SnowConvert AI não é compatível com a funcionalidade age().
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
SELECT
age(date1::date, date2::date)
FROM
Table1;
Código gerado:¶
Snowflake¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "age", "Table1" **
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0001 - AGE IS NOT SUPPORTED ON SNOWFLAKE. ***/!!!
AGE(date1::date, date2::date)
FROM
Table1;
Práticas recomendadas¶
A função de tempo
Datediffpode resolver alguns casos em que o objetivo da consulta é obter um intervalo específico de valores, mas isso precisa ser tratado manualmente para cada cenário. Para obter mais informações, consulte a documentação do Snowflake sobre Datediff.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0002¶
Parâmetro de índice de restrição incompatível
Gravidade¶
Low
Descrição¶
O uso dos seguintes parâmetros de índice em restrições não é compatível com o Snowflake.
INCLUDE
WITH
USING INDEX TABLESPACE
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE TABLE Table1 (
code char(5),
date_prod date,
CONSTRAINT production UNIQUE(date_prod) INCLUDE(code)
);
CREATE TABLE Table2 (
name varchar(40),
UNIQUE(name) WITH (fillfactor=70)
);
CREATE TABLE Table3 (
name varchar(40),
PRIMARY KEY(name) USING INDEX TABLESPACE tablespace_name
);
Código gerado:¶
Snowflake¶
CREATE TABLE Table1 (
code char(5),
date_prod date,
CONSTRAINT production UNIQUE(date_prod)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - INCLUDE PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! INCLUDE(code)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
CREATE TABLE Table2 (
name varchar(40),
UNIQUE(name)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - WITH PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! WITH (fillfactor=70)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
CREATE TABLE Table3 (
name varchar(40),
PRIMARY KEY(name)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - USING PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! USING INDEX TABLESPACE tablespace_name
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0003¶
Herança não compatível
Gravidade¶
Low
Descrição¶
A herança entre tabelas é permitida no PostgreSQL, mas não no Snowflake. Para obter mais informações sobre herança no PostgreSQL, clique aqui.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
Código gerado:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0003 - TABLE INHERITANCE IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0004¶
Restrição de exclusão não compatível
Gravidade¶
Medium
Descrição¶
A restrição de exclusão utilizada no PostgreSQL não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE TABLE Table1 (
id int,
EXCLUDE USING gist (id WITH &&)
);
Código gerado:¶
Snowflake¶
CREATE TABLE Table1 (
id int,
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0004 - EXCLUDE CONSTRAINT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
EXCLUDE USING gist (id WITH &&)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0006¶
A referência a uma variável usando o rótulo não é compatível com o Snowflake.
Gravidade¶
Medium
Descrição¶
Este erro é adicionado quando o corpo de um loop FOR referencia uma variável usando o rótulo. O Snowflake não é compatível com a referência a uma variável usando o nome qualificado.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE procedure1(out result VARCHAR(100))
LANGUAGE plpgsql
AS $$
BEGIN
result := '<';
<<outer_loop>>
for i in 1..3 loop
<<inner_loop>>
for i in 4..6 loop
result := result || '(' || outer_loop.i || ', ' || i || ')';
end loop inner_loop;
end loop outer_loop;
result := result || '>';
END;
$$;
Código gerado:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE procedure1 (result OUT VARCHAR(100))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
BEGIN
result := '<';
for i in 1 TO 3
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
loop
for i in 4 TO 6
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
loop
result := result || '(' ||
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0006 - REFERENCE TO A VARIABLE USING THE LABEL IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! outer_loop.i || ', ' || i || ')';
end loop inner_loop;
end loop outer_loop;
result := result || '>';
END;
$$;
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0007¶
A cláusula INTO em SQL dinâmico não é compatível com o Snowflake.
Gravidade¶
Low
Descrição¶
O SQL dinâmico do PostgreSQL permite que a cláusula INTO armazene resultados de consulta em variáveis. O Snowflake não é compatível com essa funcionalidade. Portanto, a cláusula INTO será sinalizada com um EWI.
Exemplo de código¶
Código de entrada:¶
PosgreSQL¶
CREATE OR REPLACE PROCEDURE get_max_id(table_name VARCHAR, OUT max_id INTEGER)
AS $$
DECLARE
sql_statement VARCHAR;
BEGIN
sql_statement := 'SELECT MAX(id) FROM ' || table_name || ';';
EXECUTE sql_statement INTO max_id;
END;
$$ LANGUAGE plpgsql;
Código gerado:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE get_max_id (table_name VARCHAR, max_id OUT INTEGER)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
DECLARE
sql_statement VARCHAR;
BEGIN
sql_statement := 'SELECT MAX(id) FROM ' || table_name || ';';
EXECUTE IMMEDIATE sql_statement
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0007 - INTO CLAUSE IN DYNAMIC SQL IS NOT SUPPORTED IN SNOWFLAKE. ***/!!! INTO max_id;
END;
$$;
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0008¶
O uso de interval dentro de uma função to_char não é compatível com o Snowflake.
Gravidade¶
High
Descrição¶
O uso de interval dentro de to_char para converter tipos de dados de data/hora em texto não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
SELECT to_char(interval '15h 2m 12s', 'HH24:MI:SS');
Código gerado:¶
Snowflake¶
SELECT to_char(INTERVAL '15h, 2m, 12s', 'HH24:MI:SS') !!!RESOLVE EWI!!! /*** SSC-EWI-PG0008 - THE USE OF INTERVAL WITHIN TO_CHAR IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!;
Para mais informações, consulte:
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0009¶
Comentários em «Type» não são compatíveis com o Snowflake.
Gravidade¶
Low
Descrição¶
No código original, existem vários objetos que podem receber comentários. No entanto, no Snowflake, vários desses objetos não existem e, portanto, não é possível atribuir comentários a eles. O código para lidar com esses cenários é transformado em comentário para evitar possíveis erros.
Exemplo de código¶
Código de entrada:¶
PostgreSql¶
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
Código gerado:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0009 - COMMENT ON 'RULE' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0010¶
A criação de sequências temporárias não é compatível com o Snowflake.
Gravidade¶
Low
Descrição¶
Quando uma sequência temporária é criada no PostgreSQL, ela é criada apenas para a sessão ativa e é excluída automaticamente ao sair da sessão. No entanto, essa funcionalidade não está disponível no Snowflake; portanto, ela é gerada como uma sequência normal. Durante a execução, uma sequência com um nome semelhante pode já existir, o que causará um erro para um objeto existente.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE TEMPORARY SEQUENCE sequence1;
CREATE TEMP SEQUENCE sequence2;
Código gerado:¶
Snowflake¶
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE TEMPORARY !!!RESOLVE EWI!!! /*** SSC-EWI-PG0010 - CREATE TEMPORARY SEQUENCE IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence1;
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE TEMP !!!RESOLVE EWI!!! /*** SSC-EWI-PG0010 - CREATE TEMPORARY SEQUENCE IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence2;
Práticas recomendadas¶
Se você tiver um problema de criação, tente renomear a sequência para evitar conflitos.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com.
SSC-EWI-PG0011¶
A opção de sequência «option_name» não é compatível com o Snowflake.
Gravidade¶
Low
Descrição¶
Algumas opções disponíveis no PostgreSQL para a instrução de sequência não são compatíveis com o Snowflake.
As opções não compatíveis são:
Unlogged.
AS <data_type>.
MinValue.
MaxValue.
No MinValue.
No MaxValue.
Cache.
Cycle.
Owner By.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE UNLOGGED SEQUENCE sequence_name;
Código gerado:¶
Snowflake¶
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE UNLOGGED !!!RESOLVE EWI!!! /*** SSC-EWI-PG0011 - 'UNLOGGED' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence_name;
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0012¶
A opção de restrição NOT VALID não é compatível com o Snowflake.
Descrição¶
A opção de restrição NOT VALID é utilizada no contexto de adicionar ou alterar uma restrição para indicar que a restrição deve ser adicionada ou modificada sem verificar se os dados existentes estão em conformidade com ela. Esta cláusula não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
ALTER TABLE Table1 *
ADD CONSTRAINT const UNIQUE (zip) NOT VALID;
Código gerado:¶
Snowflake¶
ALTER TABLE Table1
ADD CONSTRAINT const UNIQUE (zip)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0012 - NOT VALID CONSTRAINT OPTION IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! NOT VALID;
Práticas recomendadas¶
Não são necessárias ações adicionais do usuário.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0014¶
Os cursores de script do Snowflake não são compatíveis com orientação de busca.
Gravidade¶
Medium
Descrição¶
No Snowflake, a instrução FETCH do cursor sempre busca a próxima linha no cursor. Ao transformar o código, o SnowConvert AI transformará as orientações do cursor que são equivalentes a um FETCH NEXT, pois são funcionalmente equivalentes no Snowflake, a saber:
FETCH NEXTFETCH FORWARDFETCH RELATIVE 1FETCH(nenhuma orientação especificada)
Nenhuma outra orientação é compatível, e a instrução FETCH será marcada com este EWI para refletir isso.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE cursor_test()
AS $$
BEGIN
FETCH FORWARD FROM cursor1 INTO my_var;
FETCH FIRST FROM cursor1 INTO my_var;
FETCH LAST FROM cursor1 INTO my_var;
END;
$$;
Código gerado:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE cursor_test ()
RETURNS VARCHAR
AS $$
BEGIN
FETCH
cursor1 INTO my_var;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0014 - SNOWFLAKE SCRIPTING CURSORS DO NOT SUPPORT FETCH ORIENTATION. ***/!!!
FETCH FIRST FROM cursor1 INTO my_var;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0014 - SNOWFLAKE SCRIPTING CURSORS DO NOT SUPPORT FETCH ORIENTATION. ***/!!!
FETCH LAST FROM cursor1 INTO my_var;
END;
$$;
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0015¶
Fetch do cursor sem variáveis de destino não é compatível com o Snowflake.
Gravidade¶
Medium
Descrição¶
No PostgreSQL, é possível usar uma instrução FETCH sem INTO para imprimir no console os valores das linhas buscadas. No entanto, o Snowflake exige a instrução FETCH para especificar a cláusula INTO com as variáveis onde os valores das linhas buscadas serão armazenados.
Sempre que um FETCH sem INTO for encontrado no código, o SnowConvert AI vai gerar este EWI para notificar o usuário de que esse tipo de FETCH não é compatível.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
FETCH PRIOR FROM cursor1;
Código gerado:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0015 - FETCH CURSOR WITHOUT TARGET VARIABLES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FETCH PRIOR FROM cursor1;
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-PG0016¶
Tipo de cadeia de caracteres bit convertido para tipo varchar
Gravidade¶
Low
Descrição¶
Ao migrar do PostgreSQL, esteja ciente de que os tipos de cadeia de caracteres BIT e as funções relacionadas não são compatíveis nativamente com o Snowflake. Esses tipos de dados serão convertidos para o VARCHAR do Snowflake. Essa conversão significa que qualquer consulta PostgreSQL ou lógica de aplicativo que dependam de operações bit a bit nessas colunas exigirão modificações significativas para conseguir a mesma funcionalidade no Snowflake.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE TABLE table1 (
col1 bit(10)
);
Código gerado:¶
Snowflake¶
CREATE TABLE table1 (
col1 CHARACTER(10) !!!RESOLVE EWI!!! /*** SSC-EWI-PG0016 - BIT DATA TYPE CONVERTED TO CHARACTER ***/!!!
);
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com