SOQL query causes internal Salesforce error2019 Community Moderator ElectionError selecting User.SmallProfileUrl from UserFeed query with SOQLNo such column 'AccountNumber' on entity 'Name'Internal Service Error when using not null in Geolocation SOQLSearch by '.' causes non-selective query exceptionNo records returned from SOQL query on FeedComment with Left Inner JoinSOQL error on enabling namespaceSoql outer query exceptionINVALID_FIELD on SOQL Query through REST APIWhy are the columns of the SOQL query result not in the order of the fields in the SELECT?SOQL query to extract only the most recent attachment IDs

Why does the Sun have different day lengths, but not the gas giants?

Delete multiple columns using awk or sed

Does the reader need to like the PoV character?

Can I cause damage to electrical appliances by unplugging them when they are turned on?

What is going on with gets(stdin) on the site coderbyte?

Why is it that I can sometimes guess the next note?

How to explain what's wrong with this application of the chain rule?

Review your own paper in Mathematics

Why Shazam when there is already Superman?

It grows, but water kills it

Will number of steps recorded on FitBit/any fitness tracker add up distance in PokemonGo?

Change the color of a single dot in `ddot` symbol

Creating two special characters

Short story about a deaf man, who cuts people tongues

How would you translate "more" for use as an interface button?

What does Apple's new App Store requirement mean

Does an advisor owe his/her student anything? Will an advisor keep a PhD student only out of pity?

Non-trope happy ending?

US tourist/student visa

Is it allowed to activate the ability of multiple planeswalkers in a single turn?

A Trivial Diagnosis

What to do when eye contact makes your coworker uncomfortable?

Why do Radio Buttons not fill the entire outer circle?

Is this part of the description of the Archfey warlock's Misty Escape feature redundant?



SOQL query causes internal Salesforce error



2019 Community Moderator ElectionError selecting User.SmallProfileUrl from UserFeed query with SOQLNo such column 'AccountNumber' on entity 'Name'Internal Service Error when using not null in Geolocation SOQLSearch by '.' causes non-selective query exceptionNo records returned from SOQL query on FeedComment with Left Inner JoinSOQL error on enabling namespaceSoql outer query exceptionINVALID_FIELD on SOQL Query through REST APIWhy are the columns of the SOQL query result not in the order of the fields in the SELECT?SOQL query to extract only the most recent attachment IDs










5















I've hit an unhandled exception when writing a query, and I'm curious if anyone here has seen the same thing. This is not a timeout issue - the error happens almost immediately, so it's not a query efficiency issue. The following query causes an "Internal Salesforce.com Error":
(Note that End_Client__c is an Account lookup on Opportunity, and accountIds is a Set<Id> of parents of both Account and End Client)



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
Id IN :accountIds
OR ParentId IN :accountIds
OR Parent.ParentId IN :accountIds
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


However, it is fixed if I reduce the number of items in the OR chain to 2, regardless of which items I select. This means the merge fields are not the issue causing the error. The following works successfully:



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


I was fortunately able to find a workaround, which has left me even more confused. I changed the query to less efficient logic. The query below evaluates properly, which suggests to me that the query parser is failing.



[
SELECT Name
FROM Account
WHERE (Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Id IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.Parent.ParentId IN :accountIds)
ORDER By Name
]


Can anyone shed some light on what is going on here?










share|improve this question






















  • How many items are in your Set<Id>? I can't repo this with 50.

    – battery.cord
    yesterday











  • Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.

    – battery.cord
    yesterday











  • @battery.cord see my answer below. The issue had to do with the accountIds set containing only the excluded opp.AccountId

    – SFDC Neuf
    yesterday















5















I've hit an unhandled exception when writing a query, and I'm curious if anyone here has seen the same thing. This is not a timeout issue - the error happens almost immediately, so it's not a query efficiency issue. The following query causes an "Internal Salesforce.com Error":
(Note that End_Client__c is an Account lookup on Opportunity, and accountIds is a Set<Id> of parents of both Account and End Client)



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
Id IN :accountIds
OR ParentId IN :accountIds
OR Parent.ParentId IN :accountIds
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


