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
SSC-EWI-PG0017¶
Transformation for routine body literal is not supported.
Gravidade¶
Low
Descrição¶
SnowConvert AI does not support transformation for quoted literal routine body. Use the arrange option to modify them to dollar routine body.
Exemplo de código¶
Código de entrada:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE proc1 (x varchar default 'pigs')
LANGUAGE plpgsql
AS
'
begin
--test
insert into tabletest2 values ($$Dianne''s pigs$$);
x = ''Diannes pigs'';
end;
';
Código gerado:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE proc1 (x varchar default 'pigs' !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ParameterDefaultExpr' NODE ***/!!!)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "01/13/2026", "domain": "no-domain-provided", "migrationid": "m7mbAfEK5XyHKQR4pRek1g==" }}'
EXECUTE AS CALLER
AS
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0017 - TRANSFORMATION FOR ROUTINE BODY LITERAL IS NOT SUPPORTED. USE ARRANGE OPTION. ***/!!!
'
begin
--test
insert into tabletest2 values ($$Dianne''s pigs$$);
x = ''Diannes pigs'';
end;
';
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com