SnowConvert AI - Problèmes PostgreSQL¶
Note
Portée de la conversion
SnowConvert AI pour PostgreSQL concentre principalement ses capacités d’évaluation et de traduction sur les TABLES et les VIEWS. Bien que SnowConvert AI puisse reconnaître d’autres types d’instructions ANSI standards, celles-ci ne sont pas encore totalement prises en charge pour la conversion. Cela signifie que si l’outil peut les identifier, il n’effectuera pas une traduction complète pour ces unités de code non prises en charge.
SSC-EWI-PG0001¶
L’âge n’est pas pris en charge dans Snowflake.
Gravité¶
Medium
Description¶
Cette erreur est ajoutée, car SnowConvert AI ne prend pas en charge la fonctionnalité age().
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
SELECT
age(date1::date, date2::date)
FROM
Table1;
Code généré :¶
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;
Meilleures pratiques¶
La fonction de temps
Datediffpeut résoudre certains cas où l’objectif de la requête est d’obtenir une plage de valeurs spécifique, mais cela doit être géré manuellement pour chaque scénario. Pour plus d’informations, veuillez vous référer à la documentation de Snowflake relative à Datediff.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0002¶
Paramètre d’index de contrainte non pris en charge
Gravité¶
Faible
Description¶
L’utilisation des paramètres d’index suivants dans les contraintes n’est pas prise en charge par Snowflake.
INCLUDE
WITH
USING INDEX TABLESPACE
Exemple de code¶
Code d’entrée :¶
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
);
Code généré :¶
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" }}';
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0003¶
Héritage non pris en charge
Gravité¶
Faible
Description¶
L’héritage entre les tables est autorisé dans PostgreSQL, mais Snowflake ne le prend pas en charge. Pour plus d’informations sur l’héritage dans PostgreSQL, cliquez ici.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
Code généré :¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0003 - TABLE INHERITANCE IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0004¶
Contrainte d’exclusion non prise en charge
Gravité¶
Medium
Description¶
La contrainte d’exclusion utilisée dans PostgreSQL n’est pas prise en charge par Snowflake.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
CREATE TABLE Table1 (
id int,
EXCLUDE USING gist (id WITH &&)
);
Code généré :¶
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" }}';
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0006¶
La référence à une variable utilisant le Label n’est pas prise en charge par Snowflake.
Gravité¶
Medium
Description¶
Cette erreur est ajoutée lorsqu’un corps FOR loop fait référence à une variable à l’aide du Label. Snowflake ne prend pas en charge la référence à une variable à l’aide du nom qualifié.
Exemple de code¶
Code d’entrée :¶
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;
$$;
Code généré :¶
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;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0007¶
La clause Into dans le SQL dynamique n’est pas prise en charge dans Snowflake.
Gravité¶
Faible
Description¶
Le SQL dynamique de PostgreSQL autorise la clause INTO pour stocker les résultats de requête dans des variables. Snowflake ne prend pas en charge cette fonctionnalité. Par conséquent, la clause INTO sera signalée par un EWI.
Exemple de code¶
Code d’entrée :¶
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;
Code généré :¶
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;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0008¶
L’utilisation d’interval dans une fonction to_char n’est pas compatible avec Snowflake.
Gravité¶
Élevé
Description¶
L’utilisation d’interval dans to_char pour convertir les types de données date/heure en texte n’est pas prise en charge dans Snowflake.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
SELECT to_char(interval '15h 2m 12s', 'HH24:MI:SS');
Code généré :¶
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. ***/!!!;
Pour plus d’informations, veuillez vous référer à
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0009¶
Les commentaires sur “Type” ne sont pas pris en charge par Snowflake.
Gravité¶
Faible
Description¶
Dans le code d’origine, divers objets peuvent recevoir des commentaires. Cependant, dans Snowflake, plusieurs de ces objets n’existent pas, et des commentaires ne peuvent donc pas leur être attribués. Le code permettant de gérer ces scénarios est commenté pour éviter toute erreur potentielle.
Exemple de code¶
Code d’entrée :¶
PostgreSql¶
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
Code généré :¶
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';
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0010¶
La création d’une séquence temporaire n’est pas prise en charge par Snowflake.
Gravité¶
Faible
Description¶
Lorsqu’une séquence temporaire est créée dans PostgreSQL, elle n’est créée que pour la session active et est automatiquement supprimée lorsque vous fermez la session. Cependant, cette fonctionnalité n’est pas disponible dans Snowflake. Elle est donc générée comme une séquence normale. Lorsque celle-ci est exécutée, un nom de séquence similaire peut déjà exister, ce qui entraîne une erreur pour un objet existant.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
CREATE TEMPORARY SEQUENCE sequence1;
CREATE TEMP SEQUENCE sequence2;
Code généré :¶
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;
Meilleures pratiques¶
Si vous rencontrez un problème de création, vous pouvez essayer de renommer la séquence pour éviter les collisions.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0011¶
L’option de séquence “option_name” n’est pas prise en charge par Snowflake.
Gravité¶
Faible
Description¶
Certaines options disponibles dans PostgreSQL pour l’instruction de séquence ne sont pas prises en charge par Snowflake.
Les options non prises en charge sont :
Non enregistrée.
AS <data_type>.
MinValue.
MaxValue.
Pas de MinValue.
Pas de MaxValue.
Cache.
Cycle.
Propriétaire par.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
CREATE UNLOGGED SEQUENCE sequence_name;
Code généré :¶
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;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0012¶
L’option de contrainte NOT VALID n’est pas prise en charge par Snowflake.
Description¶
L’option de contrainte NOT VALID est utilisée dans le contexte de l’ajout ou de la modification d’une contrainte pour indiquer que la contrainte doit être ajoutée ou modifiée sans que la conformité des données existantes avec la contrainte ne soit vérifiée. Cette clause n’est pas prise en charge par Snowflake.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
ALTER TABLE Table1 *
ADD CONSTRAINT const UNIQUE (zip) NOT VALID;
Code généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0014¶
Les curseurs de l’Exécution de scripts Snowflake ne prennent pas en charge l’orientation Fetch.
Gravité¶
Medium
Description¶
Dans Snowflake, l’instruction du curseur FETCH récupère toujours la ligne suivante dans le curseur. Lors de la transformation du code, SnowConvert AI transformera les orientations du curseur qui sont équivalentes à FETCH NEXT car elles sont fonctionnellement équivalentes dans Snowflake, à savoir :
FETCH NEXTFETCH FORWARDFETCH RELATIVE 1FETCH(pas d’orientation spécifiée)
Toute autre orientation n’est pas prise en charge, et l’instruction FETCH sera marquée de cet EWI pour le refléter.
Exemple de code¶
Code d’entrée :¶
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;
$$;
Code généré :¶
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;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0015¶
Le curseur Fetch sans variables cibles n’est pas pris en charge dans Snowflake.
Gravité¶
Medium
Description¶
Dans PostgreSQL, il est possible d’utiliser une instruction FETCH sans INTO pour imprimer sur la console les valeurs des lignes extraites. Cependant, Snowflake exige que l’instruction FETCH spécifie la clause INTO avec les variables dans lesquelles les valeurs des lignes récupérées seront stockées.
Chaque fois qu’une FETCH sans INTO sera trouvée dans le code, SnowConvert AI générera cet EWI pour informer l’utilisateur que ce type de FETCH n’est pas pris en charge.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
FETCH PRIOR FROM cursor1;
Code généré :¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0015 - FETCH CURSOR WITHOUT TARGET VARIABLES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FETCH PRIOR FROM cursor1;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-PG0016¶
Type Bit String converti en type Varchar
Gravité¶
Faible
Description¶
Lors de la migration depuis PostgreSQL, sachez que ses types BIT String et les fonctions correspondantes ne sont pas pris en charge de manière native dans Snowflake. Ces types de données seront convertis en VARCHAR de Snowflake. Cette conversion signifie que toute requête ou logique d’application PostgreSQL dépendant d’opérations bitwise sur ces colonnes devra être modifiée de manière significative pour obtenir la même fonctionnalité dans Snowflake.
Exemple de code¶
Code d’entrée :¶
PostgreSQL¶
CREATE TABLE table1 (
col1 bit(10)
);
Code généré :¶
Snowflake¶
CREATE TABLE table1 (
col1 CHARACTER(10) !!!RESOLVE EWI!!! /*** SSC-EWI-PG0016 - BIT DATA TYPE CONVERTED TO CHARACTER ***/!!!
);
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.