[teiid-issues] [JBoss JIRA] (TEIID-5856) Teiid generate wrong request to salesforce

Renat Eskenin (Jira) issues at jboss.org
Thu Nov 28 03:32:00 EST 2019


    [ https://issues.jboss.org/browse/TEIID-5856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13818693#comment-13818693 ] 

Renat Eskenin edited comment on TEIID-5856 at 11/28/19 3:31 AM:
----------------------------------------------------------------

Real SOQL for this SQL will be generated is


{code:sql}
SELECT Id,Status__c,ReplacementLicenseID__c,ReplacementLicenseID__r.LicenseId__c,LicenseId__c,vlic_Contract_Number__c FROM Product_License__c WHERE vlic_Contract_Number__c=${contractNumber}
{code}

It is one request to salesforce. But i think references generation do not working in teiid now :(

For this request i maked SQL:


{code:sql}
SELECT originalLicense.Id,originalLicense.Status__c,originalLicense.ReplacementLicenseID__c,originalLicense.LicenseId__c,originalLicense.vlic_Contract_Number__c,replacementLicense.LicenseId__c as replacementLicenseId ,replacementLicense.LicenseId__c as replacementLicenseLicenseId FROM Product_License__c originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ Product_License__c replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id where originalLicense.vlic_Contract_Number__c = :contractNumber
{code}
{code}
PLAN:

ProjectNode
  + Relational Node ID:0
  + Output Columns:
    0: Id (string)
    1: Status__c (string)
    2: ReplacementLicenseID__c (string)
    3: LicenseId__c (string)
    4: vlic_Contract_Number__c (string)
    5: replacementLicenseId (string)
    6: replacementLicenseLicenseId (string)
  + Cost Estimates:Estimated Node Cardinality: -1.0
  + Child 0:
    JoinNode
      + Relational Node ID:1
      + Output Columns:
        0: Id (string)
        1: Status__c (string)
        2: ReplacementLicenseID__c (string)
        3: LicenseId__c (string)
        4: vlic_Contract_Number__c (string)
        5: LicenseId__c (string)
      + Cost Estimates:Estimated Node Cardinality: -1.0
      + Child 0:
        AccessNode
          + Relational Node ID:2
          + Output Columns:
            0: ReplacementLicenseID__c (string)
            1: Id (string)
            2: Status__c (string)
            3: LicenseId__c (string)
            4: vlic_Contract_Number__c (string)
          + Cost Estimates:Estimated Node Cardinality: -1.0
          + Query:SELECT sf.Product_License__c.ReplacementLicenseID__c, sf.Product_License__c.Id, sf.Product_License__c.Status__c, sf.Product_License__c.LicenseId__c, sf.Product_License__c.vlic_Contract_Number__c FROM sf.Product_License__c WHERE sf.Product_License__c.vlic_Contract_Number__c = ?
          + Model Name:sf
      + Child 1:
        DependentAccessNode
          + Relational Node ID:3
          + Output Columns:
            0: Id (string)
            1: LicenseId__c (string)
          + Cost Estimates:Estimated Node Cardinality: -1.0
          + Query:SELECT sf.Product_License__c.Id, sf.Product_License__c.LicenseId__c FROM sf.Product_License__c WHERE sf.Product_License__c.Id IN (<dependent values>)
          + Model Name:sf
      + Dependent Join:true
      + Join Strategy:ENHANCED SORT JOIN (SORT/SORT)
      + Join Type:LEFT OUTER JOIN
      + Join Criteria:originalLicense.ReplacementLicenseID__c=replacementLicense.Id
  + Select Columns:
    0: originalLicense.Id
    1: originalLicense.Status__c
    2: originalLicense.ReplacementLicenseID__c
    3: originalLicense.LicenseId__c
    4: originalLicense.vlic_Contract_Number__c
    5: replacementLicense.LicenseId__c AS replacementLicenseId
    6: replacementLicense.LicenseId__c AS replacementLicenseLicenseId
  + Data Bytes Sent:7
  + Planning Time:9
END PLAN

DEBUG LOG :


============================================================================
USER COMMAND:
SELECT originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId FROM sf.Product_License__c AS originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ sf.Product_License__c AS replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id WHERE originalLicense.vlic_Contract_Number__c = ?

----------------------------------------------------------------------------
OPTIMIZE: 
SELECT originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId FROM sf.Product_License__c AS originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ sf.Product_License__c AS replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id WHERE originalLicense.vlic_Contract_Number__c = ?

----------------------------------------------------------------------------
GENERATE CANONICAL: 
SELECT originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId FROM sf.Product_License__c AS originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ sf.Product_License__c AS replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id WHERE originalLicense.vlic_Contract_Number__c = ?

CANONICAL PLAN: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id]})
      Source(groups=[sf.Product_License__c AS originalLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=})


