SnowConvert AI - Problèmes IBM DB2

SSC-EWI-DB0001

WITH ROW ACCESS POLICY CLAUSE DOES NOT SUPPORT MULTIPLE DECLARATION

Gravité

Faible

Description

Ce message s’affiche chaque fois que SnowConvert AI détecte plusieurs options de colonnes de balises de sécurité à l’intérieur de la même clause CREATE TABLE. La balise de sécurité est traduite en une clause de politique d’accès aux lignes, et Snowflake ne prend pas en charge plusieurs déclarations de politiques d’accès aux lignes. Par conséquent, si plusieurs balises de sécurité sont trouvées, elles seront commentées avec cet EWI.

Exemple de code

Code d’entrée :
 CREATE TABLE T1
(
COL1 VARCHAR(10) COLUMN SECURED WITH securityLabel1,
COL2 VARCHAR(10) COLUMN SECURED WITH securityLabel2
);
Copy
Code de sortie :
CREATE TABLE T1
(
COL1 VARCHAR(10),
COL2 VARCHAR(10)
)
WITH ROW ACCESS POLICY securityLabel1 ON (
COL1
)
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0001 - WITH ROW ACCESS POLICY CLAUSE DOES NOT SUPPORT MULTIPLE DECLARATION IN SNOWFLAKE ***/!!!
WITH ROW ACCESS POLICY securityLabel2 ON (
COL2
)
;
Copy

Recommandations

  • Examinez votre code et assurez-vous qu’une seule balise de sécurité se trouve à l’intérieur de la clause CREATE TABLE.

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-DB0003

PERIOD DEFINITION IS NOT SUPPORTED IN SNOWFLAKE.

Gravité

Medium

Description

Les tables temporelles DB2 ne possèdent pas d’équivalent fonctionnel dans Snowflake. Lorsqu‘une déclaration de table temporelle de période d’application ou de période système est trouvée dans les colonnes CREATE TABLE, cette colonne est commentée à partir du script résultant. Le comportement de l’instruction SELECT sera différent de celui dans Snowflake, car les tables temporelles ne font pas partie de la solution Snowflake. Ainsi, le résultat sera différent si l’instruction Select est migrée partiellement. Consultez l’exemple ci-dessous pour plus d’informations à ce sujet.

Sélectionner la requête

 SELECT 
  ID,
  Start,
  END
FROM 
  timetable 
FOR system_time as of '2022-05-09-16.20.17.0';
Copy
Résultat

ID

START

END

1001

19:45.3

22:39.5

1002

19:45.5

22:39.6

1003

19:45.6

22:39.8

1004

19:45.7

00:00.0

1005

19:45.8

00:00.0

1006

19:46.0

00:00.0

7

16:21.8

00:00.0

Si l’instruction Select est migrée partiellement, le résultat est très différent, comme montré ci-dessous.

Sélectionner la requête
 SELECT 
  ID,
  Start,
  END
FROM 
  timetable 
-- FOR system_time as of '2022-05-09-16.20.17.0';
Copy
Résultat

ID

START

END

2001

22:39.5

00:00.0

2002

22:39.6

00:00.0

2003

22:39.8

00:00.0

1004

19:45.7

00:00.0

1005

19:45.8

00:00.0

1006

19:46.0

00:00.0

7

16:21.8

00:00.0

Exemple de code

