Issues and Troubleshooting

Definitions

SnowConvert generates different kinds of messages in the output code indicating additional effort that needs to be made in order to achieve functional equivalence in Snowflake.

EWI (Errors, Warnings and Issues)

If SnowConvert is unable to fully convert a piece of code, then an EWI is generated. Any EWI will have a negative impact on the conversion rate for a code unit. Reasons why SnowConvert may be unable to fully convert the code include:

  • A conversion rule has not been implemented yet

  • Missing dependent code that is required for the conversion rule to be applied.

  • There is not currently an equivalent statement available in Snowflake and/or a UDF has not been developed yet to emulate the functionality required.

Since they typically represent issues that should be addressed before deploying the output code, SnowConvert generates a !!!RESOLVE EWI!!! before each EWI in order to break the compilation.

The SnowConvert team uses internal metrics to classify EWIs into four severity levels (Low, Medium, High, and Critical) based on how much effort, on average, it takes to correct the code.

FDM (Functional Difference Messages)

In the course of converting a legacy platform code to Snowflake, it is essential to acknowledge that such platforms (Teradata, Oracle, SqlServer) and Snowflake are different, each with its unique set of features, functions, and capabilities. In many cases, full functional equivalence cannot be achieved through automation, and involvement is required to bridge those functional differences.

An FDM is generated when SnowConvert is able to output converted, syntactically correct code but that code may not provide exact functional equivalence to the original legacy code. Reasons for functional in-equivalence may be due to features that are not available within Snowflake and require re-solutions beyond what can be done with straight code conversion. Many times, business or architectural input will be required to determine further course of action needed (if any) related to FDMs; since FDMs are added to converted code that should not break the code compilation they do not punish the conversion rate.

PRF (Performance Review)

These types of messages are added to the converted code to let the user know that while the code is translated correctly, it might have performance issues in some scenarios. Some refactoring might be needed to fully take advantage of the Snowflake capabilities.

OOS (Out Of Scope)

As described in the conversion scope page and in the out of scope messages section some code units are considered out of scope for conversion reasons. SnowConvert generates these types of messages to let the user know that the whole code unit was not converted.


New Codes Format

We have improved the format of the EWIs to make it more user-friendly and easier to understand the type of message and the language it belongs to. The following will explain the change with examples.

General

General EWIs were previously mapped using the codes 1000. Now, General EWIs will be those that do not have any abbreviation referring to any of the languages supported by SnowConvert.

Example

New CodeOld Code

SSC-EWI-0001

MSCEWI1001

Teradata

Teradata EWIs were previously mapped using the codes 2000. Now, Teradata EWIs will be mapped with a 'TD' at the beginning of the numeric part of the code.

Example

New CodeOld Code

SSC-EWI-TD0001

MSCEWI2001

Oracle

Oracle EWIs were previously mapped using the codes 3000. Now, Oracle EWIs will be mapped with a 'OR' at the beginning of the numeric part of the code.

Example

New CodeOld Code

SSC-EWI-OR0012

MSCEWI3012

SQL Server

SQL Server EWIs were previously mapped using the codes 2000. Now, SQL Server EWIs will be mapped with a 'TS' at the beginning of the numeric part of the code.

Example

New CodeOld Code

SSC-EWI-TS0003

MSCEWI4003

Changed Category To FDM

DialectNew codeOld code

General

MSCINF0001

General

MSCINF0002

General

MSCINF0003

General

MSC-GP0001

General

MSCEWI1096

General

MSCEWI1066

General

MSCEWI1050

General

MSCEWI1093

General

MSCCP0002

General

MSCEWI1044

General

MSCEWI1045

General

MSCEWI1097

General

MSCEWI1008

General

MSCEWI1035

General

MSCEWI1064

General

MSCEWI1076

General

MSCEWI1072

General

SSC-EWI-0049

General

MSCEWI1058

General

MSCEWI1028

General

SSC-EWI-0068

Teradata

MSCEWI2013

Teradata

MSCEWI2014

Teradata

MSCEWI2073

Teradata

MSCEWI2074

Teradata

MSCEWI2058

Teradata

MSCEWI2045

Teradata

MSCEWI2018

Teradata

MSCEWI2080

Teradata

MSCEWI2019

Teradata

MSCEWI2042

Teradata

MSCEWI2064

Teradata

MSCEWI2004

Teradata

MSCEWI2075

Teradata

MSCEWI2023

Teradata

MSCEWI2020

Teradata

MSCEWI2021

Teradata

MSCEWI2063

Teradata

MSCEWI2084

Teradata

MSCEWI2062

Teradata

MSCEWI2030

Teradata

MSCEWI2086

Teradata

MSCEWI2054

Teradata

SSC-EWI-TD0087

Teradata

MSCEWI2061

Teradata

MSCEWI2060

Teradata

SSC-EWI-TD0055

Teradata

SSC-EWI-TD0070

Oracle

MSCINF0004

Oracle

MSCEWI3068

Oracle

MSCEWI3038

Oracle

MSCEWI3022

Oracle

MSCEWI3025

Oracle

MSCEWI3041

Oracle

MSCEWI3056

Oracle

MSCEWI3071

Oracle

MSCEWI3086

Oracle

MSCEWI3093

Oracle

MSCEWI3066

Oracle

MSCEWI3131

Oracle

MSCEWI3039

Oracle

MSCEWI3002

Oracle

MSCEWI3091

Oracle

MSCEWI3132

Oracle

MSCEWI3017

Oracle

MSCEWI3134

Oracle

MSCEWI3086

Oracle

MSCEWI3051

Oracle

MSCEWI3102

Oracle

MSCEWI3100

Oracle

MSCEWI3099

Oracle

MSCEWI3114

Oracle

MSCEWI3021

Oracle

MSCEWI1065

Oracle

MSCEWI3098

Oracle

MSCEWI3031

Oracle

MSCEWI3059

Oracle

MSCEWI3094

Oracle

MSCEWI3113

Oracle

MSCEWI3004

Oracle

SSC-EWI-OR0128

Oracle