============================================================================
EXECUTING PlaceAccess

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id]})
      Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000})
        Source(groups=[sf.Product_License__c AS originalLicense])
      Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=})


============================================================================
EXECUTING AssignOutputElements

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
      Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
      Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c]})


============================================================================
EXECUTING RemoveOptionalJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
      Access(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
      Access(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushSelectCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushNonJoinCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CleanCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING RaiseAccess

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PlanOuterJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CopyCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CleanCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING PlanJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushSelectCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING RaiseAccess

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PlanOuterJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING ChooseJoinStrategy

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[]})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushLargeIn

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING ChooseDependent
LOW [Relational Planner] MAKE_DEP hint detected - marking as dependent side of join Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2}
LOW [Relational Planner] MAKE_DEP hint detected - marking as dependent side of join Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2}

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true})
      Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushSelectCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING CleanCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=null})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING AssignOutputElements

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING CalculateCost

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true, EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}, EST_CARDINALITY=-1.0})


============================================================================
EXECUTING ImplementJoinStrategy

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=ENHANCED_SORT, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}, SORT_LEFT=SORT, IS_RIGHT_DISTINCT=true, SORT_RIGHT=SORT})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true, EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}, EST_CARDINALITY=-1.0})


============================================================================
EXECUTING PlanSubqueries

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Select(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING MergeCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Select(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PlanSorts

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=ENHANCED_SORT, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}, SORT_LEFT=SORT, IS_RIGHT_DISTINCT=true, SORT_RIGHT=SORT})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Select(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CollapseSource

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, ATOMIC_REQUEST=SELECT originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c FROM sf.Product_License__c AS originalLicense WHERE originalLicense.vlic_Contract_Number__c = ?})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true, EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}, ATOMIC_REQUEST=SELECT replacementLicense.Id, replacementLicense.LicenseId__c FROM sf.Product_License__c AS replacementLicense WHERE replacementLicense.Id IN (<dependent values>)})


============================================================================
CONVERTING PLAN TREE TO PROCESS TREE

PROCESS PLAN = 
ProjectNode(0) output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId] [originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]
  JoinNode(1) [Dependent] [ENHANCED SORT JOIN (SORT/SORT)] [LEFT OUTER JOIN] criteria=[originalLicense.ReplacementLicenseID__c=replacementLicense.Id] output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]
    AccessNode(2) output=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c] SELECT sf.Product_License__c.ReplacementLicenseID__c, sf.Product_License__c.Id, sf.Product_License__c.Status__c, sf.Product_License__c.LicenseId__c, sf.Product_License__c.vlic_Contract_Number__c FROM sf.Product_License__c WHERE sf.Product_License__c.vlic_Contract_Number__c = ?
    DependentAccessNode(3) output=[replacementLicense.Id, replacementLicense.LicenseId__c] SELECT sf.Product_License__c.Id, sf.Product_License__c.LicenseId__c FROM sf.Product_License__c WHERE sf.Product_License__c.Id IN (<dependent values>)

============================================================================

