Вот такая квери:
List<MyObject__c> myList = [SELECT name, (SELECT name, Long_Text_Field__c FROM Child_object__c) FROM MyObject__c WHERE ID =:myID];
Внезапно получаем:
Aggregate query has too many rows for direct assignment, use FOR loop
при этом данный запрос должен вернуть всего одну родительскую запись с 65 дочерними. Не много, не правда ли?
начинаем копаться и выясняем, что ошибку провоцирует поле Long_Text_Field__типа Long Text Area(131072). Применительно к данному случаю у каждой записи в этом поле сидит значение размером примерно в 1к знаков. И все равно это не так и много. Так что не понятно, почему там "too many rows "...
пришлось кверить дочерние записи отдельно, что тоже норм, но ощущение некоторого непонимания и недовольства осталось, так как это поле (его тип только что поменяли с Текст(255) на Long Text Area) еще где-нибудь вот так вот "выбьет" уже оттестированный код, и поди пойми, почему так произошло...
Вот такая квери: [code] List<MyObject__c> myList = [SELECT name, (SELECT name, Long_Text_Field__c FROM Child_object__c) FROM MyObject__c WHERE ID =:myID];[/code] Внезапно получаем: [i]Aggregate query has too many rows for direct assignment, use FOR loop[/i] при этом данный запрос должен вернуть всего одну родительскую запись с 65 дочерними. Не много, не правда ли? начинаем копаться и выясняем, что ошибку провоцирует поле Long_Text_Field__типа Long Text Area(131072). Применительно к данному случаю у каждой записи в этом поле сидит значение размером примерно в 1к знаков. И все равно это не так и много. Так что не понятно, почему там "too many rows "... пришлось кверить дочерние записи отдельно, что тоже норм, но ощущение некоторого непонимания и недовольства осталось, так как это поле (его тип только что поменяли с Текст(255) на Long Text Area) еще где-нибудь вот так вот "выбьет" уже оттестированный код, и поди пойми, почему так произошло...
https://help.salesforce.com/apex/HTViewSolution?id=000002531&language=en_US
http://opfocus.com/blog/aggregate-query-has-too-many-rows-for-direct-assignment-use-for-loop/
Суть не в том, сколько данных в поле, а в его размере и способе хранения такого количества данных, т.е. в объеме выделяемой памяти для 1 записи.
К примеру, n записей в СФ занимают 4gb, а они же выгруженные в формате csv - 400mb.
Естественно это всего лишь мои догадки, с ошибкой не сталкивался.
https://help.salesforce.com/apex/HTViewSolution?id=000002531&language=en_US http://opfocus.com/blog/aggregate-query-has-too-many-rows-for-direct-assignment-use-for-loop/ Суть не в том, сколько данных в поле, а в его размере и способе хранения такого количества данных, т.е. в объеме выделяемой памяти для 1 записи. К примеру, n записей в СФ занимают 4gb, а они же выгруженные в формате csv - 400mb. Естественно это всего лишь мои догадки, с ошибкой не сталкивался.
нет сомнений, что так оно и есть.
непонятно, почему сообщение об ошибке не просто неинформативное, а даже запутывающее..
[quote="Gres"]Суть не в том, сколько данных в поле, а в его размере и способе хранения такого количества данных, т.е. в объеме выделяемой памяти для 1 записи.[/quote] нет сомнений, что так оно и есть. непонятно, почему сообщение об ошибке не просто неинформативное, а даже запутывающее..