Typeorm: Performance of query with many `relations`

Created on 20 Mar 2019  路  34Comments  路  Source: typeorm/typeorm

Issue type:

[X] question
[ ] bug report
[ ] feature request
[ ] documentation issue

Database system/driver:

[ ] cordova
[ ] mongodb
[ ] mssql
[ ] mysql / mariadb
[ ] oracle
[X] postgres
[ ] cockroachdb
[ ] sqlite
[ ] sqljs
[ ] react-native
[ ] expo

TypeORM version:

[X] latest
[ ] @next
[ ] 0.x.x (or put your version here)

Steps to reproduce or a small repository showing the problem:

So I'm having performance trouble with a query that fetches a lot of relations:

const user = await User.findOne(id, {
    relations: [
      'address',
      'shippingAddress',
      'practice',
      'allergies',
      'vaccines',
      'problems',
      'relationships',
      'relationships.user1', // returns another User
      'relationships.user2',  // returns another User
    ]
  });

This query takes nearly 2 seconds to run in my Postgres DB (Google Cloud). Here is some additional info:

  • I'm not factoring in round-trip latency. This is the actual runtime of the query in the db.
  • All of these are OneToOne or OneToMany relations.
  • The User entity has a lot of scalar values (40).
  • The generated query is really long
  • I've added an index on every OneToOne and ManyToOne relation (Book.user, etc)
  • I would expect this query to take a while if there was a lot of data in the database, but it's nearly empty. I'm still early in development and there are only a few rows in each table. I'm worried that this query will slow down further when there's a sizable amount of data.
  • I tried taking out each relation one-by-one and found that each additional OneToMany relation adds roughly 200ms to the runtime. The nested relations (ie relationships.userX) add about 500ms.

Is this just a SQL limitation, or is there something obvious I'm forgetting to do here?

query builder postgres question

Most helpful comment

This is a pretty big "gotcha" of TypeORM. I built an app recently under the assumption I would be able to easily use eager loading to build up the necessary nested JSON for my app's data, and found early on that having 5-6 relationships off a base entity will quickly bring Node / TypeORM to its knees. I have maybe 50 rows across 7 tables, and because of the way the eager loading is done, my query ends up generating 500k+ rows and killing my Node server (max heap size reached).

I guess I'll have to figure out a way of doing the query and joins manually instead, which kinda defeats the purpose of using the ORM in the first place.

EDIT: I have a dynamic dataController which takes in an entity name and runs the TypeORM repo.find() (with where clause) to get my entities. I hacked something together (room for improvement) that keeps this dynamic nature:

async loadRelationships(repo: Repository<any>, relationships: string[], baseEntities?: any[]) {
    if (!baseEntities) {
        baseEntities = await repo.find({}); 
    }

    // Map the base entities into an "id" array, then find all relations based on these ids
    // Wait for all sub finds to complete and spread them into a res object
        const { ...res } = await Promise.all(
            relationships.map((relation) => {
                return repo.findByIds(
                    baseEntities.map((entity) => {
                        if (!entity || !entity.id) return;
                        return entity.id;
                    }),
                    {
                        select: ['id'],
                        relations: [relation]
                    }
                );
            })
        );

    // Loop over every sub find result, find the "full entity" we're trying to build from our base entities,
    // and attach the corresponding related entites to it (not a "pure" function)
    Object.keys(res).forEach(i => {
        res[i].forEach(r => {
            const fullEntity = baseEntities.find(e => e.id === r.id);
            if (fullEntity) {
                const relationship = relationships[i];
                fullEntity[relationship] = r[relationship];
            }
        });
    });
}

Essentially I just run the base entity query with one relationship at a time, and then append the sub table results onto the base entities'; it could be even more succinct if you only anticipate having one base entity.

This "hack" is a HUGE improvement. Whereas I was crashing my Nodejs server after 10+ seconds of querying before, now I am able to query and build my nested JSON in _107ms_ .

Now I just need to figure out where to store my relationship string arrays. Could do it on the model and then use the entity string name with reflection to get it, or have some static class that maps my entities to their expected relationships...

So far, I've included a relationships: string[] on my entity definitions, and simply putting the relationship names I want to load in this way here. I wonder if there's some way that we could detect if the eager: true option is set, and then the loadRelationships method would automatically detect and individually load these.

I've done some additional work for this to be recursive so it will find "sub-relations" and load them in as well, this requires additional metadata attached to the relationships array in my entity definitions. It's a bit more involved so let me know if anyone wants to see this!

EDIT 2: My implementation here

All 34 comments

This looks like an db optimization problem, that has nothing to do with TypeORM.
You have to make sure that all joined columns on target relations have indexes.

As you said relationships.userX is adding about 500ms, I'd bet you don't have an index on user.id.