----------------------------------------------------------------------------
OPTIMIZATION COMPLETE:
PROCESSOR PLAN:
ProjectNode(0) output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId] [originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]
  JoinNode(1) [Dependent] [ENHANCED SORT JOIN (SORT/SORT)] [LEFT OUTER JOIN] criteria=[originalLicense.ReplacementLicenseID__c=replacementLicense.Id] output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]
    AccessNode(2) output=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c] SELECT sf.Product_License__c.ReplacementLicenseID__c, sf.Product_License__c.Id, sf.Product_License__c.Status__c, sf.Product_License__c.LicenseId__c, sf.Product_License__c.vlic_Contract_Number__c FROM sf.Product_License__c WHERE sf.Product_License__c.vlic_Contract_Number__c = ?
    DependentAccessNode(3) output=[replacementLicense.Id, replacementLicense.LicenseId__c] SELECT sf.Product_License__c.Id, sf.Product_License__c.LicenseId__c FROM sf.Product_License__c WHERE sf.Product_License__c.Id IN (<dependent values>)

============================================================================
END DEBUG LOG


{code}

In this plan we have two sql requests

First real request to SF
{code}
[2019-11-28 08:24:03,575 GMT] DEBUG [salesforce-failover-facade,,,] [salesforce-failover-facade-56f467f5f8-q8mml] org.teiid.CONNECTOR [Worker0_QueryProcessorQueue0]: salesforce.87EGAL91ieOh.87EGAL91ieOh.0.2:  Executing Query: SELECT Product_License__c.ReplacementLicenseID__c, Product_License__c.Id, Product_License__c.Status__c, Product_License__c.LicenseId__c, Product_License__c.vlic_Contract_Number__c FROM Product_License__c WHERE Product_License__c.vlic_Contract_Number__c = '11111aaaaa'
{code}

Second real request
{code}
[2019-11-28 08:24:04,025 GMT] DEBUG [salesforce-failover-facade,,,] [salesforce-failover-facade-56f467f5f8-q8mml] org.teiid.CONNECTOR [Worker0_QueryProcessorQueue1]: salesforce.87EGAL91ieOh.87EGAL91ieOh.0.3:  Incoming Query: SELECT Product_License__c.Id, Product_License__c.LicenseId__c FROM Product_License__c WHERE Product_License__c.Id = 'asdasdasdadasdasd
{code}

