function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Timmy AhluwaliaTimmy Ahluwalia 

Invalid Query Locator message

Hi,
The code is pasted below i am getting Invalid Qury Locator. Please advise.
Thanks
for (Branch__c b : (List<Branch__c>) batch) {
            groups.put(b.Id, new Group(
                Name = 'Branch: ' + b.Name,
                Type = 'Regular',
                DoesIncludeBosses = false,
                DeveloperName = b.Id
              
    
            ));
                system.debug(batch);// Branch Id
            for (AADB_Associate__c a : b.AADB_Associates__r) {
                if (users.containsKey(a.Associate_ID__c)) {
                     system.debug(a.Associate_ID__c);
                    validGroupMembers.add(b.Id + '|' + users.get(a.Associate_ID__c));
                      system.debug(b.Id + '|' + users.get(a.Associate_ID__c));
                }
                  system.debug(a);
            }
          
        }
Raj VakatiRaj Vakati
Can u give complete code .. the issue is not becaus of this code and becasue of the start method i guess 
Timmy AhluwaliaTimmy Ahluwalia
global class BranchPublicGroupsBatchable implements Database.Batchable<SObject>, Database.Stateful {
    private String query;
    private Map<String, Id> users;
    private Set<Id> groupIds;

    global BranchPublicGroupsBatchable(String query) {
        this.query = query;
        if (this.query == null) {
            this.query = 'SELECT Id, Name, (SELECT Associate_ID__c FROM AADB_Associates__r WHERE Associate_ID__c<>NULL) FROM Branch__c';
        }
		system.debug(query);
        users = new Map<String, Id>();
        for (User u : [SELECT Id, Associate_ID__c FROM User WHERE Profile.UserType = 'Standard' AND Associate_ID__c<>NULL]) {
            users.put(u.Associate_ID__c, u.Id);
        }
        
        groupIds = new Set<Id>();
    }

    global Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator(query);
    }


    global void execute(Database.BatchableContext bc, List<SObject> batch) {
        List<GroupMember> newGroupMembers = new List<GroupMember>();
        List<GroupMember> deleteGroupMembers = new List<GroupMember>();
        Set<String> validGroupMembers = new Set<String>();
        Map<Id, Group> groups = new Map<Id, Group>();
		system.debug(batch);
        for (Branch__c b : (List<Branch__c>) batch) {
            groups.put(b.Id, new Group(
                Name = 'Branch: ' + b.Name,
                Type = 'Regular',
                DoesIncludeBosses = false,
                DeveloperName = b.Id
            ));

            for (AADB_Associate__c a : b.AADB_Associates__r) {
                if (users.containsKey(a.Associate_ID__c)) {
                    validGroupMembers.add(b.Id + '|' + users.get(a.Associate_ID__c));
                }
                system.debug(a.Associate_ID__c);
            }
        }

        for (Group g : [SELECT Id, DeveloperName, (SELECT Id, UserOrGroupId FROM GroupMembers) FROM Group WHERE Type='Regular' AND DeveloperName IN :groups.keySet()]) {
            groups.get(g.DeveloperName).Id = g.Id;

            for (GroupMember m : g.GroupMembers) {
                if (validGroupMembers.remove(g.DeveloperName + '|' + m.UserOrGroupId) == null) {
                    deleteGroupMembers.add(m);
                }
            }
        }

        upsert groups.values();
        groupIds.addAll(groups.keySet());

        for (String s : validGroupMembers) {
            newGroupMembers.add(new GroupMember(
                GroupId = groups.get(s.left(18)).Id,
                UserOrGroupId = s.right(18)
            ));
        }

        if (!newGroupMembers.isEmpty()) {
            Database.upsert(newGroupMembers, false);
        }
        if (!newGroupMembers.isEmpty()) {
            Database.delete(deleteGroupMembers, false);
        }
    }

 
Timmy AhluwaliaTimmy Ahluwalia
Thanks
Timmy AhluwaliaTimmy Ahluwalia
Code is copied please look into the error is Invalid Query loacator on line # 39-41.
Thanks
Raj VakatiRaj Vakati
Need some more info 


Can you please run this query in developer consoel and see whether you are getting data or not  ..  i am thinining this Query is not correct 
 
SELECT Id, Name, (SELECT Associate_ID__c FROM AADB_Associates__r WHERE Associate_ID__c<>NULL) FROM Branch__c

 
Timmy AhluwaliaTimmy Ahluwalia
This query is getting data. Like 39-41 I am getting msg invalid query.
Raj VakatiRaj Vakati
Are you invoking thie batch using constructor ?? please give me the code on how you are calling this code 
and AADB_Associates__r is not part of the query so  i am guess its not passed correctly to query 

BranchPublicGroupsBatchable(string query)