@colinmcd94
Run generated query in pgAdmin(or whatever you're using) and run same query again but this time without DISTINCT and let us know how long it took.

I have the same issue. I am trying to fetch a big container entity by id with many nested relations (~26 total relations), and indeed the resulting query is huge (347 lines after formatting it). The query itself does not take long, just a bit over 1sec in my laptop, but it produces 98K rows due to its many left joins.

This makes its parsing really expensive, resulting in 35 sec before the result is returned by NestJS. No other operations are performed.

I would like the option to transform each relation to a lazy one on the fly for such cases, since individual loading of each relation would not result in more than 1 sec (tested). Perhaps something similar to loadEagerRelations as a flag.

Also having similar issues, I ran typeorm's generated query and it ran in a decent amount of time though the results were enormous (nearly 2mil rows).

In Node+Typeorm though, on an entity with many relations the node instance crashes because Typeorm creates a left join for everything (assuming it's attempting to prevent the N+1 problem) but due to the produced rows and columns it becomes unusable.

I made my own little helper function to lazy load relations on the fly (which means every query spawns n related queries), but I was wondering if there was anything built in to help resolve this?

@Nosfistis @wafs looks like problem with hydration. It would be great if you could make a reproduction data for the problem. I've hear that sometimes typeorm has performance problems with large recordsets, but I wasn't able to reproduce it on recent versions.

@wafs Could you paste your helper here(or describe what you want to achieve)? I'm not really sure what are you referring to as lazy loading on the fly.

@Kononnable Apologies if I wasn't clear.

Essentially I would like to pick my relations on the fly, eg: const item = entityManager.findOne(ItemEntity, id, {relations: ['a','b','c',...]}), however if item has a lot of relations it's creating a huge leftJoin query that returns at times nearly 2 million rows, which then Typeorm attempts to process and then crashes.

It would be nice if we could tell it to load each relation on its own query (or choose which ones you need lazy and which ones you need leftJoined) , for example if we could tell it something like:

entityManager.findOne(ItemEntity, id, {relations: [
    {strategy: 'multiQuery', columns: ['a','b','c',...]},
    {strategy: 'leftJoin', columns: ['d','e','f.g.h']}
]})

Currently I'm achieving this by using this little helper

// Caveats: Only supports top level relation, nested relations such as 'a.b.c' won't work.

export const loadLazyRelations = async (
  connection: Connection,
  entity: any,
  relations: string[],
): Promise<void> => {
  const meta = connection.getMetadata(entity.constructor.name);

  // Only attempt process matching columns
  const relationObjects = relations.reduce(
    (acc, name) => {
      const relation = meta.relations.find(
        relationMeta => relationMeta.propertyName === name,
      );
      if (relation) {
        acc.push({ name, relation });
      }

      return acc;
    },
    [] as Array<{ name: string; relation: RelationMetadata }>,
  );

  const loadedEntities = await Promise.all(
    relationObjects.map(async item => {
      const loadedEntity = await connection.relationLoader.load(
        item.relation,
        entity,
      );

      return {
        name: item.name,
        loadedEntity,
      };
    }),
  );

  loadedEntities.forEach(x => {
    Object.assign(entity, { [x.name]: x.loadedEntity });
  });
};

Then I have all the required relations loaded onto the entity when needed

I am facing the same issue and was looking if there is already some solution/option implemented in query builder that would run execute single query as multiple selects internally to reduce the number of rows that is produced by single query.
By reading the comments I now see that some people don't understand the problem so I wrote an example:

import { Column, Connection, createConnection, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn } from "typeorm";
import { MysqlConnectionOptions } from "typeorm/driver/mysql/MysqlConnectionOptions";

@Entity("size")
class SizeEntity {
    @PrimaryGeneratedColumn({ name: "id" })
    id: number;
    @Column("varchar", { nullable: false, length: 40, name: "name" })
    name: string;
}

@Entity("color")
class ColorEntity {
    @PrimaryGeneratedColumn({ name: "id" })
    id: number;
    @Column("varchar", { nullable: false, length: 40, name: "name" })
    name: string;
}

@Entity("shape")
class ShapeEntity {
    @PrimaryGeneratedColumn({ name: "id" })
    id: number;
    @Column("varchar", { nullable: false, length: 40, name: "name" })
    name: string;
}

@Entity("item")
class ItemEntity {
    @PrimaryGeneratedColumn({ name: "id" })
    id: number;
    @Column("varchar", { nullable: false, length: 40, name: "name" })
    name: string;
    @ManyToMany(type => SizeEntity)
    @JoinTable({ name: "item_sizes", joinColumn: { name: "item_id" }, inverseJoinColumn: { name: "size_id" } })
    sizes?: SizeEntity[];
    @ManyToMany(type => ColorEntity)
    @JoinTable({ name: "item_colors", joinColumn: { name: "item_id" }, inverseJoinColumn: { name: "color_id" } })
    colors?: ColorEntity[];
    @ManyToMany(type => ShapeEntity)
    @JoinTable({ name: "item_shapes", joinColumn: { name: "item_id" }, inverseJoinColumn: { name: "shape_id" } })
    shapes?: ShapeEntity[];
}

const connectionOptions: MysqlConnectionOptions = {
    // name: "source",
    type: "mysql",
    host: "localhost",
    port: 3306,
    username: "root",
    password: "",
    database: "test",
    synchronize: true,
    dropSchema: true,
    logging: false,
    entities: [
        SizeEntity,
        ColorEntity,
        ShapeEntity,
        ItemEntity,
    ]
} as MysqlConnectionOptions;

async function seed(con: Connection, count: number): Promise<void> {
    console.log(`seeding ${count} sizes, colors, shapes, items...`);
    const sizes: SizeEntity[] = [];
    const colors: ColorEntity[] = [];
    const shapes: ShapeEntity[] = [];
    for (let i = 1; i <= count; i++) {
        sizes.push({ id: i, name: `size ${i}` } as SizeEntity);
        colors.push({ id: i, name: `color ${i}` } as ColorEntity);
        shapes.push({ id: i, name: `shape ${i}` } as ShapeEntity);
    }
    const items: ItemEntity[] = [];
    for (let i = 1; i <= count; i++) {
        items.push({ id: i, name: `item ${i}`, sizes, colors, shapes } as ItemEntity);
    }
    await con.getRepository(SizeEntity).save(sizes);
    await con.getRepository(ColorEntity).save(colors);
    await con.getRepository(ShapeEntity).save(shapes);
    await con.getRepository(ItemEntity).save(items);
}

(async () => {
    console.log(`Connect to database...`);
    const con = await createConnection(connectionOptions);
    await seed(con, 10);

    const query = con.getRepository(ItemEntity)
        .createQueryBuilder("item")
        .leftJoinAndSelect("item.sizes", "size")
        .leftJoinAndSelect("item.colors", "color")
        .leftJoinAndSelect("item.shapes", "shapes");

    const data = await query.getRawAndEntities();

    console.log(`fetched ${data.entities.length} entities`);
    console.log(`fetched ${data.raw.length} raw records`);

    con.close();
})();

and the output of this code is:

Connect to database...
seeding 10 sizes, colors, shapes, items...
fetched 10 entities
fetched 10000 raw records

To get all the required data from single query 3 joins are added which produces 101010*10 rows just for 10 rows of items. This example works fine but for larger models and more records this is a problem.

When fetching single item I could manually write 4 queries to read all the data and merge then into single result, but I'm not sure how to do this easily for multiple items.

I have faced this issue and managed to work around it by fetching relations in parallel queries.
One place where i was not able to find a good solution is a repo.save() method.

When you have to create/update an entity which has a lot of relations using _save_ method, TypeOrm creates a big query with joins for all relation data, not just ids. Why is so? Cascades are not enabled.
These queries tend to last to long, more then 30s in some cases which is not acceptable... any workaround?

Just for the record, Sequelize provides a specific option for this, called separate: Boolean: https://sequelize.org/master/class/lib/model.js~Model.html

The description is:

If true, runs a separate query to fetch the associated instances, only supported for hasMany associations

Behind the scenes it merges the separate result sets in application.

Also @darko1979's explanation is quite nice.

Objection.js also offers options for dealing with this: https://vincit.github.io/objection.js/api/query-builder/eager-methods.html#eager

    // without the relations the query takes 50 ms, with 500 ms.
    return this.articleRepository.findOne(id, {
      relations: [
        'categories', 'topics', 'companies', 'userRoles', 'articleType'        
      ]      
    })

Query output:

SELECT `Article`.`id` AS `Article_id`, `Article`.`name` AS `Article_name`, `Article`.`regulation` AS `Article_regulation`, `Article`.`subtopic` AS `Article_subtopic`, `Article`.`notability` AS `Article_notability`, `Article`.`description` AS `Article_description`, `Article`.`descriptionShort` AS `Article_descriptionShort`, `Article`.`announcmentDate` AS `Article_announcmentDate`, `Article`.`validityDate` AS `Article_validityDate`, `Article`.`validityNote` AS `Article_validityNote`, `Article`.`relevantFromDate` AS `Article_relevantFromDate`, `Article`.`views` AS `Article_views`, `Article`.`isPublished` AS `Article_isPublished`, `Article`.`created` AS `Article_created`, `Article`.`modified` AS `Article_modified`, `Article`.`articleTypeId` AS `Article_articleTypeId`, `Article`.`articleStatusId` AS `Article_articleStatusId`, `Article`.`lawmakerId` AS `Article_lawmakerId`, `Article`.`countryId` AS `Article_countryId`, `Article`.`userId` AS `Article_userId`, `Article__categories`.`id` AS `Article__categories_id`, `Article__categories`.`name` AS `Article__categories_name`, `Article__categories`.`description` AS `Article__categories_description`, `Article__categories`.`created` AS `Article__categories_created`, `Article__categories`.`modified` AS `Article__categories_modified`, `Article__topics`.`id` AS `Article__topics_id`, `Article__topics`.`name` AS `Article__topics_name`, `Article__topics`.`description` AS `Article__topics_description`, `Article__topics`.`created` AS `Article__topics_created`, `Article__topics`.`modified` AS `Article__topics_modified`, `Article__companies`.`id` AS `Article__companies_id`, `Article__companies`.`name` AS `Article__companies_name`, `Article__companies`.`description` AS `Article__companies_description`, `Article__companies`.`address` AS `Article__companies_address`, `Article__companies`.`created` AS `Article__companies_created`, `Article__companies`.`modified` AS `Article__companies_modified`, `Article__userRoles`.`id` AS `Article__userRoles_id`, `Article__userRoles`.`name` AS `Article__userRoles_name`, `Article__userRoles`.`description` AS `Article__userRoles_description`, `Article__userRoles`.`created` AS `Article__userRoles_created`, `Article__userRoles`.`modified` AS `Article__userRoles_modified`, `Article__articleType`.`id` AS `Article__articleType_id`, `Article__articleType`.`name` AS `Article__articleType_name`, `Article__articleType`.`description` AS `Article__articleType_description`, `Article__articleType`.`created` AS `Article__articleType_created`, `Article__articleType`.`modified` AS `Article__articleType_modified` FROM `article` `Article` LEFT JOIN `article_categories_category` `Article_Article__categories` ON `Article_Article__categories`.`articleId`=`Article`.`id` LEFT JOIN `category` `Article__categories` ON `Article__categories`.`id`=`Article_Article__categories`.`categoryId`  LEFT JOIN `article_topics_topic` `Article_Article__topics` ON `Article_Article__topics`.`articleId`=`Article`.`id` LEFT JOIN `topic` `Article__topics` ON `Article__topics`.`id`=`Article_Article__topics`.`topicId`  LEFT JOIN `article_companies_company` `Article_Article__companies` ON `Article_Article__companies`.`articleId`=`Article`.`id` LEFT JOIN `company` `Article__companies` ON `Article__companies`.`id`=`Article_Article__companies`.`companyId`  LEFT JOIN `article_user_roles_user_role` `Article_Article__userRoles` ON `Article_Article__userRoles`.`articleId`=`Article`.`id` LEFT JOIN `user_role` `Article__userRoles` ON `Article__userRoles`.`id`=`Article_Article__userRoles`.`userRoleId`  LEFT JOIN `article_type` `Article__articleType` ON `Article__articleType`.`id`=`Article`.`articleTypeId` WHERE (`Article`.`id` IN (6)) AND `Article`.`id` IN (6) -- PARAMETERS: [6]

If I do a database select in DBeaver, the query takes 9 ms.

This is strange...

This hydration problem is pretty glaring... Can someone open this ticket back up so the team can take a look at it?

Any chance this could get some attention? Seems like a pretty major problem.
I have an entity that has a few relations. Fetching a single row with the relations takes 3-5 seconds. The query itself returns about 11,500 rows.

Sorry, I closed this because I switched away from TypeORM (...and SQL 馃檮).

@tpiecora I'd recommend following through on this suggestion and posting the results here. Then tag some of the folks above who expressed interest in solving this.

This is a pretty big "gotcha" of TypeORM. I built an app recently under the assumption I would be able to easily use eager loading to build up the necessary nested JSON for my app's data, and found early on that having 5-6 relationships off a base entity will quickly bring Node / TypeORM to its knees. I have maybe 50 rows across 7 tables, and because of the way the eager loading is done, my query ends up generating 500k+ rows and killing my Node server (max heap size reached).

I guess I'll have to figure out a way of doing the query and joins manually instead, which kinda defeats the purpose of using the ORM in the first place.

EDIT: I have a dynamic dataController which takes in an entity name and runs the TypeORM repo.find() (with where clause) to get my entities. I hacked something together (room for improvement) that keeps this dynamic nature:

async loadRelationships(repo: Repository<any>, relationships: string[], baseEntities?: any[]) {
    if (!baseEntities) {
        baseEntities = await repo.find({}); 
    }

    // Map the base entities into an "id" array, then find all relations based on these ids
    // Wait for all sub finds to complete and spread them into a res object
        const { ...res } = await Promise.all(
            relationships.map((relation) => {
                return repo.findByIds(
                    baseEntities.map((entity) => {
                        if (!entity || !entity.id) return;
                        return entity.id;
                    }),
                    {
                        select: ['id'],
                        relations: [relation]
                    }
                );
            })
        );

    // Loop over every sub find result, find the "full entity" we're trying to build from our base entities,
    // and attach the corresponding related entites to it (not a "pure" function)
    Object.keys(res).forEach(i => {
        res[i].forEach(r => {
            const fullEntity = baseEntities.find(e => e.id === r.id);
            if (fullEntity) {
                const relationship = relationships[i];
                fullEntity[relationship] = r[relationship];
            }
        });
    });
}

Essentially I just run the base entity query with one relationship at a time, and then append the sub table results onto the base entities'; it could be even more succinct if you only anticipate having one base entity.

This "hack" is a HUGE improvement. Whereas I was crashing my Nodejs server after 10+ seconds of querying before, now I am able to query and build my nested JSON in _107ms_ .

Now I just need to figure out where to store my relationship string arrays. Could do it on the model and then use the entity string name with reflection to get it, or have some static class that maps my entities to their expected relationships...

So far, I've included a relationships: string[] on my entity definitions, and simply putting the relationship names I want to load in this way here. I wonder if there's some way that we could detect if the eager: true option is set, and then the loadRelationships method would automatically detect and individually load these.

I've done some additional work for this to be recursive so it will find "sub-relations" and load them in as well, this requires additional metadata attached to the relationships array in my entity definitions. It's a bit more involved so let me know if anyone wants to see this!

EDIT 2: My implementation here

I'm having the same problem with the query

const unit = await this.repo.createQueryBuilder('unit')
      .leftJoinAndSelect('unit.building', 'building')
      .leftJoinAndSelect('building.address', 'address')
      .leftJoinAndSelect('building.condominium', 'condominium')
      .leftJoinAndSelect('address.street', 'street')
      .leftJoinAndSelect('street.region', 'region')
      .leftJoinAndSelect('unit.registrationOffice', 'registrationOffice')
      .where({ id })
      .getOne();

when I run this query on db it runs in less than 1ms
image

All the fields are indexed, but in typeorm we perceive a latency of:

image

Someone has any suggestions about that?

Would be nice if the team could take a look at this problem! In the mean time, here is a function, findWithRelations, to replicate repository's find interface while retrieving the relations one by one (in parallel). This is a simplified version of the code in case it helps anybody:

import { flatten, groupBy, map, merge } from 'lodash'
import { CreateDateColumn, FindManyOptions, PrimaryGeneratedColumn, Repository, UpdateDateColumn } from 'typeorm'

export class GenericRepository<E extends IdentifiableEntity> extends Repository<E> {
  public async findWithRelations(
    relations: Array<keyof E> = [],
    optionsWithoutRelations: Omit<FindManyOptions<E>, 'relations'> = {}
  ): Promise<E[]> {
    const entities = await this.find(optionsWithoutRelations)
    const entitiesIds = entities.map(({ id }) => id)
    const entitiesIdsWithRelations = await Promise.all(
      relations.map((relation) => this.findByIds(entitiesIds, { select: ['id'], relations: [relation as string] }))
    ).then(flatten)
    const entitiesAndRelations = entitiesIdsWithRelations.concat(entities)

    const entitiesAndRelationsById = groupBy(entitiesAndRelations, 'id')
    return map(entitiesAndRelationsById, (entityAndRelations) => merge({}, ...entityAndRelations))
  }
}

export abstract class IdentifiableEntity {
  @PrimaryGeneratedColumn()
  public id: number

  @CreateDateColumn({ name: 'created_at' })
  public createdAt: Date

  @UpdateDateColumn({ name: 'updated_at' })
  public updatedAt: Date
}

The only requirement is that the entity has an id, but you can easily change that if the name of your attribute is different, or even plug the function in a concrete repository just replacing E type variable by your entity name. ;)

We are already using it in Production and saw immediate improvements, with requests that were taking 10 - 12 seconds (because of the many joins that were happening) speeding up to ~200 ms.

@josruice can you give an example of how you are using it, specifically optionsWithoutRelations. Also does it support nested relations like team.members.classes rather than just team.members

I've done some additional work for this to be recursive so it will find "sub-relations" and load them in as well, this requires additional metadata attached to the relationships array in my entity definitions. It's a bit more involved so let me know if anyone wants to see this

@PaddingtonTheBear maybe a gist would be great on how you did it.

@thellimist Sure! You can checkout my implementation here.

The "loadRelationships" is towards the bottom. I ended up defining a static relationships array on my models, which the read method uses to recursively perform sub queries. I added a flag for "ignoreSubRelations" to prevent potential endless loops.

So, I've dug into this a bit, and I believe the issue here is a combination of SelectQueryBuilder being accidentally quadratic with respect to number of joins & the inner loops of that being a bit inefficient.

For each joined relation:

https://github.com/typeorm/typeorm/blob/dfcb2db216d6ed33946dfa190e19eb14c0fed390/src/query-builder/SelectQueryBuilder.ts#L1461-L1471

We call replacePropertyNames once or twice on our join fragment before returning it:
https://github.com/typeorm/typeorm/blob/dfcb2db216d6ed33946dfa190e19eb14c0fed390/src/query-builder/SelectQueryBuilder.ts#L1484
https://github.com/typeorm/typeorm/blob/dfcb2db216d6ed33946dfa190e19eb14c0fed390/src/query-builder/SelectQueryBuilder.ts#L1496
https://github.com/typeorm/typeorm/blob/dfcb2db216d6ed33946dfa190e19eb14c0fed390/src/query-builder/SelectQueryBuilder.ts#L1506
https://github.com/typeorm/typeorm/blob/dfcb2db216d6ed33946dfa190e19eb14c0fed390/src/query-builder/SelectQueryBuilder.ts#L1538-L1539

Then, for for invocation of replacePropertyNames, we regex replace in our query fragment twice for each column in the overall query and once for each join column:

https://github.com/typeorm/typeorm/blob/dfcb2db216d6ed33946dfa190e19eb14c0fed390/src/query-builder/QueryBuilder.ts#L566-L589

So, if we assume we're joining N relations with M columns each, we regex replace our query fragment about N * N * 2M times just within the createJoinExpression call.

https://github.com/typeorm/typeorm/pull/4760 should improve the situation by merging some of the regex operations in that inner loop -- we'll still be quadratic, but with significantly lower cost in practice.

I might be running into this issue. We're also using Postgres and are hosted on GCP (specifically Google Cloud Run). We're querying data across 4 tables and after adding some logging around data access method invocations it became clear that the culprit is likely Typeorm. In our case, query that retrieves 3600 rows and 30 columns each takes 600ms. When I use my DB client and run the same query, it takes roughly 50-100ms.

Hi,
we run into the same issue that is quiet critical for our service.
We noticed with the profiler that sql requests were exucuted instantly but that the RegEx function took 95% of the execution time.

I've written a small snippet that you can test here (just click 'RUN')

If there are issues opening that fiddle, i put the code to paste at the end of this post.

So i took the generated parameters by typeORM in a voluntary extreme condition, i written a function (V2) not using RegEx at all, i go from 3751ms to 12ms but my code certainely don't manage all that the original function does.
instead of creating keys and looping on it with regexs, i directly do the job from the Object.keys(parameters) :

~typescript
...
// INITIAL whit performance issues
const keys = Object.keys(parameters).map(parameter => "(:(\.\.\.)?" + parameter + "\b)").join("|");
sql = sql.replace(new RegExp(keys, "g"), (key: string): string => {
...
~

~typescript
...
// NEW but functionnaly not as complete as the initial version
Object.keys(parameters).forEach(parameter => {
...
~

Im' trying to create a Pull Request but i have compilation issues with branch master, so if someone wants to create one from that snippet, it would help us a lot (instead of having to fork typeORM for our project) !

Thanks a lot !

~~~typescript

// To learn more about the language, click above in "Examples" or "What's New".
// Otherwise, get started by removing these comments and the world is your playground.

function escapeQueryWithParameters(sql: string, parameters: any, nativeParameters: any): [string, any[]] {
const builtParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);
if (!parameters || !Object.keys(parameters).length)
return [sql, builtParameters];

    const keys = Object.keys(parameters).map(parameter => "(:(\\.\\.\\.)?" + parameter + "\\b)").join("|");
    sql = sql.replace(new RegExp(keys, "g"), (key: string): string => {
        let value: any;
        let isArray = false;
        if (key.substr(0, 4) === ":...") {
            isArray = true;
            value = parameters[key.substr(4)];
        } else {
            value = parameters[key.substr(1)];
        }

        if (isArray) {
            return value.map((v: any) => {
                builtParameters.push(v);
                return "$" + builtParameters.length;
            }).join(", ");

        } else if (value instanceof Function) {
            return value();

        } else {
            builtParameters.push(value);
            return "$" + builtParameters.length;
        }
    }); // todo: make replace only in value statements, otherwise problems
    return [sql, builtParameters];
}

function escapeQueryWithParametersV2(sql: string, parameters: any, nativeParameters: any): [string, any[]] {
const builtParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);
if (!parameters || !Object.keys(parameters).length)
return [sql, builtParameters];
// console.log('1 :', Date.now() - before);
Object.keys(parameters).forEach(parameter => {
builtParameters.push(parameters[parameter]);
sql = sql.replace(':' + parameter, '$'+ builtParameters.length);
});
// console.log('2 :', Date.now() - before);
// console.log(sql, builtParameters);
// const regexp = new RegExp(keys, "g");
//sql = sql.replace(regexp, (key: string): string => {

            // builtParameters.push(parameters[key.substr(1)]);
            // return "$" + builtParameters.length;

    //}); // todo: make replace only in value statements, otherwise problems

// console.log('3 :', Date.now() - before);
return [sql, builtParameters];
}

console.clear();

const sql = 'SELECT "activity_schools_rid"."eventId" AS "eventId", "activity_schools_rid"."schoolId" AS "schoolId" FROM "public"."school" "school" INNER JOIN "public"."event_schools_school" "activity_schools_rid" ON ("activity_schools_rid"."eventId" = :eventId0 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId1 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId2 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId3 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId4 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId5 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId6 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId7 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId8 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId9 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId10 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId11 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId12 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId13 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId14 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId15 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId16 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId17 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId18 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId19 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId20 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId21 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId22 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId23 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId24 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId25 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId26 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId27 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId28 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId29 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId30 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId31 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId32 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId33 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId34 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId35 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId36 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId37 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId38 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId39 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId40 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId41 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId42 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId43 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId44 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId45 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId46 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId47 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId48 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId49 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId50 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId51 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId52 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId53 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId54 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId55 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId56 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId57 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId58 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId59 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId60 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId61 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId62 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId63 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId64 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId65 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId66 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId67 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId68 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId69 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId70 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId71 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId72 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId73 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId74 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId75 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId76 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId77 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId78 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId79 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId80 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId81 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId82 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId83 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId84 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId85 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId86 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId87 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId88 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId89 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId90 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId91 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId92 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId93 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId94 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId95 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId96 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId97 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId98 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId99 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId100 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId101 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId102 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId103 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId104 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId105 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId106 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId107 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId108 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId109 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId110 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId111 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId112 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId113 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId114 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId115 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId116 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId117 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId118 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId119 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId120 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId121 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId122 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId123 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId124 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId125 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId126 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId127 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId128 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId129 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId130 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId131 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId132 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId133 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId134 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId135 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId136 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId137 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId138 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId139 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId140 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId141 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId142 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId143 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId144 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId145 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId146 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId147 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId148 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId149 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId150 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId151 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId152 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId153 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId154 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId155 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId156 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId157 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId158 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId159 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId160 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId161 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId162 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId163 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId164 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId165 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId166 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId167 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId168 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId169 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId170 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId171 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId172 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId173 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId174 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId175 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId176 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId177 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId178 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId179 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId180 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId181 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId182 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId183 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId184 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId185 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId186 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId187 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId188 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId189 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId190 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId191 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId192 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId193 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId194 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId195 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId196 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId197 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId198 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId199 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId200 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId201 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId202 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId203 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId204 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId205 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId206 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId207 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId208 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId209 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId210 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId211 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId212 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId213 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId214 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId215 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId216 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId217 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId218 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId219 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId220 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId221 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId222 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId223 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId224 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId225 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId226 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId227 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId228 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId229 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId230 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId231 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId232 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId233 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId234 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId235 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId236 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId237 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId238 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId239 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId240 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId241 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId242 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId243 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId244 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId245 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId246 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId247 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId248 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId249 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId250 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId251 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId252 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId253 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId254 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId255 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId256 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId257 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId258 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId259 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId260 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId261 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId262 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId263 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId264 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId265 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId266 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId267 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId268 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId269 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId270 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId271 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId272 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId273 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId274 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId275 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId276 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId277 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId278 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId279 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId280 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId281 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId282 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId283 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId284 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId285 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId286 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId287 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId288 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId289 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId290 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId291 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId292 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId293 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId294 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId295 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId296 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId297 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId298 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId299 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId300 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId301 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId302 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId303 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId304 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId305 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId306 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId307 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId308 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId309 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId310 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId311 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId312 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId313 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId314 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId315 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId316 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId317 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId318 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId319 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId320 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId321 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId322 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId323 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId324 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId325 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId326 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId327 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId328 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId329 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId330 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId331 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId332 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId333 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId334 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId335 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId336 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId337 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId338 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId339 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId340 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId341 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId342 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId343 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId344 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId345 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId346 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId347 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId348 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId349 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId350 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId351 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId352 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId353 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId354 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId355 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId356 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId357 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId358 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId359 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId360 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId361 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId362 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId363 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId364 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId365 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId366 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId367 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId368 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId369 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId370 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId371 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId372 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId373 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId374 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId375 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId376 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId377 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId378 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId379 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId380 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId381 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId382 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId383 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId384 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId385 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId386 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId387 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId388 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId389 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId390 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId391 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId392 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId393 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId394 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId395 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId396 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId397 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId398 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId399 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId400 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId401 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId402 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId403 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId404 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId405 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId406 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId407 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId408 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId409 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId410 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId411 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId412 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId413 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId414 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId415 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId416 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId417 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId418 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId419 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId420 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId421 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId422 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId423 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId424 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId425 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId426 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId427 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId428 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId429 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId430 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId431 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId432 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId433 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId434 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId435 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId436 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId437 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId438 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId439 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId440 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId441 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId442 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId443 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId444 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId445 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId446 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId447 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId448 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId449 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId450 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId451 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId452 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId453 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId454 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId455 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId456 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId457 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId458 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId459 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId460 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId461 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId462 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId463 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId464 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId465 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId466 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId467 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId468 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId469 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId470 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId471 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId472 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId473 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId474 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId475 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId476 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId477 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId478 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId479 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId480 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId481 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId482 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId483 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId484 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId485 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId486 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId487 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId488 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId489 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId490 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId491 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId492 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId493 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId494 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId495 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId496 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId497 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId498 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId499 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId500 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId501 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId502 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId503 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId504 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId505 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId506 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId507 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId508 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId509 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId510 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId511 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId512 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId513 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId514 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId515 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId516 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId517 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId518 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId519 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId520 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId521 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId522 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId523 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId524 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId525 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId526 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId527 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId528 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId529 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId530 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId531 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId532 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId533 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId534 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId535 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId536 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId537 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId538 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId539 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId540 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId541 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId542 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId543 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId544 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId545 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId546 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId547 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId548 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId549 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId550 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId551 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId552 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId553 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId554 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId555 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId556 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId557 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId558 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId559 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId560 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId561 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId562 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId563 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId564 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId565 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId566 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId567 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId568 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId569 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId570 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId571 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId572 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId573 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId574 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId575 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId576 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId577 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId578 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId579 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId580 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId581 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId582 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId583 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId584 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId585 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId586 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId587 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId588 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId589 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId590 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId591 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId592 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId593 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId594 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId595 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId596 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId597 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId598 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId599 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId600 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId601 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId602 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId603 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId604 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId605 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId606 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId607 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId608 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId609 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId610 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId611 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId612 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId613 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId614 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId615 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId616 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId617 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId618 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId619 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId620 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId621 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId622 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId623 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId624 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId625 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId626 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId627 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId628 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId629 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId630 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId631 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId632 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId633 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId634 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId635 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId636 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId637 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId638 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId639 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId640 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId641 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId642 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId643 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId644 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId645 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId646 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId647 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId648 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId649 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId650 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId651 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId652 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId653 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId654 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId655 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId656 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId657 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId658 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId659 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId660 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId661 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId662 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId663 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId664 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId665 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId666 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId667 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId668 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId669 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId670 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId671 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId672 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId673 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId674 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId675 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId676 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId677 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId678 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId679 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId680 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId681 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId682 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId683 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId684 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId685 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId686 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId687 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId688 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId689 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId690 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId691 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId692 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId693 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId694 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId695 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId696 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId697 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId698 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId699 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId700 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId701 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId702 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId703 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId704 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId705 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId706 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId707 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId708 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId709 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId710 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId711 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId712 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId713 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId714 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId715 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId716 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId717 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId718 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId719 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId720 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId721 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId722 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId723 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId724 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId725 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId726 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId727 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId728 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId729 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId730 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId731 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId732 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId733 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId734 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId735 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId736 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId737 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId738 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId739 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId740 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId741 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId742 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId743 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId744 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId745 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId746 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId747 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId748 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId749 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId750 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId751 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId752 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId753 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId754 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId755 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId756 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId757 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId758 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId759 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId760 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId761 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId762 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId763 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId764 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId765 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId766 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId767 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId768 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId769 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId770 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId771 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId772 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId773 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId774 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId775 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId776 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId777 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId778 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId779 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId780 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId781 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId782 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId783 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId784 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId785 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId786 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId787 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId788 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId789 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId790 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId791 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId792 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId793 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId794 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId795 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId796 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId797 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId798 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId799 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId800 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId801 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId802 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId803 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId804 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId805 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId806 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId807 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId808 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId809 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId810 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId811 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId812 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId813 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId814 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId815 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId816 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId817 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId818 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId819 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId820 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId821 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId822 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId823 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId824 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId825 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId826 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId827 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId828 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId829 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId830 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId831 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId832 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId833 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId834 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId835 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId836 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId837 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId838 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId839 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId840 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId841 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId842 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId843 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId844 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId845 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId846 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId847 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId848 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId849 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId850 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId851 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId852 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId853 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId854 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId855 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId856 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId857 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId858 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId859 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId860 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId861 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId862 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId863 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId864 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId865 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId866 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId867 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId868 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId869 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId870 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId871 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId872 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId873 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId874 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId875 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId876 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId877 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId878 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId879 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId880 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId881 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId882 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId883 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId884 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId885 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId886 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId887 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId888 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId889 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId890 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId891 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId892 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId893 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId894 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId895 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId896 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId897 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId898 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId899 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId900 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId901 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId902 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId903 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId904 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId905 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId906 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId907 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId908 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId909 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId910 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId911 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId912 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId913 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId914 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId915 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId916 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId917 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId918 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId919 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId920 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId921 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId922 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId923 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId924 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId925 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId926 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId927 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId928 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId929 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId930 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId931 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId932 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId933 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId934 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId935 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId936 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId937 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId938 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId939 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId940 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId941 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId942 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId943 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId944 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId945 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId946 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId947 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId948 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId949 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId950 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId951 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId952 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId953 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId954 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId955 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId956 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId957 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId958 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId959 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId960 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId961 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId962 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId963 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId964 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId965 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId966 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId967 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId968 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId969 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId970 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId971 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId972 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId973 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId974 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId975 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId976 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId977 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId978 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId979 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId980 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId981 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId982 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId983 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId984 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId985 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId986 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId987 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId988 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId989 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId990 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId991 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId992 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId993 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId994 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId995 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId996 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId997 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId998 AND "activity_schools_rid"."schoolId" = "school"."id") OR ("activity_schools_rid"."eventId" = :eventId999 AND "activity_schools_rid"."schoolId" = "school"."id") ORDER BY "activity_schools_rid"."schoolId" ASC, "activity_schools_rid"."eventId" ASC';
const params = JSON.parse('{"eventId0":1221,"eventId1":771,"eventId2":1528,"eventId3":791,"eventId4":1193,"eventId5":869,"eventId6":1774,"eventId7":1025,"eventId8":1181,"eventId9":545,"eventId10":263,"eventId11":1167,"eventId12":1189,"eventId13":1482,"eventId14":720,"eventId15":1153,"eventId16":1651,"eventId17":1450,"eventId18":1207,"eventId19":1360,"eventId20":1555,"eventId21":781,"eventId22":1063,"eventId23":489,"eventId24":1938,"eventId25":259,"eventId26":1808,"eventId27":887,"eventId28":1906,"eventId29":742,"eventId30":871,"eventId31":1387,"eventId32":261,"eventId33":1033,"eventId34":1587,"eventId35":1689,"eventId36":773,"eventId37":1488,"eventId38":1862,"eventId39":269,"eventId40":1683,"eventId41":174,"eventId42":717,"eventId43":1557,"eventId44":1547,"eventId45":1693,"eventId46":170,"eventId47":446,"eventId48":1633,"eventId49":645,"eventId50":1970,"eventId51":154,"eventId52":1383,"eventId53":787,"eventId54":96,"eventId55":657,"eventId56":823,"eventId57":711,"eventId58":1203,"eventId59":549,"eventId60":1884,"eventId61":1641,"eventId62":1083,"eventId63":299,"eventId64":239,"eventId65":619,"eventId66":293,"eventId67":1219,"eventId68":230,"eventId69":1840,"eventId70":1746,"eventId71":1551,"eventId72":1065,"eventId73":1784,"eventId74":757,"eventId75":1037,"eventId76":1627,"eventId77":637,"eventId78":1201,"eventId79":647,"eventId80":1241,"eventId81":1822,"eventId82":1538,"eventId83":422,"eventId84":1071,"eventId85":519,"eventId86":853,"eventId87":946,"eventId88":1446,"eventId89":926,"eventId90":76,"eventId91":1091,"eventId92":1277,"eventId93":801,"eventId94":41,"eventId95":1944,"eventId96":1225,"eventId97":158,"eventId98":930,"eventId99":1818,"eventId100":911,"eventId101":116,"eventId102":3,"eventId103":1585,"eventId104":1067,"eventId105":1165,"eventId106":557,"eventId107":1209,"eventId108":1613,"eventId109":1966,"eventId110":120,"eventId111":1081,"eventId112":563,"eventId113":989,"eventId114":1077,"eventId115":72,"eventId116":1764,"eventId117":1780,"eventId118":1421,"eventId119":1549,"eventId120":527,"eventId121":102,"eventId122":1540,"eventId123":1868,"eventId124":920,"eventId125":319,"eventId126":214,"eventId127":1237,"eventId128":571,"eventId129":511,"eventId130":1506,"eventId131":1888,"eventId132":1500,"eventId133":1389,"eventId134":110,"eventId135":1017,"eventId136":1103,"eventId137":975,"eventId138":936,"eventId139":1464,"eventId140":224,"eventId141":283,"eventId142":277,"eventId143":885,"eventId144":1099,"eventId145":993,"eventId146":819,"eventId147":1830,"eventId148":551,"eventId149":1924,"eventId150":1848,"eventId151":1695,"eventId152":257,"eventId153":1177,"eventId154":1567,"eventId155":471,"eventId156":1534,"eventId157":1369,"eventId158":613,"eventId159":64,"eventId160":53,"eventId161":140,"eventId162":1131,"eventId163":1323,"eventId164":218,"eventId165":1577,"eventId166":669,"eventId167":635,"eventId168":627,"eventId169":1045,"eventId170":100,"eventId171":17,"eventId172":1458,"eventId173":795,"eventId174":351,"eventId175":1490,"eventId176":1415,"eventId177":339,"eventId178":1892,"eventId179":196,"eventId180":785,"eventId181":1371,"eventId182":1047,"eventId183":5,"eventId184":985,"eventId185":1385,"eventId186":934,"eventId187":809,"eventId188":1617,"eventId189":317,"eventId190":1139,"eventId191":752,"eventId192":859,"eventId193":206,"eventId194":1129,"eventId195":1249,"eventId196":70,"eventId197":1155,"eventId198":499,"eventId199":1768,"eventId200":1223,"eventId201":365,"eventId202":1928,"eventId203":291,"eventId204":573,"eventId205":198,"eventId206":765,"eventId207":247,"eventId208":1972,"eventId209":1107,"eventId210":305,"eventId211":1217,"eventId212":1996,"eventId213":1079,"eventId214":1536,"eventId215":1974,"eventId216":1997,"eventId217":1962,"eventId218":1716,"eventId219":295,"eventId220":799,"eventId221":565,"eventId222":1734,"eventId223":639,"eventId224":1980,"eventId225":94,"eventId226":777,"eventId227":1948,"eventId228":1850,"eventId229":1151,"eventId230":380,"eventId231":863,"eventId232":1904,"eventId233":1029,"eventId234":1502,"eventId235":1311,"eventId236":132,"eventId237":981,"eventId238":1362,"eventId239":1675,"eventId240":553,"eventId241":1057,"eventId242":112,"eventId243":1593,"eventId244":1681,"eventId245":287,"eventId246":1810,"eventId247":1061,"eventId248":47,"eventId249":611,"eventId250":593,"eventId251":1041,"eventId252":394,"eventId253":1625,"eventId254":1283,"eventId255":789,"eventId256":341,"eventId257":1498,"eventId258":1597,"eventId259":148,"eventId260":475,"eventId261":969,"eventId262":1599,"eventId263":13,"eventId264":1754,"eventId265":241,"eventId266":1377,"eventId267":1516,"eventId268":1796,"eventId269":1159,"eventId270":74,"eventId271":1095,"eventId272":649,"eventId273":865,"eventId274":412,"eventId275":1637,"eventId276":1748,"eventId277":39,"eventId278":325,"eventId279":1514,"eventId280":245,"eventId281":396,"eventId282":601,"eventId283":1413,"eventId284":243,"eventId285":722,"eventId286":1954,"eventId287":313,"eventId288":168,"eventId289":1379,"eventId290":1878,"eventId291":1335,"eventId292":665,"eventId293":1838,"eventId294":689,"eventId295":1205,"eventId296":1215,"eventId297":849,"eventId298":1583,"eventId299":529,"eventId300":98,"eventId301":428,"eventId302":1722,"eventId303":1800,"eventId304":916,"eventId305":1846,"eventId306":1381,"eventId307":367,"eventId308":1436,"eventId309":410,"eventId310":1756,"eventId311":329,"eventId312":1565,"eventId313":192,"eventId314":130,"eventId315":744,"eventId316":1211,"eventId317":21,"eventId318":188,"eventId319":1742,"eventId320":539,"eventId321":877,"eventId322":434,"eventId323":1089,"eventId324":1581,"eventId325":1994,"eventId326":1687,"eventId327":1243,"eventId328":1423,"eventId329":1149,"eventId330":555,"eventId331":1285,"eventId332":1269,"eventId333":843,"eventId334":402,"eventId335":49,"eventId336":589,"eventId337":463,"eventId338":541,"eventId339":715,"eventId340":182,"eventId341":440,"eventId342":1530,"eventId343":448,"eventId344":1113,"eventId345":1197,"eventId346":891,"eventId347":841,"eventId348":1317,"eventId349":515,"eventId350":371,"eventId351":559,"eventId352":1013,"eventId353":895,"eventId354":1934,"eventId355":1936,"eventId356":315,"eventId357":204,"eventId358":1804,"eventId359":454,"eventId360":1778,"eventId361":1023,"eventId362":683,"eventId363":1679,"eventId364":1027,"eventId365":35,"eventId366":607,"eventId367":897,"eventId368":176,"eventId369":1299,"eventId370":388,"eventId371":1968,"eventId372":821,"eventId373":734,"eventId374":793,"eventId375":1615,"eventId376":1720,"eventId377":273,"eventId378":236,"eventId379":1786,"eventId380":1053,"eventId381":746,"eventId382":533,"eventId383":1444,"eventId384":750,"eventId385":691,"eventId386":697,"eventId387":375,"eventId388":1309,"eventId389":426,"eventId390":382,"eventId391":483,"eventId392":1245,"eventId393":1440,"eventId394":142,"eventId395":88,"eventId396":1356,"eventId397":987,"eventId398":234,"eventId399":1448,"eventId400":271,"eventId401":1575,"eventId402":456,"eventId403":861,"eventId404":922,"eventId405":577,"eventId406":1657,"eventId407":216,"eventId408":1872,"eventId409":25,"eventId410":754,"eventId411":1526,"eventId412":1405,"eventId413":1579,"eventId414":436,"eventId415":1806,"eventId416":1059,"eventId417":1175,"eventId418":1303,"eventId419":1561,"eventId420":303,"eventId421":1340,"eventId422":977,"eventId423":1233,"eventId424":406,"eventId425":1452,"eventId426":1109,"eventId427":1271,"eventId428":905,"eventId429":995,"eventId430":1706,"eventId431":1257,"eventId432":1403,"eventId433":967,"eventId434":144,"eventId435":345,"eventId436":603,"eventId437":1730,"eventId438":481,"eventId439":1832,"eventId440":1712,"eventId441":1545,"eventId442":1399,"eventId443":1559,"eventId444":357,"eventId445":1293,"eventId446":1952,"eventId447":1932,"eventId448":703,"eventId449":19,"eventId450":547,"eventId451":1601,"eventId452":1468,"eventId453":267,"eventId454":503,"eventId455":1427,"eventId456":1611,"eventId457":265,"eventId458":361,"eventId459":309,"eventId460":1766,"eventId461":1101,"eventId462":783,"eventId463":465,"eventId464":699,"eventId465":172,"eventId466":487,"eventId467":301,"eventId468":86,"eventId469":1409,"eventId470":1321,"eventId471":29,"eventId472":1665,"eventId473":279,"eventId474":763,"eventId475":164,"eventId476":1484,"eventId477":1043,"eventId478":833,"eventId479":126,"eventId480":1111,"eventId481":1143,"eventId482":1607,"eventId483":1375,"eventId484":186,"eventId485":1702,"eventId486":1629,"eventId487":1496,"eventId488":1135,"eventId489":1589,"eventId490":525,"eventId491":1724,"eventId492":275,"eventId493":1009,"eventId494":955,"eventId495":1623,"eventId496":1263,"eventId497":1776,"eventId498":1049,"eventId499":1788,"eventId500":1373,"eventId501":1940,"eventId502":811,"eventId503":1342,"eventId504":146,"eventId505":55,"eventId506":575,"eventId507":932,"eventId508":535,"eventId509":43,"eventId510":1635,"eventId511":379,"eventId512":954,"eventId513":1708,"eventId514":633,"eventId515":963,"eventId516":748,"eventId517":458,"eventId518":1639,"eventId519":353,"eventId520":333,"eventId521":738,"eventId522":732,"eventId523":33,"eventId524":597,"eventId525":1470,"eventId526":1645,"eventId527":767,"eventId528":202,"eventId529":1425,"eventId530":617,"eventId531":521,"eventId532":66,"eventId533":1728,"eventId534":583,"eventId535":1021,"eventId536":813,"eventId537":1910,"eventId538":1816,"eventId539":1569,"eventId540":226,"eventId541":1365,"eventId542":1097,"eventId543":1992,"eventId544":659,"eventId545":883,"eventId546":1105,"eventId547":108,"eventId548":1055,"eventId549":1454,"eventId550":509,"eventId551":655,"eventId552":343,"eventId553":1163,"eventId554":1273,"eventId555":1866,"eventId556":561,"eventId557":1900,"eventId558":424,"eventId559":1916,"eventId560":851,"eventId561":1407,"eventId562":1255,"eventId563":1185,"eventId564":651,"eventId565":1854,"eventId566":1476,"eventId567":1930,"eventId568":1187,"eventId569":23,"eventId570":1319,"eventId571":1239,"eventId572":1718,"eventId573":1946,"eventId574":1494,"eventId575":1259,"eventId576":1213,"eventId577":1313,"eventId578":1123,"eventId579":1344,"eventId580":1281,"eventId581":497,"eventId582":1289,"eventId583":940,"eventId584":15,"eventId585":90,"eventId586":1669,"eventId587":1532,"eventId588":347,"eventId589":621,"eventId590":1157,"eventId591":730,"eventId592":1007,"eventId593":1914,"eventId594":829,"eventId595":867,"eventId596":1621,"eventId597":1890,"eventId598":1235,"eventId599":537,"eventId600":1760,"eventId601":825,"eventId602":1417,"eventId603":1169,"eventId604":807,"eventId605":1520,"eventId606":1133,"eventId607":1504,"eventId608":1474,"eventId609":1643,"eventId610":1141,"eventId611":452,"eventId612":507,"eventId613":1908,"eventId614":1950,"eventId615":106,"eventId616":7,"eventId617":643,"eventId618":1673,"eventId619":57,"eventId620":1852,"eventId621":1956,"eventId622":1856,"eventId623":134,"eventId624":950,"eventId625":1738,"eventId626":152,"eventId627":78,"eventId628":1772,"eventId629":1011,"eventId630":1828,"eventId631":1563,"eventId632":1677,"eventId633":1512,"eventId634":444,"eventId635":1508,"eventId636":1075,"eventId637":805,"eventId638":210,"eventId639":1432,"eventId640":707,"eventId641":166,"eventId642":335,"eventId643":1325,"eventId644":1653,"eventId645":1732,"eventId646":959,"eventId647":971,"eventId648":755,"eventId649":1466,"eventId650":1171,"eventId651":938,"eventId652":1354,"eventId653":1019,"eventId654":513,"eventId655":1275,"eventId656":673,"eventId657":1667,"eventId658":1999,"eventId659":629,"eventId660":1117,"eventId661":1591,"eventId662":1261,"eventId663":1920,"eventId664":160,"eventId665":323,"eventId666":903,"eventId667":661,"eventId668":398,"eventId669":726,"eventId670":1942,"eventId671":124,"eventId672":384,"eventId673":1864,"eventId674":349,"eventId675":918,"eventId676":1661,"eventId677":9,"eventId678":1609,"eventId679":369,"eventId680":485,"eventId681":194,"eventId682":1093,"eventId683":1031,"eventId684":1460,"eventId685":1397,"eventId686":797,"eventId687":1758,"eventId688":1603,"eventId689":1814,"eventId690":1419,"eventId691":839,"eventId692":1337,"eventId693":1253,"eventId694":1137,"eventId695":1231,"eventId696":595,"eventId697":450,"eventId698":1704,"eventId699":1119,"eventId700":1659,"eventId701":467,"eventId702":709,"eventId703":1663,"eventId704":991,"eventId705":599,"eventId706":222,"eventId707":907,"eventId708":1115,"eventId709":1880,"eventId710":1573,"eventId711":31,"eventId712":220,"eventId713":1265,"eventId714":1395,"eventId715":1279,"eventId716":1958,"eventId717":1367,"eventId718":1826,"eventId719":1518,"eventId720":1161,"eventId721":1860,"eventId722":1434,"eventId723":879,"eventId724":1912,"eventId725":605,"eventId726":1125,"eventId727":80,"eventId728":1744,"eventId729":1393,"eventId730":1051,"eventId731":1510,"eventId732":609,"eventId733":1882,"eventId734":999,"eventId735":1295,"eventId736":104,"eventId737":1069,"eventId738":914,"eventId739":1287,"eventId740":663,"eventId741":1750,"eventId742":321,"eventId743":728,"eventId744":701,"eventId745":359,"eventId746":82,"eventId747":281,"eventId748":581,"eventId749":1391,"eventId750":1346,"eventId751":1001,"eventId752":997,"eventId753":543,"eventId754":1179,"eventId755":653,"eventId756":249,"eventId757":505,"eventId758":1820,"eventId759":1870,"eventId760":430,"eventId761":1960,"eventId762":1173,"eventId763":178,"eventId764":1039,"eventId765":1229,"eventId766":1990,"eventId767":1714,"eventId768":331,"eventId769":45,"eventId770":979,"eventId771":1199,"eventId772":567,"eventId773":1492,"eventId774":1595,"eventId775":1982,"eventId776":363,"eventId777":1035,"eventId778":1792,"eventId779":200,"eventId780":162,"eventId781":1571,"eventId782":1894,"eventId783":1,"eventId784":390,"eventId785":687,"eventId786":386,"eventId787":1782,"eventId788":1456,"eventId789":1988,"eventId790":1619,"eventId791":1462,"eventId792":1698,"eventId793":1824,"eventId794":523,"eventId795":681,"eventId796":251,"eventId797":232,"eventId798":1736,"eventId799":875,"eventId800":355,"eventId801":1315,"eventId802":1073,"eventId803":61,"eventId804":1647,"eventId805":479,"eventId806":1876,"eventId807":68,"eventId808":1685,"eventId809":944,"eventId810":1978,"eventId811":1183,"eventId812":1896,"eventId813":591,"eventId814":11,"eventId815":675,"eventId816":1671,"eventId817":1605,"eventId818":1691,"eventId819":1430,"eventId820":671,"eventId821":1411,"eventId822":1802,"eventId823":1710,"eventId824":1015,"eventId825":212,"eventId826":1836,"eventId827":337,"eventId828":2000,"eventId829":775,"eventId830":585,"eventId831":855,"eventId832":1726,"eventId833":1401,"eventId834":1543,"eventId835":889,"eventId836":1191,"eventId837":1005,"eventId838":1976,"eventId839":901,"eventId840":118,"eventId841":408,"eventId842":1329,"eventId843":587,"eventId844":501,"eventId845":495,"eventId846":1998,"eventId847":1438,"eventId848":623,"eventId849":957,"eventId850":1297,"eventId851":625,"eventId852":51,"eventId853":1305,"eventId854":942,"eventId855":1195,"eventId856":297,"eventId857":418,"eventId858":37,"eventId859":831,"eventId860":416,"eventId861":924,"eventId862":1918,"eventId863":253,"eventId864":400,"eventId865":1472,"eventId866":1327,"eventId867":1480,"eventId868":1984,"eventId869":965,"eventId870":1522,"eventId871":373,"eventId872":1986,"eventId873":442,"eventId874":835,"eventId875":1964,"eventId876":1902,"eventId877":973,"eventId878":114,"eventId879":713,"eventId880":1740,"eventId881":983,"eventId882":845,"eventId883":631,"eventId884":693,"eventId885":1752,"eventId886":815,"eventId887":208,"eventId888":92,"eventId889":928,"eventId890":873,"eventId891":1858,"eventId892":311,"eventId893":1700,"eventId894":477,"eventId895":460,"eventId896":517,"eventId897":1121,"eventId898":677,"eventId899":1348,"eventId900":1770,"eventId901":420,"eventId902":1301,"eventId903":377,"eventId904":1812,"eventId905":779,"eventId906":641,"eventId907":1553,"eventId908":1331,"eventId909":847,"eventId910":909,"eventId911":136,"eventId912":1844,"eventId913":180,"eventId914":469,"eventId915":952,"eventId916":150,"eventId917":1087,"eventId918":1352,"eventId919":817,"eventId920":184,"eventId921":190,"eventId922":1790,"eventId923":827,"eventId924":491,"eventId925":59,"eventId926":228,"eventId927":881,"eventId928":679,"eventId929":438,"eventId930":685,"eventId931":803,"eventId932":1842,"eventId933":404,"eventId934":1358,"eventId935":1631,"eventId936":736,"eventId937":899,"eventId938":1886,"eventId939":667,"eventId940":857,"eventId941":285,"eventId942":761,"eventId943":122,"eventId944":705,"eventId945":1145,"eventId946":740,"eventId947":1227,"eventId948":327,"eventId949":432,"eventId950":1926,"eventId951":1762,"eventId952":1350,"eventId953":569,"eventId954":893,"eventId955":1798,"eventId956":948,"eventId957":769,"eventId958":1922,"eventId959":1127,"eventId960":1307,"eventId961":1478,"eventId962":84,"eventId963":289,"eventId964":128,"eventId965":1649,"eventId966":837,"eventId967":1442,"eventId968":1003,"eventId969":1147,"eventId970":414,"eventId971":579,"eventId972":1655,"eventId973":1524,"eventId974":156,"eventId975":1486,"eventId976":1251,"eventId977":1834,"eventId978":1085,"eventId979":138,"eventId980":1874,"eventId981":1333,"eventId982":1898,"eventId983":473,"eventId984":615,"eventId985":1267,"eventId986":1794,"eventId987":493,"eventId988":392,"eventId989":695,"eventId990":27,"eventId991":759,"eventId992":531,"eventId993":307,"eventId994":255,"eventId995":1291,"eventId996":724,"eventId997":1363,"eventId998":961,"eventId999":1247}');
let before = Date.now();
const [sql1, bp1] = escapeQueryWithParameters(sql, params, []);
let after = Date.now();
console.log("V1 :", after - before);

before = Date.now();
const [sql2, bp2] = escapeQueryWithParametersV2(sql, params, []);
after = Date.now();
console.log("V2 :", after - before);

let cmp = bp1.filter(bp => !bp2.includes(bp));
console.log('params that differ', cmp.length);
console.log('sql identitcals', sql1 === sql2);
if (sql1 !== sql2) {
console.log('SQL1', sql1);
console.log('SQL2', sql2);
}
~~~

@PaddingtonTheBear could you please show us how to implement nested relations in your solution?
It looks very smart

@PaddingtonTheBear could you please show us how to implement nested relations in your solution?
It looks very smart

Does this post help you? https://github.com/typeorm/typeorm/issues/3857#issuecomment-672648620

I have examples in my repo listed in that comment. I define a static relationships array on my models where I put metadata about the relationship (basically just the local name of the relationship along with the name of the relationship entity).

Then in read.ts my "loadRelationships" towards the bottom is recursive based on this so you can get nested relations.

It's no where near perfect, but it gets the job done! (at least until TypeORM team fixes this issue...)

Similar issue here, TypeORM queries taking substantially longer to execute, will try forking TypeORM and replacing the regex function as @ludolas suggested. This issue really is quite something...

Has anyone made any progress here?

I did, moving slowly away from TypeORM. I have other issues besides this one hence the decision to try.

I am trying Knex.js now. In my case is not that easy to simply swap then I found a way to replace the code slowly. The trick is to reuse the TypeORMs connection pool keeping things going on the same transaction.

The solution is something like this:

const Knex = knex({ client: 'mysql' }); // No need to initialize Knex connection pool.
Knex.connection(connection); // connection comes from TypeORM's pool

In my case the connection comes from TypeORM QueryRunner#connect() that will return the underlying connection object that is required in the snippet above.

Note that TypeORM does a lot more than Knex.js but for me the important part is the Query Builder.

I have the same problem which seems to force me away from typeorm... any solution for this coming up soon?
For upcoming projects I will try to use Prisma instead.

Turns out my queries with a lot of relations were slow due to over user and misunderstanding on how the @RelationId() decoration works.

@Sikora00 no thats no the problem. Prisma leads to the same result in no time. Typeorm seems to create really huge queries which lead to a lot of computing when adding a lot of relations to the select.

All indexes are correct on latest version of typeorm. When I for example select 300 users with 8 relations it takes 20 seconds with high CPU usage and sometimes it crashed due js heap limit. When I reduce it to 4 relations and then map all the users and make seperate four queries for each user it takes like 4 seconds to complete. There must be something very wrong with building those queries!

@Sikora00 no thats no the problem. Prisma leads to the same result in no time. Typeorm seems to create really huge queries which lead to a lot of computing when adding a lot of relations to the select.

All indexes are correct on latest version of typeorm. When I for example select 300 users with 8 relations it takes 20 seconds with high CPU usage and sometimes it crashed due js heap limit. When I reduce it to 4 relations and then map all the users and make seperate four queries for each user it takes like 4 seconds to complete. There must be something very wrong with building those queries!

Just profile CPU, you will see that all the time is lost in the Regexp function that can be replaced with simple string replaces :
https://github.com/typeorm/typeorm/issues/3857#issuecomment-711888320

We would surely gain a _huge_ increase in performance if we did something along the lines of:

const params = {
    x: 1,
    y: 2,
    long: "test",
    hex: "ff"
}

let query = `SELECT * FROM table WHERE x = :x AND y = :y AND long = ":long" AND multi = ":hex:::hex:::hex:::hex:::hex:::hex" AND unknown = :unknown`
let index = 0;
let start;
while ((start = index = query.indexOf(':', index)) > 0) {
    while (alphanumeric(query.charCodeAt(++index))) {}
    if ((index - start) > 1) {
        const paramName = query.substr(start + 1, index - start - 1);
        if (paramName in params) {
            const paramValue = (params as any)[paramName];
            query = query.substr(0, start) + paramValue + query.substr(index);
            index += paramValue.length - paramName.length;
        }
    }
}

console.log(query);

function alphanumeric(code: number) {
    return code > 47 && code < 58 || code > 64 && code < 91 || code > 96 && code < 123 || code === 95; // or underscore
}
SELECT * FROM table WHERE x = 1 AND y = 2 AND long = "test" AND multi = "ff::ff::ff::ff::ff::ff" AND unknown = :unknown

This way the string is iterated only once, rather than N times for each different parameter. Arrays can also easily be tested for.

In relative terms I wonder whether this would be efficient enough to get rid of the nativeParameters/parameters split? Currently it is needed, but it adds a lot of problems for the order of parameters (see #7104).


Also there is the problem that while the :param syntax is elegant, it could lead to unintentional string replacement. Ideally params would be generated a function that uses unique escape characters (perhaps something in the Unicode Supplementary Private Use Planes? See here). Then there would never be any doubt as to what is being replaced. But it certainly wouldn't look as nice:

where({ name: `John ${param('surname')}` }) vs where({name: "John :surname"})

I created a small sample of the regex generated by https://github.com/typeorm/typeorm/issues/3857#issuecomment-711888320 as well https://regex101.com/r/S8w5aK/1

Some pretty rough benchmarking comparing regex replace vs string replace vs string loop: https://jsben.ch/lMmJ3. This one indicates that basic string replace might be the best, but there are definitely a few more factors to be taken into account.

Was this page helpful?
0 / 5 - 0 ratings