But need one :(


was (Author: i3draven):
Real SOQL for this SQL will be generated is


{code:sql}
SELECT Id,Status__c,ReplacementLicenseID__c,ReplacementLicenseID__r.LicenseId__c,LicenseId__c,vlic_Contract_Number__c FROM Product_License__c WHERE vlic_Contract_Number__c=${contractNumber}
{code}

It is one request to salesforce. But i think references generation do not working in teiid now :(

For this request i maked SQL:


{code:sql}
SELECT originalLicense.Id,originalLicense.Status__c,originalLicense.ReplacementLicenseID__c,originalLicense.LicenseId__c,originalLicense.vlic_Contract_Number__c,replacementLicense.LicenseId__c as replacementLicenseId ,replacementLicense.LicenseId__c as replacementLicenseLicenseId FROM Product_License__c originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ Product_License__c replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id where originalLicense.vlic_Contract_Number__c = :contractNumber
{code}
{code}
PLAN:

ProjectNode
  + Relational Node ID:0
  + Output Columns:
    0: Id (string)
    1: Status__c (string)
    2: ReplacementLicenseID__c (string)
    3: LicenseId__c (string)
    4: vlic_Contract_Number__c (string)
    5: replacementLicenseId (string)
    6: replacementLicenseLicenseId (string)
  + Cost Estimates:Estimated Node Cardinality: -1.0
  + Child 0:
    JoinNode
      + Relational Node ID:1
      + Output Columns:
        0: Id (string)
        1: Status__c (string)
        2: ReplacementLicenseID__c (string)
        3: LicenseId__c (string)
        4: vlic_Contract_Number__c (string)
        5: LicenseId__c (string)
      + Cost Estimates:Estimated Node Cardinality: -1.0
      + Child 0:
        AccessNode
          + Relational Node ID:2
          + Output Columns:
            0: ReplacementLicenseID__c (string)
            1: Id (string)
            2: Status__c (string)
            3: LicenseId__c (string)
            4: vlic_Contract_Number__c (string)
          + Cost Estimates:Estimated Node Cardinality: -1.0
          + Query:SELECT sf.Product_License__c.ReplacementLicenseID__c, sf.Product_License__c.Id, sf.Product_License__c.Status__c, sf.Product_License__c.LicenseId__c, sf.Product_License__c.vlic_Contract_Number__c FROM sf.Product_License__c WHERE sf.Product_License__c.vlic_Contract_Number__c = ?
          + Model Name:sf
      + Child 1:
        DependentAccessNode
          + Relational Node ID:3
          + Output Columns:
            0: Id (string)
            1: LicenseId__c (string)
          + Cost Estimates:Estimated Node Cardinality: -1.0
          + Query:SELECT sf.Product_License__c.Id, sf.Product_License__c.LicenseId__c FROM sf.Product_License__c WHERE sf.Product_License__c.Id IN (<dependent values>)
          + Model Name:sf
      + Dependent Join:true
      + Join Strategy:ENHANCED SORT JOIN (SORT/SORT)
      + Join Type:LEFT OUTER JOIN
      + Join Criteria:originalLicense.ReplacementLicenseID__c=replacementLicense.Id
  + Select Columns:
    0: originalLicense.Id
    1: originalLicense.Status__c
    2: originalLicense.ReplacementLicenseID__c
    3: originalLicense.LicenseId__c
    4: originalLicense.vlic_Contract_Number__c
    5: replacementLicense.LicenseId__c AS replacementLicenseId
    6: replacementLicense.LicenseId__c AS replacementLicenseLicenseId
  + Data Bytes Sent:7
  + Planning Time:9
END PLAN

DEBUG LOG :


============================================================================
USER COMMAND:
SELECT originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId FROM sf.Product_License__c AS originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ sf.Product_License__c AS replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id WHERE originalLicense.vlic_Contract_Number__c = ?

----------------------------------------------------------------------------
OPTIMIZE: 
SELECT originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId FROM sf.Product_License__c AS originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ sf.Product_License__c AS replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id WHERE originalLicense.vlic_Contract_Number__c = ?

----------------------------------------------------------------------------
GENERATE CANONICAL: 
SELECT originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId FROM sf.Product_License__c AS originalLicense LEFT OUTER JOIN /*+ MAKEDEP */ sf.Product_License__c AS replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id WHERE originalLicense.vlic_Contract_Number__c = ?

CANONICAL PLAN: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id]})
      Source(groups=[sf.Product_License__c AS originalLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=})


============================================================================
EXECUTING PlaceAccess

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id]})
      Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000})
        Source(groups=[sf.Product_License__c AS originalLicense])
      Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=})


============================================================================
EXECUTING AssignOutputElements

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
      Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
      Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c]})


============================================================================
EXECUTING RemoveOptionalJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]})
    Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
      Access(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
      Access(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushSelectCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c]})
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushNonJoinCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, replacementLicense.LicenseId__c]})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CleanCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING RaiseAccess

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PlanOuterJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CopyCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CleanCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING PlanJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushSelectCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING RaiseAccess

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5})
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PlanOuterJoins

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING ChooseJoinStrategy

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[]})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushLargeIn

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING ChooseDependent
LOW [Relational Planner] MAKE_DEP hint detected - marking as dependent side of join Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2}
LOW [Relational Planner] MAKE_DEP hint detected - marking as dependent side of join Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2}

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true})
      Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PushSelectCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING CleanCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=null})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=null, APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING AssignOutputElements

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=null})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c]})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2})


