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
Showing mass murder in a kid's book
Echo with obfuscation
Isometric embedding of a genus g surface
If the only attacker is removed from combat, is a creature still counted as having attacked this turn?
Animation: customize bounce interpolation
Why is the principal energy of an electron lower for excited electrons in a higher energy state?
Why didn’t Eve recognize the little cockroach as a living organism?
How much do grades matter for a future academia position?
Determining multivariate least squares with constraint
Why is the sun approximated as a black body at ~ 5800 K?
Adding up numbers in Portuguese is strange
Personal or impersonal in a technical resume
Grepping string, but include all non-blank lines following each grep match
Purpose of creating non root user
Cumulative Sum using Java 8 stream API
Do people actually use the word "kaputt" in conversation?
Can I run 125khz RF circuit on a breadboard?
Alignment of six matrices
What's the name of the logical fallacy where a debater extends a statement far beyond the original statement to make it true?
"Oh no!" in Latin
Can I say "fingers" when referring to toes?
Why does the Persian emissary display a string of crowned skulls?
Proving an identity involving cross products and coplanar vectors
Proving a complicated language is not a CFL
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
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
add a comment |
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
How many items are in yourSet<Id>
? I can't repo this with 50.
– battery.cord
2 hours ago
Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.
– battery.cord
2 hours ago
@battery.cord see my answer below. The issue had to do with theaccountIds
set containing only the excludedopp.AccountId
– SFDC Neuf
1 hour ago
add a comment |
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
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
apex soql error
asked 2 hours ago
SFDC NeufSFDC Neuf
743522
743522
How many items are in yourSet<Id>
? I can't repo this with 50.
– battery.cord
2 hours ago
Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.
– battery.cord
2 hours ago
@battery.cord see my answer below. The issue had to do with theaccountIds
set containing only the excludedopp.AccountId
– SFDC Neuf
1 hour ago
add a comment |
How many items are in yourSet<Id>
? I can't repo this with 50.
– battery.cord
2 hours ago
Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.
– battery.cord
2 hours ago
@battery.cord see my answer below. The issue had to do with theaccountIds
set containing only the excludedopp.AccountId
– SFDC Neuf
1 hour ago
How many items are in your
Set<Id>
? I can't repo this with 50.– battery.cord
2 hours ago
How many items are in your
Set<Id>
? I can't repo this with 50.– battery.cord
2 hours ago
Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.
– battery.cord
2 hours ago
Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.
– battery.cord
2 hours ago
@battery.cord see my answer below. The issue had to do with the
accountIds
set containing only the excluded opp.AccountId
– SFDC Neuf
1 hour ago
@battery.cord see my answer below. The issue had to do with the
accountIds
set containing only the excluded opp.AccountId
– SFDC Neuf
1 hour ago
add a comment |
2 Answers
2
active
oldest
votes
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.
add a comment |
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.
2
I think you meant "repro".
– Adrian Larson♦
1 hour ago
1
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
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
1 hour ago
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
add a comment |
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.
add a comment |
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.
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.
edited 1 hour ago
answered 1 hour ago
SFDC NeufSFDC Neuf
743522
743522
add a comment |
add a comment |
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.
2
I think you meant "repro".
– Adrian Larson♦
1 hour ago
1
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
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
1 hour ago
add a comment |
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.
2
I think you meant "repro".
– Adrian Larson♦
1 hour ago
1
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
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
1 hour ago
add a comment |
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.
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.
edited 1 hour ago
answered 2 hours ago
battery.cordbattery.cord
6,97351746
6,97351746
2
I think you meant "repro".
– Adrian Larson♦
1 hour ago
1
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
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
1 hour ago
add a comment |
2
I think you meant "repro".
– Adrian Larson♦
1 hour ago
1
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
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
1 hour ago
2
2
I think you meant "repro".
– Adrian Larson♦
1 hour ago
I think you meant "repro".
– Adrian Larson♦
1 hour ago
1
1
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
Exactly my findings. Always fun to find a weird edge case where things break.
– SFDC Neuf
1 hour ago
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
1 hour ago
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
1 hour ago
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
How many items are in your
Set<Id>
? I can't repo this with 50.– battery.cord
2 hours ago
Can you provide something that runs in the developer console that crashes? I'm unable to repo it on my org.
– battery.cord
2 hours ago
@battery.cord see my answer below. The issue had to do with the
accountIds
set containing only the excludedopp.AccountId
– SFDC Neuf
1 hour ago