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

Renat Eskenin (Jira) issues at jboss.org
Wed Nov 27 06:30:01 EST 2019


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

Renat Eskenin edited comment on TEIID-5856 at 11/27/19 6:29 AM:
----------------------------------------------------------------

Used ddl:

{code}
CREATE DATABASE db;
USE DATABASE db;
CREATE FOREIGN DATA WRAPPER salesforce;
CREATE FOREIGN DATA WRAPPER mysalesforce type salesforce OPTIONS (supportsOrderBy true);
CREATE SERVER salesforce FOREIGN DATA WRAPPER salesforce OPTIONS ("resource-name" 'salesforce');
CREATE SCHEMA sf SERVER salesforce;
IMPORT FROM SERVER salesforce INTO sf OPTIONS("importer.useFullSchemaName" 'false', "importer.NormalizeNames" 'false', "importer.modelAuditFields" 'true', "importer.importStatstics" 'true');
{code}

{code}
SELECT * FROM SYS.tables WHERE Name='Product_License__c'
{code}

{code}
 {
        "Description": null,
        "Cardinality": -1,
        "NameInSource": "Product_License__c",
        "Name": "Product_License__c",
        "UID": "tid:000005adccd6-9897fe32-00000545",
        "Type": "Table",
        "IsPhysical": true,
        "SupportsUpdates": true,
        "IsMaterialized": false,
        "VDBName": "db",
        "IsSystem": false,
        "SchemaUID": "tid:000005adccd6-00000e53-00000000",
        "SchemaName": "sf"
      }
{code}

SQL:

{code}
SELECT originalLicense.Id,originalLicense.Status__c,originalLicense.ReplacementLicenseID__c,originalLicense.LicenseId__c,originalLicense.vlic_Contract_Number__c,replacementLicense.LicenseId__c as replacementLicenseId ,replacementLicense.Id as replacementLicenseObjectId FROM Product_License__c originalLicense LEFT OUTER JOIN Product_License__c replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id where originalLicense.vlic_Contract_Number__c = :contractNumber
{code}

PLAN

{code}
 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: replacementLicenseObjectId (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)
        6: Id (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:
        AccessNode
          + 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
          + Model Name:sf
      + 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.Id AS replacementLicenseObjectId
  + Data Bytes Sent:7
  + Planning Time:6
{code}

IF I USED SQL:

{code}
SELECT originalLicense.Id,originalLicense.Status__c,originalLicense.ReplacementLicenseID__c,originalLicense.LicenseId__c,originalLicense.vlic_Contract_Number__c,replacementLicense.LicenseId__c as replacementLicenseId ,replacementLicense.Id as replacementLicenseObjectId 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}

PLAN

{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: replacementLicenseObjectId (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)
        6: Id (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.Id AS replacementLicenseObjectId
  + Data Bytes Sent:7
  + Planning Time:28
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.Id AS replacementLicenseObjectId 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.Id AS replacementLicenseObjectId 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.Id AS replacementLicenseObjectId 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.Id AS replacementLicenseObjectId]})
  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.Id AS replacementLicenseObjectId]})
  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.Id AS replacementLicenseObjectId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId]})
  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, replacementLicense.Id]})
    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, 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, 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, replacementLicense.Id]})
    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, replacementLicense.Id]})
      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.Id AS replacementLicenseObjectId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId]})
  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, 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, 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, replacementLicense.Id]})
        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, replacementLicense.Id]})
    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.Id AS replacementLicenseObjectId], 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=7})
    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=7})
        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=7})
    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=7, 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=7, 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.Id AS replacementLicenseObjectId], 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=7, 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=7, 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=7, 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=7, 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=7, 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=7, 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=7, 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=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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=7, 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=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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=7, 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.Id AS replacementLicenseObjectId], 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=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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=7, 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.Id AS replacementLicenseObjectId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId], 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, replacementLicense.Id], APPROXIMATE_OUTPUT_COLUMNS=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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=7, 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.Id AS replacementLicenseObjectId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId], 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, replacementLicense.Id], APPROXIMATE_OUTPUT_COLUMNS=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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=7, 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, replacementLicense.Id], APPROXIMATE_OUTPUT_COLUMNS=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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=7, 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.Id AS replacementLicenseObjectId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId], 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, replacementLicense.Id], APPROXIMATE_OUTPUT_COLUMNS=7, IS_COPIED=true, LEFT_EXPRESSIONS=[originalLicense.ReplacementLicenseID__c], RIGHT_EXPRESSIONS=[replacementLicense.Id], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id0, 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.Id AS replacementLicenseObjectId], OUTPUT_COLS=[originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId], 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.Id AS replacementLicenseObjectId] [originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId]
  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, replacementLicense.Id]
    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.Id AS replacementLicenseObjectId] [originalLicense.Id, originalLicense.Status__c, originalLicense.ReplacementLicenseID__c, originalLicense.LicenseId__c, originalLicense.vlic_Contract_Number__c, replacementLicense.LicenseId__c AS replacementLicenseId, replacementLicense.Id AS replacementLicenseObjectId]
  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, replacementLicense.Id]
    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}


was (Author: i3draven):
Used ddl:

{code}
CREATE DATABASE db;
USE DATABASE db;
CREATE FOREIGN DATA WRAPPER salesforce;
CREATE FOREIGN DATA WRAPPER mysalesforce type salesforce OPTIONS (supportsOrderBy true);
CREATE SERVER salesforce FOREIGN DATA WRAPPER salesforce OPTIONS ("resource-name" 'salesforce');
CREATE SCHEMA sf SERVER salesforce;
IMPORT FROM SERVER salesforce INTO sf OPTIONS("importer.useFullSchemaName" 'false', "importer.NormalizeNames" 'false', "importer.modelAuditFields" 'true', "importer.importStatstics" 'true');
{code}

{code}
SELECT * FROM SYS.tables WHERE Name='Product_License__c'
{code}

{code}
 {
        "Description": null,
        "Cardinality": -1,
        "NameInSource": "Product_License__c",
        "Name": "Product_License__c",
        "UID": "tid:000005adccd6-9897fe32-00000545",
        "Type": "Table",
        "IsPhysical": true,
        "SupportsUpdates": true,
        "IsMaterialized": false,
        "VDBName": "db",
        "IsSystem": false,
        "SchemaUID": "tid:000005adccd6-00000e53-00000000",
        "SchemaName": "sf"
      }
{code}

SQL:

{code}
SELECT originalLicense.Id,originalLicense.Status__c,originalLicense.ReplacementLicenseID__c,originalLicense.LicenseId__c,originalLicense.vlic_Contract_Number__c,replacementLicense.LicenseId__c as replacementLicenseId ,replacementLicense.Id as replacementLicenseObjectId FROM Product_License__c originalLicense LEFT OUTER JOIN Product_License__c replacementLicense ON originalLicense.ReplacementLicenseID__c = replacementLicense.Id where originalLicense.vlic_Contract_Number__c = :contractNumber
{code}

PLAN

{code}
 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: replacementLicenseObjectId (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)
        6: Id (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:
        AccessNode
          + 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
          + Model Name:sf
      + 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.Id AS replacementLicenseObjectId
  + Data Bytes Sent:7
  + Planning Time:6
{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