DB2
Créer une table
CREATE TABLE TestTable (
COL1 DATE,
COL2 DATE,
PERIOD SYSTEM_TIME (COL1, COL2),
PERIOD BUSINESS_TIME (COL1, COL2)
Copy
Sélectionner la requête
SELECT
   *
FROM
   Table1
FOR SYSTEM_TIME AS of Value
Copy
Snowflake
Create Table
CREATE TABLE TestTable (
COL1 DATE,
COL2 DATE,
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0003 - PERIOD SPECIFICATION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
PERIOD SYSTEM_TIME (COL1, COL2),
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0003 - PERIOD SPECIFICATION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
PERIOD BUSINESS_TIME (COL1, COL2)
)
Copy
Sélectionner la requête
SELECT
   *
FROM
Table1
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0003 - PERIOD SPECIFICATION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
FOR SYSTEM_TIME AS of Value
Copy

Recommandations

SSC-EWI-DB0004

OUTER TABLE REFERENCE NOT APPLICABLE IN SNOWFLAKE

Gravité

Faible

Description

Ce message s’affiche lorsqu’une référence de table OUTER est trouvée dans une clause FROM à l’intérieur d’une instruction SELECT. Cette clause est utilisée pour inclure des sous-tables dans la table de résultats intermédiaires de l’instruction SELECT. Les sous-tables sont liées aux tables typées dans la base de données DB2, qui sont créées avec la clause OF de l’instruction CREATE TABLE, qui n’est pas non plus prise en charge dans Snowflake.

Exemple de code

Code d’entrée :
Select * from OUTER(ATable);
Select * from ONLY(ATable);
Copy
Code de sortie :
Select * from
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0004 - OUTER TABLE REFERENCE IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
OUTER(ATable) AS AliasName;

Select * from
ATable;
Copy

Recommandations

SSC-EWI-DB0005

MANIPULATION OF DATA IN VIEWS IS NOT SUPPORTED

Gravité

Medium

Description

Ce message s’affiche lorsqu’il est trouvé dans un nœud CREATE VIEW ou une clause liée à la manipulation de données des lignes dans CREATE VIEW. Notez que dans DB2, vous pouvez insérer ou mettre à jour des lignes directement à partir d’une VIEW, alors que dans Snowflake, cela n’est pas pris en charge. Pour cette raison, les nœuds ou les clauses liés à cette fonctionnalité sont commentés, et un EWI est ajouté.

Exemple de code

Code d’entrée :
CREATE VIEW TestTableId2 AS Select * from TestTableId1 WITH ROW MOVEMENT;
Copy
Code de sortie :
 CREATE VIEW TestTableId2
 COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "db2",  "convertedOn": "09/02/2025",  "domain": "no-domain-provided" }}'
 AS Select * from
  TestTableId1
 !!!RESOLVE EWI!!! /*** SSC-EWI-DB0005 - MANIPULATION OF DATA IN VIEWS IS NOT SUPPORTED. ***/!!!
 WITH ROW MOVEMENT;
Copy

Recommandations

SSC-EWI-DB0006

INTERMEDIATE RESULT TABLE IS NOT SUPPORTED

Gravité

Medium

Description

Ce message s’affiche lorsqu’une DATA CHANGE TABLE REFERENCE est trouvée dans une clause FROM. Une DATA CHANGE TABLE REFERENCE spécifie une table intermédiaire, qui est constituée des lignes modifiées par une instruction UPDATE, DELETE ou INSERT incluse dans la DATA CHANGE TABLE REFERENCE.

Dans Snowflake, cette référence n’est pas prise en charge, car elle ne peut pas modifier les lignes et renvoyer un jeu de résultats de la table en même temps. Ainsi, la sélection est commentée.

Exemple de code

Code d’entrée DB2 :
Sélectionner une instruction
 SELECT
   *
FROM
   OLD Table(UPDATE T1 SET NAME = 'Tony' where ID = 4)
Copy
Mettre à jour une instruction
 UPDATE (SELECT EMPNO, SALARY, COMM,
     AVG(SALARY) OVER (PARTITION BY WORKDEPT),
     AVG(COMM) OVER (PARTITION BY WORKDEPT)
     FROM EMPLOYEE E) AS E(EMPNO, SALARY, COMM, AVGSAL, AVGCOMM)
   SET (SALARY, COMM) = (AVGSAL, AVGCOMM)
   WHERE EMPNO = '000120';
   
 UPDATE TABLE5
INCLUDE (col1 INT, col2 Varchar(10))
SET Column1 = 1;
Copy
Code de sortie Snowflake :
Sélectionner une instruction
SELECT
   *
FROM
   !!!RESOLVE EWI!!! /*** SSC-EWI-DB0006 - INTERMEDIATE RESULT TABLE IS NOT SUPPORTED. ***/!!!
   OLD Table(UPDATE T1 SET NAME = 'Tony' where ID = 4)