============================================================================
EXECUTING CalculateCost

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true, EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}, EST_CARDINALITY=-1.0})


============================================================================
EXECUTING ImplementJoinStrategy

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=ENHANCED_SORT, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}, SORT_LEFT=SORT, IS_RIGHT_DISTINCT=true, SORT_RIGHT=SORT})
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
      Select(groups=[sf.Product_License__c AS originalLicense], props={SELECT_CRITERIA=originalLicense.vlic_Contract_Number__c = ?, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}})
        Source(groups=[sf.Product_License__c AS originalLicense], props={OUTPUT_COLS=[originalLicense.vlic_Contract_Number__c, originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[2.0, 2.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true, EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
      Select(groups=[sf.Product_License__c AS replacementLicense], props={SELECT_CRITERIA=replacementLicense.Id IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}})
        Source(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}, EST_CARDINALITY=-1.0})


============================================================================
EXECUTING PlanSubqueries

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Select(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING MergeCriteria

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Select(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING PlanSorts

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={JOIN_TYPE=LEFT OUTER JOIN, JOIN_STRATEGY=ENHANCED_SORT, JOIN_CRITERIA=[originalLicense.ReplacementLicenseID__c = replacementLicense.Id], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=6, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id1, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}, SORT_LEFT=SORT, IS_RIGHT_DISTINCT=true, SORT_RIGHT=SORT})
    Access(groups=[sf.Product_License__c AS originalLicense])
      Select(groups=[sf.Product_License__c AS originalLicense])
        Source(groups=[sf.Product_License__c AS originalLicense])
    Access(groups=[sf.Product_License__c AS replacementLicense])
      Select(groups=[sf.Product_License__c AS replacementLicense])
        Source(groups=[sf.Product_License__c AS replacementLicense])


============================================================================
EXECUTING CollapseSource

AFTER: 
Project(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense], props={PROJECT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId], APPROXIMATE_OUTPUT_COLUMNS=7, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.Status__c=[-1.0, -1.0, -1.0], originalLicense.ReplacementLicenseID__c=[-1.0, -1.0, -1.0], originalLicense.LicenseId__c=[-1.0, -1.0, -1.0], ...}})
  Join(groups=[sf.Product_License__c AS originalLicense, sf.Product_License__c AS replacementLicense])
    Access(groups=[sf.Product_License__c AS originalLicense], props={SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c], APPROXIMATE_OUTPUT_COLUMNS=5, EST_CARDINALITY=-1.0, EST_COL_STATS={originalLicense.Id=[-1.0, -1.0, -1.0], originalLicense.IsDeleted=[-1.0, -1.0, -1.0], originalLicense.Name=[-1.0, -1.0, -1.0], originalLicense.CreatedDate=[-1.0, -1.0, -1.0], ...}, ATOMIC_REQUEST=SELECT originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c FROM sf.Product_License__c AS originalLicense WHERE originalLicense.vlic_Contract_Number__c = ?})
    Access(groups=[sf.Product_License__c AS replacementLicense], props={MAKE_DEP=, SOURCE_HINT=null, MODEL_ID=Schema name=sf, nameInSource=null, uuid=tid:000005adccd6-00000e53-00000000, OUTPUT_COLS=[replacementLicense.Id, replacementLicense.LicenseId__c], APPROXIMATE_OUTPUT_COLUMNS=2, IS_DEPENDENT_SET=true, EST_CARDINALITY=-1.0, EST_COL_STATS={replacementLicense.Id=[-1.0, -1.0, -1.0], replacementLicense.LicenseId__c=[-1.0, -1.0, -1.0]}, ATOMIC_REQUEST=SELECT replacementLicense.Id, replacementLicense.LicenseId__c FROM sf.Product_License__c AS replacementLicense WHERE replacementLicense.Id IN (<dependent values>)})


============================================================================
CONVERTING PLAN TREE TO PROCESS TREE

