The implicit query is only set up if there’s a usage of an IJobEntity that does not pass a query parameter. If an IJobEntity type is only scheduled with an explicit passed query, the default query for that job won’t be allocated.
// default query created at system creation
jobEntity.Schedule();
// default query not created, passed query used
jobEntity.Schedule(query);
You need to individually make sure that your own queries contain all the component types retrieved from the chunk. You’ll get an error if you try to pass a query missing some of the necessary components.
SystemState.GetEntityQuery returns the same EntityQuery for different exactly matching queries within that system.
EntityManager.CreateEntityQuery creates an allocation for a new EntityQuery (this allows for adding filters on top of the component rules) but reuses existing underlying query data for an exactly matching query if it exists, or builds the full query data otherwise.