SPItemBegin = Select Clause 10000:{# [ ForEachVectorReferenceX("Physical Order List") { GenerateX SeparatorX(",") [ PushReferenceX("Parent Relationship Ref") [ [ PropertyValueX("Alias Name") "." ] [ IsNullX([PropertyValueX("Alias Name")]) PushReferenceX("Parent Entity Ref") [ [OwnerX"."] PhysicalNameX "." ] PopX ] ] PopX [ PushReferenceX("Parent Attribute Ref") [ IsNotNullX(ExecuteX("Is Owner Entity"),"") PhysicalNameX ] [ IsNotNullX(ExecuteX("Is Owner View"),"") NameX ] PopX ] ] [Property("View Expression")] } ] #}SPItemEnd SPItemBegin = View Column Has Alias 10000: {# [ ForEachVectorReferenceX("Physical Order List") { GenerateX PropertyValueX("Name","") } ] #} SPItemEnd SPItemBegin = Is Owner Entity 10000: {# [ PushOwnerX [ IsObjectTypeX("Entity") "Entity" ] PopX ] #} SPItemEnd SPItemBegin = Is Owner View 10000: {# [ PushOwnerX [ IsObjectTypeX("View") "View" ] PopX ] #} SPItemEnd SPItemBegin = From Clause 10000:{# [ ForEachVectorReferenceX("Child Relations Ref") { GenerateX SeparatorX(",") [PushReferenceX("Parent Entity Ref") [OwnerX"."]PhysicalNameX PopX] [" " PropertyValueX("Alias Name") ] } ] #}SPItemEnd SPItemBegin = Select Statement 10000:{# [ "\r\n\t" "SELECT " [DecodePropertyX("Select Type","2"," DISTINCT ")] IsNotNullX(ExecuteX("Select Clause"),"") "\r\n\t\t" "FROM " IsNotNullX(ExecuteX("From Clause"),"") ["\r\n\t\t" "WHERE " PropertyValueX("View Where")] ["\r\n\t\t" "GROUP BY " PropertyValueX("View Group By")] ["\r\n\t\t" "HAVING " PropertyValueX("View Having")] ["\r\n\t\t" "ORDER BY " PropertyValueX("View Order By")] ] #}SPItemEnd SPItemBegin = Column Check Constraints 10000:{# [ OptionX("ColumnCheckConstraint") ["CONSTRAINT " OptionX("ConstraintName") PhysicalNameX] PushObjectX("Check Constraint Usage") [ [PushReferenceX("Validation Rule Ref") [GenerateX " CHECK (" ExpandErwinMacroX("Server Value") ")"] PopX] ] PopX ] #}SPItemEnd SPItemBegin = CreateTableCheckConstraint 10000: {#[ ForEachChildObjectX("Check Constraint Usage") { SeparatorX(",\r\n\t") ["CONSTRAINT " OptionX("ConstraintName") PhysicalNameX] "\r\n\t\t\t" [PushReferenceX("Validation Rule Ref") "CHECK (" ExpandErwinMacroX("Server Value") ")" PopX] } ] #}SPItemEnd SPItemBegin = Index Drop Option 10000: {# [ CompareStringsX(PropertyValueX("Key Group Type"),"PK","2") OptionX("DropPKIndex") ] [ CompareStringsX(PropertyValueX("Key Group Type"),"AK","2") OptionX("DropAKIndex") ] [ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"IF","2"),"") OptionX("DropFKIndex") PushReference("Relationship Ref") [ GenerateX "IF" ] PopX ] [ CompareStringsX(PropertyValueX("Key Group Type"),"IE","2") OptionX("DropIEIndex") ] #} SPItemEnd SPItemBegin = Index Create Option 10000:{# [ CompareStringsX(PropertyValueX("Key Group Type"),"PK","2") OptionX("CreatePKIndex") ] [ CompareStringsX(PropertyValueX("Key Group Type"),"AK","2") OptionX("CreateAKIndex") ] [ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"IF","2"),"") OptionX("CreateFKIndex") PushReference("Relationship Ref") [ GenerateX "IF" ] PopX ] [ CompareStringsX(PropertyValueX("Key Group Type"),"IE","2") OptionX("CreateIEIndex") ] #}SPItemEnd SPItemBegin = Accumulate Migrating Columns 10000: {# [ ForEachVectorReferenceX("Migrating Columns") { SeparatorX(",") PhysicalNameX } ] #}SPItemEnd SPItemBegin = Accumulate FK Columns 10000: {# [ ForEachVectorReferenceX("FK Columns") { SeparatorX(",") PhysicalNameX } ] #}SPItemEnd SPItemBegin = Accumulate Columns 10000: {# [ [ IsObjectTypeX("Entity") [OptionX("ColumnPhysicalOrder") ForEachVectorReferenceX("Physical Order List") { SeparatorX(",") PhysicalNameX } ] [OptionX("!ColumnPhysicalOrder") ForEachVectorReferenceX("Column Order List") { SeparatorX(",") PhysicalNameX } ] ] [ IsObjectTypeX("Key Group") ForEachVectorReferenceX("Index Member Order List") { SeparatorX(",") PhysicalNameX } ] ] #}SPItemEnd SPItemBegin = PKConstraint 10000: {#[ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"PK","2"),"") OnceX("Constraint") " PRIMARY KEY " "(" IsNotNullX(ExecuteX("Accumulate Columns"),"") ")" ] #}SPItemEnd SPItemBegin = Generate Child Entity 10000: {#[ [ PushReferenceX("Child Entity Ref") [ GenerateX "Generate" ] PopX ] ] #}SPItemEnd SPItemBegin = Generate Parent Entity 10000: {#[ [ PushReferenceX("Parent Entity Ref") [ [IsObjectTypeX("Entity") GenerateX "Generate" ] [IsObjectTypeX("Subtype Symbol") [ /* there can be only one of these*/ ForEachVectorReferenceX("Child Relations Ref") { [ PushReferenceX("Parent Entity Ref") [ GenerateX "Generate" ] PopX ] } ] ] ] PopX ] ] #}SPItemEnd SPItemBegin = Generate Relation 10000: {#[ [ PushReferenceX("Relationship Ref") [ GenerateX IsNotNullX(ExecuteX("Generate Child Entity"),"") PushReferenceX( "Parent Entity Ref" ) [ @if( FE::FilterDanglingRelationships ){} @else { "Generate" } ] PopX ] PopX ] [IsAlterScriptX /*Generate if the object referenced by the deleted object has also been deleted.*/ /*If the object referenced by the deleted object is still active, then check the Generate property on the referenced object*/ IsDeletedX PushOldReferenceX("Relationship Ref") [ /* The relationship referenced by the KeyGroup has been deleted*/ /*FK indexes are maintained as long as the relationship is active*/ [IsDeletedX PushOldReferenceX("Child Entity Ref") [ [/* The Child Entity referenced by the deleted relationship has also been deleted*/ IsDeletedX "Generate" ] [ /* The Child Entity referenced by the deleted relationship is still active*/ IsNullX([IsDeletedX "Not Deleted"]) GenerateX "Generate" ] ] PopX ] ] PopX ] ] #}SPItemEnd SPItemBegin = FKConstraint 10000: {#[ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"IF","2"),"") IsNotNullX(ExecuteX("Generate Relation"),"") OnceX("Constraint") [OptionX("ConstraintName") "CONSTRAINT " [PushReferenceX("Relationship Ref") PhysicalNameX " " PopX] ] " FOREIGN KEY " "(" IsNotNullX( ExecuteX("Accumulate FK Columns"), "" ) ")" " REFERENCES " [PushReferenceX("Relationship Ref") [ PushReferenceX("Parent Entity Ref") [IsObjectTypeX("Entity") [OwnerX"."]PhysicalNameX ] [IsObjectTypeX("Subtype Symbol") [ /* there can be only one of these*/ ForEachVectorReferenceX("Child Relations Ref") { [ PushReferenceX("Parent Entity Ref") [OwnerX"."]PhysicalNameX PopX ] } ] ] PopX ] PopX ] "(" [IsNotNullX( ExecuteX("Accumulate Migrating Columns"), "" )] ")" [PushReferenceX("Relationship Ref") [OptionX("OnDeleteFKConstraint") "\r\n\t\t" "ON DELETE " DecodePropertyX("Relationship Parent Delete Rule", "10005", "CASCADE")] PopX] ] #}SPItemEnd SPItemBegin = CreatePKConstraint 10000:{#[ ForEachChildObjectX("Key Group") { [ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"PK","2"),"") SeparatorX(",\r\n\t") IsNotNullX(ExecuteX("PKConstraint"),"") ] } ] #}SPItemEnd SPItemBegin = CreateAKConstraint 10000:{#[ ForEachChildObjectX("Key Group") { [ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"AK","2"),"") SeparatorX(",\r\n\t") IsNotNullX(ExecuteX("AKConstraint"),"") ] } ] #}SPItemEnd SPItemBegin = CreateFKConstraint 10000: {#[ ForEachChildObjectX("Key Group") { [ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"IF","2"),"") IsNotNullX(ExecuteX("Generate Relation"),"") SeparatorX(",\r\n\t") IsNotNullX(ExecuteX("FKConstraint"),"") ] } ] #}SPItemEnd SPItemBegin = EndOfStatementX 10000:{# [ "\r\n" ";" "\r\n\r\n\r\n" EndOfStatementX ] #}SPItemEnd SPItemBegin = Column Values 10000: {#[ [OptionX("ColumnPhysicalOrder") ForEachVectorReferenceX("Physical Order List") { ExecuteX("Column Properties") } ] [OptionX("!ColumnPhysicalOrder") ForEachVectorReferenceX("Column Order List") { ExecuteX("Column Properties") } ] ] #}SPItemEnd SPItemBegin = Column Properties 1:{# [ SeparatorX(",") "\r\n\t" PhysicalNameX " " DatatypeX [" " DecodePropertyX("Null Option","0","NULL","1","NOT NULL")] [OptionX("ColumnDefaultValue") [PushObjectX("Default Constraint Usage") [PushReferenceX("Default Property") [GenerateX " DEFAULT " ExpandErwinMacroX("Server Value")] PopX] PopX] ] ["\r\n\t\t" IsNotNullX(ExecuteX("Column Check Constraints"),"")] ] #}SPItemEnd SPItemBegin = Generate Model 1:{# [ OptionX("ModelPreScript") ForEachChildObjectX("Script Template","Object Order") { [ GenerateX BucketX("1") DecodePropertyX("Gen As Pre Script","","") DecodePropertyX("Type","1","","") ExpandErwinMacroX("Template Code") "\r\n\r\n\r\n" EndOfStatementX ] } ] [ IsForwardEngineeringX BucketX("95") ForEachChildObjectX("Stored Procedure","Object Order") { GenerateX DecodePropertyX("Type","1","","") [OptionX("ModelDropProcedure") ExecuteX("Drop Stored Procedure")] [OptionX("ModelCreateProcedure") ExecuteX("Create Stored Procedure")] } ] [ OptionX("ModelPostScript") BucketX("120") ForEachChildObjectX("Script Template","Object Order") { [ GenerateX BucketX("120") DecodePropertyX("Gen As Pre Script","","","") DecodePropertyX("Type","1","","") ExpandErwinMacroX("Template Code") "\r\n\r\n\r\n" EndOfStatementX ] } ] #}SPItemEnd SPItemBegin = Create View 1: {# [GenerateX OnceX("Create View") [ OptionX("CreateView") BucketX("90") [ IsNotNullX([PropertyValueX("View SQL")], "") ExecuteX("EndOfStatementX") ] [ IsNullX([PropertyValueX("View SQL")]) "CREATE VIEW " [OwnerX"."]NameX [IsNotNullX([ExecuteX("View Column Has Alias")],"") " ( " ForEachVectorReferenceX("Physical Order List") { GenerateX SeparatorX(",") NameX } " ) " ] " AS" IsNotNullX(ExecuteX("Select Statement"),"") ["\r\n\t\t" DecodePropertyX("View With Check","1","WITH CHECK OPTION")] ExecuteX("EndOfStatementX") ] ] [ BucketX("95") ForEachVectorReferenceX("Stored Procedures") { GenerateX DecodePropertyX("Type","1","") [OptionX("ViewDropStoredProcedure") ExecuteX("Drop Stored Procedure")] [OptionX("ViewCreateStoredProcedure") ExecuteX("Create Stored Procedure")] } ] [ OptionX("ViewPostScript") BucketX("90") ForEachVectorReferenceX("Script Templates") { [ GenerateX BucketX("90") DecodePropertyX("Gen As Pre Script","","","") ExpandErwinMacroX("Template Code") "\r\n\r\n\r\n" EndOfStatementX ] } ] [IsAlterScriptX IsModifiedX ForEachVectorReferenceX("Parent Relations Ref") { [ PushReferenceX("Child Entity Ref") [IsObjectTypeX("View") IsNullX([IsDeletedX "Not Deleted"]) ExecuteX("Create View") ] PopX ] } ] ] #}SPItemEnd SPItemBegin = Drop View 1:{#[GenerateX OnceX("Drop View") [ OptionX("ViewPreScript") ForEachVectorReferenceX("Script Templates") { [ GenerateX DecodePropertyX("Gen As Pre Script","","") BucketX("90") ExpandErwinMacroX("Template Code") "\r\n\r\n\r\n" EndOfStatementX ] } ] [ OptionX("DropView") [IsAlterScriptX ForEachVectorReferenceX("Parent Relations Ref") { [ PushReferenceX("Child Entity Ref") [IsObjectTypeX("View") ExecuteX("Drop View") ] PopX ] } ] BucketX("40") [ "DROP VIEW " [PrevOwnerX"."] IsNotNullX(PrevPhysicalNameX, "") ExecuteX("EndOfStatementX") ] ] ] #}SPItemEnd SPItemBegin = Generate View 1:{# [ GenerateX ExecuteX("Drop View") GenerateX ExecuteX("Create View") ] #}SPItemEnd SPItemBegin = Create Entity 1:{# [GenerateX OnceX("Create Entity") [OptionX("TablePreScript") ForEachVectorReferenceX("Script Templates") { [ GenerateX DecodePropertyX("Gen As Pre Script","","") BucketX("90") ExpandErwinMacroX("Template Code") "\r\n\r\n\r\n" EndOfStatementX ] } ] [OptionX("CreateTable") FESetStringX("Create Entity") BucketX("90") "CREATE TABLE " [OwnerX"."] PhysicalNameX "\r\n(" IsNotNullX(ExecuteX("Column Values"),"") [ ",\r\n\t" OptionX("PKConstraintInCreate") IsNotNullX(ExecuteX("CreatePKConstraint"),"") ] [ OptionX("FKConstraintInCreate") IsNotNullX(ExecuteX("CreateFKConstraint"),"") ] [ ",\r\n\t" OptionX("TableCheckConstraint") IsNotNullX(ExecuteX("CreateTableCheckConstraint"),"") ] "\r\n" ")" ExecuteX("EndOfStatementX") ] [/* Generate PK constraint and its corresponding Index*/ ForEachChildObjectX("Key Group") { [ IsNotNullX(CompareStringsX(PropertyValueX("Key Group Type"),"PK","2"),"") [BucketX("90") ExecuteX("Create Key Group") ] [OptionX("PKConstraintInAlter") BucketX("90") "ALTER TABLE " [PushOwnerX [OwnerX"."]PhysicalNameX PopX] "\r\n\t" "ADD " IsNotNullX(ExecuteX("PKConstraint"),"") ExecuteX("EndOfStatementX") ] ] } ] [/*Generate non-unique & unique indexes (Ak, IE and IF)*/ ForEachChildObjectX("Key Group","Key Group Type") { [ IsNullX([CompareStringsX(PropertyValueX("Key Group Type"),"PK","2")]) [BucketX("90") ExecuteX("Create Key Group") ] ] } ] [ OptionX("FKConstraintInAlter") BucketX("91") [ ForEachChildObjectX("Key Group") { "ALTER TABLE " [PushOwnerX [OwnerX"."]PhysicalNameX PopX] "\r\n\t" "ADD " IsNotNullX(ExecuteX("FKConstraint"),"") ExecuteX("EndOfStatementX") } ] ] [ BucketX("105") ForEachVectorReferenceX("Stored Procedures") { GenerateX DecodePropertyX("Type","1","") [OptionX("TableDropProcedure") ExecuteX("Drop Stored Procedure")] [OptionX("TableCreateProcedure") ExecuteX("Create Stored Procedure")] } ] [ OptionX("TablePostScript") BucketX("90") ForEachVectorReferenceX("Script Templates") { [ GenerateX BucketX("90") DecodePropertyX("Gen As Pre Script","","","") ExpandErwinMacroX("Template Code") "\r\n\r\n\r\n" EndOfStatementX ] } ] [IsAlterScriptX ForEachVectorReferenceX("Parent Relations Ref") { [ PushReferenceX("Child Entity Ref") [IsObjectTypeX("View") IsNullX([IsDeletedX "Not Deleted"]) ExecuteX("Create View") ] PopX ] } ] ] #}SPItemEnd SPItemBegin = Drop Entity 1:{# [OnceX("Drop Entity") GenerateX [BucketX("40") ForEachChildObjectX("Key Group") { BucketX("40") ExecuteX("Drop Key Group") } ] [OptionX("DropTable") [IsAlterScriptX ForEachVectorReferenceX("Parent Relations Ref") { [ PushReferenceX("Child Entity Ref") [IsObjectTypeX("View") ExecuteX("Drop View") ] PopX ] } ] [BucketX("40") "\r\n" "DROP TABLE " [PrevOwnerX"."] IsNotNullX(PrevPhysicalNameX, "") ExecuteX("EndOfStatementX")] ] ] #}SPItemEnd SPItemBegin = Generate Entity 1:{# [OnceX("Generate Entity") [IsForwardEngineeringX [GenerateX ExecuteX("Drop Entity")] [GenerateX ExecuteX("Create Entity")] ] [IsAlterScriptX /* Add this entity in the data preservation list. */ [ActivateDataPreservationX()] /*Create the temp table and copy the data into it*/ [DataPreservationOptionsX("PreserveData") BucketX("20") "\r\n" ExecuteX("Create Temp Table And Copy Data") ] ExecuteX("Drop Entity") ExecuteX("Create Entity") /*Insert the data from temp table to the new modified table*/ [DataPreservationOptionsX("PreserveData") BucketX("130") "\r\n" ExecuteX("Insert Columns For Data Preservation") DataPreservationOptionsX("RegisterEntity") ] /*Drop the temp table*/ [DataPreservationOptionsX("DropTempTable") BucketX("140") "\r\n" ExecuteX("Drop Temp Table") ] ] ] #} SPItemEnd SPItemBegin = Create Key Group 1:{# [GenerateX IsNotNullX(ExecuteX("Index Create Option")) OnceX("Create Key Group") FESetStringX("Create Key Group") BucketX("90") "CREATE" [DecodePropertyX("Is Unique",""," UNIQUE")] " INDEX " PhysicalNameX " ON " [PushOwnerX PhysicalNameX PopX] "\r\n(" ForEachVectorReferenceX("Index Member Order List") { SeparatorX(",") "\r\n\t" PhysicalNameX } "\r\n)" ExecuteX("EndOfStatementX") ] #}SPItemEnd SPItemBegin = Key Group Has Members 1: {# [ [IsNotNullX([PropertyValueX("Index Member Order List")],"") "Has Members"] [AllObjectsHaveBeenDeletedX("Key Group Member") "Had Members"] ] #} SPItemEnd SPItemBegin = Drop Key Group 1:{# [ IsAlterScriptX IsNullX([AllObjectsAreNewlyCreatedX("Key Group Member") "Suppress Statement"]) IsNotNullX(ExecuteX("Key Group Has Members"),"") [ OnceX("Drop Key Group") GenerateX IsNotNullX(ExecuteX("Index Drop Option"),"") [BucketX("38") "DROP INDEX " PrevPhysicalNameX ExecuteX("EndOfStatementX")] ] ] [ IsForwardEngineeringX IsNotNullX(ExecuteX("Index Drop Option")) OnceX("Drop Key Group") GenerateX IsNotNullX(ExecuteX("Index Drop Option"),"") [BucketX("38") "DROP INDEX " PrevPhysicalNameX ExecuteX("EndOfStatementX")] ] #}SPItemEnd SPItemBegin = Generate Key Group 1:{# [ ExecuteX("Drop Key Group") ExecuteX("Create Key Group") ] #}SPItemEnd SPItemBegin = Create Stored Procedure 1:{# [ ExpandErwinMacroX("Template Code") ExecuteX("EndOfStatementX") ] #}SPItemEnd SPItemBegin = Drop Stored Procedure 1:{# [ BucketX("100") "DROP PROCEDURE " PrevPhysicalNameX ExecuteX("EndOfStatementX") ] #}SPItemEnd SPItemBegin = Generate Stored Procedure 1:{# [ ExecuteX("Drop Stored Procedure") ExecuteX("Create Stored Procedure") ] #}SPItemEnd SPItemBegin = Alter Modify Relationship 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Alter Allow Modify Key Group Properties 10000: {# [ IsModifiedListX("Key Group Member Order List") "ALTER MODIFY HANDLED" ] #} SPItemEnd SPItemBegin = Alter Modify Key Group 1: {# [IsNullX(ExecuteX("Alter Allow Modify Key Group Properties")) [ [ ExecuteX("Generate Key Group") ] ] ] #} SPItemEnd SPItemBegin = Alter Allow Modify Entity Properties 10000: {# [ IsModifiedListX("Physical Order List", "Column Order List", "Attribute Order List") "ALTER MODIFY HANDLED" ] #} SPItemEnd SPItemBegin = Alter Modify Entity 1: {# /* Process the (EMXTypes::pPhysicalOrderList) property of the Entity. */ [IsPropModifiedX("Physical Order List") OptionX("ColumnPhysicalOrder") [ListRearrangedX("Physical Order List") [ExecuteX("Generate Entity")] ] ] /* Process the (EMXTypes::pColumnOrderList) property of the Entity. */ [IsPropModifiedX("Column Order List") [ OptionX("!ColumnPhysicalOrder") ListRearrangedX("Column Order List") [ExecuteX("Generate Entity")] ] ] [IsNullX(ExecuteX("Alter Allow Modify Entity Properties")) [ [ ExecuteX("Generate Entity") ] ] ] #} SPItemEnd SPItemBegin = Alter Allow Modify Attribute Properties 10000: {# [ IsModifiedListX "ALTER MODIFY HANDLED" ] #} SPItemEnd SPItemBegin = Alter Modify Attribute 1: {# [IsNullX(ExecuteX("Alter Allow Modify Attribute Properties")) PushTopLevelObjectX [ [ ExecuteX(ExecuteX("Modify Object")) ] ] PopX ] #} SPItemEnd SPItemBegin = Use Alter To Add Column 1: {# [OptionX("AlterStatements") "USE ALTER" ] [OptionX("!AlterStatements") IsLastColumnX [DecodePropertyX("Null Option", "1", "") [ PushObjectX("Default Constraint Usage") "USE ALTER" PopX ] ] [ DecodePropertyX("Null Option", "1", "","") "USE ALTER" ] ] #} SPItemEnd SPItemBegin = Create Attribute 1: {# /* Do not alter if the entire entity was created. */ [IsNullX(ExecuteX("This Entity Created")) IsNotNullX(ExecuteX("Use Alter To Add Column"),"") BucketX("85") FESetStringX("Create Attribute") RecordAlterX PushOwnerX "ALTER TABLE " PhysicalNameX PopX " (ADD " PhysicalNameX " " DatatypeX ")" ExecuteX("EndOfStatementX") ] [ IsNullX(ExecuteX("Use Alter To Add Column")) PushOwnerX ExecuteX("Generate Entity") PopX ] #} SPItemEnd SPItemBegin = Drop Attribute 1: {# /* Do not alter if the entire entity was deleted. */ [IsNullX(ExecuteX("This Entity Deleted")) FESetStringX("Drop Attribute") BucketX("40") RecordAlterX PushOwnerX "ALTER TABLE " PhysicalNameX PopX " DROP " PrevPhysicalNameX ExecuteX("EndOfStatementX") ] #} SPItemEnd SPItemBegin = IsObjectEntity 10000: {#[ PushOwnerX [ IsObjectTypeX("Entity") "Entity" ]PopX ] #}SPItemEnd SPItemBegin = IsObjectView 10000: {#[ PushOwnerX [ IsObjectTypeX("View") "View" ]PopX ] #}SPItemEnd SPItemBegin = This Entity Created 1: {# PushOwnerX [IsNotNullX(ExecuteX("If Entity Created")) " CREATED"] PopX #} SPItemEnd SPItemBegin = This Entity Deleted 1: {# PushOwnerX [IsNotNullX(ExecuteX("If Entity Deleted")) " Deleted"] PopX #} SPItemEnd SPItemBegin = This Attribute Created 10000: {# PushOwnerX [ /* Evaluates to TRUE if QueryStringX is true. */ [QueryStringX("Create Attribute") "TRUE"] ExecuteX("This Entity Created") ] PopX #} SPItemEnd SPItemBegin = This Attribute Deleted 10000: {# PushOwnerX [ /* Evaluates to TRUE if QueryStringX is true. */ [QueryStringX("Drop Attribute") "TRUE"] ExecuteX("This Entity Deleted") ] PopX #} SPItemEnd SPItemBegin = If Entity Created 10000: {# /* Evaluates to TRUE if QueryStringX is true. */ [QueryStringX("Create Entity") "TRUE"] #} SPItemEnd SPItemBegin = If Entity Deleted 10000: {# /* Evaluates to TRUE if QueryStringX is true. */ [QueryStringX("Drop Entity") "TRUE"] #} SPItemEnd SPItemBegin = Drop Check Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Create Check Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Alter Modify Check Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Drop Table Check Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Create Table Check Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Generate Table Check Constraint Usage 1: {# ExecuteX("Drop Table Check Constraint Usage") ExecuteX("Create Table Check Constraint Usage") #} SPItemEnd SPItemBegin = Alter Modify Table Check Constraint Usage 1: {# ExecuteX("Generate Table Check Constraint Usage") #} SPItemEnd SPItemBegin = Create Default Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Drop Default Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Alter Modify Default Constraint Usage 1: {# [ /* No Operation*/ ] #} SPItemEnd SPItemBegin = Alter Modify Default 1: {# [ /* For each referring oDefaultConstraintUsage object, * drop and recreate the entire table. */ ForEachVectorReferenceX("Dependent Objects Ref") { [ ExecuteX("Alter Modify Default Constraint Usage") ] } ] #} SPItemEnd SPItemBegin = Alter Modify Validation Rule 1: {# [ /* For each referring oCheckConstraintUsage objec . */ ForEachVectorReferenceX("Dependent Objects Ref") { [ PushOwnerX [ IsObjectTypeX("Attribute") PopX [ExecuteX("Alter Modify Check Constraint Usage")] ] [ IsObjectTypeX("Entity") PopX [ExecuteX("Alter Modify Table Check Constraint Usage")] ] ] } ] #} SPItemEnd SPItemBegin = Table Has Insert Columns For Data Preservation 10000: {#[ ForEachVectorReferenceX("Column Order List") { [ IsNullX([IsCreatedX "Suppress Column"]) SeparatorX(", ") PhysicalNameX ] } ] #} SPItemEnd SPItemBegin = Available For Select 10000: {#[ ConversionFunctionX "This Column has a Conversion Function" ] #} SPItemEnd SPItemBegin = Insert Columns For Data Preservation 10000: {#[ IsNotNullX(ExecuteX("Table Has Insert Columns For Data Preservation"),"") /* Prepare the insert query for the data preservation. */ "INSERT INTO " [OwnerX"."] PhysicalNameX " (" ForEachVectorReferenceX("Column Order List") { [ IsNotNullX(ExecuteX("Available For Select"),"") SeparatorX(", ") PhysicalNameX ] } ") SELECT " ForEachVectorReferenceX("Column Order List") { [ IsNotNullX(ExecuteX("Available For Select"),"") SeparatorX(", ") ConversionFunctionX() ] } " FROM " TempTableX("Temporary") [" WHERE " DataPreservationOptionsX("WhereClause")] ExecuteX("EndOfStatementX") ] #} SPItemEnd SPItemBegin = Drop Temp Table 10000: {# [IsNotNullX(ExecuteX("Table Has Insert Columns For Data Preservation"),"") "DROP TABLE " [OwnerX"."] IsNotNullX(TempTableX("Temporary"), "") ExecuteX("EndOfStatementX") ] #} SPItemEnd SPItemBegin = Create Temp Table And Copy Data 10000: {# [IsNotNullX(ExecuteX("Table Has Insert Columns For Data Preservation"),"") [ "CREATE TABLE " [OwnerX"."] TempTableX("Temporary") "\r\n" "(" ForEachVectorReferenceX("Column Order List") { [ IsNullX([IsCreatedX "Newly created - Suppress"]) SeparatorX(",\r\n") PrevPhysicalNameX " " PropertyValueX("Datatype") ] } ")" ExecuteX("EndOfStatementX") ] [ "SELECT " ForEachVectorReferenceX("Column Order List") { [ IsNullX([IsCreatedX "Newly created - Suppress"]) SeparatorX(",\r\n") PrevPhysicalNameX ] } " INTO " [OwnerX"."] TempTableX("Temporary") " FROM " [[PrevOwnerX"."][IsNullX([PrevOwnerX]) OwnerX"."]] PrevPhysicalNameX ExecuteX("EndOfStatementX") ] ] #} SPItemEnd SPItemBegin = Alter Create Handled 10000: {# [ IsObjectTypeX("Attribute", "Default Constraint Usage", "Check Constraint Usage") "ALTER CREATE HANDLED" ] #} SPItemEnd SPItemBegin = Alter Generic Create Object 10000: {# [ [IsObjectTypeX("Attribute") IsNotNullX(ExecuteX("IsObjectEntity")) ExecuteX("Create Attribute") ] [IsObjectTypeX("Check Constraint Usage") PushOwnerX [IsObjectTypeX("Attribute") PopX [ExecuteX("Create Check Constraint Usage")] ] [IsObjectTypeX("Entity") PopX [ExecuteX("Create Table Check Constraint Usage")] ] ] [IsObjectTypeX("Default Constraint Usage") ExecuteX("Create Default Constraint Usage") ] [IsNullX(ExecuteX("Alter Create Handled")) PushTopLevelObjectX [ [IsNotNullX(ExecuteX("Object Newly Created"),"") [ExecuteX(ExecuteX("Create Object"))] ] [IsNullX(ExecuteX("Object Newly Created")) [ExecuteX(ExecuteX("Generate Object"))] ] ] PopX ] ] #} SPItemEnd SPItemBegin = Object Newly Created 10000: {# ["Generate " IsCreatedX] #} SPItemEnd SPItemBegin = Create Object 10000: {# "Create " ObjectNameX #} SPItemEnd SPItemBegin = Generate Object 10000: {# "Generate " ObjectNameX #} SPItemEnd SPItemBegin = Alter Drop Handled 10000: {# [ IsObjectTypeX("Attribute", "Check Constraint Usage", "Default Constraint Usage") "ALTER DROP HANDLED" ] #} SPItemEnd SPItemBegin = Alter Generic Drop Object 10000: {# [ [IsObjectTypeX("Attribute") IsNotNullX(ExecuteX("IsObjectEntity")) [ExecuteX("Drop Attribute")] ] [IsObjectTypeX("Default Constraint Usage") [ExecuteX("Drop Default Constraint Usage")] ] [IsObjectTypeX("Check Constraint Usage") PushOwnerX [IsObjectTypeX("Attribute") PopX [ExecuteX("Drop Check Constraint Usage")] ] [IsObjectTypeX("Entity") PopX [ExecuteX("Drop Table Check Constraint Usage")] ] ] [IsNullX(ExecuteX("Alter Drop Handled")) PushTopLevelObjectX [ [IsNullX([IsDeletedX "Top Level Object Deleted"]) [ExecuteX(ExecuteX("Generate Object"))] ] [IsNotNullX([IsDeletedX "Top Level Object Deleted"],"") [ExecuteX(ExecuteX("Drop Object"))] ] ] PopX ] ] #} SPItemEnd SPItemBegin = Drop Object 10000: {# "Drop " ObjectNameX #} SPItemEnd SPItemBegin = Alter Modify Handled 10000: {# [ IsObjectTypeX("Entity", "Relationship", "Attribute", "Default", "Validation Rule", "Check Constraint Usage", "Default Constraint Usage", "Key Group", "Redbrick Segment") "ALTER MODIFY HANDLED" ] #} SPItemEnd SPItemBegin = Alter Generic Modify Object 10000: {# [ [IsObjectTypeX("Default") ExecuteX("Alter Modify Default") ] [IsObjectTypeX("Validation Rule") ExecuteX("Alter Modify Validation Rule") ] [IsObjectTypeX("Check Constraint Usage") [ExecuteX("Alter Modify Default Constraint Usage")] ] [IsObjectTypeX("Check Constraint Usage") PushOwnerX [IsObjectTypeX("Attribute") PopX [ExecuteX("Alter Modify Check Constraint Usage")] ] [IsObjectTypeX("Entity") PopX [ExecuteX("Alter Modify Table Check Constraint Usage")] ] ] [IsObjectTypeX("Attribute") IsNotNullX(ExecuteX("IsObjectEntity")) ExecuteX("Alter Modify Attribute") ] [IsObjectTypeX("Attribute") IsNotNullX(ExecuteX("IsObjectView")) ExecuteX("Handle Modify Object") ] [IsObjectTypeX("Entity") ExecuteX("Alter Modify Entity") ] [IsObjectTypeX("Key Group") ExecuteX("Alter Modify Key Group") ] [IsObjectTypeX("Relationship") ExecuteX("Alter Modify Relationship") ] [IsObjectTypeX("Redbrick Segment") ExecuteX("Alter Modify Redbrick Segment") ] [IsNullX(ExecuteX("Alter Modify Handled")) ExecuteX("Handle Modify Object") ] ] #} SPItemEnd SPItemBegin = Handle Modify Object 10000: {# [ PushTopLevelObjectX [ ExecuteX(ExecuteX("Modify Object")) ] PopX ] #} SPItemEnd SPItemBegin = Modify Object 10000: {# "Generate " ObjectNameX #} SPItemEnd