SnowConvert AI - General Issues¶
SSC-EWI-0001¶
Unrecognized token on the line of the source code.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Critical
Description¶
This issue occurs when there is an error while parsing the source code that is being converted. It means there is a source code syntax error or a specific statement of the code is not being recognized yet.
Example Code¶
The following example illustrates different parsing error scenarios where invalid syntax is placed in the input. Notice how the message varies between every scenario, these contents may be helpful on isolating and fixing the issue. For more information check “Message Contents” below.
Input Code: ¶
Generated Code: ¶
Message Contents¶
- Starting clause: Specifies the starting location (line, column, and ‘text’) of the unrecognized code. The code will be commented from the ‘text’ element onward for every unrecognized element until the parser locates a possible recovery point.
- Expected grammar clause: Specifies the type of grammar that the parser was expecting. Check if the commented code has a matching type of the expected grammar.
- Last matching token clause (OPTIONAL): May appear if the unrecognized code was partially recognized. This signals the point up until the parser recognized valid elements, so check the following tokens in the commented code to make sure they are valid.
- Failed Token clause (OPTIONAL): May only be present when a “Last matching Token clause” is also present. This represents at which point the parser ultimately determined the code is invalid or not recognized. Make sure this element can be placed in this syntactical location.
Deprecated Message Contents¶
Note
The items in this list are not actively in usage, and are left here for historical purposes.
- Recovery Code (DEPRECATED): It is intended to be used as an error code, and may be supplied for better support during parser upgrade requests. It represents how the parser triggered its recovery mechanism.
Best Practices¶
- Check if the source code has the correct syntax.
- The message can be used to isolate and solve the issue.
- If the syntax is not supported, it may be manually changed to a supported syntax.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0002¶
Default Parameters May Need To Be Reordered
Note
This EWI is deprecated. SnowConvert AI now automatically reorders default parameters to the end of the parameter list instead of emitting this warning. Please refer to SSC-FDM-0041 for the updated behavior.
Severity¶
Medium
Description¶
Default parameters may need to be reordered. Snowflake only supports default parameters at the end of the parameter declarations.
Example Code¶
Input Code:¶
Generated Code:¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0003¶
System column for built-in object has not been translated.
Severity ¶
Medium
Description ¶
This EWI is generated when SnowConvert AI maps a built-in system object (table, view) to the Snowflake-equivalent object, but there is no map for one of its internal columns.
Code Example ¶
Input Code:
Output Code:
Snowflake¶
SSC-EWI-0005¶
Severity¶
Critical
Description¶
This issue appears when an unexpected transformation error occurs while trying to convert the source code and the output code file can not be generated.
Best Practices¶
- Check the error log file for more information about the issue.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0006¶
The current date/numeric format may have a different behavior in Snowflake.
Severity¶
Medium
Description¶
This error is added because Snowflake does not support date/numeric formats in some functions as is supported in the source language.
Note
For SQL Server migrations: Advanced numeric format specifiers (such as P, N, %) are now translated by default without requiring any flag. If you are converting SQL Server code that uses custom single-character date format specifiers (such as %y, %M, %d, %H, %h, %m, %s), consider enabling the
--enableFormatSpecifiersPreview preview flag. This flag enables access to new Snowflake date/time format specifiers that provide more accurate
translations of these formats. See Preview Features Settings for more details.
Note: You must request preview access in your Snowflake account to use the date/time preview features.
The following format elements are the ones that may behave differently in Snowflake:
Redshift Date / Time¶
| Format Element | Description |
|---|---|
| HH | Hour of day (01–12). |
| MS | Millisecond (000–999). |
| US | Microsecond (000000–999999). |
| SSSS, SSSSS | Seconds past midnight (0–86399). |
| Y,YYY | Year (4 or more digits) with comma. |
| YYY | Last 3 digits of year. |
| Y | Last digit of year. |
| IYYY | ISO 8601 week-numbering year(4 or more digits). |
| IYY | Last 3 digits of ISO 8601 week-numbering year. |
| IY | Last 2 digits of ISO 8601 week-numbering year. |
| I | Last digit of ISO 8601 week-numbering year. |
| BC, bc, AD or ad | Era indicator (without periods). |
| B.C., b.c., A.D. or a.d. | Era indicator (with periods). |
| MONTH | Full upper case month name (blank-padded to 9 chars). |
| Month | Full capitalized month name (blank-padded to 9 chars). |
| month | Full lower case month name (blank-padded to 9 chars). |
| DAY | Full upper case day name (blank-padded to 9 chars). |
| Day | Full capitalized day name (blank-padded to 9 chars). |
| day | Full lower case day name (blank-padded to 9 chars). |
| DDD | Day of year (001–366). |
| IDDD | Day of ISO 8601 week-numbering year (001–371; day 1 of the year is Monday of the first ISO week). |
| D | Day of the week, Sunday (1) to Saturday (7). |
| ID | ISO 8601 day of the week, Monday (1) to Sunday (7). |
| W | Week of month (1–5) (the first week starts on the first day of the month). |
| WW | Week number of year (1–53) (the first week starts on the first day of the year). |
| IW | Week number of ISO 8601 week-numbering year (01–53; the first Thursday of the year is in week 1). |
| CC | Century (2 digits) (the twenty-first century starts on 2001-01-01). |
| J | Julian Date. |
| Q | Quarter. |
| RM | Month in upper case Roman numerals (I–XII; I=January). |
| rm | Month in lower case Roman numerals (i–xii; i=January). |
| TZ | Upper case time-zone abbreviation (only supported in to_char). |
| tz | Lower case time-zone abbreviation (only supported in to_char). |
| TZH | Time-zone hours. |
| TZM | Time-zone minutes. |
| OF | Time-zone offset from UTC (only supported in to_char). |
| FM prefix | Fill mode (suppress leading zeroes and padding blanks). |
| TH suffix | Upper case ordinal number suffix. |
| th suffix | Lower case ordinal number suffix. |
| FX prefix | Fixed format global option (see usage notes). |
| TM prefix | Translation mode (use localized day and month names based on lc_time). |
| SP suffix | Spell mode. |
Note
For more information please refer to PostgreSQL Date/Time formats.
Note
The transformation of the TO_CHAR function supports most of this format elements, for a full list of suppported format elements and their equivalent mappings please refer to the Translation specification
BigQuery Format ¶
Review the BigQuery format elements reference.
Numeric ¶
| Pattern | Description |
|---|---|
| PR | negative value in angle brackets |
| RN | Roman numeral (input between 1 and 3999) |
| TH or th | ordinal number suffix |
| V | shift specified number of digits (see notes) |
| EEEE | exponent for scientific notation |
Note
For more information please refer to PostgreSQL Numeric formats.
Code Example¶
Input Code:¶
PostgreSQL¶
Generated Code:¶
Snowflake¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0007¶
Severity¶
Critical
Description¶
This error appears when an error occurs in writing the output file.
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0008¶
COLLATE clause may have a different behavior in Snowflake
Severity¶
Medium
Description¶
This warning is added when the collate clause is used as a column option because it is supported in Snowflake, but behaves differently in the collate specification. To verify which specifiers are supported in Snowflake, see Collate specifications.
Example Code¶
Input Code:¶
Generated Code: ¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0009¶
Regexp_Substr Function only supports POSIX regular expressions.
Severity¶
Low
Description¶
Currently, there is no support in Snowflake for extended regular expression beyond the POSIX Basic Regular Expression syntax.
This EWI is added every time a function call to REGEX_SUBSTR, REGEX_REPLACE, or REGEX_INSTR is transformed to Snowflake to warn the user about possible unsupported regular expressions. Some of the features not supported are lookahead, lookbehind, and non-capturing groups.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- Check the regular expression used in each case to determine whether it needs manual intervention. More information about expanded regex support and alternatives in Snowflake can be found here.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0010¶
Severity¶
Critical
Description¶
This error appears when there is not a transformation rule for a specific procedure statement.
Best Practices¶
- Check if the procedure statement is correct.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0011¶
Severity¶
High
Description¶
This error appears when there is an unexpected end of the statement in the source code and the error cannot be handled correctly.
Best Practices¶
- Check if the source code is incomplete or if the statement that is being converted ends correctly.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0012¶
Severity¶
High
Description¶
This error appears when there is an unexpected end of the statement in the source code
Example Code¶
Input Code:¶
Generated Code: ¶
Recommendation¶
- Check if the source code is incomplete or if the statement that is being converted ends correctly.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0013¶
Severity¶
Critical
Description¶
This error appears when an exception is raised while converting an item from the source code.
Recommendation¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0014¶
Severity¶
Critical
Description¶
This error appears when the body of a specific procedure statement is not generated.
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0015¶
Pivot/Unpivot multiple function not supported.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Medium
Description¶
This section describes the different issues that could be triggered by PIVOT and UNPIVOT clauses. The not-supported scenarios are presented in the following table.
| PIVOT | UNPIVOT | ORACLE | TERADATA | |
|---|---|---|---|---|
| MULTIPLE COLUMN | X | X | X | X |
| RENAME COLUMN | X | X | X | X |
| MULTIPLE FUNCTION | X | X | X | |
| WITH CLAUSE | X | X | ||
| XML OUTPUT FORMAT | X | X | ||
| IN CLAUSE SUBQUERY | X | X | X | |
| IN CLAUSE ANY SEQUENCE | X | X | ||
| INCLUDE/EXCLUDE NULLS | X | X | X |
MULTIPLE COLUMN¶
Multiple columns are not supported by PIVOT and UNPIVOT clauses.
Example Code¶
Input Code:¶
Generated Code:¶
RENAME COLUMN¶
Renaming columns with aliases is not supported in Snowflake UNPIVOT clauses. SnowConvert will remove aliases for functions or columns to create a valid query and check that this change does not affect the original functionality.
For PIVOT, the use of column aliases is only supported in SnowConvert AI for Teradata if the following two conditions are true: all expressions inside the IN clause have an alias associated and SnowConvert AI has information about the columns that will be generated as a result, either by providing the table definition or using a subquery with an explicit column list as input to the clause.
Example Code¶
Input Code:¶
Generated Code:¶
MULTIPLE FUNCTION¶
Multiple function is not supported for PIVOT clauses, sometimes multiple function queries could be re-written using case statements, see the following Teradata sample for more information https://docs.teradata.com/r/756LNiPSFdY~4JcCCcR5Cw/L0kKSOrOeu_68mcW3o8ilw
Example Code¶
Input Code:¶
Generated Code:¶
WITH CLAUSE¶
Teradata PIVOT has an optional WITH clause, this is not allowed in Snowflake’s PIVOT.
Example Code¶
Input Code:¶
Generated Code:¶
XML OUTPUT FORMAT¶
XML output for the PIVOT clause is not supported by Snowflake.
Example Code¶
Input Code:¶
Generated Code:¶
IN CLAUSE SUBQUERY¶
Subqueries for the IN clause are not supported.
Example Code¶
Input Code:¶
Generated Code:¶
IN CLAUSE ANY SEQUENCE¶
This error is triggered when ANY keyword is used in the IN clause. This is currently not supported.
Example Code¶
Input Code:¶
Generated Code:¶
INCLUDE/EXCLUDE NULLS¶
INCLUDE NULLS or EXCLUDE NULLS are not valid options for UNPIVOT clauses in Snowflake.
Example Code¶
Input Code:¶
Generated Code:¶
Best Practices¶
- Re-write the query if possible, otherwise, no additional user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0016¶
Snowflake does not support the options clause.
Severity ¶
Medium
Description ¶
This EWI is added to DDLs statements when the OPTIONS has unsupported options by Snowflake.
Code Example ¶
Input Code:
BigQuery¶
Output Code:
Snowflake¶
SSC-EWI-0020¶
CUSTOM UDF INSERTED.
Severity¶
Low
Summary¶
There are several User-Defined Functions (UDF) provided by SnowConvert AI used to reproduce source language behaviors that are not supported by Snowflake, functionality and descriptions are detailed below.
UDFs can be found in “UDF Helpers” folder created in the output path after the migration has occurred.
Best Practices¶
- Check if the UDF Helpers folder is being created with files inside it.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0021¶
Not supported.
Severity¶
Medium
Description¶
This message appears when a specific node or statement from the source code is not supported in Snowflake.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- If this error happens is because there is no Snowflake equivalent for the node that is being converted.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0022¶
One or more identifiers in a specific statement are considered parameters by default.
Warning
The EWI is only generated when Javascript is the target language for Stored Procedures. This is a deprecated translation feature, as Snowflake Scripting is the recommended target language for Stored Procedures.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Medium
Description¶
This error is used to report that one or more identifiers in a specific statement are considered parameters by default.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- Make sure all the dependencies(tables and views) related to the procedure statement are being migrated.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0023¶
Performance Review - A loop contains an insert, delete, or update statement.
Warning
The EWI is only generated when Javascript is the target language for Stored Procedures. This is a deprecated translation feature, as Snowflake Scripting is the recommended target language for Stored Procedures.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This warning indicates a possible consideration that the user should have in terms of performance.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0025¶
Binding time variables might require a change in the query.
Warning
The EWI is only generated when Javascript is the target language for Stored Procedures. This is a deprecated translation feature, as Snowflake Scripting is the recommended target language for Stored Procedures.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
The action of binding time variables might require changes in the query that contains them.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- No additional user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0026¶
Qualified variables may require a cast.
Warning
The EWI is only generated when Javascript is the target language for Stored Procedures. This is a deprecated translation feature, as Snowflake Scripting is the recommended target language for Stored Procedures.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This warning is added when there is a query with a variable with a qualified member like an Oracle record or a Teradata for loop variable. Depending on where the variable is being used and the type of value, a cast may be necessary to work properly.
Example Code¶
Input Code: ¶
Generated Code:¶
Generated Code with adjustments: ¶
Best Practices¶
- Check if a cast to a Date, Time, or Timestamp is necessary for the binding. Some cases are not necessary because an implicit conversion is done to the value.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0027¶
The following statement uses a variable/literal with an invalid query and it will not be executed.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Medium
Description¶
This warning is used to report that a specific statement uses a variable or literal with an invalid query and for that reason, it will not be executed.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- Check if a cast to a Date, Time, or Timestamp is necessary for the binding. Some cases are not necessary because an implicit conversion is done to the value.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0028¶
Type not supported by Snowflake
Severity¶
Medium
Description¶
This message appears when a type is not supported in Snowflake.
Example¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0029¶
External table data format not supported in snowflake
Severity¶
Medium
Description¶
Snowflake supports the following External Table formats:
| BigQuery | Snowflake |
|---|---|
| AVRO | AVRO |
CSV | CSV |
NEWLINE_DELIMITED_JSON | JSON |
| ORC | ORC |
| PARQUET | PARQUET |
When an external table has other FORMAT not specified in the above table, this EWI will be generated to inform the user that the FORMAT is not supported.
Code Example¶
Input Code:¶
BigQuery¶
Generated Code:¶
Snowflake¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0030¶
The statement below has usages of dynamic SQL
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Medium
Description¶
This error is used to indicate that the statement has usages of dynamic SQL. Each specific source language has its own set of statements that can execute dynamic SQL. Dynamic SQL refers to code that is built as text using the string manipulation tools the database engine language provides.
This scenario is considered a complex pattern because dynamic SQL is built and executed in runtime making it more difficult to track and debug errors. This error is meant to be a helper to spot some problems that a static-code analyzer such as Snow Convert cannot.
Code Example¶
Teradata¶
Input¶
Output¶
Oracle¶
Input¶
Output¶
SQL Server¶
Input¶
Output¶
Issues Inside of Dynamic SQL¶
Something important to take into account is that when migrating dynamic SQL code, SnowConvert AI will not report any type of issue inside of dynamic SQL in the output code or in the assessment reports. This will happen even when the documentation of an issue or the translation specification describes that an issue will always be added to the output code. Here is an example of a migration in Oracle where this situation might be encountered:
Oracle¶
Snowflake¶
In the previous example, the query and the variable assignment inside the procedure will be converted exactly the same, the difference is that in the dynamic SQL code the conversion issues will not be shown in the output code and in the assessment reports.
Best Practices¶
- Use this tag to track every dynamically built statement and review its correctness when troubleshooting.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0031¶
Function not supported.
Note
Some parts in the output code are omitted for clarity reasons.
Severity ¶
Medium
Description ¶
This warning is used to report that a specific built-in function of Teradata, Oracle, or SQL Server is not supported.
Example Code ¶
Input Code (Oracle):¶
Output Code: ¶
Input Code (Teradata):¶
Output Code: ¶
Note
Teradata hash functions (HASHBUCKET, HASHROW, HASHAMP, HASHBAKAMP) are tied to Teradata’s shared-nothing AMP architecture for data distribution. Snowflake manages data distribution internally and has no equivalent mechanism. While Snowflake provides a HASH function, the HASH function uses a different algorithm, produces values in a different range (Snowflake HASH: signed 64-bit integers; HASHBUCKET: 0–1,048,575), and handles NULLs differently. For this reason, SnowConvert marks these functions with EWI markers rather than attempting an automatic translation.
Best Practices ¶
- Please refer to the following links to check the current transformation of the specific function you are trying to convert:
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0032¶
External table requires an external stage to access an external location, define and replace the EXTERNAL_STAGE placeholder
Description¶
When transforming the CREATE EXTERNAL TABLE statement, SnowConvert AI will generate an EXTERNAL_STAGE placeholder that has to be replaced with the external stage created for connecting with the external location from Snowflake.
Please refer to the following guides to set up the necessary Storage Integration and External Stage in your Snowflake account:
- For external tables referencing Amazon S3
- For external tables referencing Google Cloud Storage
- For external tables referencing Azure Blob Storage
Code Example¶
Input Code:¶
BigQuery¶
Generated Code:¶
Snowflake¶
Best Practices¶
- Set up your external connection in the Snowflake account and replace the EXTERNAL_STAGE placeholder to complete the transformation.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0033¶
Format removed, semantic information not found.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This warning appears when a column used in a CAST function with a specific output format was not found in the source code.
Example Code¶
Input Code (Teradata):¶
Generated Code: ¶
Best Practices¶
- Make sure all the dependencies(tables and views) related to the procedure statement are being migrated.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0034¶
Format removed.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This warning appears when the format of the column used in a CAST function is removed.
Example Code¶
Input Code (Teradata):¶
Generated Code: ¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0035¶
Check statement not supported.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
CHECK constraint is not supported by Snowflake but it does not affect functionally.
Example Code¶
Input Code Oracle :¶
Generated Code: ¶
Input Code Teradata: ¶
Generated Code: ¶
Input Code SqlServer¶
Generated Code:¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0036¶
Data type converted to another data type.
Severity¶
Low
Description¶
This warning appears when a data type is changed into another one.
Example Code¶
Source Code:¶
Converted Code: ¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0040¶
Clause Not Supported.
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This warning is added when there is a statement that is not supported in Snowflake.
Example Code¶
In the following example, the PERCENT clause from SQL Server is used on the SELECT query, this is not supported by Snowflake.
Input Code (SQL Server):¶
Source Code: ¶
Best Practices¶
- Review the original functionality of the statement and check if it is actually needed for your specific needs in Snowflake.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0041¶
The file has an unexpected encoding and was not translated
Note
This EWI is deprecated, please refer to SSC-OOS-0001 documentation.
Description¶
This issue happens when a source code file has an encoding format not recognized by the tool. Character encoding is the process of assigning numbers to graphical characters, in this context written characters of human language, thus the error indicates the conversion tool could not recognize certain characters.
Best Practices¶
- All files in the input folder should have the same encoding to avoid this error.
- The appropriate encoding should be selected through the conversion settings or by utilizing the –encoding conversion parameter with the CLI. To determine which encoding to select online tools such as Free Online Formater can be used or run the command
file -i *in the case of Linux or OS. - If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0045¶
Column Name is Snowflake Reserved Keyword.
Severity¶
Medium
Description¶
In some cases, column names that are valid in the source language may conflict with Snowflake’s reserved keywords. These conflicts arise because Snowflake reserves a set of keywords that cannot be used directly as column names without special handling. For details, refer to Snowflake’s official documentation on reserved and limited keywords.
Code example¶
Input¶
Output¶
Best Practices¶
- Consider renaming the columns that use names that are not supported in Snowflake.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0046¶
Nested function/procedure declarations are considered a complex pattern and not supported in Snowflake.
Severity¶
Critical
Description¶
Snowflake does not support the declaration of nested functions/procedures, this warning is added to any create function or create procedure statement in which nested declarations were found.
Code example¶
Input¶
Output¶
Best Practices¶
- Remove the nested declarations from the function/procedure.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0049¶
A Global Temporary Table is being referenced.
Note
This EWI is deprecated, please refer to SSC-FDM-0023 documentation.
Severity¶
Medium
Description¶
SnowConvert AI transforms Global Temporary tables into regular Create Table. References to these tables may behave different than expected.
Code example¶
Input¶
Output¶
Related Issues¶
- SSC-FDM-0009: GLOBAL TEMPORARY TABLE functionality not supported.
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0052¶
Unusable object
Severity¶
Medium
Description¶
This error happens when the source code uses a parameter or variable that is not supported or was not recognized by the conversion tool.
Example code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Look for an alternative for the used data type.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0053¶
Object may not work.
Severity¶
Low
Description¶
This error happens when the conversion tool could not determine the data type of a variable. This may happen because the declaration of a variable could be missing.
Example code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Make sure the input code has the variable declared.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0054¶
Unsupported outer join subquery
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This error happens when a correlated subquery is found within an OR logical expression of an OUTER JOIN (Left, Right or Full). In those cases they could produce inconsistent results or cause the following error:
SQL compilation error: Unsupported subquery type cannot be evaluated.
These limitations with subqueries are briefly mentioned in Snowflake documentation and some information about them can also be found in Snowflake forums.
Example code¶
Input Code (Teradata):¶
Generated Code:¶
Best Practices¶
- Verify the output code does not produce a compilation error.
- Verify the output code’s functional equivalence.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0056¶
Custom Types Not Supported
Note
Deprecation: This issue code is deprecated. SnowConvert now translates many Oracle and cross-dialect CREATE TYPE definitions to Snowflake native user-defined types where supported. This entry’s Input Code and Generated Code examples are kept for historical reference and may not match current tool output. For current behavior, see the translation reference for your source: Oracle, IBM DB2, Teradata, SQL Server / Azure Synapse, PostgreSQL / Greenplum / Netezza, Sybase IQ.
Severity¶
Low
Description¶
This message appears when a user-defined type (UDT) is defined. User-defined types are not supported in Snowflake, so references to the custom type are changed to an appropriate Snowflake type (such as VARIANT or OBJECT).
Snowflake has a UDT Private Preview feature available. For more information about accessing this feature, please contact udt-prpr@snowflake.com.
Note
The type definition is commented on but is still being taken into account for resolving usages, see SSC-EWI-0062 for more information.
Example code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Consider using Snowflake’s OBJECT or VARIANT data types as alternatives to user-defined types for storing complex structured data.
- For more information about the UDT Private Preview feature, contact udt-prpr@snowflake.com.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0058¶
Functionality is not currently supported by Snowflake Scripting
Severity¶
Medium
Description¶
This error happens when a statement used in a create procedure is not currently supported by Snowflake Scripting.
Example code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- No end-user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0062¶
Custom type usage changed to variant
Severity¶
Low
Description¶
This message appears when a Custom Type is referenced, and then its usage is changed to a variant.
Note
This message is heavily related to SSC-EWI-0056.
Example code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Remember to transform all of its input data into a Variant-compliant data type as well.
- If you need more support, you can email us at snowconvert-support@snowflake.com.
SSC-EWI-0064¶
Referenced custom type in query not found
Severity¶
High
Description¶
This error happens when a Custom Type is referenced in a source for a DML statement, but the Custom Type was never defined.
For example in a Table Column whose type might be a UDT but it was never defined.
Warning
Not to be confused with SSC-FDM-0015, which is when it was referenced in a DDL query.
Example Code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Verify that the type that was referenced was defined in the input code.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0066¶
Expression not supported in Snowflake.
Severity ¶
High
Description ¶
This error is used to inform that a specific expression is not supported in Snowflake.
Example Code ¶
Input Code:¶
Output Code: ¶
Best Practices ¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0067¶
UDF was transformed to Snowflake procedure, calling procedures inside a query is not supported.
Severity¶
High
Description¶
This error is added when a call to a UDF (user defined function) is found inside a query. Oracle UDFs and UDFs inside packages and some SQL Server UDFs, are being transformed to Snowflake Stored Procedures, which can not be called from a query.
The function is transformed to a Stored procedure to maintain functional equivalence and the function call is transformed to an empty Snowflake UDF function.
Note
This EWI is strongly related to SSC-EWI-0068
Example Code¶
SQL Server:¶
Input Code¶
Generated Code¶
Oracle:¶
Input Code¶
Generated Code¶
Best Practices¶
- The source code may need to be restructured to fit with the Snowflake user-defined functions approach.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0068¶
User defined function was transformed to a Snowflake procedure.
Snowflake user defined functions do not support the same features as Oracle or SQL Server. To maintain the functional equivalence the function is transformed to a Snowflake stored procedure. This will affect their usage in queries.
Example Code¶
SQL Server:¶
Input Code¶
Generated Code¶
Oracle:¶
Input Code¶
Generated Code¶
Best Practices¶
- Separate the inside queries to maintain the same logic.
- The source code may need to be restructured to fit with the Snowflake user-defined functions approach.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0073¶
Pending Functional Equivalence Review
Severity¶
Medium
Description¶
This EWI is added when there is a grammar clause in the input platform that has not been reviewed by the SnowConvert AI developer team. The code may require manual revision for it to work in Snowflake.
Example Code¶
SQLServer:¶
Input Code¶
Generated Code¶
Notice in line 6 of the input code, that there is a reference to a INSERT statement with DEFAULT VALUES, this is currently a not supported statement by SnowConvert AI and that is why in lines 11 and 12 the EWI is generated.
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0077¶
Cycle found between CTE calls. CTEs cannot be ordered.
Severity¶
Low
Description¶
This warning is added when a query that has several CTE (Common Table Expression) reference calls creates a cycle that cannot determine the calling order of the CTEs, and then the CTEs cannot be ordered and the query will remain as the source.
Example Code¶
Input Code (Teradata):¶
Generated Code:¶
Best Practices¶
- No additional user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0080¶
Default value is not allowed on binary columns
Severity ¶
Low
Description ¶
This EWI is added when the source code has a default value for BINARY data type, which is not supported in Snowflake SQL
Example Code ¶
Input Code (SqlServer):
Output Code:
Best Practices ¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0084¶
XMLTABLE is not supported.
Severity¶
High
Description¶
XMLTABLE function is not currently supported.
Example Code¶
Input Code (DB2):¶
Generated Code:¶
Best Practices¶
- Check this blog for XML transformations in Snowflake.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0086¶
Replaced invalid characters for new identifier
Note
This EWI is deprecated, please refer to SSC-FDM-0030 documentation.
Severity¶
Low
Description¶
The given identifier has invalid characters for the output language. Those characters were replaced with their UTF-8 codes.
Example Code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- No end-user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0092¶
Materialized View was converted to regular View.
Danger
Deprecated
Severity¶
Low
Description¶
Currently, all Materialized Views are being converted to regular Views. This process eliminates additional clauses that the Materialized Views may have had. For more information, see Limitations on creating materialized views.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- No additional user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0094¶
Label declaration not supported
Severity¶
Low
Description¶
Currently there is no equivalent for labels declaration in Snow Scripting, so an EWI is added, and the label is commented out
Example Code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- No end-user action is required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0095¶
Create Type not supported in Snowflake
Note
Deprecation: This issue code is deprecated. Snowflake supports native user-defined types, and SnowConvert emits CREATE TYPE for many supported patterns. This entry’s Input Code and Generated Code examples are preserved as historical reference. For current conversion behavior, see the translation reference for your source: Oracle, IBM DB2, Teradata, SQL Server / Azure Synapse, PostgreSQL / Greenplum / Netezza, Sybase IQ.
Severity¶
High
Description¶
User-defined types (UDTs) created with the CREATE TYPE statement are not currently supported in Snowflake. When SnowConvert AI encounters a CREATE TYPE statement, it adds this warning to indicate that manual intervention is required.
Snowflake has a UDT Private Preview feature available. For more information about accessing this feature, please contact udt-prpr@snowflake.com.
Example Code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Consider using Snowflake’s OBJECT or VARIANT data types as alternatives to user-defined types for storing complex structured data.
- For more information about the UDT Private Preview feature, contact udt-prpr@snowflake.com.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0101¶
Commented out transaction label name because is not applicable in Snowflake
Severity¶
Low
Description¶
Snowflake does not operate transaction label names because there should not be nested transactions to identify in different COMMIT or ROLLBACK statements.
Example code¶
Input Code (SQL Server):¶
Generated Code:¶
Best Practices¶
- No end-user action is required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0102¶
Removed statement option from code, already handled in conversion to Snowflake
Note
This EWI is deprecated.
Severity¶
Low
Description¶
Snowflake statements could remove some options when they are handled by the conversion rule. So it will be removed from the output code but the functionality is equivalent.
Example code¶
Input Code (PostgreSQL):¶
Generated Code:¶
Best Practices¶
- No end-user action is required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0107¶
Interval Literal Not Supported In Current Scenario
Severity¶
High
Description¶
Snowflake Intervals can only be used in arithmetic operations. Intervals used in any other scenario are not supported.
Example Code ¶
Input Code:
Output Code:
Best Practices ¶
- No end-user action is required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0108¶
The following subquery matches at least one of the patterns considered invalid and may produce compilation errors
Severity¶
High
Description¶
In Snowflake, there are multiple patterns and elements in a subquery that are not supported and make it not executable. According to the Snowflake documentation on subqueries the following subquery types are supported:
- Uncorrelated scalar subqueries in any place that a value expression can be used.
- Correlated scalar subqueries in WHERE clauses.
- EXISTS, ANY / ALL, and IN subqueries in WHERE clauses. These subqueries can be correlated or uncorrelated.
Please note that the list above is not exhaustive, meaning that subqueries that match none of the specified types may still be considered valid.
To help avoid errors, SnowConvert AI knows a set of subquery patterns that normally invalidate subqueries, this EWI is added to warn the user that the subquery matches at least one of these patterns and therefore may produce errors when compiled in Snowflake.
Example Code¶
Input Code: ¶
Generated Code:¶
Best Practices¶
- Check the subquery in Snowflake, if it compiles without problems then this EWI can be safely ignored.
- Please check the complex patterns section for subqueries inside the assessment report, it contains a list of the patterns that normally invalidate subqueries and their occurrences, it can be used to review the migrated subqueries and why are they considered invalid.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0109¶
Alter Table syntax is not applicable in Snowflake.
Severity¶
Medium
Description¶
The Alter Table syntax used is not applicable in Snowflake, then this message is being added.
Example Code:¶
Input Code:¶
Generated Code:¶
Best Practices¶
- No additional user actions are required.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0110¶
Transformation Not Performed Due To Missing Dependencies
Severity¶
Low
Description¶
When there are missing dependencies, the EWI is added to indicate that a transformation cannot be executed. SnowConvert AI utilizes abstract syntax trees to create a semantic model of the input code, which is then used to generate new code that replicates the functionality of the original source. However, in this particular scenario, the transformation could not be completed because the semantic model lacks certain dependencies.
Example code¶
Input Code :¶
Generated Code:¶
Best Practices¶
- Add the missing dependencies to the input code.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0111¶
Only one level of nesting is allowed for nested procedures in Snowflake.
Severity¶
Critical
Description¶
Snowflake supports only a single level of nesting for procedures. Defining a nested procedure inside another nested procedure is not allowed. If this pattern is detected, this error will be generated.
Example code¶
Input Code :¶
Generated Code:¶
Best Practices¶
- Refactor your code to avoid more than one level of nested procedures. Move deeply nested procedures to the top level or restructure your logic to comply with Snowflake’s single-level nesting limitation.
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0112¶
Nested procedure overloading is not supported.
Severity¶
Critical
Description¶
Snowflake does not support overloading of nested procedures. In other words, you cannot define multiple nested procedures with the same name but different parameter lists within the same parent procedure. If the source code contains overloaded nested procedures, this error will be generated to indicate that such patterns are not supported in Snowflake.
Example code¶
Input Code :¶
Generated Code:¶
Best Practices¶
-
Attempting to overload nested procedures in Snowflake will result in compilation errors or unexpected behavior. To ensure compatibility, you should refactor your code to avoid overloading nested procedures. Consider renaming procedures so that each nested procedure has a unique name within its scope, or restructure your logic to eliminate the need for overloading. Additionally, review and update all procedure calls to use the new unique names.
-
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0113¶
The usage of Snowflake scripting UDF is not supported in this scenario.
Severity¶
Medium
Description¶
The usage of Snowflake Scritping UDFs in specific scenarios is not supported. The following cases are not supported:
- Snowflake Scripting UDFs can’t be used when creating a materialized view.
- Snowflake Scripting UDFs can’t be used to specify a default column value.
Example code¶
Input Code :¶
Generated Code:¶
Best Practices¶
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0114¶
MIXED CONTINUE AND EXIT EXCEPTION HANDLERS IN THE SAME BLOCK ARE NOT SUPPORTED BY SNOWFLAKE SCRIPTING.
Severity¶
Medium
Note
Some parts in the output code are omitted for clarity reasons.
Description¶
In database systems like DB2, Teradata, and others, it is possible to declare both CONTINUE and EXIT exception handlers in the same procedural block. However, Snowflake Scripting does not support mixing CONTINUE and EXIT handlers within the same EXCEPTION block.
When SnowConvert AI encounters a procedure with both types of handlers declared in the same block, it generates separate EXCEPTION blocks for each handler type and adds this EWI to indicate that manual review and testing are required to ensure the converted code maintains the intended behavior.
Key Behavioral Differences:
- CONTINUE HANDLER: Allows execution to continue after handling the exception
- EXIT HANDLER: Terminates the current block after handling the exception
Since Snowflake cannot mix these behaviors in a single EXCEPTION block, the conversion may result in different execution flow compared to the source system.
Example Code¶
Input Code:¶
DB2
Generated Code:¶
Snowflake
Best Practices¶
When dealing with mixed CONTINUE and EXIT handlers:
-
Review Exception Handling Logic: Carefully review the converted code to understand how exceptions are handled in each block.
-
Test Thoroughly: Test all error scenarios to ensure the behavior matches the source system’s expectations.
-
Consider Refactoring: If possible, refactor the code to use only one type of handler (either all CONTINUE or all EXIT) within a block.
-
Use Nested Blocks: Consider restructuring the logic using nested BEGIN…END blocks, where each block has its own exception handling strategy.
-
Document Behavior Changes: Document any differences in exception handling behavior for future maintenance.
Recommended Pattern¶
Instead of mixing handlers, consider this approach:
Related Documentation¶
-
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0115¶
Iceberg table contains unsupported datatypes.
Severity¶
Medium
Description¶
This EWI is emitted for tables that contain datatypes currently not supported by Snowflake on Iceberg tables. Currently, Snowflake offers support for Iceberg tables in V2 format.
Example code¶
Input Code :¶
Generated Code:¶
Best Practices¶
- Consider modifying the columns and logic to make use of datatypes supported in Iceberg tables
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0116¶
Unsupported construct in Snowflake
Note
This issue code is used for multiple scenarios. See the applicable scenario below.
Scenario 1: CHECK Constraints with Unsupported Expressions¶
Note
Some parts in the output code are omitted for clarity reasons.
Severity¶
Low
Description¶
This EWI is emitted when a CHECK constraint expression contains functions or constructs that Snowflake does not support in CHECK constraints. Snowflake CHECK constraints only support deterministic, scalar expressions without user-defined functions or non-deterministic built-in functions.
The unsupported expression types include:
- User-defined functions (UDFs): Any function that is not a Snowflake built-in function, including schema-qualified function calls or unresolved function references
- Non-deterministic functions: Built-in functions that return different values on each call or depend on session/system context, such as
NEWID(),RAND(),UUID_STRING(),GETDATE(),CURRENT_TIMESTAMP(),CURRENT_USER(),CURRENT_ROLE()
When this EWI is emitted, the CHECK constraint is flagged with the !!!RESOLVE EWI!!! marker and the specific reason (e.g., “user-defined function”, “non-deterministic function”) is included in the annotation.
Example Code¶
Example 1: CHECK Constraint with User-Defined Function¶
Input Code (SQL Server):¶
Generated Code:¶
Example 2: CHECK Constraint with Non-Deterministic Function¶
Input Code (SQL Server):¶
Generated Code:¶
Example 3: CHECK Constraint with Unresolved Function (Oracle)¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Replace UDFs with inline expressions: If the user-defined function performs validation logic, consider rewriting it as an inline SQL expression using Snowflake built-in functions
- Remove dynamic constraints: CHECK constraints with non-deterministic functions typically try to enforce rules that change over time. Consider alternative approaches such as:
- Application-level validation
- Triggers or streams to validate data changes
- Regular scheduled tasks to audit and flag violations
- Simplify validation logic: Ensure CHECK constraints only use deterministic, scalar expressions that can be evaluated at insert/update time
- If you need more support, you can email us at snowconvert-support@snowflake.com
Scenario 2: Interval Values Inside Semi-Structured Type Columns¶
Severity¶
Medium
Description¶
This EWI is emitted when the --UseIntervalDatatype preview flag is enabled and an INTERVAL data type appears inside a semi-structured type column such as ARRAY, MAP, or STRUCT. Snowflake does not support storing INTERVAL values inside VARIANT-based columns. The outer type is still converted (for example, STRUCT becomes VARIANT), but the EWI warns that the INTERVAL values within cannot be preserved.
For more details on how interval types are handled across languages, see the Interval Data Types translation reference.
Example Code¶
Input Code (BigQuery):¶
Generated Code (BigQuery):¶
Input Code (Hive):¶
Generated Code (Hive):¶
Best Practices¶
- Consider extracting interval values from semi-structured columns into dedicated INTERVAL-typed columns
- If interval values must be stored in VARIANT columns, store them as strings and convert back to intervals when needed using CAST expressions
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0117¶
Snowflake does not support interval data type in UDFs or Snowflake Scripting.
Severity¶
Medium
Description¶
This EWI is emitted when the --UseIntervalDatatype preview flag is enabled and an INTERVAL data type is used in a context not yet supported by Snowflake Scripting: UDF or procedure parameters, return types, or variable declarations. The INTERVAL type is preserved in the output for reference, but the EWI warns that it will not work at runtime in these contexts.
For more details on how interval types are handled across languages, see the Interval Data Types translation reference.
Example Code¶
Input Code (BigQuery):¶
Generated Code (BigQuery):¶
Input Code (Teradata):¶
Generated Code (Teradata):¶
Best Practices¶
- Consider using VARCHAR parameters for interval values and converting them inside the procedure body using CAST expressions
- If the interval parameter is used only for datetime arithmetic within the procedure, consider passing the numeric components separately
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0118¶
Snowflake does not support interval columns in Dynamic Tables.
Severity¶
Medium
Description¶
This EWI is emitted when the --UseIntervalDatatype preview flag is enabled and a materialized view (converted to a Snowflake Dynamic Table) references columns with INTERVAL data types. Snowflake Dynamic Tables do not support INTERVAL-typed columns. The Dynamic Table is still generated, but the EWI warns that it may fail at runtime.
For more details on how interval types are handled across languages, see the Interval Data Types translation reference.
Example Code¶
Input Code (BigQuery):¶
Generated Code (BigQuery):¶
Best Practices¶
- Consider excluding INTERVAL columns from the Dynamic Table query, or casting them to VARCHAR before selecting
- If the interval values are needed in downstream queries, consider creating a regular view instead of a Dynamic Table for the INTERVAL columns
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0119¶
Interval type column was converted to VARCHAR.
Severity¶
Low
Description¶
This EWI is emitted in Dynamic Table contexts when the --UseIntervalDatatype preview flag is not enabled and a source column had an INTERVAL data type that was converted to VARCHAR. This alerts users that the column in the Dynamic Table query originally referenced an interval-typed column that lost its type during conversion.
Example Code¶
Input Code (BigQuery):¶
Generated Code (BigQuery):¶
Best Practices¶
- Consider enabling the
--UseIntervalDatatypepreview flag to preserve native INTERVAL types where possible - Review the VARCHAR columns in the output to ensure the string representation of interval values is compatible with your application logic
- If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0120¶
Unsupported sequence options were removed during conversion.
Severity¶
Low
Description¶
This EWI is generated when SnowConvert AI encounters a CREATE SEQUENCE statement with options that are not supported in Snowflake. The unsupported options (such as MINVALUE, MAXVALUE, or CYCLE) are removed during conversion because Snowflake sequences do not support them. The EWI message lists the specific options that were removed.
When a START WITH clause is not explicitly present, SnowConvert AI infers the start value from MINVALUE (for positive increments) or MAXVALUE (for negative increments) before removing those options.
Example Code¶
Input Code (DB2):¶
Generated Code (DB2):¶
Best Practices¶
- If your application relies on
CYCLEbehavior, implement a wrapper UDF that resets the sequence value when it exceeds a threshold. - If
MINVALUEorMAXVALUEbounds are critical, add application-level validation or a Snowflake task to monitor sequence values. - Review the inferred
START WITHvalue to ensure it matches your expected sequence starting point. - If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0121¶
DELETE from error table with WHERE clause has no direct Snowflake equivalent.
Severity¶
Low
Description¶
This EWI is emitted when a DELETE statement targets an error-logging table and includes a WHERE clause. Snowflake error tables are read-only virtual views accessible via ERROR_TABLE(<base_table>) — they cannot be deleted from selectively. The only supported operation is a full truncation via TRUNCATE ERROR_TABLE(<base_table>).
When the DELETE has no WHERE clause, SnowConvert converts it to TRUNCATE ERROR_TABLE(<base_table>) automatically. When a WHERE clause is present, that automatic conversion is not possible, so the statement is kept as-is and annotated with this EWI.
Example Code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- If the goal is to clear all captured errors, replace the
DELETEwithTRUNCATE ERROR_TABLE(<base_table>). - If the goal is to retain only a subset of error rows, consider reading errors with
SELECT * FROM ERROR_TABLE(<base_table>), filtering in application logic, and storing the relevant rows in a custom audit table. - If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-0122¶
Error logging column has no equivalent in Snowflake
Severity¶
Low
Description¶
This EWI is emitted when a SELECT from an error-logging table references a system column that has no direct equivalent in Snowflake’s ERROR_TABLE() output. SnowConvert maps well-known error system columns to their Snowflake counterparts where possible:
| Oracle column | Snowflake equivalent |
|---|---|
ORA_ERR_NUMBER$ | error_code |
ORA_ERR_MESG$ | ERROR_METADATA:error_message |
Columns that cannot be mapped — notably ORA_ERR_ROWID$, ORA_ERR_OPTYP$, and ORA_ERR_TAG$ — are preserved as quoted identifiers and annotated with this EWI. Payload columns (copied from the base table) are rewritten using IFF(IS_ARRAY(ERROR_DATA:<COL>), GET(ERROR_DATA:<COL>, 0), ERROR_DATA:<COL>).
Example Code¶
Input Code (Oracle):¶
Generated Code:¶
Best Practices¶
- Review each flagged column and determine whether the data it contained in Oracle is relevant in the migrated environment.
- For
ORA_ERR_OPTYP$(operation type: I/U/D), consider queryingERROR_METADATAfor contextual information, or track the operation type in application logic before the DML call. - For
ORA_ERR_TAG$(user-defined tag), the value was set in theLOG ERRORS INTO ... (<tag>)clause at DML time; there is no direct equivalent in Snowflake’s error table — store the tag value in a separate audit table if needed. - For
ORA_ERR_ROWID$(original row ROWID), Snowflake does not expose physical row addresses; remove this column reference or replace it with a logical key. - If you need more support, you can email us at snowconvert-support@snowflake.com