However, it is fixed if I reduce the number of items in the OR chain to 2, regardless of which items I select. This means the merge fields are not the issue causing the error. The following works successfully:



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


I was fortunately able to find a workaround, which has left me even more confused. I changed the query to less efficient logic. The query below evaluates properly, which suggests to me that the query parser is failing.



[
SELECT Name
FROM Account
WHERE (Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Id IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.Parent.ParentId IN :accountIds)
ORDER By Name
]


Can anyone shed some light on what is going on here?










share|improve this question






















  • How many items are in your Set<Id>? I can't repo this with 50.

    – battery.cord
    yesterday











  • Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.

    – battery.cord
    yesterday











  • @battery.cord see my answer below. The issue had to do with the accountIds set containing only the excluded opp.AccountId

    – SFDC Neuf
    yesterday













5












5








5








I've hit an unhandled exception when writing a query, and I'm curious if anyone here has seen the same thing. This is not a timeout issue - the error happens almost immediately, so it's not a query efficiency issue. The following query causes an "Internal Salesforce.com Error":
(Note that End_Client__c is an Account lookup on Opportunity, and accountIds is a Set<Id> of parents of both Account and End Client)



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
Id IN :accountIds
OR ParentId IN :accountIds
OR Parent.ParentId IN :accountIds
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


However, it is fixed if I reduce the number of items in the OR chain to 2, regardless of which items I select. This means the merge fields are not the issue causing the error. The following works successfully:



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


I was fortunately able to find a workaround, which has left me even more confused. I changed the query to less efficient logic. The query below evaluates properly, which suggests to me that the query parser is failing.



[
SELECT Name
FROM Account
WHERE (Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Id IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.Parent.ParentId IN :accountIds)
ORDER By Name
]


Can anyone shed some light on what is going on here?










share|improve this question














I've hit an unhandled exception when writing a query, and I'm curious if anyone here has seen the same thing. This is not a timeout issue - the error happens almost immediately, so it's not a query efficiency issue. The following query causes an "Internal Salesforce.com Error":
(Note that End_Client__c is an Account lookup on Opportunity, and accountIds is a Set<Id> of parents of both Account and End Client)



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
Id IN :accountIds
OR ParentId IN :accountIds
OR Parent.ParentId IN :accountIds
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


However, it is fixed if I reduce the number of items in the OR chain to 2, regardless of which items I select. This means the merge fields are not the issue causing the error. The following works successfully:



[
SELECT Name
FROM Account
WHERE Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND (
OR Parent.Parent.ParentId IN :accountIds
OR Parent.Parent.Parent.ParentId IN :accountIds
)
ORDER By Name
]


I was fortunately able to find a workaround, which has left me even more confused. I changed the query to less efficient logic. The query below evaluates properly, which suggests to me that the query parser is failing.



[
SELECT Name
FROM Account
WHERE (Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Id IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.ParentId IN :accountIds)
OR
(Id != :opp.AccountId
AND Id != :opp.End_Client__c
AND Parent.Parent.Parent.ParentId IN :accountIds)
ORDER By Name
]


Can anyone shed some light on what is going on here?







apex soql error






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked yesterday









SFDC NeufSFDC Neuf

758522




758522












  • How many items are in your Set<Id>? I can't repo this with 50.

    – battery.cord
    yesterday











  • Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.

    – battery.cord
    yesterday











  • @battery.cord see my answer below. The issue had to do with the accountIds set containing only the excluded opp.AccountId

    – SFDC Neuf
    yesterday

















  • How many items are in your Set<Id>? I can't repo this with 50.

    – battery.cord
    yesterday











  • Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.

    – battery.cord
    yesterday











  • @battery.cord see my answer below. The issue had to do with the accountIds set containing only the excluded opp.AccountId

    – SFDC Neuf
    yesterday
















How many items are in your Set<Id>? I can't repo this with 50.

– battery.cord
yesterday





How many items are in your Set<Id>? I can't repo this with 50.

– battery.cord
yesterday













Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.

– battery.cord
yesterday





Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.

– battery.cord
yesterday













@battery.cord see my answer below. The issue had to do with the accountIds set containing only the excluded opp.AccountId

– SFDC Neuf
yesterday





