diff --git a/yb-voyager/src/query/queryissue/issues_ddl.go b/yb-voyager/src/query/queryissue/issues_ddl.go index 24e0aa511..e7dccd267 100644 --- a/yb-voyager/src/query/queryissue/issues_ddl.go +++ b/yb-voyager/src/query/queryissue/issues_ddl.go @@ -26,12 +26,13 @@ import ( ) var generatedColumnsIssue = issue.Issue{ - Type: STORED_GENERATED_COLUMNS, - Name: "Stored generated columns are not supported.", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/10695", - Suggestion: "Using Triggers to update the generated columns is one way to work around this issue, refer docs link for more details.", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#generated-always-as-stored-type-column-is-not-supported", + Type: STORED_GENERATED_COLUMNS, + Name: "Stored generated columns are not supported.", + Impact: constants.IMPACT_LEVEL_1, + Description: "Stored generated columns are not supported in YugabyteDB.\nGenerated columns can be either VIRTUAL or STORED. YugabyteDB supports VIRTUAL generated columns but does not support STORED generated columns.", + GH: "https://github.com/yugabyte/yugabyte-db/issues/10695", + Suggestion: "Use Triggers to update the generated columns is one way to work around this issue, refer docs link for more details.", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#generated-always-as-stored-type-column-is-not-supported", } func NewGeneratedColumnsIssue(objectType string, objectName string, sqlStatement string, generatedColumns []string) QueryIssue { @@ -41,12 +42,13 @@ func NewGeneratedColumnsIssue(objectType string, objectName string, sqlStatement } var unloggedTableIssue = issue.Issue{ - Type: UNLOGGED_TABLE, - Name: "UNLOGGED tables are not supported yet.", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/1129/", - Suggestion: "Remove UNLOGGED keyword to make it work", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unlogged-table-is-not-supported", + Type: UNLOGGED_TABLE, + Name: "UNLOGGED tables are not supported yet.", + Impact: constants.IMPACT_LEVEL_1, + Description: "UNLOGGED tables are not supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/1129/", + Suggestion: "Remove UNLOGGED keyword to make it work", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unlogged-table-is-not-supported", MinimumVersionsFixedIn: map[string]*ybversion.YBVersion{ ybversion.SERIES_2024_2: ybversion.V2024_2_0_0, }, @@ -58,11 +60,12 @@ func NewUnloggedTableIssue(objectType string, objectName string, sqlStatement st } var unsupportedIndexMethodIssue = issue.Issue{ - Type: UNSUPPORTED_INDEX_METHOD, - Name: "Schema contains %s index which is not supported.", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/YugaByte/yugabyte-db/issues/1337", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#gist-brin-and-spgist-index-types-are-not-supported", + Type: UNSUPPORTED_INDEX_METHOD, + Name: "Schema contains %s index which is not supported.", + Impact: constants.IMPACT_LEVEL_1, + Description: "The schema contains an index with an access method(gist, spgist, brin) which is not supported in YugabyteDB.", + GH: "https://github.com/YugaByte/yugabyte-db/issues/1337", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#gist-brin-and-spgist-index-types-are-not-supported", } func NewUnsupportedIndexMethodIssue(objectType string, objectName string, sqlStatement string, indexAccessMethod string) QueryIssue { @@ -72,12 +75,13 @@ func NewUnsupportedIndexMethodIssue(objectType string, objectName string, sqlSta } var storageParameterIssue = issue.Issue{ - Type: STORAGE_PARAMETER, - Name: "Storage parameters are not supported yet.", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/23467", - Suggestion: "Remove the storage parameters from the DDL", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#storage-parameters-on-indexes-or-constraints-in-the-source-postgresql", + Type: STORAGE_PARAMETER, + Name: "Storage parameters are not supported yet.", + Impact: constants.IMPACT_LEVEL_1, + Description: "Storage parameters in tables, indexes, and constraints are not yet supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/23467", + Suggestion: "Remove the storage parameters from the DDL", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#storage-parameters-on-indexes-or-constraints-in-the-source-postgresql", } func NewStorageParameterIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -86,12 +90,13 @@ func NewStorageParameterIssue(objectType string, objectName string, sqlStatement } var setColumnAttributeIssue = issue.Issue{ - Type: ALTER_TABLE_SET_COLUMN_ATTRIBUTE, - Name: "ALTER TABLE .. ALTER COLUMN .. SET ( attribute = value ) not supported yet", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/1124", - Suggestion: "Remove it from the exported schema", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-alter-table-ddl-variants-in-source-schema", + Type: ALTER_TABLE_SET_COLUMN_ATTRIBUTE, + Name: "ALTER TABLE .. ALTER COLUMN .. SET ( attribute = value ) not supported yet", + Impact: constants.IMPACT_LEVEL_1, + Description: "ALTER TABLE .. ALTER COLUMN .. SET ( attribute = value ) is not yet supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/1124", + Suggestion: "Remove it from the exported schema", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-alter-table-ddl-variants-in-source-schema", } func NewSetColumnAttributeIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -100,12 +105,13 @@ func NewSetColumnAttributeIssue(objectType string, objectName string, sqlStateme } var alterTableClusterOnIssue = issue.Issue{ - Type: ALTER_TABLE_CLUSTER_ON, - Name: "ALTER TABLE CLUSTER not supported yet.", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/YugaByte/yugabyte-db/issues/1124", - Suggestion: "Remove it from the exported schema.", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-alter-table-ddl-variants-in-source-schema", + Type: ALTER_TABLE_CLUSTER_ON, + Name: "ALTER TABLE CLUSTER not supported yet.", + Impact: constants.IMPACT_LEVEL_1, + Description: "ALTER TABLE CLUSTER is not yet supported in YugabyteDB", + GH: "https://github.com/YugaByte/yugabyte-db/issues/1124", + Suggestion: "Remove it from the exported schema.", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-alter-table-ddl-variants-in-source-schema", } func NewClusterONIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -114,12 +120,13 @@ func NewClusterONIssue(objectType string, objectName string, sqlStatement string } var alterTableDisableRuleIssue = issue.Issue{ - Type: ALTER_TABLE_DISABLE_RULE, - Name: "ALTER TABLE name DISABLE RULE not supported yet", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/1124", - Suggestion: "Remove this and the rule '%s' from the exported schema to be not enabled on the table.", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-alter-table-ddl-variants-in-source-schema", + Type: ALTER_TABLE_DISABLE_RULE, + Name: "ALTER TABLE name DISABLE RULE not supported yet", + Impact: constants.IMPACT_LEVEL_1, + Description: "ALTER TABLE name DISABLE RULE is not yet supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/1124", + Suggestion: "Remove this and the rule '%s' from the exported schema to be not enabled on the table.", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-alter-table-ddl-variants-in-source-schema", } func NewAlterTableDisableRuleIssue(objectType string, objectName string, sqlStatement string, ruleName string) QueryIssue { @@ -130,12 +137,13 @@ func NewAlterTableDisableRuleIssue(objectType string, objectName string, sqlStat } var exclusionConstraintIssue = issue.Issue{ - Type: EXCLUSION_CONSTRAINTS, - Name: "Exclusion constraint is not supported yet", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/3944", - Suggestion: "Refer docs link for details on possible workaround", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#exclusion-constraints-is-not-supported", + Type: EXCLUSION_CONSTRAINTS, + Name: "Exclusion constraint is not supported yet", + Impact: constants.IMPACT_LEVEL_1, + Description: "Exclusion constraints are not yet supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/3944", + Suggestion: "Refer docs link for details on possible workaround", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#exclusion-constraints-is-not-supported", } func NewExclusionConstraintIssue(objectType string, objectName string, sqlStatement string, constraintName string) QueryIssue { @@ -146,12 +154,13 @@ func NewExclusionConstraintIssue(objectType string, objectName string, sqlStatem } var deferrableConstraintIssue = issue.Issue{ - Type: DEFERRABLE_CONSTRAINTS, - Name: "DEFERRABLE constraints not supported yet", - Impact: constants.IMPACT_LEVEL_3, - GH: "https://github.com/yugabyte/yugabyte-db/issues/1709", - Suggestion: "Remove these constraints from the exported schema and make the neccessary changes to the application to work on target seamlessly", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#deferrable-constraint-on-constraints-other-than-foreign-keys-is-not-supported", + Type: DEFERRABLE_CONSTRAINTS, + Name: "DEFERRABLE constraints not supported yet", + Impact: constants.IMPACT_LEVEL_3, + Description: "Deferrable constraints are not yet supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/1709", + Suggestion: "Remove these constraints from the exported schema and make the neccessary changes to the application to work on target seamlessly", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#deferrable-constraint-on-constraints-other-than-foreign-keys-is-not-supported", } func NewDeferrableConstraintIssue(objectType string, objectName string, sqlStatement string, constraintName string) QueryIssue { @@ -162,11 +171,12 @@ func NewDeferrableConstraintIssue(objectType string, objectName string, sqlState } var multiColumnGinIndexIssue = issue.Issue{ - Type: MULTI_COLUMN_GIN_INDEX, - Name: "Schema contains gin index on multi column which is not supported.", - Impact: constants.IMPACT_LEVEL_1, - GH: "https://github.com/yugabyte/yugabyte-db/issues/10652", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#gin-indexes-on-multiple-columns-are-not-supported", + Type: MULTI_COLUMN_GIN_INDEX, + Name: "Schema contains gin index on multi column which is not supported.", + Impact: constants.IMPACT_LEVEL_1, + Description: "GIN indexes on multiple columns are not supported in YugabyteDB", + GH: "https://github.com/yugabyte/yugabyte-db/issues/10652", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#gin-indexes-on-multiple-columns-are-not-supported", } func NewMultiColumnGinIndexIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -177,8 +187,9 @@ var orderedGinIndexIssue = issue.Issue{ Type: ORDERED_GIN_INDEX, Name: "Schema contains gin index on column with ASC/DESC/HASH Clause which is not supported.", Impact: constants.IMPACT_LEVEL_1, + Description: "GIN indexes on columns with ASC/DESC/HASH clause are not yet supported in YugabyteDB", GH: "https://github.com/yugabyte/yugabyte-db/issues/10653", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#issue-in-some-unsupported-cases-of-gin-indexes", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#issue-in-some-unsupported-cases-of-gin-indexes", // TODO: link is not working } func NewOrderedGinIndexIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -189,6 +200,7 @@ var policyRoleIssue = issue.Issue{ Type: POLICY_WITH_ROLES, Name: "Policy require roles to be created.", Impact: constants.IMPACT_LEVEL_1, + Description: "Policies require roles to be created in the target database but the roles are not migrated during schema migration.", Suggestion: "Users/Grants are not migrated during the schema migration. Create the Users manually to make the policies work", GH: "https://github.com/yugabyte/yb-voyager/issues/1655", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#policies-on-users-in-source-require-manual-user-creation", @@ -204,6 +216,7 @@ var constraintTriggerIssue = issue.Issue{ Type: CONSTRAINT_TRIGGER, Name: "CONSTRAINT TRIGGER not supported yet.", Impact: constants.IMPACT_LEVEL_1, + Description: "CONSTRAINT TRIGGER is not yet supported in YugabyteDB", GH: "https://github.com/YugaByte/yugabyte-db/issues/1709", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#constraint-trigger-is-not-supported", } @@ -217,6 +230,7 @@ var referencingClauseInTriggerIssue = issue.Issue{ Type: REFERENCING_CLAUSE_IN_TRIGGER, Name: "REFERENCING clause (transition tables) not supported yet.", Impact: constants.IMPACT_LEVEL_1, + Description: "REFERENCING clause (transition tables) is not yet supported in YugabyteDB", GH: "https://github.com/YugaByte/yugabyte-db/issues/1668", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#referencing-clause-for-triggers", } @@ -229,6 +243,7 @@ var beforeRowTriggerOnPartitionTableIssue = issue.Issue{ Type: BEFORE_ROW_TRIGGER_ON_PARTITIONED_TABLE, Name: "Partitioned tables cannot have BEFORE / FOR EACH ROW triggers.", Impact: constants.IMPACT_LEVEL_1, + Description: "BEFORE ROW triggers on partitioned tables are not yet supported in YugabyteDB", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#before-row-triggers-on-partitioned-tables", GH: "https://github.com/yugabyte/yugabyte-db/issues/24830", Suggestion: "Create the triggers on individual partitions.", @@ -242,6 +257,7 @@ var alterTableAddPKOnPartitionIssue = issue.Issue{ Type: ALTER_TABLE_ADD_PK_ON_PARTITIONED_TABLE, Name: "Adding primary key to a partitioned table is not supported yet.", Impact: constants.IMPACT_LEVEL_1, + Description: "Adding primary key using ALTER TABLE to a partitioned table is not yet supported in YugabyteDB", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#adding-primary-key-to-a-partitioned-table-results-in-an-error", GH: "https://github.com/yugabyte/yugabyte-db/issues/10074", MinimumVersionsFixedIn: map[string]*ybversion.YBVersion{ @@ -260,6 +276,7 @@ var expressionPartitionIssue = issue.Issue{ Type: EXPRESSION_PARTITION_WITH_PK_UK, Name: "Issue with Partition using Expression on a table which cannot contain Primary Key / Unique Key on any column", Impact: constants.IMPACT_LEVEL_1, + Description: "Tables partitioned using expressions cannot contain primary or unique keys in YugabyteDB", Suggestion: "Remove the Constriant from the table definition", GH: "https://github.com/yugabyte/yb-voyager/issues/698", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/mysql/#tables-partitioned-with-expressions-cannot-contain-primary-unique-keys", @@ -273,6 +290,7 @@ var multiColumnListPartition = issue.Issue{ Type: MULTI_COLUMN_LIST_PARTITION, Name: `cannot use "list" partition strategy with more than one column`, Impact: constants.IMPACT_LEVEL_1, + Description: "Multi-column partition by list is not supported in YugabyteDB", Suggestion: "Make it a single column partition by list or choose other supported Partitioning methods", GH: "https://github.com/yugabyte/yb-voyager/issues/699", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/mysql/#multi-column-partition-by-list-is-not-supported", @@ -286,6 +304,7 @@ var insufficientColumnsInPKForPartition = issue.Issue{ Type: INSUFFICIENT_COLUMNS_IN_PK_FOR_PARTITION, Name: "insufficient columns in the PRIMARY KEY constraint definition in CREATE TABLE", Impact: constants.IMPACT_LEVEL_1, + Description: "Partition key column not part of Primary Key columns", Suggestion: "Add all Partition columns to Primary Key", GH: "https://github.com/yugabyte/yb-voyager/issues/578", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/oracle/#partition-key-column-not-part-of-primary-key-columns", @@ -301,6 +320,7 @@ var xmlDatatypeIssue = issue.Issue{ Type: XML_DATATYPE, Name: "Unsupported datatype - xml", Impact: constants.IMPACT_LEVEL_3, + Description: "XML datatype is not yet supported in YugabyteDB", Suggestion: "Data ingestion is not supported for this type in YugabyteDB so handle this type in different way. Refer link for more details.", GH: "https://github.com/yugabyte/yugabyte-db/issues/1043", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#data-ingestion-on-xml-data-type-is-not-supported", @@ -316,6 +336,7 @@ var xidDatatypeIssue = issue.Issue{ Type: XID_DATATYPE, Name: "Unsupported datatype - xid", Impact: constants.IMPACT_LEVEL_3, + Description: "XID datatype is not yet supported in YugabyteDB", Suggestion: "Functions for this type e.g. txid_current are not supported in YugabyteDB yet", GH: "https://github.com/yugabyte/yugabyte-db/issues/15638", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#xid-functions-is-not-supported", @@ -331,6 +352,7 @@ var postgisDatatypeIssue = issue.Issue{ Type: POSTGIS_DATATYPES, Name: "Unsupported datatype", Impact: constants.IMPACT_LEVEL_1, + Description: "PostGIS datatypes are not yet supported in YugabyteDB", GH: "https://github.com/yugabyte/yugabyte-db/issues/11323", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-datatypes-by-yugabytedb", } @@ -345,6 +367,7 @@ var unsupportedDatatypesIssue = issue.Issue{ Type: UNSUPPORTED_DATATYPES, Name: "Unsupported datatype", Impact: constants.IMPACT_LEVEL_1, + Description: "%s datatype is not yet supported in YugabyteDB", GH: "https://github.com/yugabyte/yb-voyager/issues/1731", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-datatypes-by-yugabytedb", } @@ -352,6 +375,7 @@ var unsupportedDatatypesIssue = issue.Issue{ func NewUnsupportedDatatypesIssue(objectType string, objectName string, sqlStatement string, typeName string, colName string) QueryIssue { issue := unsupportedDatatypesIssue issue.Name = fmt.Sprintf("%s - %s on column - %s", issue.Name, typeName, colName) + issue.Description = fmt.Sprintf(issue.Description, typeName) return newQueryIssue(issue, objectType, objectName, sqlStatement, map[string]interface{}{}) } @@ -359,6 +383,7 @@ var unsupportedDatatypesForLiveMigrationIssue = issue.Issue{ Type: UNSUPPORTED_DATATYPES_LIVE_MIGRATION, Name: "Unsupported datatype for Live migration", Impact: constants.IMPACT_LEVEL_1, + Description: "%s datatype is not yet supported by voyager for Live Migration", GH: "https://github.com/yugabyte/yb-voyager/issues/1731", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-datatypes-by-voyager-during-live-migration", } @@ -366,6 +391,7 @@ var unsupportedDatatypesForLiveMigrationIssue = issue.Issue{ func NewUnsupportedDatatypesForLMIssue(objectType string, objectName string, sqlStatement string, typeName string, colName string) QueryIssue { issue := unsupportedDatatypesForLiveMigrationIssue issue.Name = fmt.Sprintf("%s - %s on column - %s", issue.Name, typeName, colName) + issue.Description = fmt.Sprintf(issue.Description, typeName) return newQueryIssue(issue, objectType, objectName, sqlStatement, map[string]interface{}{}) } @@ -373,6 +399,7 @@ var unsupportedDatatypesForLiveMigrationWithFFOrFBIssue = issue.Issue{ Type: UNSUPPORTED_DATATYPES_LIVE_MIGRATION_WITH_FF_FB, Name: "Unsupported datatype for Live migration with fall-forward/fallback", Impact: constants.IMPACT_LEVEL_1, + Description: "%s datatype is not yet supported by voyager for Live Migration with fall-forward/fallback", GH: "https://github.com/yugabyte/yb-voyager/issues/1731", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#unsupported-datatypes-by-voyager-during-live-migration", } @@ -380,6 +407,7 @@ var unsupportedDatatypesForLiveMigrationWithFFOrFBIssue = issue.Issue{ func NewUnsupportedDatatypesForLMWithFFOrFBIssue(objectType string, objectName string, sqlStatement string, typeName string, colName string) QueryIssue { issue := unsupportedDatatypesForLiveMigrationWithFFOrFBIssue issue.Name = fmt.Sprintf("%s - %s on column - %s", issue.Name, typeName, colName) + issue.Description = fmt.Sprintf(issue.Description, typeName) return newQueryIssue(issue, objectType, objectName, sqlStatement, map[string]interface{}{}) } @@ -387,6 +415,7 @@ var primaryOrUniqueOnUnsupportedIndexTypesIssue = issue.Issue{ Type: PK_UK_ON_COMPLEX_DATATYPE, Name: "Primary key and Unique constraint on column '%s' not yet supported", Impact: constants.IMPACT_LEVEL_1, + Description: "Primary key and Unique constraints on columns with complex data types are not yet supported in YugabyteDB", GH: "https://github.com/yugabyte/yugabyte-db/issues/25003", Suggestion: "Refer to the docs link for the workaround", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#indexes-on-some-complex-data-types-are-not-supported", //Keeping it similar for now, will see if we need to a separate issue on docs, @@ -405,6 +434,7 @@ var indexOnComplexDatatypesIssue = issue.Issue{ Type: INDEX_ON_COMPLEX_DATATYPE, Name: "INDEX on column '%s' not yet supported", Impact: constants.IMPACT_LEVEL_1, + Description: "Indexes on columns with complex data types are not yet supported in YugabyteDB", GH: "https://github.com/yugabyte/yugabyte-db/issues/25003", Suggestion: "Refer to the docs link for the workaround", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#indexes-on-some-complex-data-types-are-not-supported", @@ -420,6 +450,7 @@ var foreignTableIssue = issue.Issue{ Type: FOREIGN_TABLE, Name: "Foreign tables require manual intervention.", Impact: constants.IMPACT_LEVEL_1, + Description: "Foreign table creation fails as SERVER and USER MAPPING objects are not exported by Voyager", GH: "https://github.com/yugabyte/yb-voyager/issues/1627", Suggestion: "SERVER '%s', and USER MAPPING should be created manually on the target to create and use the foreign table", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#foreign-table-in-the-source-database-requires-server-and-user-mapping", @@ -435,6 +466,7 @@ var inheritanceIssue = issue.Issue{ Type: INHERITANCE, Name: "TABLE INHERITANCE not supported in YugabyteDB", Impact: constants.IMPACT_LEVEL_3, + Description: "Table inheritance is not yet supported in YugabyteDB", GH: "https://github.com/YugaByte/yugabyte-db/issues/1129", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#table-inheritance-is-not-supported", } @@ -447,7 +479,7 @@ var percentTypeSyntax = issue.Issue{ Type: REFERENCED_TYPE_DECLARATION, Name: "Referenced type declaration of variables", Impact: constants.IMPACT_LEVEL_1, - Description: "", + Description: "Referencing the type of a column instead of the actual type name is not supported in YugabyteDB", Suggestion: "Fix the syntax to include the actual type name instead of referencing the type of a column", GH: "https://github.com/yugabyte/yugabyte-db/issues/23619", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#type-syntax-is-not-supported", @@ -461,6 +493,7 @@ var loDatatypeIssue = issue.Issue{ Type: LARGE_OBJECT_DATATYPE, Name: "Unsupported datatype - lo", Impact: constants.IMPACT_LEVEL_1, + Description: "Large objects are not yet supported in YugabyteDB", Suggestion: "Large objects are not yet supported in YugabyteDB, no workaround available currently", GH: "https://github.com/yugabyte/yugabyte-db/issues/25318", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#large-objects-and-its-functions-are-currently-not-supported", // TODO @@ -476,6 +509,7 @@ var multiRangeDatatypeIssue = issue.Issue{ Type: MULTI_RANGE_DATATYPE, Name: "Unsupported datatype", Impact: constants.IMPACT_LEVEL_1, + Description: "Multirange data type is not yet supported in YugabyteDB", Suggestion: "Multirange data type is not yet supported in YugabyteDB, no workaround available currently", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -491,6 +525,7 @@ var securityInvokerViewIssue = issue.Issue{ Type: SECURITY_INVOKER_VIEWS, Name: "Security Invoker Views not supported yet", Impact: constants.IMPACT_LEVEL_1, + Description: "Security Invoker Views are not yet supported in YugabyteDB", Suggestion: "Security Invoker Views are not yet supported in YugabyteDB, no workaround available currently", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -504,6 +539,7 @@ var deterministicOptionCollationIssue = issue.Issue{ Type: DETERMINISTIC_OPTION_WITH_COLLATION, Name: DETERMINISTIC_OPTION_WITH_COLLATION_NAME, Impact: constants.IMPACT_LEVEL_1, + Description: "Deterministic option with collation is not supported in YugabyteDB", Suggestion: "This feature is not supported in YugabyteDB yet", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -517,6 +553,7 @@ var foreignKeyReferencesPartitionedTableIssue = issue.Issue{ Type: FOREIGN_KEY_REFERENCES_PARTITIONED_TABLE, Name: FOREIGN_KEY_REFERENCES_PARTITIONED_TABLE_NAME, Impact: constants.IMPACT_LEVEL_1, + Description: "Foreign key references to partitioned tables are not yet supported in YugabyteDB", Suggestion: "No workaround available ", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -533,6 +570,7 @@ var uniqueNullsNotDistinctIssue = issue.Issue{ Type: UNIQUE_NULLS_NOT_DISTINCT, Name: UNIQUE_NULLS_NOT_DISTINCT_NAME, Impact: constants.IMPACT_LEVEL_1, + Description: "Unique constraint on columns with NULL values is not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", diff --git a/yb-voyager/src/query/queryissue/issues_dml.go b/yb-voyager/src/query/queryissue/issues_dml.go index 8bc2c356c..eca78e7df 100644 --- a/yb-voyager/src/query/queryissue/issues_dml.go +++ b/yb-voyager/src/query/queryissue/issues_dml.go @@ -27,7 +27,7 @@ var advisoryLocksIssue = issue.Issue{ Type: ADVISORY_LOCKS, Name: "Advisory Locks", Impact: constants.IMPACT_LEVEL_2, - Description: "", + Description: "Advisory locks are not yet implemented in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/3642", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#advisory-locks-is-not-yet-implemented", @@ -41,7 +41,7 @@ var systemColumnsIssue = issue.Issue{ Type: SYSTEM_COLUMNS, Name: "System Columns", Impact: constants.IMPACT_LEVEL_2, - Description: "", + Description: "System columns are not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/24843", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#system-columns-is-not-yet-supported", @@ -55,7 +55,7 @@ var xmlFunctionsIssue = issue.Issue{ Type: XML_FUNCTIONS, Name: "XML Functions", Impact: constants.IMPACT_LEVEL_2, - Description: "", + Description: "XML functions are not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/1043", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#xml-functions-is-not-yet-supported", @@ -69,7 +69,7 @@ var regexFunctionsIssue = issue.Issue{ Type: REGEX_FUNCTIONS, Name: "Regex Functions", Impact: constants.IMPACT_LEVEL_2, - Description: "", + Description: "Regex functions are not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -83,10 +83,10 @@ var aggregateFunctionIssue = issue.Issue{ Type: AGGREGATE_FUNCTION, Name: AGGREGATION_FUNCTIONS_NAME, Impact: constants.IMPACT_LEVEL_2, - Description: "any_value, range_agg and range_intersect_agg functions not supported yet in YugabyteDB", + Description: "any_value, range_agg and range_intersect_agg functions are not supported yet in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", } func NewAggregationFunctionIssue(objectType string, objectName string, sqlStatement string, funcNames []string) QueryIssue { @@ -101,7 +101,7 @@ var jsonConstructorFunctionsIssue = issue.Issue{ Type: JSON_CONSTRUCTOR_FUNCTION, Name: JSON_CONSTRUCTOR_FUNCTION_NAME, Impact: constants.IMPACT_LEVEL_2, - Description: "Postgresql 17 features not supported yet in YugabyteDB", + Description: "JSON constructor functions from PostgreSQL 17 are not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -119,10 +119,10 @@ var jsonQueryFunctionIssue = issue.Issue{ Type: JSON_QUERY_FUNCTION, Name: JSON_QUERY_FUNCTIONS_NAME, Impact: constants.IMPACT_LEVEL_2, - Description: "Postgresql 17 features not supported yet in YugabyteDB", + Description: "JSON query functions from PostgreSQL 17 are not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", } func NewJsonQueryFunctionIssue(objectType string, objectName string, sqlStatement string, funcNames []string) QueryIssue { @@ -138,9 +138,8 @@ var loFunctionsIssue = issue.Issue{ Name: LARGE_OBJECT_FUNCTIONS_NAME, Impact: constants.IMPACT_LEVEL_2, Description: "Large Objects functions are not supported in YugabyteDB", - Suggestion: "Large objects functions are not yet supported in YugabyteDB, no workaround available right now", GH: "https://github.com/yugabyte/yugabyte-db/issues/25318", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#large-objects-and-its-functions-are-currently-not-supported", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#large-objects-and-its-functions-are-currently-not-supported", } func NewLOFuntionsIssue(objectType string, objectName string, sqlStatement string, funcNames []string) QueryIssue { @@ -155,10 +154,10 @@ var jsonbSubscriptingIssue = issue.Issue{ Type: JSONB_SUBSCRIPTING, Name: JSONB_SUBSCRIPTING_NAME, Impact: constants.IMPACT_LEVEL_2, - Description: "Jsonb subscripting is not supported in YugabyteDB yet", + Description: "Jsonb subscripting is not yet supported in YugabyteDB", Suggestion: "Use Arrow operators (-> / ->>) to access the jsonb fields.", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#jsonb-subscripting", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#jsonb-subscripting", } func NewJsonbSubscriptingIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -169,10 +168,10 @@ var jsonPredicateIssue = issue.Issue{ Type: JSON_TYPE_PREDICATE, Name: JSON_TYPE_PREDICATE_NAME, Impact: constants.IMPACT_LEVEL_2, - Description: "IS JSON predicate expressions not supported yet in YugabyteDB", + Description: "IS JSON predicate expressions are not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", } func NewJsonPredicateIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -183,7 +182,7 @@ var copyFromWhereIssue = issue.Issue{ Type: COPY_FROM_WHERE, Name: "COPY FROM ... WHERE", Impact: constants.IMPACT_LEVEL_2, - Description: "", + Description: "COPY FROM ... WHERE is not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -197,7 +196,7 @@ var copyOnErrorIssue = issue.Issue{ Type: COPY_ON_ERROR, Name: "COPY ... ON_ERROR", Impact: constants.IMPACT_LEVEL_2, - Description: "", + Description: "COPY ... ON_ERROR is not yet supported in YugabyteDB", Suggestion: "", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", @@ -211,10 +210,10 @@ var fetchWithTiesIssue = issue.Issue{ Type: FETCH_WITH_TIES, Name: "FETCH .. WITH TIES", Impact: constants.IMPACT_LEVEL_2, - Description: "FETCH .. WITH TIES is not supported in YugabyteDB", + Description: "FETCH .. WITH TIES is not yet supported in YugabyteDB", Suggestion: "No workaround available right now", GH: "https://github.com/yugabyte/yugabyte-db/issues/25575", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#postgresql-12-and-later-features", } func NewFetchWithTiesIssue(objectType string, objectName string, sqlStatement string) QueryIssue { @@ -225,10 +224,10 @@ var mergeStatementIssue = issue.Issue{ Type: MERGE_STATEMENT, Name: "Merge Statement", Impact: constants.IMPACT_LEVEL_2, - Description: "This statement is not supported in YugabyteDB yet", + Description: "MERGE statement is not yet supported in YugabyteDB", Suggestion: "Use PL/pgSQL to write the logic to get this functionality", GH: "https://github.com/yugabyte/yugabyte-db/issues/25574", - DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#merge-command", + DocsLink: "https://docs.yugabyte.com/preview/yugabyte-voyager/known-issues/postgresql/#merge-command", } func NewMergeStatementIssue(objectType string, objectName string, sqlStatement string) QueryIssue {