PROCESS PLAN = 
ProjectNode(0) output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId] [originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]
  JoinNode(1) [Dependent] [ENHANCED SORT JOIN (SORT/SORT)] [LEFT OUTER JOIN] criteria=[originalLicense.ReplacementLicenseID__c=replacementLicense.Id] output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]
    AccessNode(2) output=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c] SELECT sf.Product_License__c.ReplacementLicenseID__c, sf.Product_License__c.Id, sf.Product_License__c.Status__c, sf.Product_License__c.LicenseId__c, sf.Product_License__c.vlic_Contract_Number__c FROM sf.Product_License__c WHERE sf.Product_License__c.vlic_Contract_Number__c = ?
    DependentAccessNode(3) output=[replacementLicense.Id, replacementLicense.LicenseId__c] SELECT sf.Product_License__c.Id, sf.Product_License__c.LicenseId__c FROM sf.Product_License__c WHERE sf.Product_License__c.Id IN (<dependent values>)

============================================================================

----------------------------------------------------------------------------
OPTIMIZATION COMPLETE:
PROCESSOR PLAN:
ProjectNode(0) output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId] [originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.LicenseId__c AS replacementLicenseLicenseId]
  JoinNode(1) [Dependent] [ENHANCED SORT JOIN (SORT/SORT)] [LEFT OUTER JOIN] criteria=[originalLicense.ReplacementLicenseID__c=replacementLicense.Id] output=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c]
    AccessNode(2) output=[originalLicense.ReplacementLicenseID__c, originalLicense.Id, originalLicense.Status__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c] SELECT sf.Product_License__c.ReplacementLicenseID__c, sf.Product_License__c.Id, sf.Product_License__c.Status__c, sf.Product_License__c.LicenseId__c, sf.Product_License__c.vlic_Contract_Number__c FROM sf.Product_License__c WHERE sf.Product_License__c.vlic_Contract_Number__c = ?
    DependentAccessNode(3) output=[replacementLicense.Id, replacementLicense.LicenseId__c] SELECT sf.Product_License__c.Id, sf.Product_License__c.LicenseId__c FROM sf.Product_License__c WHERE sf.Product_License__c.Id IN (<dependent values>)

============================================================================
END DEBUG LOG


{code}

In this plan we have two sql requests

First real request to SF
{code}
[2019-11-28 08:24:03,575 GMT] DEBUG [salesforce-failover-facade,,,] [salesforce-failover-facade-56f467f5f8-q8mml] org.teiid.CONNECTOR [Worker0_QueryProcessorQueue0]: salesforce.87EGAL91ieOh.87EGAL91ieOh.0.2:  Executing Query: SELECT Product_License__c.ReplacementLicenseID__c, Product_License__c.Id, Product_License__c.Status__c, Product_License__c.LicenseId__c, Product_License__c.vlic_Contract_Number__c FROM Product_License__c WHERE Product_License__c.vlic_Contract_Number__c = '11111aaaaa'
{code}

Second real request
{code}
[2019-11-28 08:24:04,025 GMT] DEBUG [salesforce-failover-facade,,,] [salesforce-failover-facade-56f467f5f8-q8mml] org.teiid.CONNECTOR [Worker0_QueryProcessorQueue1]: salesforce.87EGAL91ieOh.87EGAL91ieOh.0.3:  Incoming Query: SELECT Product_License__c.Id, Product_License__c.LicenseId__c FROM Product_License__c WHERE Product_License__c.Id = 'asdasdasdadasdasd
{code}

> Teiid generate wrong request to salesforce
> ------------------------------------------
>
>                 Key: TEIID-5856
>                 URL: https://issues.jboss.org/browse/TEIID-5856
>             Project: Teiid
>          Issue Type: Bug
>          Components: Salesforce Connector
>         Environment: spring-boot teiid salesforce-connector
>            Reporter: Renat Eskenin
>            Assignee: Steven Hawkins
>            Priority: Major
>
> When i call request to salesforce teiid get very long wrong request and then OOM, because teiid request all data in salesforce object.



--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the teiid-issues mailing list