@battery.cord see my answer below. The issue had to do with the accountIds set containing only the excluded opp.AccountId

– SFDC Neuf
yesterday










2 Answers
2






active

oldest

votes


















4














After a bit of investigation with explicitly stated IDs, I think I found the unique issue that causes the error, and it can be handled more elegantly than my workaround.



Upon further investigation, the error is only happening when accountIds contains only opp.AccountId.



This fails:



[
SELECT Name
FROM Account
WHERE Id != '0014000000SQyVGAA1'
AND Id != null
AND (
Id IN ('0014000000SQyVGAA1')
OR ParentId IN ('0014000000SQyVGAA1')
OR Parent.ParentId IN ('0014000000SQyVGAA1')
OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
)
ORDER By Name
]


This succeeds:



[
SELECT Name
FROM Account
WHERE Id != '0014000000SQyVGAA1'
AND Id != null
AND (
ParentId IN ('0014000000SQyVGAA1')
OR Parent.ParentId IN ('0014000000SQyVGAA1')
OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
)
ORDER By Name
]


And this also succeeds:



[
SELECT Name
FROM Account
WHERE Id != '0014000000SQyVGAA1'
AND Id != null
AND (
Id IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
OR ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
OR Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
OR Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
OR Parent.Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
)
ORDER By Name
]


So the it appears the parser has a hard time dealing with the contradictory inclusion statements. I can create a second set to eliminate the issue.



One last thing - this succeeds:



[
SELECT Name
FROM Account
WHERE Id != '0014000000SQyVGAA1'
AND Id != null
AND (
Id IN ('0014000000SQyVGAA1')
OR Parent.ParentId IN ('0014000000SQyVGAA1')
)
ORDER By Name
]


But this fails:



[
SELECT Name
FROM Account
WHERE Id != '0014000000SQyVGAA1'
AND Id != null
AND (
Id IN ('0014000000SQyVGAA1')
OR ParentId IN ('0014000000SQyVGAA1')
OR Parent.ParentId IN ('0014000000SQyVGAA1')
)
ORDER By Name
]


So it appears that in order to cause the error, there needs to be both the contradictory statement and at least 2 other inclusion statements within the OR.