Copy
Mettre à jour une instruction
UPDATE
       !!!RESOLVE EWI!!! /*** SSC-EWI-DB0006 - INTERMEDIATE RESULT TABLE IS NOT SUPPORTED. ***/!!!
 (SELECT EMPNO, SALARY, COMM,
       AVG(SALARY) OVER (PARTITION BY WORKDEPT),
       AVG(COMM) OVER (PARTITION BY WORKDEPT)
       FROM EMPLOYEE E) AS E(EMPNO, SALARY, COMM, AVGSAL, AVGCOMM)
       SET
       SALARY = AVGSAL,
       COMM = AVGCOMM
WHERE EMPNO = '000120';

UPDATE TABLE5
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0006 - INTERMEDIATE RESULT TABLE IS NOT SUPPORTED. ***/!!!
INCLUDE (col1 INT, col2 Varchar(10))
SET Column1 = 1;
Copy

Recommandations

SSC-EWI-DB0007

QUERY AS INSERT TARGET NAME IS NOT SUPPORTED.

Gravité

Medium

Description

Contrairement à DB2, Snowflake ne permet pas d’utiliser les résultats de la requête SELECT comme cible d’une instruction INSERT, qui exige à la place que les données soient insérées directement dans des tables ou des vues matérialisées.

Exemple de code

DB2
Requête
 INSERT INTO
   (SELECT * FROM SOMEOTHERTABLE)
VALUES
   (DEFAULT);
Copy
Snowflake
Requête
 INSERT INTO
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0007 - QUERY AS INSERT TARGET NAME IS NOT SUPPORTED ***/!!!
   (SELECT * FROM SOMEOTHERTABLE)
VALUES
   (DEFAULT);
Copy

Recommandations

SSC-EWI-DB0008

DELETE FROM SELECT STATEMENT IS NOT SUPPORTED.

Gravité

Medium

Description

Snowflake ne prend pas en charge l’utilisation de requêtes Select dans la clause From d’une instruction Delete. Si l’instruction Delete est migrée partiellement, une instruction incomplète sera obtenue, car la clause From sera vide.

Exemple de code

DB2
Sélectionner la requête
 DELETE FROM (
SELECT * FROM table1
)
Copy
Snowflake
Sélectionner la requête
DELETE FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0008 - DELETE FROM SELECT STATEMENT IS NOT SUPPORTED. ***/!!!
 (
SELECT * FROM table1
)
Copy

Recommandations

SSC-EWI-DB0009

POSITIONED STATEMENT IS NOT SUPPORTED.

Gravité

Medium

Description

Snowflake ne prend pas en charge l’utilisation de curseurs dans le cadre des instructions Delete et Update. Si l’instruction est migrée partiellement, nous nous débarrasserons de la clause Where dans laquelle le curseur est intégré, ce qui rendra dangereuse la suppression ou la mise à jour de l’ensemble de la table.

Exemple de code

DB2
Instruction Delete
 DELETE FROM table1 
WHERE CURRENT OF cursor1
Copy
Mettre à jour une instruction
 UPDATE table1
     SET col1 = 1
     WHERE CURRENT OF cursor1
Copy
Snowflake
Instruction Delete
DELETE FROM
table1
WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0009 - POSITIONED CURRENT OF IS NOT SUPPORTED. ***/!!! CURRENT OF cursor1
Copy
Mettre à jour une instruction
UPDATE TABLE1
SET Column1 = 1
WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0009 - POSITIONED CURRENT OF IS NOT SUPPORTED. ***/!!!
 CURRENT OF cursor1;
Copy

Recommandations

  • Pour obtenir une aide supplémentaire, vous pouvez nous envoyer un e-mail à support@mobilize.net ou publier un message sur nos forums. Si vous avez un contrat d’assistance avec Mobilize.Net, contactez votre ingénieur commercial pour qu’il puisse répondre à vos besoins d’assistance.

SSC-EWI-DB0010

ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE

Gravité

Medium

Description

Ce message s’affiche lorsque vous spécifiez l’attribut d’un type structuré en cours de définition (appelé affectation d’attribut). Un type structuré peut être un sous-type dont les attributs peuvent être hérités d’un supertype.

Snowflake ne prend pas en charge ce type de structures.

Pour plus d’informations sur les types de structures, cliquez ici.

Exemple de code