share|improve this answer
































    0














    Anecdotally, This query runs fine (via the developer consoles query editor) on one of my sandboxes:



    SELECT Name, ID
    FROM Account
    WHERE Id != ''
    AND Id != ''
    AND (
    Id IN ('')
    OR ParentId IN ('')
    OR Parent.ParentId IN ('')
    OR Parent.Parent.ParentId IN ('')
    OR Parent.Parent.Parent.ParentId IN ('')
    )
    ORDER By Name


    Using static id lists also works fine:



    SELECT Name, ID
    FROM Account
    WHERE Id != '001U000100qh0xJIAQ'
    AND Id != '001U000100qh0xJIAQ'
    AND (
    Id IN ('001U000000ASKzzIAH')
    OR ParentId IN ('001U000000ASKzzIAH')
    OR Parent.ParentId IN ('001U000000ASKzzIAH')
    OR Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
    OR Parent.Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
    )
    ORDER By Name


    Heres some code I used in the developer consoles execute anonymous code window:



    Id someId = '001U000100qh0xJIAQ';
    Id someOtherId = '001U000700qh0xJIAQ';

    Set<Id> accountIds = new Map<Id, Account>([SELECT Id FROM Account LIMIT 1000]).keySet();

    System.debug([
    SELECT Name
    FROM Account
    WHERE Id != :someId
    AND Id != :someOtherId
    AND (
    Id IN :accountIds
    OR ParentId IN :accountIds
    OR Parent.ParentId IN :accountIds
    OR Parent.Parent.ParentId IN :accountIds
    OR Parent.Parent.Parent.ParentId IN :accountIds
    )
    ORDER By Name
    ]);


    Even trying to look for 1000 items in 4 separate clauses I can't repo your error.




    Heres the results of running some queries on my org:



    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    )
    ORDER By Name



    No Results, but no crash.




    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name



    [object Object]: An unexpected error occurred. Please include this ErrorId if you contact support: 1038235189-47553 (730406045)




    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name



    No results




    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name



    No results.




    I have no idea why exactly it fails but it seems like adding that 3rd clause to the AND causes the failure. If it was just the ID != '' && Id == '' issue, I'd expect the first one to fail.






    share|improve this answer




















    • 2





      I think you meant "repro".

      – Adrian Larson
      yesterday






    • 1





      Exactly my findings. Always fun to find a weird edge case where things break.

      – SFDC Neuf
      yesterday






    • 2





      I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

      – Derek F
      yesterday











    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "459"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254657%2fsoql-query-causes-internal-salesforce-error%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    4














    After a bit of investigation with explicitly stated IDs, I think I found the unique issue that causes the error, and it can be handled more elegantly than my workaround.



    Upon further investigation, the error is only happening when accountIds contains only opp.AccountId.



    This fails:



    [
    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    OR ParentId IN ('0014000000SQyVGAA1')
    OR Parent.ParentId IN ('0014000000SQyVGAA1')
    OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name
    ]


    This succeeds:



    [
    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    ParentId IN ('0014000000SQyVGAA1')
    OR Parent.ParentId IN ('0014000000SQyVGAA1')
    OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name
    ]


    And this also succeeds:



    [
    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
    OR ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
    OR Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
    OR Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
    OR Parent.Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
    )
    ORDER By Name
    ]


    So the it appears the parser has a hard time dealing with the contradictory inclusion statements. I can create a second set to eliminate the issue.



    One last thing - this succeeds:



    [
    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    OR Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name
    ]


    But this fails:



    [
    SELECT Name
    FROM Account
    WHERE Id != '0014000000SQyVGAA1'
    AND Id != null
    AND (
    Id IN ('0014000000SQyVGAA1')
    OR ParentId IN ('0014000000SQyVGAA1')
    OR Parent.ParentId IN ('0014000000SQyVGAA1')
    )
    ORDER By Name
    ]


    So it appears that in order to cause the error, there needs to be both the contradictory statement and at least 2 other inclusion statements within the OR.






    share|improve this answer





























      4














      After a bit of investigation with explicitly stated IDs, I think I found the unique issue that causes the error, and it can be handled more elegantly than my workaround.



      Upon further investigation, the error is only happening when accountIds contains only opp.AccountId.



      This fails:



      [
      SELECT Name
      FROM Account
      WHERE Id != '0014000000SQyVGAA1'
      AND Id != null
      AND (
      Id IN ('0014000000SQyVGAA1')
      OR ParentId IN ('0014000000SQyVGAA1')
      OR Parent.ParentId IN ('0014000000SQyVGAA1')
      OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
      OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
      )
      ORDER By Name
      ]


      This succeeds:



      [
      SELECT Name
      FROM Account
      WHERE Id != '0014000000SQyVGAA1'
      AND Id != null
      AND (
      ParentId IN ('0014000000SQyVGAA1')
      OR Parent.ParentId IN ('0014000000SQyVGAA1')
      OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
      OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
      )
      ORDER By Name
      ]


      And this also succeeds:



      [
      SELECT Name
      FROM Account
      WHERE Id != '0014000000SQyVGAA1'
      AND Id != null
      AND (
      Id IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
      OR ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
      OR Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
      OR Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
      OR Parent.Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
      )
      ORDER By Name
      ]


      So the it appears the parser has a hard time dealing with the contradictory inclusion statements. I can create a second set to eliminate the issue.



      One last thing - this succeeds:



      [
      SELECT Name
      FROM Account
      WHERE Id != '0014000000SQyVGAA1'
      AND Id != null
      AND (
      Id IN ('0014000000SQyVGAA1')
      OR Parent.ParentId IN ('0014000000SQyVGAA1')
      )
      ORDER By Name
      ]


      But this fails:



      [
      SELECT Name
      FROM Account
      WHERE Id != '0014000000SQyVGAA1'
      AND Id != null
      AND (
      Id IN ('0014000000SQyVGAA1')
      OR ParentId IN ('0014000000SQyVGAA1')
      OR Parent.ParentId IN ('0014000000SQyVGAA1')
      )
      ORDER By Name
      ]


      So it appears that in order to cause the error, there needs to be both the contradictory statement and at least 2 other inclusion statements within the OR.






      share|improve this answer



























        4












        4








        4







        After a bit of investigation with explicitly stated IDs, I think I found the unique issue that causes the error, and it can be handled more elegantly than my workaround.



        Upon further investigation, the error is only happening when accountIds contains only opp.AccountId.



        This fails:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000SQyVGAA1')
        OR ParentId IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        This succeeds:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        ParentId IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        And this also succeeds:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR Parent.Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        So the it appears the parser has a hard time dealing with the contradictory inclusion statements. I can create a second set to eliminate the issue.



        One last thing - this succeeds:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        But this fails:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000SQyVGAA1')
        OR ParentId IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        So it appears that in order to cause the error, there needs to be both the contradictory statement and at least 2 other inclusion statements within the OR.






        share|improve this answer















        After a bit of investigation with explicitly stated IDs, I think I found the unique issue that causes the error, and it can be handled more elegantly than my workaround.



        Upon further investigation, the error is only happening when accountIds contains only opp.AccountId.



        This fails:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000SQyVGAA1')
        OR ParentId IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        This succeeds:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        ParentId IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        And this also succeeds:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        OR Parent.Parent.Parent.ParentId IN ('0014000000VqDVWAA3','0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        So the it appears the parser has a hard time dealing with the contradictory inclusion statements. I can create a second set to eliminate the issue.



        One last thing - this succeeds:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        But this fails:



        [
        SELECT Name
        FROM Account
        WHERE Id != '0014000000SQyVGAA1'
        AND Id != null
        AND (
        Id IN ('0014000000SQyVGAA1')
        OR ParentId IN ('0014000000SQyVGAA1')
        OR Parent.ParentId IN ('0014000000SQyVGAA1')
        )
        ORDER By Name
        ]


        So it appears that in order to cause the error, there needs to be both the contradictory statement and at least 2 other inclusion statements within the OR.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited yesterday

























        answered yesterday









        SFDC NeufSFDC Neuf

        758522




        758522























            0














            Anecdotally, This query runs fine (via the developer consoles query editor) on one of my sandboxes:



            SELECT Name, ID
            FROM Account
            WHERE Id != ''
            AND Id != ''
            AND (
            Id IN ('')
            OR ParentId IN ('')
            OR Parent.ParentId IN ('')
            OR Parent.Parent.ParentId IN ('')
            OR Parent.Parent.Parent.ParentId IN ('')
            )
            ORDER By Name


            Using static id lists also works fine:



            SELECT Name, ID
            FROM Account
            WHERE Id != '001U000100qh0xJIAQ'
            AND Id != '001U000100qh0xJIAQ'
            AND (
            Id IN ('001U000000ASKzzIAH')
            OR ParentId IN ('001U000000ASKzzIAH')
            OR Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            )
            ORDER By Name


            Heres some code I used in the developer consoles execute anonymous code window:



            Id someId = '001U000100qh0xJIAQ';
            Id someOtherId = '001U000700qh0xJIAQ';

            Set<Id> accountIds = new Map<Id, Account>([SELECT Id FROM Account LIMIT 1000]).keySet();

            System.debug([
            SELECT Name
            FROM Account
            WHERE Id != :someId
            AND Id != :someOtherId
            AND (
            Id IN :accountIds
            OR ParentId IN :accountIds
            OR Parent.ParentId IN :accountIds
            OR Parent.Parent.ParentId IN :accountIds
            OR Parent.Parent.Parent.ParentId IN :accountIds
            )
            ORDER By Name
            ]);


            Even trying to look for 1000 items in 4 separate clauses I can't repo your error.




            Heres the results of running some queries on my org:



            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No Results, but no crash.




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            [object Object]: An unexpected error occurred. Please include this ErrorId if you contact support: 1038235189-47553 (730406045)




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results.




            I have no idea why exactly it fails but it seems like adding that 3rd clause to the AND causes the failure. If it was just the ID != '' && Id == '' issue, I'd expect the first one to fail.






            share|improve this answer




















            • 2





              I think you meant "repro".

              – Adrian Larson
              yesterday






            • 1





              Exactly my findings. Always fun to find a weird edge case where things break.

              – SFDC Neuf
              yesterday






            • 2





              I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

              – Derek F
              yesterday
















            0














            Anecdotally, This query runs fine (via the developer consoles query editor) on one of my sandboxes:



            SELECT Name, ID
            FROM Account
            WHERE Id != ''
            AND Id != ''
            AND (
            Id IN ('')
            OR ParentId IN ('')
            OR Parent.ParentId IN ('')
            OR Parent.Parent.ParentId IN ('')
            OR Parent.Parent.Parent.ParentId IN ('')
            )
            ORDER By Name


            Using static id lists also works fine:



            SELECT Name, ID
            FROM Account
            WHERE Id != '001U000100qh0xJIAQ'
            AND Id != '001U000100qh0xJIAQ'
            AND (
            Id IN ('001U000000ASKzzIAH')
            OR ParentId IN ('001U000000ASKzzIAH')
            OR Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            )
            ORDER By Name


            Heres some code I used in the developer consoles execute anonymous code window:



            Id someId = '001U000100qh0xJIAQ';
            Id someOtherId = '001U000700qh0xJIAQ';

            Set<Id> accountIds = new Map<Id, Account>([SELECT Id FROM Account LIMIT 1000]).keySet();

            System.debug([
            SELECT Name
            FROM Account
            WHERE Id != :someId
            AND Id != :someOtherId
            AND (
            Id IN :accountIds
            OR ParentId IN :accountIds
            OR Parent.ParentId IN :accountIds
            OR Parent.Parent.ParentId IN :accountIds
            OR Parent.Parent.Parent.ParentId IN :accountIds
            )
            ORDER By Name
            ]);


            Even trying to look for 1000 items in 4 separate clauses I can't repo your error.




            Heres the results of running some queries on my org:



            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No Results, but no crash.




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            [object Object]: An unexpected error occurred. Please include this ErrorId if you contact support: 1038235189-47553 (730406045)




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results.




            I have no idea why exactly it fails but it seems like adding that 3rd clause to the AND causes the failure. If it was just the ID != '' && Id == '' issue, I'd expect the first one to fail.






            share|improve this answer




















            • 2





              I think you meant "repro".

              – Adrian Larson
              yesterday






            • 1





              Exactly my findings. Always fun to find a weird edge case where things break.

              – SFDC Neuf
              yesterday






            • 2





              I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

              – Derek F
              yesterday














            0












            0








            0







            Anecdotally, This query runs fine (via the developer consoles query editor) on one of my sandboxes:



            SELECT Name, ID
            FROM Account
            WHERE Id != ''
            AND Id != ''
            AND (
            Id IN ('')
            OR ParentId IN ('')
            OR Parent.ParentId IN ('')
            OR Parent.Parent.ParentId IN ('')
            OR Parent.Parent.Parent.ParentId IN ('')
            )
            ORDER By Name


            Using static id lists also works fine:



            SELECT Name, ID
            FROM Account
            WHERE Id != '001U000100qh0xJIAQ'
            AND Id != '001U000100qh0xJIAQ'
            AND (
            Id IN ('001U000000ASKzzIAH')
            OR ParentId IN ('001U000000ASKzzIAH')
            OR Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            )
            ORDER By Name


            Heres some code I used in the developer consoles execute anonymous code window:



            Id someId = '001U000100qh0xJIAQ';
            Id someOtherId = '001U000700qh0xJIAQ';

            Set<Id> accountIds = new Map<Id, Account>([SELECT Id FROM Account LIMIT 1000]).keySet();

            System.debug([
            SELECT Name
            FROM Account
            WHERE Id != :someId
            AND Id != :someOtherId
            AND (
            Id IN :accountIds
            OR ParentId IN :accountIds
            OR Parent.ParentId IN :accountIds
            OR Parent.Parent.ParentId IN :accountIds
            OR Parent.Parent.Parent.ParentId IN :accountIds
            )
            ORDER By Name
            ]);


            Even trying to look for 1000 items in 4 separate clauses I can't repo your error.




            Heres the results of running some queries on my org:



            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No Results, but no crash.




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            [object Object]: An unexpected error occurred. Please include this ErrorId if you contact support: 1038235189-47553 (730406045)




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results.




            I have no idea why exactly it fails but it seems like adding that 3rd clause to the AND causes the failure. If it was just the ID != '' && Id == '' issue, I'd expect the first one to fail.






            share|improve this answer















            Anecdotally, This query runs fine (via the developer consoles query editor) on one of my sandboxes:



            SELECT Name, ID
            FROM Account
            WHERE Id != ''
            AND Id != ''
            AND (
            Id IN ('')
            OR ParentId IN ('')
            OR Parent.ParentId IN ('')
            OR Parent.Parent.ParentId IN ('')
            OR Parent.Parent.Parent.ParentId IN ('')
            )
            ORDER By Name


            Using static id lists also works fine:



            SELECT Name, ID
            FROM Account
            WHERE Id != '001U000100qh0xJIAQ'
            AND Id != '001U000100qh0xJIAQ'
            AND (
            Id IN ('001U000000ASKzzIAH')
            OR ParentId IN ('001U000000ASKzzIAH')
            OR Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            OR Parent.Parent.Parent.ParentId IN ('001U000000ASKzzIAH')
            )
            ORDER By Name


            Heres some code I used in the developer consoles execute anonymous code window:



            Id someId = '001U000100qh0xJIAQ';
            Id someOtherId = '001U000700qh0xJIAQ';

            Set<Id> accountIds = new Map<Id, Account>([SELECT Id FROM Account LIMIT 1000]).keySet();

            System.debug([
            SELECT Name
            FROM Account
            WHERE Id != :someId
            AND Id != :someOtherId
            AND (
            Id IN :accountIds
            OR ParentId IN :accountIds
            OR Parent.ParentId IN :accountIds
            OR Parent.Parent.ParentId IN :accountIds
            OR Parent.Parent.Parent.ParentId IN :accountIds
            )
            ORDER By Name
            ]);


            Even trying to look for 1000 items in 4 separate clauses I can't repo your error.




            Heres the results of running some queries on my org:



            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No Results, but no crash.




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            [object Object]: An unexpected error occurred. Please include this ErrorId if you contact support: 1038235189-47553 (730406045)




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results




            SELECT Name
            FROM Account
            WHERE Id != '0014000000SQyVGAA1'
            AND Id != null
            AND (
            Id IN ('0014000000SQyVGAA1')
            OR Parent.Parent.ParentId IN ('0014000000SQyVGAA1')
            )
            ORDER By Name



            No results.




            I have no idea why exactly it fails but it seems like adding that 3rd clause to the AND causes the failure. If it was just the ID != '' && Id == '' issue, I'd expect the first one to fail.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited yesterday

























            answered yesterday









            battery.cordbattery.cord

            6,98251746




            6,98251746







            • 2





              I think you meant "repro".

              – Adrian Larson
              yesterday






            • 1





              Exactly my findings. Always fun to find a weird edge case where things break.

              – SFDC Neuf
              yesterday






            • 2





              I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

              – Derek F
              yesterday













            • 2





              I think you meant "repro".

              – Adrian Larson
              yesterday






            • 1





              Exactly my findings. Always fun to find a weird edge case where things break.

              – SFDC Neuf
              yesterday






            • 2





              I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

              – Derek F
              yesterday








            2




            2





            I think you meant "repro".

            – Adrian Larson
            yesterday





            I think you meant "repro".

            – Adrian Larson
            yesterday




            1




            1





            Exactly my findings. Always fun to find a weird edge case where things break.

            – SFDC Neuf
            yesterday





            Exactly my findings. Always fun to find a weird edge case where things break.

            – SFDC Neuf
            yesterday




            2




            2





            I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

            – Derek F
            yesterday






            I dunno, the image of showing up to someone else's place of work, putting some chains around the workstation, tying it to a car, and gunning it to "repo" the error sounds like pretty good entertainment to me. :p

            – Derek F
            yesterday


















            draft saved

            draft discarded
















































            Thanks for contributing an answer to Salesforce Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254657%2fsoql-query-causes-internal-salesforce-error%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Sum ergo cogito? 1 nng

            419 nièngy_Soadمي 19bal1.5o_g

            Queiggey Chernihivv 9NnOo i Zw X QqKk LpB