DB2
 UPDATE CIRCLES
     SET C..CENTER..X = C..CENTER..Y,
       C..CENTER..Y = C..CENTER..X
     WHERE ID = 999;
Copy
Snowflake
UPDATE CIRCLES
     SET
          !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!! C..CENTER..X =
          !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!! C..CENTER..Y,
          !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
       C..CENTER..Y =
                      !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!! C..CENTER..X
     WHERE ID = 999
Copy

Recommandations

SSC-EWI-DB0011

ASSIGNMENT CLAUSE TYPE IS NOT SUPPORTED IN SNOWFLAKE

Gravité

Medium

Description

Ce message s’affiche lorsque la clause d’affectation contient une expression non prise en charge par Snowflake.

Cas

Instruction de mise à jour

Lorsqu’une clause d’affectation présente une affectation multi-colonnes d’une sélection de lignes, vous en trouverez un exemple dans la section Exemple de code.

Exemple de code

DB2
 UPDATE EMPLOYEE EU
    SET (EU.COM, EU.SALARY) = (SELECT ES.SALARY FROM EMPLOYEE ES WHERE ES.WORKDEPT = EU.WORKDEPT)
    WHERE EU.EMPNO = '000120';
Copy
Snowflake
UPDATE EMPLOYEE EU
    SET
        !!!RESOLVE EWI!!! /*** SSC-EWI-DB0011 - ASSIGNMENT CLAUSE TYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
 (EU.COM, EU.SALARY) = (SELECT ES.SALARY FROM
         EMPLOYEE ES WHERE ES.WORKDEPT = EU.WORKDEPT)
    WHERE EU.EMPNO = '000120';
Copy

Recommandations

SSC-EWI-DB0012

INVALID NAME AS INSERTION TARGET, USE OF VIEW NAME IS NOT SUPPORTED IN SNOWFLAKE

Gravité

Medium

Description

Snowflake ne prend pas en charge l’utilisation du nom de la vue dans l’instruction du nom de la cible Insert.

Exemple de code

DB2
 CREATE VIEW VIEW1 AS SELECT * FROM T;
INSERT INTO VIEW1 (COL1, COL2) VALUES (NULL, DEFAULT);
Copy
Snowflake
 CREATE VIEW PUBLIC.VIEW1
AS SELECT * FROM
PUBLIC.T;

!!!RESOLVE EWI!!! /*** SSC-EWI-DB0012 - INVALID NAME AS INSERTION TARGET, USE OF VIEW NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
INSERT INTO VIEW1 (COL1, COL2) VALUES (NULL,DEFAULT);
Copy

Recommandations

SSC-EWI-DB0013

INVALID NAME AS DELETE TARGET, USE OF VIEW NAME IS NOT SUPPORTED IN SNOWFLAKE

Gravité

Medium

Description

Snowflake ne prend pas en charge l’utilisation du nom de la vue dans l’instruction du nom de la cible Delete. Pour cette raison, la requête de résultat n’a pas pu être validée.

Exemple de code

DB2
 CREATE VIEW VIEW1 AS SELECT * FROM T;
DELETE FROM VIEW1
Copy
Snowflake
 CREATE VIEW PUBLIC.VIEW1
AS SELECT * FROM
PUBLIC.T;


DELETE FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0013 - INVALID NAME AS DELETE TARGET, USE OF VIEW NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
 VIEW1
Copy

Recommandations

SSC-EWI-DB0014

THE USE OF EXTERNAL TABLE REFERENCES IS NOT SUPPORTED IN SNOWFLAKE

Gravité

Medium

Description

Snowflake ne prend pas en charge l’utilisation des tables externes dans l’instruction Select. Pour cette raison, la requête de résultat n’a pas pu être validée.

Exemple de code

DB2
 SELECT
   *
FROM
   EXTERNAL SOMENAME AS T1 LIKE TABLE2 USING(COMPRESS NO)
Copy
Snowflake
SELECT
   *
FROM
   !!!RESOLVE EWI!!! /*** SSC-EWI-DB0014 - THE USE OF EXTERNAL TABLE REFERENCES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
   EXTERNAL SOMENAME AS T1 LIKE TABLE2 USING(COMPRESS NO)
Copy

Recommandations