From 70549f834dc958a705cb6a2d9ab83dadc904cace Mon Sep 17 00:00:00 2001 From: Brett Hoerner Date: Mon, 1 Jul 2024 12:10:07 -0600 Subject: [PATCH 01/18] =?UTF-8?q?fix(plugin-server):=20write=20out=20less?= =?UTF-8?q?=20overrides=20on=20behalf=20of=20personless=20=E2=80=A6=20(#23?= =?UTF-8?q?204)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(plugin-server): write out less overrides on behalf of personless mode * don't skip writing overrides (so we can backfill posthog_personlessdistinctid) * swap ugly double-array params for array of objects * bigint id for PersonlessDistinctId * add LRU cache for posthog_personlessdistinctid inserts * fix tests * overzealous search and replace --- latest_migrations.manifest | 2 +- plugin-server/src/utils/db/db.ts | 78 ++++++- .../src/worker/ingestion/person-state.ts | 207 +++++++++++++---- plugin-server/tests/main/db.test.ts | 14 +- .../tests/main/process-event.test.ts | 2 +- .../worker/ingestion/action-matcher.test.ts | 4 +- .../event-pipeline/prepareEventStep.test.ts | 2 +- .../worker/ingestion/person-state.test.ts | 218 +++++++++++++----- .../worker/ingestion/postgres-parity.test.ts | 12 +- .../worker/ingestion/process-event.test.ts | 2 +- .../ingestion/properties-updater.test.ts | 2 +- .../migrations/0432_personlessdistinctid.py | 32 +++ posthog/models/person/person.py | 13 ++ 13 files changed, 453 insertions(+), 135 deletions(-) create mode 100644 posthog/migrations/0432_personlessdistinctid.py diff --git a/latest_migrations.manifest b/latest_migrations.manifest index 4e4b0e6c63d9dc..c92bcbf594b887 100644 --- a/latest_migrations.manifest +++ b/latest_migrations.manifest @@ -5,7 +5,7 @@ contenttypes: 0002_remove_content_type_name ee: 0016_rolemembership_organization_member otp_static: 0002_throttling otp_totp: 0002_auto_20190420_0723 -posthog: 0431_externaldataschema_sync_type_payload +posthog: 0432_personlessdistinctid sessions: 0001_initial social_django: 0010_uid_db_index two_factor: 0007_auto_20201201_1019 diff --git a/plugin-server/src/utils/db/db.ts b/plugin-server/src/utils/db/db.ts index de57b602725cce..4883c4fa97eb84 100644 --- a/plugin-server/src/utils/db/db.ts +++ b/plugin-server/src/utils/db/db.ts @@ -641,11 +641,17 @@ export class DB { isUserId: number | null, isIdentified: boolean, uuid: string, - distinctIds?: string[], - version = 0 + distinctIds?: { distinctId: string; version?: number }[] ): Promise { distinctIds ||= [] + for (const distinctId of distinctIds) { + distinctId.version ||= 0 + } + + // The Person is being created, and so we can hardcode version 0! + const personVersion = 0 + const { rows } = await this.postgres.query( PostgresUse.COMMON_WRITE, `WITH inserted_person AS ( @@ -662,7 +668,12 @@ export class DB { // `addDistinctIdPooled` (_, index) => `, distinct_id_${index} AS ( INSERT INTO posthog_persondistinctid (distinct_id, person_id, team_id, version) - VALUES ($${10 + index}, (SELECT id FROM inserted_person), $5, $9))` + VALUES ( + $${11 + index + distinctIds!.length - 1}, + (SELECT id FROM inserted_person), + $5, + $${10 + index}) + )` ) .join('') + `SELECT * FROM inserted_person;`, @@ -675,14 +686,21 @@ export class DB { isUserId, isIdentified, uuid, - version, + personVersion, // The copy and reverse here is to maintain compatability with pre-existing code // and tests. Postgres appears to assign IDs in reverse order of the INSERTs in the // CTEs above, so we need to reverse the distinctIds to match the old behavior where // we would do a round trip for each INSERT. We shouldn't actually depend on the // `id` column of distinct_ids, so this is just a simple way to keeps tests exactly // the same and prove behavior is the same as before. - ...distinctIds.slice().reverse(), + ...distinctIds + .slice() + .reverse() + .map(({ version }) => version), + ...distinctIds + .slice() + .reverse() + .map(({ distinctId }) => distinctId), ], 'insertPerson' ) @@ -698,8 +716,8 @@ export class DB { value: JSON.stringify({ person_id: person.uuid, team_id: teamId, - distinct_id: distinctId, - version, + distinct_id: distinctId.distinctId, + version: distinctId.version, is_deleted: 0, }), }, @@ -830,8 +848,50 @@ export class DB { return personDistinctIds.map((pdi) => pdi.distinct_id) } - public async addDistinctId(person: InternalPerson, distinctId: string, version: number): Promise { - const kafkaMessages = await this.addDistinctIdPooled(person, distinctId, version) + public async addPersonlessDistinctId(teamId: number, distinctId: string): Promise { + const result = await this.postgres.query( + PostgresUse.COMMON_WRITE, + ` + INSERT INTO posthog_personlessdistinctid (team_id, distinct_id, is_merged, created_at) + VALUES ($1, $2, false, now()) + ON CONFLICT (team_id, distinct_id) DO NOTHING + RETURNING is_merged + `, + [teamId, distinctId], + 'addPersonlessDistinctId' + ) + + return result.rows[0]['is_merged'] + } + + public async addPersonlessDistinctIdForMerge( + teamId: number, + distinctId: string, + tx?: TransactionClient + ): Promise { + const result = await this.postgres.query( + tx ?? PostgresUse.COMMON_WRITE, + ` + INSERT INTO posthog_personlessdistinctid (team_id, distinct_id, is_merged, created_at) + VALUES ($1, $2, true, now()) + ON CONFLICT (team_id, distinct_id) DO UPDATE + SET is_merged = true + RETURNING (xmax = 0) AS inserted + `, + [teamId, distinctId], + 'addPersonlessDistinctIdForMerge' + ) + + return result.rows[0].inserted + } + + public async addDistinctId( + person: InternalPerson, + distinctId: string, + version: number, + tx?: TransactionClient + ): Promise { + const kafkaMessages = await this.addDistinctIdPooled(person, distinctId, version, tx) if (kafkaMessages.length) { await this.kafkaProducer.queueMessages({ kafkaMessages, waitForAck: true }) } diff --git a/plugin-server/src/worker/ingestion/person-state.ts b/plugin-server/src/worker/ingestion/person-state.ts index b0fd16fbde6257..89472de4e345ec 100644 --- a/plugin-server/src/worker/ingestion/person-state.ts +++ b/plugin-server/src/worker/ingestion/person-state.ts @@ -1,10 +1,12 @@ import { PluginEvent, Properties } from '@posthog/plugin-scaffold' import * as Sentry from '@sentry/node' import { ProducerRecord } from 'kafkajs' +import LRU from 'lru-cache' import { DateTime } from 'luxon' import { Counter } from 'prom-client' import { KafkaProducerWrapper } from 'utils/db/kafka-producer-wrapper' +import { ONE_HOUR } from '../../config/constants' import { KAFKA_PERSON_OVERRIDE } from '../../config/kafka-topics' import { InternalPerson, Person, PropertyUpdateOperation, TimestampFormat } from '../../types' import { DB } from '../../utils/db/db' @@ -57,6 +59,16 @@ const BARE_CASE_INSENSITIVE_ILLEGAL_IDS = [ 'false', ] +// Tracks whether we know we've already inserted a `posthog_personlessdistinctid` for the given +// (team_id, distinct_id) pair. If we have, then we can skip the INSERT attempt. +// TODO: Move this out of module scope, we don't currently have a clean place (outside of the Hub) +// to stash longer lived objects like caches. For now it's not important. +const PERSONLESS_DISTINCT_ID_INSERTED_CACHE = new LRU({ + max: 10_000, + maxAge: ONE_HOUR * 24, // cache up to 24h + updateAgeOnGet: true, +}) + const BARE_CASE_SENSITIVE_ILLEGAL_IDS = ['[object Object]', 'NaN', 'None', 'none', 'null', '0', 'undefined'] const PERSON_EVENTS = new Set(['$identify', '$create_alias', '$merge_dangerously', '$set']) @@ -110,7 +122,34 @@ export class PersonState { async update(): Promise<[Person, Promise]> { if (!this.processPerson) { - const existingPerson = await this.db.fetchPerson(this.teamId, this.distinctId, { useReadReplica: true }) + let existingPerson = await this.db.fetchPerson(this.teamId, this.distinctId, { useReadReplica: true }) + + if (!existingPerson) { + // See the comment in `mergeDistinctIds`. We are inserting a row into `posthog_personlessdistinctid` + // to note that this Distinct ID has been used in "personless" mode. This is necessary + // so that later, during a merge, we can decide whether we need to write out an override + // or not. + + const personlessDistinctIdCacheKey = `${this.teamId}|${this.distinctId}` + if (!PERSONLESS_DISTINCT_ID_INSERTED_CACHE.get(personlessDistinctIdCacheKey)) { + const personIsMerged = await this.db.addPersonlessDistinctId(this.teamId, this.distinctId) + + // We know the row is in PG now, and so future events for this Distinct ID can + // skip the PG I/O. + PERSONLESS_DISTINCT_ID_INSERTED_CACHE.set(personlessDistinctIdCacheKey, true) + + if (personIsMerged) { + // If `personIsMerged` comes back `true`, it means the `posthog_personlessdistinctid` + // has been updated by a merge (either since we called `fetchPerson` above, plus + // replication lag). We need to check `fetchPerson` again (this time using the leader) + // so that we properly associate this event with the Person we got merged into. + existingPerson = await this.db.fetchPerson(this.teamId, this.distinctId, { + useReadReplica: false, + }) + } + } + } + if (existingPerson) { const person = existingPerson as Person @@ -204,7 +243,7 @@ export class PersonState { // :NOTE: This should never be set in this branch, but adding this for logical consistency this.updateIsIdentified, this.event.uuid, - [this.distinctId] + [{ distinctId: this.distinctId }] ) return [person, true] } @@ -217,13 +256,12 @@ export class PersonState { isUserId: number | null, isIdentified: boolean, creatorEventUuid: string, - distinctIds: string[], - version = 0 + distinctIds: { distinctId: string; version?: number }[] ): Promise { if (distinctIds.length < 1) { throw new Error('at least 1 distinctId is required in `createPerson`') } - const uuid = uuidFromDistinctId(teamId, distinctIds[0]) + const uuid = uuidFromDistinctId(teamId, distinctIds[0].distinctId) const props = { ...propertiesOnce, ...properties, ...{ $creator_event_uuid: creatorEventUuid } } const propertiesLastOperation: Record = {} @@ -246,8 +284,7 @@ export class PersonState { isUserId, isIdentified, uuid, - distinctIds, - version + distinctIds ) } @@ -450,57 +487,143 @@ export class PersonState { const otherPerson = await this.db.fetchPerson(teamId, otherPersonDistinctId) const mergeIntoPerson = await this.db.fetchPerson(teamId, mergeIntoDistinctId) + // A note about the `distinctIdVersion` logic you'll find below: + // // Historically, we always INSERT-ed new `posthog_persondistinctid` rows with `version=0`. // Overrides are only created when the version is > 0, see: // https://github.com/PostHog/posthog/blob/92e17ce307a577c4233d4ab252eebc6c2207a5ee/posthog/models/person/sql.py#L269-L287 // - // With the addition of optional person processing, we are no longer creating + // With the addition of optional person profile processing, we are no longer creating // `posthog_persondistinctid` and `posthog_person` rows when $process_person_profile=false. - // This means that: - // 1. At merge time, it's possible this `distinct_id` and its deterministically generated - // `person.uuid` has already been used for events in ClickHouse, but they have no - // corresponding rows in the `posthog_persondistinctid` or `posthog_person` tables - // 2. We need to assume the `distinct_id`/`person.uuid` have been used before (by - // `$process_person_profile=false` events) and create an override row for this - // `distinct_id` even though we're just now INSERT-ing it into Postgres/ClickHouse. We do - // this by starting with `version=1`, as if we had just deleted the old user and were - // updating the `distinct_id` row as part of the merge - const addDistinctIdVersion = 1 - - if (otherPerson && !mergeIntoPerson) { - await this.db.addDistinctId(otherPerson, mergeIntoDistinctId, addDistinctIdVersion) - return [otherPerson, Promise.resolve()] - } else if (!otherPerson && mergeIntoPerson) { - await this.db.addDistinctId(mergeIntoPerson, otherPersonDistinctId, addDistinctIdVersion) - return [mergeIntoPerson, Promise.resolve()] + // This means that at merge time, it's possible this `distinct_id` and its deterministically + // generated `person.uuid` has already been used for events in ClickHouse, but they have no + // corresponding rows in the `posthog_persondistinctid` or `posthog_person` tables. + // + // For this reason, $process_person_profile=false write to the `posthog_personlessdistinctid` + // table just to note that a given Distinct ID was used for "personless" mode. Then, during + // our merges transactions below, we do two things: + // 1. We check whether a row exists in `posthog_personlessdistinctid` for that Distinct ID, + // if so, we need to write out `posthog_persondistinctid` rows with `version=1` so that + // an override is created in ClickHouse which will associate the old "personless" events + // with the Person UUID they were merged into. + // 2. We insert and/or update the `posthog_personlessdistinctid` ourselves, to mark that + // the Distinct ID has been merged. This is important so that an event being processed + // concurrently for that Distinct ID doesn't emit an event and _miss_ that a different + // Person UUID needs to be used now. (See the `processPerson` code in `update` for more.) + + if ((otherPerson && !mergeIntoPerson) || (!otherPerson && mergeIntoPerson)) { + // Only one of the two Distinct IDs points at an existing Person + + const [existingPerson, distinctIdToAdd] = (() => { + if (otherPerson) { + return [otherPerson!, mergeIntoDistinctId] + } else { + return [mergeIntoPerson!, otherPersonDistinctId] + } + })() + + return await this.db.postgres.transaction( + PostgresUse.COMMON_WRITE, + 'mergeDistinctIds-OneExists', + async (tx) => { + // See comment above about `distinctIdVersion` + const _insertedDistinctId = await this.db.addPersonlessDistinctIdForMerge( + this.teamId, + distinctIdToAdd, + tx + ) + const distinctIdVersion = 1 // TODO: Once `posthog_personlessdistinctid` is backfilled: insertedDistinctId ? 0 : 1 + + await this.db.addDistinctId(existingPerson, distinctIdToAdd, distinctIdVersion, tx) + return [existingPerson, Promise.resolve()] + } + ) } else if (otherPerson && mergeIntoPerson) { + // Both Distinct IDs point at an existing Person + if (otherPerson.id == mergeIntoPerson.id) { + // Nothing to do, they are the same Person return [mergeIntoPerson, Promise.resolve()] } + return await this.mergePeople({ mergeInto: mergeIntoPerson, mergeIntoDistinctId: mergeIntoDistinctId, otherPerson: otherPerson, otherPersonDistinctId: otherPersonDistinctId, }) - } + } else { + // Neither Distinct ID points at an existing Person + + let distinctId1 = mergeIntoDistinctId + let distinctId2 = otherPersonDistinctId + + return await this.db.postgres.transaction( + PostgresUse.COMMON_WRITE, + 'mergeDistinctIds-NeitherExist', + async (tx) => { + // See comment above about `distinctIdVersion` + const insertedDistinctId1 = await this.db.addPersonlessDistinctIdForMerge( + this.teamId, + distinctId1, + tx + ) - // The last case: (!oldPerson && !newPerson) - return [ - await this.createPerson( - // TODO: in this case we could skip the properties updates later - timestamp, - this.eventProperties['$set'] || {}, - this.eventProperties['$set_once'] || {}, - teamId, - null, - true, - this.event.uuid, - [mergeIntoDistinctId, otherPersonDistinctId], - addDistinctIdVersion - ), - Promise.resolve(), - ] + // See comment above about `distinctIdVersion` + const insertedDistinctId2 = await this.db.addPersonlessDistinctIdForMerge( + this.teamId, + distinctId2, + tx + ) + + // `createPerson` uses the first Distinct ID provided to generate the Person + // UUID. That means the first Distinct ID definitely doesn't need an override, + // and can always use version 0. Below, we exhaust all of the options to decide + // whether we can optimize away an override by doing a swap, or whether we + // need to actually write an override. (But mostly we're being verbose for + // documentation purposes) + let distinctId2Version = 1 // TODO: Once `posthog_personlessdistinctid` is backfilled, this should be = 0 + if (insertedDistinctId1 && insertedDistinctId2) { + // We were the first to insert both (neither was used for Personless), so we + // can use either as the primary Person UUID and create no overrides. + } else if (insertedDistinctId1 && !insertedDistinctId2) { + // We created 1, but 2 was already used for Personless. Let's swap so + // that 2 can be the primary Person UUID and no override is needed. + ;[distinctId1, distinctId2] = [distinctId2, distinctId1] + } else if (!insertedDistinctId1 && insertedDistinctId2) { + // We created 2, but 1 was already used for Personless, so we want to + // use 1 as the primary Person UUID so that no override is needed. + } else if (!insertedDistinctId1 && !insertedDistinctId2) { + // Both were used in Personless mode, so there is no more-correct choice of + // primary Person UUID to make here, and we need to drop an override by + // using version = 1 for Distinct ID 2. + distinctId2Version = 1 + } + + // The first Distinct ID is used to create the new Person's UUID, and so it + // never needs an override. + const distinctId1Version = 0 + + return [ + await this.createPerson( + // TODO: in this case we could skip the properties updates later + timestamp, + this.eventProperties['$set'] || {}, + this.eventProperties['$set_once'] || {}, + teamId, + null, + true, + this.event.uuid, + [ + { distinctId: distinctId1, version: distinctId1Version }, + { distinctId: distinctId2, version: distinctId2Version }, + ] + ), + Promise.resolve(), + ] + } + ) + } } public async mergePeople({ diff --git a/plugin-server/tests/main/db.test.ts b/plugin-server/tests/main/db.test.ts index 8d419b0b9fdb1e..670685f445ddce 100644 --- a/plugin-server/tests/main/db.test.ts +++ b/plugin-server/tests/main/db.test.ts @@ -294,7 +294,7 @@ describe('DB', () => { }) test('without properties', async () => { - const person = await db.createPerson(TIMESTAMP, {}, {}, {}, team.id, null, false, uuid, [distinctId]) + const person = await db.createPerson(TIMESTAMP, {}, {}, {}, team.id, null, false, uuid, [{ distinctId }]) const fetched_person = await fetchPersonByPersonId(team.id, person.id) expect(fetched_person!.is_identified).toEqual(false) @@ -306,7 +306,7 @@ describe('DB', () => { }) test('without properties indentified true', async () => { - const person = await db.createPerson(TIMESTAMP, {}, {}, {}, team.id, null, true, uuid, [distinctId]) + const person = await db.createPerson(TIMESTAMP, {}, {}, {}, team.id, null, true, uuid, [{ distinctId }]) const fetched_person = await fetchPersonByPersonId(team.id, person.id) expect(fetched_person!.is_identified).toEqual(true) expect(fetched_person!.properties).toEqual({}) @@ -326,7 +326,7 @@ describe('DB', () => { null, false, uuid, - [distinctId] + [{ distinctId }] ) const fetched_person = await fetchPersonByPersonId(team.id, person.id) expect(fetched_person!.is_identified).toEqual(false) @@ -354,7 +354,7 @@ describe('DB', () => { const distinctId = 'distinct_id1' // Note that we update the person badly in case of concurrent updates, but lets make sure we're consistent const personDbBefore = await db.createPerson(TIMESTAMP, { c: 'aaa' }, {}, {}, team.id, null, false, uuid, [ - distinctId, + { distinctId }, ]) const providedPersonTs = DateTime.fromISO('2000-04-04T11:42:06.502Z').toUTC() const personProvided = { ...personDbBefore, properties: { c: 'bbb' }, created_at: providedPersonTs } @@ -486,7 +486,7 @@ describe('DB', () => { const team = await getFirstTeam(hub) const uuid = new UUIDT().toString() const createdPerson = await db.createPerson(TIMESTAMP, { foo: 'bar' }, {}, {}, team.id, null, true, uuid, [ - 'some_id', + { distinctId: 'some_id' }, ]) const person = await db.fetchPerson(team.id, 'some_id') @@ -852,7 +852,7 @@ describe('DB', () => { null, false, new UUIDT().toString(), - ['source_person'] + [{ distinctId: 'source_person' }] ) const targetPerson = await db.createPerson( TIMESTAMP, @@ -863,7 +863,7 @@ describe('DB', () => { null, false, new UUIDT().toString(), - ['target_person'] + [{ distinctId: 'target_person' }] ) sourcePersonID = sourcePerson.id targetPersonID = targetPerson.id diff --git a/plugin-server/tests/main/process-event.test.ts b/plugin-server/tests/main/process-event.test.ts index 72bb5879945a97..fa693a00b96515 100644 --- a/plugin-server/tests/main/process-event.test.ts +++ b/plugin-server/tests/main/process-event.test.ts @@ -50,7 +50,7 @@ export async function createPerson( null, false, new UUIDT().toString(), - distinctIds + distinctIds.map((distinctId) => ({ distinctId })) ) } diff --git a/plugin-server/tests/worker/ingestion/action-matcher.test.ts b/plugin-server/tests/worker/ingestion/action-matcher.test.ts index a66a8d03bb2be4..d4a5770355a4bb 100644 --- a/plugin-server/tests/worker/ingestion/action-matcher.test.ts +++ b/plugin-server/tests/worker/ingestion/action-matcher.test.ts @@ -741,7 +741,7 @@ describe('ActionMatcher', () => { null, true, new UUIDT().toString(), - ['random'] + [{ distinctId: 'random' }] ) const cohortPerson = await hub.db.createPerson( @@ -753,7 +753,7 @@ describe('ActionMatcher', () => { null, true, new UUIDT().toString(), - ['cohort'] + [{ distinctId: 'cohort' }] ) await hub.db.addPersonToCohort(testCohort.id, cohortPerson.id, testCohort.version) diff --git a/plugin-server/tests/worker/ingestion/event-pipeline/prepareEventStep.test.ts b/plugin-server/tests/worker/ingestion/event-pipeline/prepareEventStep.test.ts index 4c1467653f3245..d09a149d44c8b6 100644 --- a/plugin-server/tests/worker/ingestion/event-pipeline/prepareEventStep.test.ts +++ b/plugin-server/tests/worker/ingestion/event-pipeline/prepareEventStep.test.ts @@ -59,7 +59,7 @@ describe('prepareEventStep()', () => { // :KLUDGE: We test below whether kafka messages are produced, so make sure the person exists beforehand. await hub.db.createPerson(person.created_at, {}, {}, {}, pluginEvent.team_id, null, false, person.uuid, [ - 'my_id', + { distinctId: 'my_id' }, ]) hub.db.kafkaProducer!.queueMessage = jest.fn() diff --git a/plugin-server/tests/worker/ingestion/person-state.test.ts b/plugin-server/tests/worker/ingestion/person-state.test.ts index bed64d243e6c56..06bd8086ead840 100644 --- a/plugin-server/tests/worker/ingestion/person-state.test.ts +++ b/plugin-server/tests/worker/ingestion/person-state.test.ts @@ -222,39 +222,97 @@ describe('PersonState.update()', () => { expect(distinctIds).toEqual(expect.arrayContaining([])) }) - it('merging creates an override and force_upgrade works', async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [oldUserDistinctId]) + it('overrides are created only when distinct_id is in posthog_personlessdistinctid', async () => { + // oldUserDistinctId exists, and 'old2' will merge into it, but not create an override + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + + // newUserDistinctId exists, and 'new2' will merge into it, and will create an override + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) + await hub.db.addPersonlessDistinctId(teamId, 'new2') const hubParam = undefined - let processPerson = true + const processPerson = true const [_person, kafkaAcks] = await personState( + { + event: '$identify', + distinct_id: oldUserDistinctId, + properties: { + $anon_distinct_id: 'old2', + }, + }, + hubParam, + processPerson + ).update() + + const [_person2, kafkaAcks2] = await personState( { event: '$identify', distinct_id: newUserDistinctId, properties: { - $anon_distinct_id: oldUserDistinctId, + $anon_distinct_id: 'new2', }, }, hubParam, processPerson ).update() + await hub.db.kafkaProducer.flush() await kafkaAcks + await kafkaAcks2 - await delayUntilEventIngested(() => fetchOverridesForDistinctId(newUserDistinctId)) - const chOverrides = await fetchOverridesForDistinctId(newUserDistinctId) + // new2 has an override, because it was in posthog_personlessdistinctid + await delayUntilEventIngested(() => fetchOverridesForDistinctId('new2')) + const chOverrides = await fetchOverridesForDistinctId('new2') expect(chOverrides.length).toEqual(1) - - // Override created for Person that never existed in the DB expect(chOverrides).toEqual( expect.arrayContaining([ expect.objectContaining({ - distinct_id: newUserDistinctId, + distinct_id: 'new2', + person_id: newUserUuid, + version: 1, + }), + ]) + ) + + // old2 does have an override, because we are temporarily writing out unnecessary + // overrides while we backfill `posthog_personlessdistinctid` + const chOverridesOld = await fetchOverridesForDistinctId('old2') + expect(chOverridesOld.length).toEqual(1) + expect(chOverridesOld).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + distinct_id: 'old2', person_id: oldUserUuid, version: 1, }), ]) ) + }) + + it('force_upgrade works', async () => { + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + + const hubParam = undefined + let processPerson = true + const [_person, kafkaAcks] = await personState( + { + event: '$identify', + distinct_id: newUserDistinctId, + properties: { + $anon_distinct_id: oldUserDistinctId, + }, + }, + hubParam, + processPerson + ).update() + await hub.db.kafkaProducer.flush() + await kafkaAcks // Using the `distinct_id` again with `processPerson=false` results in // `force_upgrade=true` and real Person `uuid` and `created_at` @@ -378,7 +436,9 @@ describe('PersonState.update()', () => { }) it('handles person being created in a race condition', async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) jest.spyOn(hub.db, 'fetchPerson').mockImplementationOnce(() => { return Promise.resolve(undefined) @@ -415,7 +475,7 @@ describe('PersonState.update()', () => { it('handles person being created in a race condition updates properties if needed', async () => { await hub.db.createPerson(timestamp, { b: 3, c: 4 }, {}, {}, teamId, null, false, newUserUuid, [ - newUserDistinctId, + { distinctId: newUserDistinctId }, ]) jest.spyOn(hub.db, 'fetchPerson').mockImplementationOnce(() => { @@ -503,7 +563,7 @@ describe('PersonState.update()', () => { null, false, newUserUuid, - [newUserDistinctId] + [{ distinctId: newUserDistinctId }] ) const [person, kafkaAcks] = await personState({ @@ -539,7 +599,7 @@ describe('PersonState.update()', () => { it('updates person properties - no update if not needed', async () => { await hub.db.createPerson(timestamp, { $current_url: 123 }, {}, {}, teamId, null, false, newUserUuid, [ - newUserDistinctId, + { distinctId: newUserDistinctId }, ]) const [person, kafkaAcks] = await personState({ @@ -581,7 +641,7 @@ describe('PersonState.update()', () => { it('updates person properties - always update for person events', async () => { await hub.db.createPerson(timestamp, { $current_url: 123 }, {}, {}, teamId, null, false, newUserUuid, [ - newUserDistinctId, + { distinctId: newUserDistinctId }, ]) const [person, kafkaAcks] = await personState({ @@ -614,7 +674,9 @@ describe('PersonState.update()', () => { }) it('updates person properties - always update if undefined before', async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const [person, kafkaAcks] = await personState({ event: '$pageview', @@ -655,7 +717,7 @@ describe('PersonState.update()', () => { null, false, newUserUuid, - [newUserDistinctId] + [{ distinctId: newUserDistinctId }] ) const [person, kafkaAcks] = await personState({ @@ -697,7 +759,7 @@ describe('PersonState.update()', () => { null, false, newUserUuid, - [newUserDistinctId] + [{ distinctId: newUserDistinctId }] ) const personS = personState({ @@ -736,7 +798,7 @@ describe('PersonState.update()', () => { it('does not update person if not needed', async () => { await hub.db.createPerson(timestamp, { b: 3, c: 4 }, {}, {}, teamId, null, false, newUserUuid, [ - newUserDistinctId, + { distinctId: newUserDistinctId }, ]) const [person, kafkaAcks] = await personState({ @@ -771,7 +833,9 @@ describe('PersonState.update()', () => { }) it('marks user as is_identified', async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const personS = personState({ event: '$pageview', distinct_id: newUserDistinctId, @@ -823,8 +887,8 @@ describe('PersonState.update()', () => { properties_last_operation: {}, } await hub.db.createPerson(timestamp, { a: 6, c: 8 }, {}, {}, teamId, null, true, newUserUuid, [ - newUserDistinctId, - oldUserDistinctId, + { distinctId: newUserDistinctId }, + { distinctId: oldUserDistinctId }, ]) // the merged Person const personS = personState({ @@ -901,7 +965,7 @@ describe('PersonState.update()', () => { uuid: newUserUuid, properties: { foo: 'bar' }, created_at: timestamp, - version: 1, + version: 0, is_identified: true, }) ) @@ -920,8 +984,8 @@ describe('PersonState.update()', () => { it(`marks is_identified to be updated when no changes to distinct_ids but $anon_distinct_id passe`, async () => { await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [ - newUserDistinctId, - oldUserDistinctId, + { distinctId: newUserDistinctId }, + { distinctId: oldUserDistinctId }, ]) const personS = personState({ @@ -954,7 +1018,9 @@ describe('PersonState.update()', () => { }) it(`add distinct id and marks user is_identified when passed $anon_distinct_id person does not exists and distinct_id does`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const personS = personState({ event: '$identify', @@ -990,7 +1056,9 @@ describe('PersonState.update()', () => { }) it(`add distinct id and marks user as is_identified when passed $anon_distinct_id person exists and distinct_id does not`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [oldUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) const personS = personState({ event: '$identify', @@ -1027,8 +1095,12 @@ describe('PersonState.update()', () => { }) it(`merge into distinct_id person and marks user as is_identified when both persons have is_identified false`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [oldUserDistinctId]) - await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, false, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const [person, kafkaAcks] = await personState({ event: '$identify', @@ -1090,8 +1162,12 @@ describe('PersonState.update()', () => { }) it(`merge into distinct_id person and marks user as is_identified when distinct_id user is identified and $anon_distinct_id user is not`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [oldUserDistinctId]) - await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, true, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, true, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const [person, kafkaAcks] = await personState({ event: '$identify', @@ -1153,8 +1229,12 @@ describe('PersonState.update()', () => { }) it(`does not merge people when distinct_id user is not identified and $anon_distinct_id user is`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, oldUserUuid, [oldUserDistinctId]) - await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, false, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, false, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const personS = personState({ event: '$identify', @@ -1202,8 +1282,12 @@ describe('PersonState.update()', () => { }) it(`does not merge people when both users are identified`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, oldUserUuid, [oldUserDistinctId]) - await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, true, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, true, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const [person, kafkaAcks] = await personState({ event: '$identify', @@ -1250,10 +1334,10 @@ describe('PersonState.update()', () => { it(`merge into distinct_id person and updates properties with $set/$set_once`, async () => { await hub.db.createPerson(timestamp, { a: 1, b: 2 }, {}, {}, teamId, null, false, oldUserUuid, [ - oldUserDistinctId, + { distinctId: oldUserDistinctId }, ]) await hub.db.createPerson(timestamp2, { b: 3, c: 4, d: 5 }, {}, {}, teamId, null, false, newUserUuid, [ - newUserDistinctId, + { distinctId: newUserDistinctId }, ]) const [person, kafkaAcks] = await personState({ @@ -1318,7 +1402,9 @@ describe('PersonState.update()', () => { }) it(`handles race condition when other thread creates the user`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [oldUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) // Fake the race by assuming createPerson was called before the addDistinctId creation above jest.spyOn(hub.db, 'addDistinctId').mockImplementation(async (person, distinctId) => { @@ -1331,7 +1417,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, distinctId), - [distinctId] + [{ distinctId }] ) await hub.db.addDistinctId(person, distinctId, 0) // this throws }) @@ -1435,8 +1521,12 @@ describe('PersonState.update()', () => { describe(`overrides: ${useOverridesMode}`, () => { // only difference between $merge_dangerously and $identify it(`merge_dangerously can merge people when alias id user is identified`, async () => { - await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, oldUserUuid, [oldUserDistinctId]) - await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, true, newUserUuid, [newUserDistinctId]) + await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, oldUserUuid, [ + { distinctId: oldUserDistinctId }, + ]) + await hub.db.createPerson(timestamp2, {}, {}, {}, teamId, null, true, newUserUuid, [ + { distinctId: newUserDistinctId }, + ]) const [person, kafkaAcks] = await personState({ event: '$merge_dangerously', @@ -1569,7 +1659,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, 'anonymous_id'), - ['anonymous_id'] + [{ distinctId: 'anonymous_id' }] ) const identifiedPerson = await hub.db.createPerson( timestamp, @@ -1580,7 +1670,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, 'new_distinct_id'), - ['new_distinct_id'] + [{ distinctId: 'new_distinct_id' }] ) // existing overrides @@ -1646,7 +1736,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, 'anonymous_id'), - ['anonymous_id'] + [{ distinctId: 'anonymous_id' }] ) const identifiedPerson = await hub.db.createPerson( timestamp, @@ -1657,7 +1747,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, 'new_distinct_id'), - ['new_distinct_id'] + [{ distinctId: 'new_distinct_id' }] ) // existing overrides for both anonPerson and identifiedPerson @@ -1731,7 +1821,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, 'anonymous_id'), - ['anonymous_id'] + [{ distinctId: 'anonymous_id' }] ) const identifiedPerson = await hub.db.createPerson( timestamp, @@ -1742,7 +1832,7 @@ describe('PersonState.update()', () => { null, false, uuidFromDistinctId(teamId, 'new_distinct_id'), - ['new_distinct_id'] + [{ distinctId: 'new_distinct_id' }] ) await insertRow(hub.db.postgres, 'posthog_featureflaghashkeyoverride', { @@ -1814,8 +1904,8 @@ describe('PersonState.update()', () => { describe(`overrides: ${useOverridesMode}`, () => { it(`no-op if persons already merged`, async () => { await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, true, firstUserUuid, [ - firstUserDistinctId, - secondUserDistinctId, + { distinctId: firstUserDistinctId }, + { distinctId: secondUserDistinctId }, ]) const state: PersonState = personState({}, hub) jest.spyOn(hub.db.kafkaProducer, 'queueMessages') @@ -1852,7 +1942,7 @@ describe('PersonState.update()', () => { null, false, firstUserUuid, - [firstUserDistinctId] + [{ distinctId: firstUserDistinctId }] ) const second: InternalPerson = await hub.db.createPerson( timestamp, @@ -1863,7 +1953,7 @@ describe('PersonState.update()', () => { null, false, secondUserUuid, - [secondUserDistinctId] + [{ distinctId: secondUserDistinctId }] ) const state: PersonState = personState({}, hub) @@ -1945,7 +2035,7 @@ describe('PersonState.update()', () => { null, false, firstUserUuid, - [firstUserDistinctId] + [{ distinctId: firstUserDistinctId }] ) const second: InternalPerson = await hub.db.createPerson( timestamp, @@ -1956,7 +2046,7 @@ describe('PersonState.update()', () => { null, false, secondUserUuid, - [secondUserDistinctId] + [{ distinctId: secondUserDistinctId }] ) const state: PersonState = personState({}, hub) @@ -2005,10 +2095,10 @@ describe('PersonState.update()', () => { it(`retries merges up to retry limit if postgres down`, async () => { await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, firstUserUuid, [ - firstUserDistinctId, + { distinctId: firstUserDistinctId }, ]) await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, secondUserUuid, [ - secondUserDistinctId, + { distinctId: secondUserDistinctId }, ]) const state: PersonState = personState({}, hub) @@ -2054,10 +2144,10 @@ describe('PersonState.update()', () => { it(`handleIdentifyOrAlias does not throw on merge failure`, async () => { // TODO: This the current state, we should probably change it await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, firstUserUuid, [ - firstUserDistinctId, + { distinctId: firstUserDistinctId }, ]) await hub.db.createPerson(timestamp, {}, {}, {}, teamId, null, false, secondUserUuid, [ - secondUserDistinctId, + { distinctId: secondUserDistinctId }, ]) const state: PersonState = personState( @@ -2117,7 +2207,7 @@ describe('PersonState.update()', () => { null, false, firstUserUuid, - [firstUserDistinctId] + [{ distinctId: firstUserDistinctId }] ) const second: InternalPerson = await hub.db.createPerson( timestamp, @@ -2128,7 +2218,7 @@ describe('PersonState.update()', () => { null, false, secondUserUuid, - [secondUserDistinctId] + [{ distinctId: secondUserDistinctId }] ) const state: PersonState = personState({}, hub) @@ -2245,7 +2335,7 @@ describe('PersonState.update()', () => { null, false, firstUserUuid, - [firstUserDistinctId] + [{ distinctId: firstUserDistinctId }] ) const second: InternalPerson = await hub.db.createPerson( timestamp.plus({ minutes: 2 }), @@ -2256,7 +2346,7 @@ describe('PersonState.update()', () => { null, false, secondUserUuid, - [secondUserDistinctId] + [{ distinctId: secondUserDistinctId }] ) const third: InternalPerson = await hub.db.createPerson( timestamp.plus({ minutes: 5 }), @@ -2267,7 +2357,7 @@ describe('PersonState.update()', () => { null, false, new UUIDT().toString(), - ['third'] + [{ distinctId: 'third' }] ) // We want to simulate a concurrent update to person_overrides. We do @@ -2393,7 +2483,7 @@ describe('PersonState.update()', () => { null, false, firstUserUuid, - [firstUserDistinctId] + [{ distinctId: firstUserDistinctId }] ) const second: InternalPerson = await hub.db.createPerson( timestamp.plus({ minutes: 2 }), @@ -2404,7 +2494,7 @@ describe('PersonState.update()', () => { null, false, secondUserUuid, - [secondUserDistinctId] + [{ distinctId: secondUserDistinctId }] ) const third: InternalPerson = await hub.db.createPerson( timestamp.plus({ minutes: 5 }), @@ -2415,7 +2505,7 @@ describe('PersonState.update()', () => { null, false, new UUIDT().toString(), - ['third'] + [{ distinctId: 'third' }] ) await personState( diff --git a/plugin-server/tests/worker/ingestion/postgres-parity.test.ts b/plugin-server/tests/worker/ingestion/postgres-parity.test.ts index 28793282754783..632241251331d3 100644 --- a/plugin-server/tests/worker/ingestion/postgres-parity.test.ts +++ b/plugin-server/tests/worker/ingestion/postgres-parity.test.ts @@ -78,7 +78,7 @@ describe('postgres parity', () => { null, true, uuid, - ['distinct1', 'distinct2'] + [{ distinctId: 'distinct1' }, { distinctId: 'distinct2' }] ) await delayUntilEventIngested(() => hub.db.fetchPersons(Database.ClickHouse)) await delayUntilEventIngested(() => hub.db.fetchDistinctIdValues(person, Database.ClickHouse), 2) @@ -170,7 +170,7 @@ describe('postgres parity', () => { null, false, uuid, - ['distinct1', 'distinct2'] + [{ distinctId: 'distinct1' }, { distinctId: 'distinct2' }] ) await delayUntilEventIngested(() => hub.db.fetchPersons(Database.ClickHouse)) await delayUntilEventIngested(() => hub.db.fetchDistinctIdValues(person, Database.ClickHouse), 2) @@ -251,7 +251,7 @@ describe('postgres parity', () => { null, true, uuid, - ['distinct1'] + [{ distinctId: 'distinct1' }] ) const anotherPerson = await hub.db.createPerson( DateTime.utc(), @@ -262,7 +262,7 @@ describe('postgres parity', () => { null, true, uuid2, - ['another_distinct_id'] + [{ distinctId: 'another_distinct_id' }] ) await delayUntilEventIngested(() => hub.db.fetchPersons(Database.ClickHouse)) const [postgresPerson] = await hub.db.fetchPersons(Database.Postgres) @@ -334,7 +334,7 @@ describe('postgres parity', () => { null, false, uuid, - ['distinct1'] + [{ distinctId: 'distinct1' }] ) const anotherPerson = await hub.db.createPerson( DateTime.utc(), @@ -345,7 +345,7 @@ describe('postgres parity', () => { null, true, uuid2, - ['another_distinct_id'] + [{ distinctId: 'another_distinct_id' }] ) await delayUntilEventIngested(() => hub.db.fetchPersons(Database.ClickHouse)) const [postgresPerson] = await hub.db.fetchPersons(Database.Postgres) diff --git a/plugin-server/tests/worker/ingestion/process-event.test.ts b/plugin-server/tests/worker/ingestion/process-event.test.ts index b9947bb7eec746..e4353bdfc36f02 100644 --- a/plugin-server/tests/worker/ingestion/process-event.test.ts +++ b/plugin-server/tests/worker/ingestion/process-event.test.ts @@ -63,7 +63,7 @@ describe('EventsProcessor#createEvent()', () => { null, false, personUuid, - ['my_id'] + [{ distinctId: 'my_id' }] ) }) diff --git a/plugin-server/tests/worker/ingestion/properties-updater.test.ts b/plugin-server/tests/worker/ingestion/properties-updater.test.ts index b5bc38d64d2d87..16cde1c7e84abf 100644 --- a/plugin-server/tests/worker/ingestion/properties-updater.test.ts +++ b/plugin-server/tests/worker/ingestion/properties-updater.test.ts @@ -29,7 +29,7 @@ describe('properties-updater', () => { db = hub.db team = await getFirstTeam(hub) - await db.createPerson(PAST_TIMESTAMP, {}, {}, {}, team.id, null, false, uuid, [distinctId]) + await db.createPerson(PAST_TIMESTAMP, {}, {}, {}, team.id, null, false, uuid, [{ distinctId }]) jest.spyOn(hub.db, 'updateGroup') jest.spyOn(hub.db, 'insertGroup') diff --git a/posthog/migrations/0432_personlessdistinctid.py b/posthog/migrations/0432_personlessdistinctid.py new file mode 100644 index 00000000000000..96c6bcfc8717b1 --- /dev/null +++ b/posthog/migrations/0432_personlessdistinctid.py @@ -0,0 +1,32 @@ +# Generated by Django 4.2.11 on 2024-07-01 16:50 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0431_externaldataschema_sync_type_payload"), + ] + + operations = [ + migrations.CreateModel( + name="PersonlessDistinctId", + fields=[ + ("id", models.BigAutoField(primary_key=True, serialize=False)), + ("distinct_id", models.CharField(max_length=400)), + ("is_merged", models.BooleanField(default=False)), + ("created_at", models.DateTimeField(auto_now_add=True)), + ( + "team", + models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, to="posthog.team"), + ), + ], + ), + migrations.AddConstraint( + model_name="personlessdistinctid", + constraint=models.UniqueConstraint( + fields=("team", "distinct_id"), name="unique personless distinct_id for team" + ), + ), + ] diff --git a/posthog/models/person/person.py b/posthog/models/person/person.py index 72a5bd7c799487..7ccd7acabc6500 100644 --- a/posthog/models/person/person.py +++ b/posthog/models/person/person.py @@ -128,6 +128,19 @@ class Meta: version: models.BigIntegerField = models.BigIntegerField(null=True, blank=True) +class PersonlessDistinctId(models.Model): + class Meta: + constraints = [ + models.UniqueConstraint(fields=["team", "distinct_id"], name="unique personless distinct_id for team") + ] + + id: models.BigAutoField = models.BigAutoField(primary_key=True) + team: models.ForeignKey = models.ForeignKey("Team", on_delete=models.CASCADE, db_index=False) + distinct_id: models.CharField = models.CharField(max_length=400) + is_merged: models.BooleanField = models.BooleanField(default=False) + created_at: models.DateTimeField = models.DateTimeField(auto_now_add=True, blank=True) + + class PersonOverrideMapping(models.Model): """A model of persons to be overriden in merge or merge-like events.""" From 93f12619713538dc3be3b58ea1b0f3dbf754bfa4 Mon Sep 17 00:00:00 2001 From: Dylan Martin Date: Mon, 1 Jul 2024 14:41:30 -0400 Subject: [PATCH 02/18] fix(filters): Don't match on an invalid filter condition; if such a condition exists, fail the match (#23297) * saving work * cleaned up tests * this test condition no longer passes * Update query snapshots * saving work * cleaned it up * better comments * Update query snapshots * Update query snapshots * delete unused snapshot * Update query snapshots * Update query snapshots * relevant test condition * I think I covered everything * accidental commit --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../test_clickhouse_experiments.ambr | 103 ++------ posthog/api/feature_flag.py | 15 +- .../test/__snapshots__/test_feature_flag.ambr | 20 -- posthog/api/test/test_decide.py | 143 +++++++++++ posthog/api/test/test_feature_flag.py | 161 +++---------- .../test/__snapshots__/test_filter.ambr | 10 - posthog/models/filters/test/test_filter.py | 226 ++++++++++++++++-- posthog/queries/base.py | 11 +- .../test/__snapshots__/test_feature_flag.ambr | 90 ------- posthog/test/test_feature_flag.py | 57 +++++ 10 files changed, 482 insertions(+), 354 deletions(-) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index b1eb79a39945ce..525c25fb7bf3a2 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -227,97 +227,26 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.1 ''' - /* user_id:0 request:_snapshot_ */ - SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, - count(*) as count - FROM events e - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') - AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') - GROUP BY value - ORDER BY count DESC, value DESC - LIMIT 26 - OFFSET 0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.2 ''' - /* user_id:0 request:_snapshot_ */ - SELECT countIf(steps = 1) step_1, - countIf(steps = 2) step_2, - avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, - median(step_1_median_conversion_time_inner) step_1_median_conversion_time, - prop - FROM - (SELECT aggregation_target, - steps, - avg(step_1_conversion_time) step_1_average_conversion_time_inner, - median(step_1_conversion_time) step_1_median_conversion_time_inner , - prop - FROM - (SELECT aggregation_target, - steps, - max(steps) over (PARTITION BY aggregation_target, - prop) as max_steps, - step_1_conversion_time , - prop - FROM - (SELECT *, - if(latest_0 <= latest_1 - AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , - if(isNotNull(latest_1) - AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, - prop - FROM - (SELECT aggregation_target, timestamp, step_0, - latest_0, - step_1, - min(latest_1) over (PARTITION by aggregation_target, - prop - ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , - if(has([['test'], ['control']], prop), prop, ['Other']) as prop - FROM - (SELECT *, - if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop - FROM - (SELECT e.timestamp as timestamp, - pdi.person_id as aggregation_target, - pdi.person_id as person_id, - if(event = '$pageview', 1, 0) as step_0, - if(step_0 = 1, timestamp, null) as latest_0, - if(event = '$pageleave', 1, 0) as step_1, - if(step_1 = 1, timestamp, null) as latest_1, - array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, - prop_basic as prop, - argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals - FROM events e - INNER JOIN - (SELECT distinct_id, - argMax(person_id, version) as person_id - FROM person_distinct_id2 - WHERE team_id = 2 - AND distinct_id IN - (SELECT distinct_id - FROM events - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') - AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') ) - GROUP BY distinct_id - HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') - AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') - AND (step_0 = 1 - OR step_1 = 1) ))) - WHERE step_0 = 1 )) - GROUP BY aggregation_target, - steps, - prop - HAVING steps = max_steps) - GROUP BY prop + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.3 diff --git a/posthog/api/feature_flag.py b/posthog/api/feature_flag.py index 029a3186d4365d..62647ff9239258 100644 --- a/posthog/api/feature_flag.py +++ b/posthog/api/feature_flag.py @@ -246,10 +246,17 @@ def properties_all_match(predicate): detail=f"Invalid date value: {prop.value}", code="invalid_date" ) - # make sure regex and icontains properties have string values - if prop.operator in ["regex", "icontains", "not_regex", "not_icontains"] and not isinstance( - prop.value, str - ): + # make sure regex, icontains, gte, lte, lt, and gt properties have string values + if prop.operator in [ + "regex", + "icontains", + "not_regex", + "not_icontains", + "gte", + "lte", + "gt", + "lt", + ] and not isinstance(prop.value, str): raise serializers.ValidationError( detail=f"Invalid value for operator {prop.operator}: {prop.value}", code="invalid_value" ) diff --git a/posthog/api/test/__snapshots__/test_feature_flag.ambr b/posthog/api/test/__snapshots__/test_feature_flag.ambr index 475b0ab956bb20..0eb5a83cdcc17e 100644 --- a/posthog/api/test/__snapshots__/test_feature_flag.ambr +++ b/posthog/api/test/__snapshots__/test_feature_flag.ambr @@ -1801,26 +1801,6 @@ LIMIT 100 SETTINGS optimize_aggregation_in_order = 1 ''' # --- -# name: TestFeatureFlag.test_creating_static_cohort.16 - ''' - /* user_id:0 request:_snapshot_ */ - SELECT id - FROM person - INNER JOIN - (SELECT person_id - FROM person_static_cohort - WHERE team_id = 2 - AND cohort_id = 2 - GROUP BY person_id, - cohort_id, - team_id) cohort_persons ON cohort_persons.person_id = person.id - WHERE team_id = 2 - GROUP BY id - HAVING max(is_deleted) = 0 - ORDER BY argMax(person.created_at, version) DESC, id DESC - LIMIT 100 SETTINGS optimize_aggregation_in_order = 1 - ''' -# --- # name: TestFeatureFlag.test_creating_static_cohort.2 ''' SELECT "posthog_organizationmembership"."id", diff --git a/posthog/api/test/test_decide.py b/posthog/api/test/test_decide.py index fd265ea60b98dd..34009fdf4ea12e 100644 --- a/posthog/api/test/test_decide.py +++ b/posthog/api/test/test_decide.py @@ -2200,6 +2200,149 @@ def test_flag_with_regular_cohorts(self, *args): self.assertEqual(response.json()["featureFlags"], {"cohort-flag": False}) self.assertEqual(response.json()["errorsWhileComputingFlags"], False) + def test_flag_with_invalid_cohort_filter_condition(self, *args): + self.team.app_urls = ["https://example.com"] + self.team.save() + self.client.logout() + + person1_distinct_id = "example_id" + Person.objects.create( + team=self.team, + distinct_ids=[person1_distinct_id], + properties={"registration_ts": 1716447600}, + ) + + # Create a cohort with an invalid filter condition (tis broken filter came from this issue: https://github.com/PostHog/posthog/issues/23213) + # The invalid condition is that the registration_ts property is compared against a list of values + # Since this filter must match everything, the flag should evaluate to False + cohort = Cohort.objects.create( + team=self.team, + filters={ + "properties": { + "type": "OR", + "values": [ + { + "type": "AND", + "values": [ + # This is the valid condition + { + "key": "registration_ts", + "type": "person", + "value": "1716274800", + "operator": "gte", + }, + # This is the invalid condition (lte operator comparing against a list of values) + { + "key": "registration_ts", + "type": "person", + "value": ["1716447600"], + "operator": "lte", + }, + ], + } + ], + } + }, + name="Test cohort", + ) + + # Create a feature flag that uses the cohort + FeatureFlag.objects.create( + team=self.team, + filters={ + "groups": [ + { + "properties": [ + { + "key": "id", + "type": "cohort", + "value": cohort.pk, + } + ], + } + ] + }, + name="This is a cohort-based flag", + key="cohort-flag", + created_by=self.user, + ) + + with self.assertNumQueries(5): + response = self._post_decide(api_version=3, distinct_id=person1_distinct_id) + self.assertEqual(response.json()["featureFlags"], {"cohort-flag": False}) + self.assertEqual(response.json()["errorsWhileComputingFlags"], False) + + def test_flag_with_invalid_but_safe_cohort_filter_condition(self, *args): + self.team.app_urls = ["https://example.com"] + self.team.save() + self.client.logout() + + person1_distinct_id = "example_id" + Person.objects.create( + team=self.team, + distinct_ids=[person1_distinct_id], + properties={"registration_ts": 1716447600}, + ) + + # Create a cohort with a safe OR filter that contains an invalid condition + # it should still evaluate the FeatureFlag to True + cohort = Cohort.objects.create( + team=self.team, + filters={ + "properties": { + "type": "OR", + "values": [ + { + "type": "OR", + "values": [ + # This is the valid condition + { + "key": "registration_ts", + "type": "person", + "value": "1716274800", + "operator": "gte", + }, + # This is the invalid condition (lte operator comparing against a list of values) + { + "key": "registration_ts", + "type": "person", + "value": ["1716447600"], + "operator": "lte", + }, + ], + } + ], + } + }, + name="Test cohort", + ) + + # Create a feature flag that uses the cohort + FeatureFlag.objects.create( + team=self.team, + filters={ + "groups": [ + { + "properties": [ + { + "key": "id", + "type": "cohort", + "value": cohort.pk, + } + ], + } + ] + }, + name="This is a cohort-based flag", + key="cohort-flag", + created_by=self.user, + ) + + with self.assertNumQueries(5): + response = self._post_decide(api_version=3, distinct_id=person1_distinct_id) + self.assertEqual(response.json()["featureFlags"], {"cohort-flag": True}) + self.assertEqual(response.json()["errorsWhileComputingFlags"], False) + def test_flag_with_unknown_cohort(self, *args): self.team.app_urls = ["https://example.com"] self.team.save() diff --git a/posthog/api/test/test_feature_flag.py b/posthog/api/test/test_feature_flag.py index 3536f0b8e7352a..03fccd5f3b7302 100644 --- a/posthog/api/test/test_feature_flag.py +++ b/posthog/api/test/test_feature_flag.py @@ -86,139 +86,45 @@ def test_cant_create_flag_with_duplicate_key(self): def test_cant_create_flag_with_invalid_filters(self): count = FeatureFlag.objects.count() - response = self.client.post( - f"/api/projects/{self.team.id}/feature_flags", - { - "name": "Beta feature", - "key": "beta-x", - "filters": { - "groups": [ - { - "rollout_percentage": 65, - "properties": [ - { - "key": "email", - "type": "person", - "value": ["@posthog.com"], - "operator": "icontains", - } - ], - } - ] - }, - }, - ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual( - response.json(), - { - "type": "validation_error", - "code": "invalid_value", - "detail": "Invalid value for operator icontains: ['@posthog.com']", - "attr": "filters", - }, - ) + invalid_operators = ["icontains", "regex", "not_icontains", "not_regex", "lt", "gt", "lte", "gte"] - response = self.client.post( - f"/api/projects/{self.team.id}/feature_flags", - { - "name": "Beta feature", - "key": "beta-x", - "filters": { - "groups": [ - { - "rollout_percentage": 65, - "properties": [ - { - "key": "email", - "type": "person", - "value": ["@posthog.com"], - "operator": "regex", - } - ], - } - ] + for operator in invalid_operators: + response = self.client.post( + f"/api/projects/{self.team.id}/feature_flags", + { + "name": "Beta feature", + "key": "beta-x", + "filters": { + "groups": [ + { + "rollout_percentage": 65, + "properties": [ + { + "key": "email", + "type": "person", + "value": ["@posthog.com"], + "operator": operator, + } + ], + } + ] + }, }, - }, - ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual( - response.json(), - { - "type": "validation_error", - "code": "invalid_value", - "detail": "Invalid value for operator regex: ['@posthog.com']", - "attr": "filters", - }, - ) - - response = self.client.post( - f"/api/projects/{self.team.id}/feature_flags", - { - "name": "Beta feature", - "key": "beta-x", - "filters": { - "groups": [ - { - "rollout_percentage": 65, - "properties": [ - { - "key": "email", - "type": "person", - "value": ["@posthog.com"], - "operator": "not_icontains", - } - ], - } - ] + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual( + response.json(), + { + "type": "validation_error", + "code": "invalid_value", + "detail": f"Invalid value for operator {operator}: ['@posthog.com']", + "attr": "filters", }, - }, - ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual( - response.json(), - { - "type": "validation_error", - "code": "invalid_value", - "detail": "Invalid value for operator not_icontains: ['@posthog.com']", - "attr": "filters", - }, - ) + ) - response = self.client.post( - f"/api/projects/{self.team.id}/feature_flags", - { - "name": "Beta feature", - "key": "beta-x", - "filters": { - "groups": [ - { - "rollout_percentage": 65, - "properties": [ - { - "key": "email", - "type": "person", - "value": ["@posthog.com"], - "operator": "not_regex", - } - ], - } - ] - }, - }, - ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual( - response.json(), - { - "type": "validation_error", - "code": "invalid_value", - "detail": "Invalid value for operator not_regex: ['@posthog.com']", - "attr": "filters", - }, - ) self.assertEqual(FeatureFlag.objects.count(), count) + # Test that a string value is still acceptable response = self.client.post( f"/api/projects/{self.team.id}/feature_flags", { @@ -241,6 +147,7 @@ def test_cant_create_flag_with_invalid_filters(self): }, }, ) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) def test_cant_update_flag_with_duplicate_key(self): diff --git a/posthog/models/filters/test/__snapshots__/test_filter.ambr b/posthog/models/filters/test/__snapshots__/test_filter.ambr index 04594a21b0f0e2..99b4b95de8e772 100644 --- a/posthog/models/filters/test/__snapshots__/test_filter.ambr +++ b/posthog/models/filters/test/__snapshots__/test_filter.ambr @@ -357,16 +357,6 @@ AND "posthog_person"."team_id" = 2) ''' # --- -# name: TestDjangoPropertiesToQ.test_icontains_with_array_value.2 - ''' - SELECT "posthog_person"."uuid" - FROM "posthog_person" - WHERE (("posthog_person"."properties" -> '$key') > '["2"]'::jsonb - AND "posthog_person"."properties" ? '$key' - AND NOT (("posthog_person"."properties" -> '$key') = 'null'::jsonb) - AND "posthog_person"."team_id" = 2) - ''' -# --- # name: TestDjangoPropertiesToQ.test_person_relative_date_parsing_with_invalid_date ''' SELECT 1 AS "a" diff --git a/posthog/models/filters/test/test_filter.py b/posthog/models/filters/test/test_filter.py index eb99a3ac429411..d7901c721e96a0 100644 --- a/posthog/models/filters/test/test_filter.py +++ b/posthog/models/filters/test/test_filter.py @@ -796,6 +796,218 @@ def test_person_relative_date_parsing(self): ) self.assertTrue(matched_person) + def test_person_matching_greater_than_filter(self): + person1_distinct_id = "example_id" + Person.objects.create( + team=self.team, + distinct_ids=[person1_distinct_id], + properties={"registration_ts": 5}, + ) + filter = Filter( + data={"properties": [{"key": "registration_ts", "value": "4", "type": "person", "operator": "gt"}]} + ) + + with self.assertNumQueries(1): + matched_person = ( + Person.objects.annotate( + **{ + "properties_registrationts_68f210b8c014e1b_type": Func( + F("properties__registration_ts"), + function="JSONB_TYPEOF", + output_field=CharField(), + ) + } + ) + .filter( + team_id=self.team.pk, + persondistinctid__distinct_id=person1_distinct_id, + ) + .filter(properties_to_Q(self.team.pk, filter.property_groups.flat)) + .exists() + ) + self.assertTrue(matched_person) + + def test_broken_person_filter_never_matching(self): + person1_distinct_id = "example_id" + Person.objects.create( + team=self.team, + distinct_ids=[person1_distinct_id], + properties={"registration_ts": 1716447600}, + ) + # This broken filter came from this issue: https://github.com/PostHog/posthog/issues/23213 + filter = Filter( + data={ + "properties": { + "type": "OR", + "values": [ + { + "type": "AND", + "values": [ + # This is the valid condition + { + "key": "registration_ts", + "type": "person", + "value": "1716274800", + "negation": False, + "operator": "gte", + }, + # This is the invalid condition (lte operator comparing against a list of values) + { + "key": "registration_ts", + "type": "person", + "value": ["1716447600"], + "negation": False, + "operator": "lte", + }, + ], + } + ], + } + } + ) + + with self.assertNumQueries(1): + matched_person = ( + Person.objects.annotate( + **{ + "properties_registrationts_68f210b8c014e1b_type": Func( + F("properties__registration_ts"), + function="JSONB_TYPEOF", + output_field=CharField(), + ) + } + ) + .filter( + team_id=self.team.pk, + persondistinctid__distinct_id=person1_distinct_id, + ) + .filter(properties_to_Q(self.team.pk, filter.property_groups.flat)) + .exists() + ) + # This shouldn't pass because we have an AND condition with a broken lte operator + # (we should never have a lte operator comparing against a list of values) + # So this should never match + self.assertFalse(matched_person) + + def test_broken_condition_does_not_break_entire_filter(self): + person1_distinct_id = "example_id" + Person.objects.create( + team=self.team, + distinct_ids=[person1_distinct_id], + properties={"registration_ts": 1716447600}, + ) + # Create a cohort with an OR filter that has an invalid condition + # (a lte operator comparing against a list of values) + # This should still evaluate to True, though, because the other condition is valid + cohort = Cohort.objects.create( + team=self.team, + name="Test OR Cohort", + filters={ + "properties": { + "type": "OR", + "values": [ + { + "type": "OR", + # This is the valid condition + "values": [ + { + "key": "registration_ts", + "type": "person", + "value": "1716274800", + "negation": False, + "operator": "gte", + }, + # This is the invalid condition + { + "key": "registration_ts", + "type": "person", + "value": ["1716447600"], + "negation": False, + "operator": "lte", + }, + ], + } + ], + } + }, + ) + filter = Filter(data={"properties": [{"key": "id", "value": cohort.pk, "type": "cohort"}]}) + with self.assertNumQueries(2): + matched_person = ( + Person.objects.annotate( + **{ + "properties_registrationts_68f210b8c014e1b_type": Func( + F("properties__registration_ts"), + function="JSONB_TYPEOF", + output_field=CharField(), + ) + } + ) + .filter( + team_id=self.team.pk, + persondistinctid__distinct_id=person1_distinct_id, + ) + .filter(properties_to_Q(self.team.pk, filter.property_groups.flat)) + .exists() + ) + # This should now pass because the cohort filter still has one valid condition + self.assertTrue(matched_person) + + def test_person_matching_real_filter(self): + person1_distinct_id = "example_id" + Person.objects.create( + team=self.team, + distinct_ids=[person1_distinct_id], + properties={"registration_ts": 1716447600}, + ) + filter = Filter( + data={ + "properties": { + "type": "OR", + "values": [ + { + "type": "AND", + "values": [ + { + "key": "registration_ts", + "type": "person", + "value": "1716274800", + "negation": False, + "operator": "gt", + }, + { + "key": "registration_ts", + "type": "person", + "value": ["1716447600"], + "negation": False, + "operator": "exact", + }, + ], + } + ], + } + } + ) + with self.assertNumQueries(1): + matched_person = ( + Person.objects.annotate( + **{ + "properties_registrationts_68f210b8c014e1b_type": Func( + F("properties__registration_ts"), + function="JSONB_TYPEOF", + output_field=CharField(), + ) + } + ) + .filter( + team_id=self.team.pk, + persondistinctid__distinct_id=person1_distinct_id, + ) + .filter(properties_to_Q(self.team.pk, filter.property_groups.flat)) + .exists() + ) + self.assertTrue(matched_person) + def test_person_relative_date_parsing_with_override_property(self): person1_distinct_id = "example_id" Person.objects.create( @@ -978,20 +1190,6 @@ def filter_persons_with_annotation(filter: Filter, team: Team): ) self.assertEqual(len(filter_persons_with_annotation(filter, self.team)), 1) - filter = Filter( - data={ - "properties": [ - { - "type": "person", - "key": "$key", - "value": ["2"], - "operator": "gt", - } - ] - } - ) - self.assertEqual(len(filter_persons_with_annotation(filter, self.team)), 0) - def filter_persons_with_property_group( filter: Filter, team: Team, property_overrides: Optional[dict[str, Any]] = None diff --git a/posthog/queries/base.py b/posthog/queries/base.py index e5cf6e717444b8..3d7f52e7b98d89 100644 --- a/posthog/queries/base.py +++ b/posthog/queries/base.py @@ -240,9 +240,16 @@ def empty_or_null_with_value_q( else: parsed_value = None if operator in ("gt", "gte", "lt", "lte"): + if isinstance(value, list): + # If the value is a list for these operators, + # we should not return any results, as we can't compare a list to a single value + # TODO: should we try and parse each value in the list and return results based on that? + return Q(pk__isnull=True) + + # At this point, we know that the value is not a list, so we can safely parse it + # There might still be exceptions, but we're catching them below try: - # try to parse even if arrays can't be parsed, the catch will handle it - parsed_value = float(value) # type: ignore + parsed_value = float(value) except Exception: pass diff --git a/posthog/test/__snapshots__/test_feature_flag.ambr b/posthog/test/__snapshots__/test_feature_flag.ambr index a1fc1f4654fab2..8699844b2b6470 100644 --- a/posthog/test/__snapshots__/test_feature_flag.ambr +++ b/posthog/test/__snapshots__/test_feature_flag.ambr @@ -551,39 +551,6 @@ AND "posthog_person"."team_id" = 2) ''' # --- -# name: TestFeatureFlagMatcher.test_numeric_operator_with_cohorts_and_nested_cohorts.2 - ''' - SELECT (((("posthog_person"."properties" -> 'number') > '"100"' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'number')) = ('string')) - OR (("posthog_person"."properties" -> 'number') > '100.0' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'number')) = ('number'))) - AND "posthog_person"."properties" ? 'number' - AND NOT (("posthog_person"."properties" -> 'number') = 'null')) AS "flag_X_condition_0", - (((("posthog_person"."properties" -> 'version') > '"1.05"' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'version')) = ('string')) - OR (("posthog_person"."properties" -> 'version') > '1.05' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'version')) = ('number'))) - AND "posthog_person"."properties" ? 'version' - AND NOT (("posthog_person"."properties" -> 'version') = 'null')) AS "flag_X_condition_0", - (((("posthog_person"."properties" -> 'number') < '"31"' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'number')) = ('string')) - OR (("posthog_person"."properties" -> 'number') < '31.0' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'number')) = ('number'))) - AND "posthog_person"."properties" ? 'number' - AND NOT (("posthog_person"."properties" -> 'number') = 'null') - AND ((("posthog_person"."properties" -> 'nested_prop') > '"20"' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'nested_prop')) = ('string')) - OR (("posthog_person"."properties" -> 'nested_prop') > '20.0' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'nested_prop')) = ('number'))) - AND "posthog_person"."properties" ? 'nested_prop' - AND NOT (("posthog_person"."properties" -> 'nested_prop') = 'null')) AS "flag_X_condition_0" - FROM "posthog_person" - INNER JOIN "posthog_persondistinctid" ON ("posthog_person"."id" = "posthog_persondistinctid"."person_id") - WHERE ("posthog_persondistinctid"."distinct_id" = '307' - AND "posthog_persondistinctid"."team_id" = 2 - AND "posthog_person"."team_id" = 2) - ''' -# --- # name: TestFeatureFlagMatcher.test_numeric_operator_with_groups_and_person_flags ''' SELECT "posthog_grouptypemapping"."id", @@ -656,26 +623,6 @@ AND "posthog_person"."team_id" = 2) ''' # --- -# name: TestFeatureFlagMatcher.test_super_condition_matches_string.1 - ''' - SELECT ((("posthog_person"."properties" -> 'is_enabled') = 'true' - OR ("posthog_person"."properties" -> 'is_enabled') = '"true"') - AND "posthog_person"."properties" ? 'is_enabled' - AND NOT (("posthog_person"."properties" -> 'is_enabled') = 'null')) AS "flag_X_super_condition", ("posthog_person"."properties" -> 'is_enabled') IS NOT NULL AS "flag_X_super_condition_is_set", - (("posthog_person"."properties" -> 'email') = '"fake@posthog.com"' - AND "posthog_person"."properties" ? 'email' - AND NOT (("posthog_person"."properties" -> 'email') = 'null')) AS "flag_X_condition_0", - (("posthog_person"."properties" -> 'email') = '"test@posthog.com"' - AND "posthog_person"."properties" ? 'email' - AND NOT (("posthog_person"."properties" -> 'email') = 'null')) AS "flag_X_condition_1", - (true) AS "flag_X_condition_2" - FROM "posthog_person" - INNER JOIN "posthog_persondistinctid" ON ("posthog_person"."id" = "posthog_persondistinctid"."person_id") - WHERE ("posthog_persondistinctid"."distinct_id" = 'test_id' - AND "posthog_persondistinctid"."team_id" = 2 - AND "posthog_person"."team_id" = 2) - ''' -# --- # name: TestFeatureFlagMatcher.test_with_sql_injection_properties_and_other_aliases ''' SELECT "posthog_team"."id", @@ -822,43 +769,6 @@ AND "posthog_person"."team_id" = 2) ''' # --- -# name: TestFeatureFlagMatcher.test_with_sql_injection_properties_and_other_aliases.4 - ''' - SELECT (((("posthog_person"."properties" -> 'number space') > '"100"' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'number space')) = ('string')) - OR (("posthog_person"."properties" -> 'number space') > '100.0' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'number space')) = ('number'))) - AND "posthog_person"."properties" ? 'number space' - AND NOT (("posthog_person"."properties" -> 'number space') = 'null') - AND ((JSONB_TYPEOF(("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;')) = ('string') - AND ("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;') > '"100"') - OR (JSONB_TYPEOF(("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;')) = ('number') - AND ("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;') > '100.0')) - AND "posthog_person"."properties" ? ';''" SELECT 1; DROP TABLE posthog_featureflag;' - AND NOT (("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;') = 'null')) AS "flag_X_condition_0", - (((JSONB_TYPEOF(("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;')) = ('string') - AND ("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;') > '"100"') - OR (JSONB_TYPEOF(("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;')) = ('number') - AND ("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;') > '100.0')) - AND "posthog_person"."properties" ? ';''" SELECT 1; DROP TABLE posthog_featureflag;' - AND NOT (("posthog_person"."properties" -> ';''" SELECT 1; DROP TABLE posthog_featureflag;') = 'null')) AS "flag_X_condition_1", - (((("posthog_person"."properties" -> 'version!!!') > '"1.05"' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'version!!!')) = ('string')) - OR (("posthog_person"."properties" -> 'version!!!') > '1.05' - AND JSONB_TYPEOF(("posthog_person"."properties" -> 'version!!!')) = ('number'))) - AND "posthog_person"."properties" ? 'version!!!' - AND NOT (("posthog_person"."properties" -> 'version!!!') = 'null')) AS "flag_X_condition_2", - ((("posthog_person"."properties" -> 'nested_prop --random #comment //test') = '"21"' - OR ("posthog_person"."properties" -> 'nested_prop --random #comment //test') = '21') - AND "posthog_person"."properties" ? 'nested_prop --random #comment //test' - AND NOT (("posthog_person"."properties" -> 'nested_prop --random #comment //test') = 'null')) AS "flag_X_condition_3" - FROM "posthog_person" - INNER JOIN "posthog_persondistinctid" ON ("posthog_person"."id" = "posthog_persondistinctid"."person_id") - WHERE ("posthog_persondistinctid"."distinct_id" = '307' - AND "posthog_persondistinctid"."team_id" = 2 - AND "posthog_person"."team_id" = 2) - ''' -# --- # name: TestHashKeyOverridesRaceConditions.test_hash_key_overrides_with_simulated_error_race_conditions_on_person_merging 'BEGIN' # --- diff --git a/posthog/test/test_feature_flag.py b/posthog/test/test_feature_flag.py index 098726bbd270d4..5c6388f3dec8e4 100644 --- a/posthog/test/test_feature_flag.py +++ b/posthog/test/test_feature_flag.py @@ -798,6 +798,63 @@ def test_invalid_regex_match_flag(self): FeatureFlagMatch(False, None, FeatureFlagMatchReason.NO_CONDITION_MATCH, 0), ) + def test_feature_flag_with_greater_than_filter(self): + Person.objects.create( + team=self.team, + distinct_ids=["example_id"], + properties={"$some_prop": 5}, + ) + feature_flag = self.create_feature_flag( + key="flag-with-gt-filter", + filters={ + "groups": [{"properties": [{"key": "$some_prop", "value": 4, "type": "person", "operator": "gt"}]}] + }, + ) + + with self.assertNumQueries(4): + self.assertEqual( + self.match_flag(feature_flag, "example_id"), + FeatureFlagMatch(True, None, FeatureFlagMatchReason.CONDITION_MATCH, 0), + ) + + def test_feature_flag_with_greater_than_filter_no_match(self): + Person.objects.create( + team=self.team, + distinct_ids=["example_id"], + properties={"$some_prop": 3}, + ) + feature_flag = self.create_feature_flag( + key="flag-with-gt-filter", + filters={ + "groups": [{"properties": [{"key": "$some_prop", "value": 4, "type": "person", "operator": "gt"}]}] + }, + ) + + with self.assertNumQueries(4): + self.assertEqual( + self.match_flag(feature_flag, "example_id"), + FeatureFlagMatch(False, None, FeatureFlagMatchReason.NO_CONDITION_MATCH, 0), + ) + + def test_feature_flag_with_greater_than_filter_invalid_value(self): + Person.objects.create( + team=self.team, + distinct_ids=["example_id"], + properties={"$some_prop": 3}, + ) + feature_flag = self.create_feature_flag( + key="flag-with-gt-filter", + filters={ + "groups": [{"properties": [{"key": "$some_prop", "value": ["4"], "type": "person", "operator": "gt"}]}] + }, + ) + + with self.assertNumQueries(3): + self.assertEqual( + self.match_flag(feature_flag, "example_id"), + FeatureFlagMatch(False, None, FeatureFlagMatchReason.NO_CONDITION_MATCH, 0), + ) + def test_coercion_of_strings_and_numbers(self): Person.objects.create( team=self.team, From 934ac045684d57bde177cde1262dba838ff36456 Mon Sep 17 00:00:00 2001 From: Sandy Spicer Date: Mon, 1 Jul 2024 12:22:01 -0700 Subject: [PATCH 03/18] fix: correct issue with funnels queries, switch to experimental analyzer (#23348) --- posthog/clickhouse/client/execute.py | 5 +- posthog/hogql/constants.py | 1 + .../hogql_queries/insights/funnels/base.py | 4 +- .../insights/funnels/funnels_query_runner.py | 6 +- .../test/__snapshots__/test_funnel.ambr | 116 +++--- ...test_funnel_breakdowns_by_current_url.ambr | 14 +- .../test_funnel_correlation.ambr | 344 +++++++++--------- .../test_funnel_correlations_persons.ambr | 40 +- .../__snapshots__/test_funnel_persons.ambr | 24 +- .../__snapshots__/test_funnel_strict.ambr | 42 ++- .../test_funnel_strict_persons.ambr | 24 +- .../test_funnel_time_to_convert.ambr | 117 +++--- .../__snapshots__/test_funnel_trends.ambr | 9 +- .../__snapshots__/test_funnel_unordered.ambr | 42 ++- .../test_funnel_unordered_persons.ambr | 8 +- .../insights/funnels/test/test_funnel.py | 4 +- .../funnels/test/test_funnel_trends.py | 6 +- .../insights/insight_actors_query_runner.py | 9 + .../test_insight_actors_query_runner.ambr | 8 +- 19 files changed, 435 insertions(+), 388 deletions(-) diff --git a/posthog/clickhouse/client/execute.py b/posthog/clickhouse/client/execute.py index adcd9b726ac65f..317fa66755e8ac 100644 --- a/posthog/clickhouse/client/execute.py +++ b/posthog/clickhouse/client/execute.py @@ -41,8 +41,11 @@ @lru_cache(maxsize=1) def default_settings() -> dict: + # https://clickhouse.com/blog/clickhouse-fully-supports-joins-how-to-choose-the-right-algorithm-part5 + # We default to three memory bound join operations, in decreasing order of speed + # The merge algorithms are not memory bound, and can be selectively used in places where it makes sense return { - "join_algorithm": "direct,parallel_hash", + "join_algorithm": "direct,parallel_hash,hash", "distributed_replica_max_ignored_errors": 1000, } diff --git a/posthog/hogql/constants.py b/posthog/hogql/constants.py index a273f1da6919d7..02e29cbfad351a 100644 --- a/posthog/hogql/constants.py +++ b/posthog/hogql/constants.py @@ -105,3 +105,4 @@ class HogQLGlobalSettings(HogQLQuerySettings): max_expanded_ast_elements: Optional[int] = 2_000_000 max_query_size: Optional[int] = 262144 * 4 # default value 262144 (= 256 KiB) max_bytes_before_external_group_by: Optional[int] = 0 # default value means we don't swap ordering by to disk + allow_experimental_analyzer: Optional[bool] = None diff --git a/posthog/hogql_queries/insights/funnels/base.py b/posthog/hogql_queries/insights/funnels/base.py index 3389b4e4d26f15..c6bb8f5149e164 100644 --- a/posthog/hogql_queries/insights/funnels/base.py +++ b/posthog/hogql_queries/insights/funnels/base.py @@ -1022,9 +1022,7 @@ def _get_step_counts_query(self, outer_select: list[ast.Expr], inner_select: lis ) ), group_by=group_by_columns, - having=ast.CompareOperation( - left=ast.Field(chain=["steps"]), right=ast.Field(chain=["max_steps"]), op=ast.CompareOperationOp.Eq - ), + having=parse_expr("steps = max(max_steps)"), ) def actor_query( diff --git a/posthog/hogql_queries/insights/funnels/funnels_query_runner.py b/posthog/hogql_queries/insights/funnels/funnels_query_runner.py index 3ad62c08a1f66d..a0e64046945025 100644 --- a/posthog/hogql_queries/insights/funnels/funnels_query_runner.py +++ b/posthog/hogql_queries/insights/funnels/funnels_query_runner.py @@ -97,8 +97,10 @@ def calculate(self): modifiers=self.modifiers, limit_context=self.limit_context, settings=HogQLGlobalSettings( - max_bytes_before_external_group_by=MAX_BYTES_BEFORE_EXTERNAL_GROUP_BY - ), # Make sure funnel queries never OOM + # Make sure funnel queries never OOM + max_bytes_before_external_group_by=MAX_BYTES_BEFORE_EXTERNAL_GROUP_BY, + allow_experimental_analyzer=True, + ), ) results = self.funnel_class._format_results(response.results) diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr index d53092966d4d18..fc56c51aa897db 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr @@ -84,8 +84,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, @@ -93,7 +93,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_conversion_window_seconds.1 @@ -180,8 +181,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -219,8 +220,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-05-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-05-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -331,8 +332,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, @@ -340,7 +341,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_with_precalculated_cohort_step_filter @@ -418,8 +420,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, @@ -427,7 +429,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_with_property_groups @@ -527,8 +530,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, @@ -536,7 +539,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_with_property_groups.1 @@ -635,8 +639,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -683,8 +687,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-07-01 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('$pageview', 'user signed up')), or(and(ifNull(ilike(e__pdi__person.properties___email, '%.com%'), 0), ifNull(equals(e__pdi__person.properties___age, '20'), 0)), or(ifNull(ilike(e__pdi__person.properties___email, '%.org%'), 0), ifNull(equals(e__pdi__person.properties___age, '28'), 0)))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -797,8 +801,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -845,8 +849,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-07-01 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('$pageview', 'user signed up')), or(and(ifNull(ilike(e__pdi__person.properties___email, '%.com%'), 0), ifNull(equals(e__pdi__person.properties___age, '20'), 0)), or(ifNull(ilike(e__pdi__person.properties___email, '%.org%'), 0), ifNull(equals(e__pdi__person.properties___age, '28'), 0)))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -959,8 +963,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -1007,8 +1011,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-07-01 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('$pageview', 'user signed up')), or(and(ifNull(ilike(e__pdi__person.properties___email, '%.com%'), 0), ifNull(equals(e__pdi__person.properties___age, '20'), 0)), or(ifNull(ilike(e__pdi__person.properties___email, '%.org%'), 0), ifNull(equals(e__pdi__person.properties___age, '28'), 0)))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -1089,8 +1093,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, @@ -1098,7 +1102,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_timezones @@ -1153,8 +1158,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, @@ -1162,7 +1167,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelBreakdown.test_funnel_breakdown_correct_breakdown_props_are_chosen @@ -1248,8 +1254,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1259,7 +1265,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelBreakdown.test_funnel_breakdown_correct_breakdown_props_are_chosen_for_step @@ -1352,8 +1359,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1363,7 +1370,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelBreakdown.test_funnel_step_multiple_breakdown_snapshot @@ -1449,8 +1457,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1460,7 +1468,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelGroupBreakdown.test_funnel_aggregate_by_groups_breakdown_group_person_on_events @@ -1587,8 +1596,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1598,7 +1607,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelGroupBreakdown.test_funnel_aggregate_by_groups_breakdown_group_person_on_events_poe_v2 @@ -1725,8 +1735,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1736,7 +1746,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelGroupBreakdown.test_funnel_breakdown_group @@ -1870,8 +1881,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1881,7 +1892,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelGroupBreakdown.test_funnel_breakdown_group.1 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_breakdowns_by_current_url.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_breakdowns_by_current_url.ambr index ec727596426331..968e9f59ec2332 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_breakdowns_by_current_url.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_breakdowns_by_current_url.ambr @@ -82,8 +82,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -93,7 +93,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelBreakdownsByCurrentURL.test_breakdown_by_pathname @@ -179,8 +180,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -190,6 +191,7 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlation.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlation.ambr index ea5b333eec6d83..404380346de1cb 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlation.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlation.ambr @@ -70,8 +70,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(event__pdi.person_id, funnel_actors.actor_id) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), notIn(event.event, [])) @@ -139,8 +139,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -220,8 +220,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors JOIN @@ -302,8 +302,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -425,8 +425,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -474,8 +474,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Positive'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -619,8 +619,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -668,8 +668,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Positive'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -813,8 +813,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -862,8 +862,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Negative'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -1007,8 +1007,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -1056,8 +1056,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Negative'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -1159,8 +1159,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors JOIN @@ -1241,8 +1241,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -1364,8 +1364,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -1413,8 +1413,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Positive'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -1558,8 +1558,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -1607,8 +1607,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Positive'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -1752,8 +1752,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -1801,8 +1801,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Negative'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -1946,8 +1946,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -1995,8 +1995,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2020-01-14 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('paid', 'user signed up')), ifNull(equals(e__pdi__person.`properties___$browser`, 'Negative'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -2093,8 +2093,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_1`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), in(event.event, ['positively_related', 'negatively_related']))) @@ -2156,8 +2156,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -2232,8 +2232,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_1`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), in(event.event, ['positively_related', 'negatively_related']))) @@ -2295,8 +2295,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -2366,8 +2366,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), notIn(event.event, [])) @@ -2428,8 +2428,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -2532,8 +2532,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'positively_related'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -2648,8 +2648,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'positively_related'), ifNull(notEquals(funnel_actors.steps, 2), 1)) @@ -2764,8 +2764,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -2880,8 +2880,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(notEquals(funnel_actors.steps, 2), 1)) @@ -2971,8 +2971,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), notIn(event.event, [])) @@ -3041,8 +3041,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -3145,8 +3145,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -3261,8 +3261,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(notEquals(funnel_actors.steps, 2), 1)) @@ -3344,8 +3344,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), notIn(event.event, [])) @@ -3406,8 +3406,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -3510,8 +3510,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'positively_related'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -3626,8 +3626,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'positively_related'), ifNull(notEquals(funnel_actors.steps, 2), 1)) @@ -3742,8 +3742,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -3858,8 +3858,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(notEquals(funnel_actors.steps, 2), 1)) @@ -3949,8 +3949,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), notIn(event.event, [])) @@ -4019,8 +4019,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -4123,8 +4123,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -4239,8 +4239,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(funnel_actors.actor_id, event.`$group_0`) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-14 23:59:59', 6, 'UTC')))), notIn(event.event, ['paid', 'user signed up']), equals(event.event, 'negatively_related'), ifNull(notEquals(funnel_actors.steps, 2), 1)) @@ -4325,8 +4325,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -4399,8 +4399,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -4510,8 +4510,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -4633,8 +4633,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -4756,8 +4756,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -4879,8 +4879,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -4965,8 +4965,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -5039,8 +5039,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -5113,8 +5113,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -5187,8 +5187,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -5298,8 +5298,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -5421,8 +5421,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -5544,8 +5544,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -5667,8 +5667,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -5753,8 +5753,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -5827,8 +5827,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -5901,8 +5901,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -5975,8 +5975,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -6086,8 +6086,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -6209,8 +6209,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -6332,8 +6332,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -6455,8 +6455,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -6541,8 +6541,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -6615,8 +6615,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -6689,8 +6689,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -6763,8 +6763,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -6874,8 +6874,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -6997,8 +6997,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -7120,8 +7120,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -7243,8 +7243,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -7329,8 +7329,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -7403,8 +7403,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -7477,8 +7477,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -7551,8 +7551,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, @@ -7662,8 +7662,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -7785,8 +7785,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -7908,8 +7908,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -8031,8 +8031,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -8117,8 +8117,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LEFT JOIN @@ -8191,8 +8191,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors LIMIT 100 SETTINGS readonly=2, diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlations_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlations_persons.ambr index 2e49e8d40d3c96..e939cd2b30bfae 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlations_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_correlations_persons.ambr @@ -105,8 +105,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(event__pdi.person_id, funnel_actors.actor_id) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC')))), notIn(event.event, ['$pageview', 'insight analyzed']), equals(event.event, 'insight loaded'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -152,8 +152,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('$pageview', 'insight analyzed'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(event__pdi.person_id, funnel_actors.actor_id) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC')))), notIn(event.event, ['$pageview', 'insight analyzed']), equals(event.event, 'insight loaded'), ifNull(equals(funnel_actors.steps, 2), 0)) @@ -360,8 +360,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(event__pdi.person_id, funnel_actors.actor_id) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC')))), notIn(event.event, ['$pageview', 'insight analyzed', 'insight updated']), equals(event.event, 'insight loaded'), ifNull(notEquals(funnel_actors.steps, 3), 1)) @@ -419,8 +419,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('$pageview', 'insight analyzed', 'insight updated'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS funnel_actors ON equals(event__pdi.person_id, funnel_actors.actor_id) WHERE and(equals(event.team_id, 2), greaterOrEquals(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-01 00:00:00', 6, 'UTC'))), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC'))), equals(event.team_id, 2), greater(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), funnel_actors.first_timestamp), less(toTimeZone(toDateTime(toTimeZone(event.timestamp, 'UTC'), 'UTC'), 'UTC'), coalesce(funnel_actors.final_timestamp, plus(toTimeZone(funnel_actors.first_timestamp, 'UTC'), toIntervalDay(14)), assumeNotNull(parseDateTime64BestEffortOrNull('2021-01-08 23:59:59', 6, 'UTC')))), notIn(event.event, ['$pageview', 'insight analyzed', 'insight updated']), equals(event.event, 'insight loaded'), ifNull(notEquals(funnel_actors.steps, 3), 1)) @@ -564,8 +564,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -613,8 +613,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('$pageview', 'insight analyzed')), ifNull(equals(e__pdi__person.properties___foo, 'bar'), 0)), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -758,8 +758,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -807,8 +807,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), ifNull(equals(e__pdi__person.properties___foo, 'bar'), 0)))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(equals(funnel_actors.steps, 2), 0) @@ -952,8 +952,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) @@ -1001,8 +1001,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), ifNull(equals(e__pdi__person.properties___foo, 'bar'), 0)))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2]), 0) ORDER BY aggregation_target ASC) AS funnel_actors WHERE ifNull(notEquals(funnel_actors.steps, 2), 1) diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr index 02c3ed119fcade..2b88c6c1fdd974 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr @@ -150,8 +150,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -197,8 +197,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -381,8 +381,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -428,8 +428,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -612,8 +612,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(equals(steps, 2), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -659,8 +659,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(equals(steps, 2), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict.ambr index 4b80811bceb9f5..453e2164d21508 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict.ambr @@ -81,8 +81,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -92,7 +92,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelStrictStepsBreakdown.test_funnel_breakdown_correct_breakdown_props_are_chosen_for_step @@ -184,8 +185,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -195,7 +196,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelStrictStepsBreakdown.test_funnel_step_multiple_breakdown_snapshot @@ -280,8 +282,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -291,7 +293,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestStrictFunnelGroupBreakdown.test_funnel_aggregate_by_groups_breakdown_group_person_on_events @@ -395,8 +398,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -406,7 +409,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestStrictFunnelGroupBreakdown.test_funnel_aggregate_by_groups_breakdown_group_person_on_events_poe_v2 @@ -510,8 +514,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -521,7 +525,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestStrictFunnelGroupBreakdown.test_funnel_breakdown_group @@ -632,8 +637,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -643,7 +648,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestStrictFunnelGroupBreakdown.test_funnel_breakdown_group.1 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr index e16a91afc1da29..910e0b5d6c51c2 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr @@ -110,8 +110,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -149,8 +149,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -293,8 +293,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -332,8 +332,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id @@ -476,8 +476,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(equals(steps, 2), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -515,8 +515,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(equals(steps, 2), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_time_to_convert.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_time_to_convert.ambr index 64e95bb36e38fb..22a34893482484 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_time_to_convert.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_time_to_convert.ambr @@ -89,8 +89,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params) AS average_conversion_time FROM (SELECT plus( @@ -124,8 +124,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), multiply(floor(divide(minus(step_runs.step_1_average_conversion_time_inner, (SELECT histogram_params.from_seconds AS from_seconds FROM @@ -157,8 +157,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params)), (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -190,8 +190,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))), (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -223,8 +223,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))) AS bin_from_seconds, count() AS person_count FROM @@ -303,8 +303,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs GROUP BY bin_from_seconds) AS results RIGHT OUTER JOIN (SELECT plus( @@ -338,8 +338,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), multiply(numbers.number, (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -371,8 +371,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))) AS bin_from_seconds FROM numbers(plus(ifNull( (SELECT histogram_params.bin_count AS bin_count @@ -405,8 +405,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), 0), 1)) AS numbers) AS fill ON equals(results.bin_from_seconds, fill.bin_from_seconds) ORDER BY fill.bin_from_seconds ASC LIMIT 100 SETTINGS readonly=2, @@ -416,7 +416,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTimeToConvert.test_basic_strict @@ -490,8 +491,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params) AS average_conversion_time FROM (SELECT plus( @@ -520,8 +521,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), multiply(floor(divide(minus(step_runs.step_1_average_conversion_time_inner, (SELECT histogram_params.from_seconds AS from_seconds FROM @@ -548,8 +549,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params)), (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -576,8 +577,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))), (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -604,8 +605,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))) AS bin_from_seconds, count() AS person_count FROM @@ -665,8 +666,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs GROUP BY bin_from_seconds) AS results RIGHT OUTER JOIN (SELECT plus( @@ -695,8 +696,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), multiply(numbers.number, (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -723,8 +724,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))) AS bin_from_seconds FROM numbers(plus(ifNull( (SELECT histogram_params.bin_count AS bin_count @@ -752,8 +753,8 @@ WHERE and(equals(e.team_id, 2), and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC')))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), 0), 1)) AS numbers) AS fill ON equals(results.bin_from_seconds, fill.bin_from_seconds) ORDER BY fill.bin_from_seconds ASC LIMIT 100 SETTINGS readonly=2, @@ -763,7 +764,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTimeToConvert.test_basic_unordered @@ -925,8 +927,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params) AS average_conversion_time FROM (SELECT plus( @@ -987,8 +989,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), multiply(floor(divide(minus(step_runs.step_1_average_conversion_time_inner, (SELECT histogram_params.from_seconds AS from_seconds FROM @@ -1047,8 +1049,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params)), (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -1107,8 +1109,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))), (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -1167,8 +1169,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))) AS bin_from_seconds, count() AS person_count FROM @@ -1316,8 +1318,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs GROUP BY bin_from_seconds) AS results RIGHT OUTER JOIN (SELECT plus( @@ -1378,8 +1380,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), multiply(numbers.number, (SELECT histogram_params.bin_width_seconds AS bin_width_seconds FROM @@ -1438,8 +1440,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params))) AS bin_from_seconds FROM numbers(plus(ifNull( (SELECT histogram_params.bin_count AS bin_count @@ -1499,8 +1501,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-07 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-06-13 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) AS step_runs + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) AS step_runs WHERE isNotNull(step_runs.step_1_average_conversion_time_inner)) AS histogram_params), 0), 1)) AS numbers) AS fill ON equals(results.bin_from_seconds, fill.bin_from_seconds) ORDER BY fill.bin_from_seconds ASC LIMIT 100 SETTINGS readonly=2, @@ -1510,6 +1512,7 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends.ambr index 0d031da2b03a66..e02eb64d9a2161 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends.ambr @@ -88,7 +88,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTrends.test_timezones_trends.1 @@ -180,7 +181,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTrends.test_week_interval @@ -272,7 +274,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTrends.test_week_interval.1 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered.ambr index f5cf1a29bdffab..778829c29b4daf 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered.ambr @@ -135,8 +135,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -146,7 +146,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelUnorderedStepsBreakdown.test_funnel_breakdown_correct_breakdown_props_are_chosen_for_step @@ -299,8 +300,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -310,7 +311,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelUnorderedStepsBreakdown.test_funnel_step_multiple_breakdown_snapshot @@ -449,8 +451,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -460,7 +462,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestUnorderedFunnelGroupBreakdown.test_funnel_aggregate_by_groups_breakdown_group_person_on_events @@ -694,8 +697,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -705,7 +708,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestUnorderedFunnelGroupBreakdown.test_funnel_aggregate_by_groups_breakdown_group_person_on_events_poe_v2 @@ -939,8 +943,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -950,7 +954,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestUnorderedFunnelGroupBreakdown.test_funnel_breakdown_group @@ -1205,8 +1210,8 @@ GROUP BY aggregation_target, steps, prop - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) GROUP BY prop) GROUP BY final_prop LIMIT 100 SETTINGS readonly=2, @@ -1216,7 +1221,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=23622320128 + max_bytes_before_external_group_by=23622320128, + allow_experimental_analyzer=1 ''' # --- # name: TestUnorderedFunnelGroupBreakdown.test_funnel_breakdown_group.1 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr index a0e57d8fac881c..fc3fdd46e08fbe 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr @@ -254,8 +254,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -337,8 +337,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-01 00:00:00.000000', 6, 'UTC')), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), toDateTime64('2021-01-08 23:59:59.999999', 6, 'UTC'))), in(e.event, tuple('step one', 'step three', 'step two'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0), ifNull(equals(step_2, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [1, 2, 3]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id diff --git a/posthog/hogql_queries/insights/funnels/test/test_funnel.py b/posthog/hogql_queries/insights/funnels/test/test_funnel.py index 6b9d9e74a7bbf5..2085579b5ba0c8 100644 --- a/posthog/hogql_queries/insights/funnels/test/test_funnel.py +++ b/posthog/hogql_queries/insights/funnels/test/test_funnel.py @@ -3816,7 +3816,7 @@ def test_smoke(self): aggregation_target, steps HAVING - equals(steps, max_steps) + equals(steps, max(max_steps)) LIMIT 100""", ) @@ -3887,6 +3887,6 @@ def test_smoke(self): aggregation_target, steps HAVING - equals(steps, max_steps)) + equals(steps, max(max_steps))) LIMIT 100""", ) diff --git a/posthog/hogql_queries/insights/funnels/test/test_funnel_trends.py b/posthog/hogql_queries/insights/funnels/test/test_funnel_trends.py index 0fb294c6a64a4e..7b86e305ca89ea 100644 --- a/posthog/hogql_queries/insights/funnels/test/test_funnel_trends.py +++ b/posthog/hogql_queries/insights/funnels/test/test_funnel_trends.py @@ -1192,15 +1192,17 @@ def test_funnel_step_breakdown_empty(self): {"id": "step three", "order": 2}, ], "breakdown_type": "hogql", - "breakdown": "IF(rowNumberInAllBlocks() % 2 = 0, NULL, 'foo')", # Simulate some empty breakdown values + "breakdown": "IF(distinct_id = 'user_two', NULL, 'foo')", # Simulate some empty breakdown values } query = cast(FunnelsQuery, filter_to_query(filters)) results = FunnelsQueryRunner(query=query, team=self.team).calculate().results self.assertEqual(len(results), 2) - self.assertEqual(results[0]["breakdown_value"], ["None"]) + self.assertEqual(results[0]["breakdown_value"], [""]) + self.assertEqual(results[0]["data"], [0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) self.assertEqual(results[1]["breakdown_value"], ["foo"]) + self.assertEqual(results[1]["data"], [100.0, 0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) def test_funnel_step_breakdown_event_with_breakdown_limit(self): journeys_for( diff --git a/posthog/hogql_queries/insights/insight_actors_query_runner.py b/posthog/hogql_queries/insights/insight_actors_query_runner.py index 8b3e27df514a59..c07c1e3687ab0e 100644 --- a/posthog/hogql_queries/insights/insight_actors_query_runner.py +++ b/posthog/hogql_queries/insights/insight_actors_query_runner.py @@ -1,6 +1,7 @@ from typing import cast, Optional from posthog.hogql import ast +from posthog.hogql.constants import HogQLGlobalSettings from posthog.hogql.query import execute_hogql_query from posthog.hogql_queries.insights.funnels.funnel_correlation_query_runner import FunnelCorrelationQueryRunner from posthog.hogql_queries.insights.funnels.funnels_query_runner import FunnelsQueryRunner @@ -107,6 +108,13 @@ def group_type_index(self) -> int | None: return None def calculate(self) -> HogQLQueryResponse: + settings = None + + # Funnel queries require the experimental analyzer to run correctly + # Can remove once clickhouse moves to version 24.3 or above + if isinstance(self.source_runner, FunnelsQueryRunner): + settings = HogQLGlobalSettings(allow_experimental_analyzer=True) + return execute_hogql_query( query_type="InsightActorsQuery", query=self.to_query(), @@ -114,4 +122,5 @@ def calculate(self) -> HogQLQueryResponse: timings=self.timings, modifiers=self.modifiers, limit_context=self.limit_context, + settings=settings, ) diff --git a/posthog/hogql_queries/insights/test/__snapshots__/test_insight_actors_query_runner.ambr b/posthog/hogql_queries/insights/test/__snapshots__/test_insight_actors_query_runner.ambr index 0600e7e58e3b95..43bd72ebe2b82d 100644 --- a/posthog/hogql_queries/insights/test/__snapshots__/test_insight_actors_query_runner.ambr +++ b/posthog/hogql_queries/insights/test/__snapshots__/test_insight_actors_query_runner.ambr @@ -52,8 +52,8 @@ WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2]), 0) ORDER BY aggregation_target ASC) AS source INNER JOIN @@ -88,8 +88,8 @@ WHERE and(equals(e.team_id, 2), and(and(greaterOrEquals(toTimeZone(e.timestamp, 'US/Pacific'), toDateTime64('2020-01-01 00:00:00.000000', 6, 'US/Pacific')), lessOrEquals(toTimeZone(e.timestamp, 'US/Pacific'), toDateTime64('2020-01-19 23:59:59.999999', 6, 'US/Pacific'))), in(e.event, tuple('$pageview'))), or(ifNull(equals(step_0, 1), 0), ifNull(equals(step_1, 1), 0))))) WHERE ifNull(equals(step_0, 1), 0))) GROUP BY aggregation_target, steps - HAVING ifNull(equals(steps, max_steps), isNull(steps) - and isNull(max_steps))) + HAVING ifNull(equals(steps, max(max_steps)), isNull(steps) + and isNull(max(max_steps)))) WHERE ifNull(in(steps, [2]), 0) ORDER BY aggregation_target ASC) AS source))) GROUP BY person.id From 0134bc240055993f8a48dd6c0338e88dca62a652 Mon Sep 17 00:00:00 2001 From: Brett Hoerner Date: Mon, 1 Jul 2024 13:23:10 -0600 Subject: [PATCH 04/18] fix(plugin-server): use tx for create person step of merge (#23372) --- plugin-server/src/utils/db/db.ts | 5 +++-- plugin-server/src/worker/ingestion/person-state.ts | 9 ++++++--- plugin-server/tests/main/process-event.test.ts | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugin-server/src/utils/db/db.ts b/plugin-server/src/utils/db/db.ts index 4883c4fa97eb84..9501f5a58cbf54 100644 --- a/plugin-server/src/utils/db/db.ts +++ b/plugin-server/src/utils/db/db.ts @@ -641,7 +641,8 @@ export class DB { isUserId: number | null, isIdentified: boolean, uuid: string, - distinctIds?: { distinctId: string; version?: number }[] + distinctIds?: { distinctId: string; version?: number }[], + tx?: TransactionClient ): Promise { distinctIds ||= [] @@ -653,7 +654,7 @@ export class DB { const personVersion = 0 const { rows } = await this.postgres.query( - PostgresUse.COMMON_WRITE, + tx ?? PostgresUse.COMMON_WRITE, `WITH inserted_person AS ( INSERT INTO posthog_person ( created_at, properties, properties_last_updated_at, diff --git a/plugin-server/src/worker/ingestion/person-state.ts b/plugin-server/src/worker/ingestion/person-state.ts index 89472de4e345ec..3475bc669528a1 100644 --- a/plugin-server/src/worker/ingestion/person-state.ts +++ b/plugin-server/src/worker/ingestion/person-state.ts @@ -256,7 +256,8 @@ export class PersonState { isUserId: number | null, isIdentified: boolean, creatorEventUuid: string, - distinctIds: { distinctId: string; version?: number }[] + distinctIds: { distinctId: string; version?: number }[], + tx?: TransactionClient ): Promise { if (distinctIds.length < 1) { throw new Error('at least 1 distinctId is required in `createPerson`') @@ -284,7 +285,8 @@ export class PersonState { isUserId, isIdentified, uuid, - distinctIds + distinctIds, + tx ) } @@ -617,7 +619,8 @@ export class PersonState { [ { distinctId: distinctId1, version: distinctId1Version }, { distinctId: distinctId2, version: distinctId2Version }, - ] + ], + tx ), Promise.resolve(), ] diff --git a/plugin-server/tests/main/process-event.test.ts b/plugin-server/tests/main/process-event.test.ts index fa693a00b96515..9d9056ce8c3809 100644 --- a/plugin-server/tests/main/process-event.test.ts +++ b/plugin-server/tests/main/process-event.test.ts @@ -1764,7 +1764,8 @@ describe('when handling $identify', () => { // completing before continuing with the first identify. const originalCreatePerson = hub.db.createPerson.bind(hub.db) const createPersonMock = jest.fn(async (...args) => { - const result = await originalCreatePerson(...args) + // We need to slice off the txn arg, or else we conflict with the `identify` below. + const result = await originalCreatePerson(...args.slice(0, -1)) if (createPersonMock.mock.calls.length === 1) { // On second invocation, make another identify call From 31bb9132ed2b2e1c8511c62a1ff71c5af50172bf Mon Sep 17 00:00:00 2001 From: Zach Waterfield Date: Mon, 1 Jul 2024 15:57:45 -0400 Subject: [PATCH 05/18] chore: remove deprecated billing v2 (#23303) * Remove deprecated billing v2 * Update query snapshots * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update query snapshots --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ee/api/test/test_billing.py | 90 -------- .../test_clickhouse_experiments.ambr | 206 +++++++++++++++--- ee/urls.py | 1 - ...ghts--funnel-top-to-bottom-edit--light.png | Bin 184754 -> 166220 bytes ...scenes-other-billing-v2--billing--dark.png | Bin 0 -> 230370 bytes ...cenes-other-billing-v2--billing--light.png | Bin 0 -> 229573 bytes ...illing-v2--billing-with-discount--dark.png | Bin 0 -> 117901 bytes ...lling-v2--billing-with-discount--light.png | Bin 0 -> 117538 bytes ...h-limit-and-100-percent-discount--dark.png | Bin 0 -> 115222 bytes ...-limit-and-100-percent-discount--light.png | Bin 0 -> 114789 bytes .../confirmUpgradeModalLogic.ts | 6 +- .../components/PayGateMini/PayGateButton.tsx | 12 +- .../components/PayGateMini/PayGateMini.tsx | 22 +- frontend/src/mocks/features.ts | 4 +- frontend/src/mocks/fixtures/_billing.tsx | 4 +- .../billing/AllProductsPlanComparison.tsx | 18 +- .../src/scenes/billing/Billing.stories.tsx | 6 +- frontend/src/scenes/billing/Billing.tsx | 4 +- .../src/scenes/billing/BillingProduct.tsx | 4 +- .../src/scenes/billing/PlanComparison.tsx | 16 +- .../scenes/billing/ProductPricingModal.tsx | 4 +- frontend/src/scenes/billing/billing-utils.ts | 17 +- frontend/src/scenes/billing/billingLogic.tsx | 18 +- .../src/scenes/billing/billingProductLogic.ts | 14 +- .../OnboardingProductIntroduction.tsx | 6 +- frontend/src/types.ts | 28 +-- 26 files changed, 258 insertions(+), 222 deletions(-) create mode 100644 frontend/__snapshots__/scenes-other-billing-v2--billing--dark.png create mode 100644 frontend/__snapshots__/scenes-other-billing-v2--billing--light.png create mode 100644 frontend/__snapshots__/scenes-other-billing-v2--billing-with-discount--dark.png create mode 100644 frontend/__snapshots__/scenes-other-billing-v2--billing-with-discount--light.png create mode 100644 frontend/__snapshots__/scenes-other-billing-v2--billing-with-limit-and-100-percent-discount--dark.png create mode 100644 frontend/__snapshots__/scenes-other-billing-v2--billing-with-limit-and-100-percent-discount--light.png diff --git a/ee/api/test/test_billing.py b/ee/api/test/test_billing.py index 2b4d38dd85bd8a..1fd9293cfc04ca 100644 --- a/ee/api/test/test_billing.py +++ b/ee/api/test/test_billing.py @@ -837,93 +837,3 @@ def mock_implementation(url: str, headers: Any = None, params: Any = None) -> Ma self.organization.refresh_from_db() assert self.organization.customer_trust_scores == {"recordings": 0, "events": 15, "rows_synced": 0} - - -class TestActivateBillingAPI(APILicensedTest): - def test_activate_success(self): - url = "/api/billing-v2/activate" - data = {"products": "product_1:plan_1,product_2:plan_2", "redirect_path": "custom/path"} - - response = self.client.get(url, data=data) - self.assertEqual(response.status_code, status.HTTP_302_FOUND) - - self.assertIn("/activate", response.url) - self.assertIn("products=product_1:plan_1,product_2:plan_2", response.url) - url_pattern = r"redirect_uri=http://[^/]+/custom/path" - self.assertRegex(response.url, url_pattern) - - def test_deprecated_activation_success(self): - url = "/api/billing-v2/activate" - data = {"products": "product_1:plan_1,product_2:plan_2", "redirect_path": "custom/path"} - - response = self.client.get(url, data=data) - self.assertEqual(response.status_code, status.HTTP_302_FOUND) - - self.assertIn("/activate", response.url) - self.assertIn("products=product_1:plan_1,product_2:plan_2", response.url) - url_pattern = r"redirect_uri=http://[^/]+/custom/path" - self.assertRegex(response.url, url_pattern) - - def test_activate_with_default_redirect_path(self): - url = "/api/billing-v2/activate" - data = { - "products": "product_1:plan_1,product_2:plan_2", - } - - response = self.client.get(url, data) - - self.assertEqual(response.status_code, status.HTTP_302_FOUND) - self.assertIn("products=product_1:plan_1,product_2:plan_2", response.url) - url_pattern = r"redirect_uri=http://[^/]+/organization/billing" - self.assertRegex(response.url, url_pattern) - - def test_activate_failure(self): - url = "/api/billing-v2/activate" - data = {"none": "nothing"} - - response = self.client.get(url, data) - - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - def test_activate_with_plan_error(self): - url = "/api/billing-v2/activate" - data = {"plan": "plan"} - - response = self.client.get(url, data) - - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual( - response.json(), - { - "attr": "plan", - "code": "invalid_input", - "detail": "The 'plan' parameter is no longer supported. Please use the 'products' parameter instead.", - "type": "validation_error", - }, - ) - - @patch("ee.billing.billing_manager.BillingManager.deactivate_products") - @patch("ee.billing.billing_manager.BillingManager.get_billing") - def test_deactivate_success(self, mock_get_billing, mock_deactivate_products): - mock_deactivate_products.return_value = MagicMock() - mock_get_billing.return_value = { - "available_features": [], - "products": [], - } - - url = "/api/billing-v2/deactivate" - data = {"products": "product_1"} - - response = self.client.get(url, data) - - self.assertEqual(response.status_code, status.HTTP_200_OK) - mock_deactivate_products.assert_called_once_with(self.organization, "product_1") - mock_get_billing.assert_called_once_with(self.organization, None) - - def test_deactivate_failure(self): - url = "/api/billing-v2/deactivate" - data = {"none": "nothing"} - - response = self.client.get(url, data) - - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index 525c25fb7bf3a2..11e1e0317f71d4 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -370,26 +370,97 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([[''], ['test_1'], ['test'], ['control'], ['unknown_3'], ['unknown_2'], ['unknown_1'], ['test_2']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + pdi.person_id as aggregation_target, + pdi.person_id as person_id, + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + AND distinct_id IN + (SELECT distinct_id + FROM events + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 @@ -513,26 +584,97 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$account_id'), ''), 'null'), '^"|"$', '') as aggregation_target, + pdi.person_id as person_id, + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + AND distinct_id IN + (SELECT distinct_id + FROM events + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.3 diff --git a/ee/urls.py b/ee/urls.py index 3cebde01fe3656..0a5e0d9b63855d 100644 --- a/ee/urls.py +++ b/ee/urls.py @@ -34,7 +34,6 @@ def extend_api_router( project_feature_flags_router: NestedRegistryItem, ) -> None: root_router.register(r"billing", billing.BillingViewset, "billing") - root_router.register(r"billing-v2", billing.BillingViewset, "billing") # Legacy transition route root_router.register(r"license", license.LicenseViewSet) root_router.register(r"time_to_see_data", time_to_see_data.TimeToSeeDataViewSet, "query_metrics") root_router.register(r"integrations", integration.PublicIntegrationViewSet) diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit--light.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit--light.png index 26bb0b6f5e96f43fdb8c2fc0585228cd55164f0d..43a834a6911c2c4e7cbf81f6f4a95155519bc0d3 100644 GIT binary patch literal 166220 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

qa}fXUQwct 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 diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing--dark.png b/frontend/__snapshots__/scenes-other-billing-v2--billing--dark.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4b61f55a87ac3aad733376627e880baf76bcd9 GIT binary patch literal 230370 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

BryWJF#kOL=F!CBm~XIwVBj#N>WB=U;Z%gWGqj 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

X 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%0D~b*H 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 Cl3U~e literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing--light.png b/frontend/__snapshots__/scenes-other-billing-v2--billing--light.png new file mode 100644 index 0000000000000000000000000000000000000000..4f956d155b6c303770638edd4ded4a4d937429ad GIT binary patch literal 229573 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

-xUwY^Fp^!%yA|o!l5^ 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%0ABvA+o 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

@*Xf>7c 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 literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing-with-discount--dark.png b/frontend/__snapshots__/scenes-other-billing-v2--billing-with-discount--dark.png new file mode 100644 index 0000000000000000000000000000000000000000..11fa60342f498c844b2927c8594c9265a82cd5dc GIT binary patch literal 117901 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

};wT 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 z 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ⅅ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 G-v4hrKl;M} literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing-with-limit-and-100-percent-discount--dark.png b/frontend/__snapshots__/scenes-other-billing-v2--billing-with-limit-and-100-percent-discount--dark.png new file mode 100644 index 0000000000000000000000000000000000000000..70caced4d1b3db920882b9cbee21948ac0077603 GIT binary patch literal 115222 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

};wT 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 }zM{GN}LbQj!(P)4geY#Ym4ZeBff&>P^q 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 literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing-with-limit-and-100-percent-discount--light.png b/frontend/__snapshots__/scenes-other-billing-v2--billing-with-limit-and-100-percent-discount--light.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f13d3bd3afcf63d8b58f9f7a74a5903d18d4ed GIT binary patch literal 114789 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 z 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 z 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 rkGq@xzxmnz-=jqTV{h#HC20rpf literal 0 HcmV?d00001 diff --git a/frontend/src/lib/components/ConfirmUpgradeModal/confirmUpgradeModalLogic.ts b/frontend/src/lib/components/ConfirmUpgradeModal/confirmUpgradeModalLogic.ts index 48016a916b56e1..a004d0a6a0e561 100644 --- a/frontend/src/lib/components/ConfirmUpgradeModal/confirmUpgradeModalLogic.ts +++ b/frontend/src/lib/components/ConfirmUpgradeModal/confirmUpgradeModalLogic.ts @@ -1,6 +1,6 @@ import { actions, kea, listeners, path, reducers } from 'kea' -import { BillingV2PlanType } from '~/types' +import { BillingPlanType } from '~/types' import type { confirmUpgradeModalLogicType } from './confirmUpgradeModalLogicType' @@ -8,7 +8,7 @@ export const confirmUpgradeModalLogic = kea([ path(['lib', 'components', 'ConfirmUpgradeModal', 'confirmUpgradeModalLogic']), actions({ showConfirmUpgradeModal: ( - upgradePlan: BillingV2PlanType, + upgradePlan: BillingPlanType, confirmCallback: () => void, cancelCallback: () => void ) => ({ @@ -22,7 +22,7 @@ export const confirmUpgradeModalLogic = kea([ }), reducers({ upgradePlan: [ - null as BillingV2PlanType | null, + null as BillingPlanType | null, { showConfirmUpgradeModal: (_, { upgradePlan }) => upgradePlan, hideConfirmUpgradeModal: () => null, diff --git a/frontend/src/lib/components/PayGateMini/PayGateButton.tsx b/frontend/src/lib/components/PayGateMini/PayGateButton.tsx index 26790cf7d138ec..2f13b85e24c1c2 100644 --- a/frontend/src/lib/components/PayGateMini/PayGateButton.tsx +++ b/frontend/src/lib/components/PayGateMini/PayGateButton.tsx @@ -4,14 +4,14 @@ import { FEATURE_FLAGS } from 'lib/constants' import { featureFlagLogic, FeatureFlagsSet } from 'lib/logic/featureFlagLogic' import { urls } from 'scenes/urls' -import { BillingProductV2AddonType, BillingProductV2Type, BillingV2FeatureType, BillingV2Type } from '~/types' +import { BillingFeatureType, BillingProductV2AddonType, BillingProductV2Type, BillingType } from '~/types' interface PayGateButtonProps { gateVariant: 'add-card' | 'contact-sales' | 'move-to-cloud' | null productWithFeature: BillingProductV2AddonType | BillingProductV2Type - featureInfo: BillingV2FeatureType + featureInfo: BillingFeatureType onCtaClick: () => void - billing: BillingV2Type | null + billing: BillingType | null isAddonProduct?: boolean scrollToProduct: boolean } @@ -50,9 +50,9 @@ export const PayGateButton = ({ const getCtaLink = ( gateVariant: 'add-card' | 'contact-sales' | 'move-to-cloud' | null, productWithFeature: BillingProductV2AddonType | BillingProductV2Type, - featureInfo: BillingV2FeatureType, + featureInfo: BillingFeatureType, featureFlags: FeatureFlagsSet, - subscriptionLevel?: BillingV2Type['subscription_level'], + subscriptionLevel?: BillingType['subscription_level'], isAddonProduct?: boolean, scrollToProduct: boolean = true ): string | undefined => { @@ -77,7 +77,7 @@ const getCtaLink = ( const getCtaLabel = ( gateVariant: 'add-card' | 'contact-sales' | 'move-to-cloud' | null, - billing: BillingV2Type | null, + billing: BillingType | null, featureFlags: FeatureFlagsSet ): string => { if ( diff --git a/frontend/src/lib/components/PayGateMini/PayGateMini.tsx b/frontend/src/lib/components/PayGateMini/PayGateMini.tsx index c76e4a7c030d95..58f09073b783c4 100644 --- a/frontend/src/lib/components/PayGateMini/PayGateMini.tsx +++ b/frontend/src/lib/components/PayGateMini/PayGateMini.tsx @@ -12,10 +12,10 @@ import { getProductIcon } from 'scenes/products/Products' import { AvailableFeature, + BillingFeatureType, BillingProductV2AddonType, BillingProductV2Type, - BillingV2FeatureType, - BillingV2Type, + BillingType, } from '~/types' import { upgradeModalLogic } from '../UpgradeModal/upgradeModalLogic' @@ -139,14 +139,14 @@ export function PayGateMini({ interface PayGateContentProps { className?: string background: boolean - featureInfo: BillingV2FeatureType - featureAvailableOnOrg?: BillingV2FeatureType | null + featureInfo: BillingFeatureType + featureAvailableOnOrg?: BillingFeatureType | null gateVariant: 'add-card' | 'contact-sales' | 'move-to-cloud' | null productWithFeature: BillingProductV2AddonType | BillingProductV2Type isGrandfathered?: boolean isAddonProduct?: boolean - billing: BillingV2Type | null - featureInfoOnNextPlan?: BillingV2FeatureType + billing: BillingType | null + featureInfoOnNextPlan?: BillingFeatureType children: React.ReactNode handleCtaClick: () => void } @@ -197,12 +197,12 @@ function PayGateContent({ } const renderUsageLimitMessage = ( - featureAvailableOnOrg: BillingV2FeatureType | null | undefined, - featureInfoOnNextPlan: BillingV2FeatureType | undefined, + featureAvailableOnOrg: BillingFeatureType | null | undefined, + featureInfoOnNextPlan: BillingFeatureType | undefined, gateVariant: 'add-card' | 'contact-sales' | 'move-to-cloud' | null, - featureInfo: BillingV2FeatureType, + featureInfo: BillingFeatureType, productWithFeature: BillingProductV2AddonType | BillingProductV2Type, - billing: BillingV2Type | null, + billing: BillingType | null, featureFlags: FeatureFlagsSet, isAddonProduct?: boolean, handleCtaClick?: () => void @@ -263,7 +263,7 @@ const renderUsageLimitMessage = ( const renderGateVariantMessage = ( gateVariant: 'add-card' | 'contact-sales' | 'move-to-cloud' | null, productWithFeature: BillingProductV2AddonType | BillingProductV2Type, - billing: BillingV2Type | null, + billing: BillingType | null, featureFlags: FeatureFlagsSet, isAddonProduct?: boolean ): JSX.Element => { diff --git a/frontend/src/mocks/features.ts b/frontend/src/mocks/features.ts index 10d4c23a7bb517..9ea2f81d6e530b 100644 --- a/frontend/src/mocks/features.ts +++ b/frontend/src/mocks/features.ts @@ -1,10 +1,10 @@ -import { AvailableFeature, BillingV2FeatureType } from '~/types' +import { AvailableFeature, BillingFeatureType } from '~/types' let features: AvailableFeature[] = [] export const useAvailableFeatures = (f: AvailableFeature[]): void => { features = f } -export const getAvailableProductFeatures = (): BillingV2FeatureType[] => { +export const getAvailableProductFeatures = (): BillingFeatureType[] => { return features.map((feature) => { return { key: feature, diff --git a/frontend/src/mocks/fixtures/_billing.tsx b/frontend/src/mocks/fixtures/_billing.tsx index f8fa0010554ff4..b5332d2b24aa11 100644 --- a/frontend/src/mocks/fixtures/_billing.tsx +++ b/frontend/src/mocks/fixtures/_billing.tsx @@ -1,8 +1,8 @@ import { dayjs } from 'lib/dayjs' -import { BillingV2Type } from '~/types' +import { BillingType } from '~/types' -export const billingJson: BillingV2Type = { +export const billingJson: BillingType = { customer_id: 'cus_Pg7PIL8MsKi6bx', deactivated: false, has_active_subscription: true, diff --git a/frontend/src/scenes/billing/AllProductsPlanComparison.tsx b/frontend/src/scenes/billing/AllProductsPlanComparison.tsx index 8809851118b84d..2f6c7171acb688 100644 --- a/frontend/src/scenes/billing/AllProductsPlanComparison.tsx +++ b/frontend/src/scenes/billing/AllProductsPlanComparison.tsx @@ -11,7 +11,7 @@ import React, { useState } from 'react' import { getProductIcon } from 'scenes/products/Products' import useResizeObserver from 'use-resize-observer' -import { BillingProductV2AddonType, BillingProductV2Type, BillingV2FeatureType, BillingV2PlanType } from '~/types' +import { BillingFeatureType, BillingPlanType, BillingProductV2AddonType, BillingProductV2Type } from '~/types' import { convertLargeNumberToWords, getProration, getProrationMessage, getUpgradeProductLink } from './billing-utils' import { billingLogic } from './billingLogic' @@ -23,7 +23,7 @@ export function PlanIcon({ className, timeDenominator, }: { - feature?: BillingV2FeatureType + feature?: BillingFeatureType className?: string timeDenominator?: string }): JSX.Element { @@ -56,7 +56,7 @@ const PricingTiers = ({ plan, product, }: { - plan: BillingV2PlanType + plan: BillingPlanType product: BillingProductV2Type | BillingProductV2AddonType }): JSX.Element => { const { width, ref: tiersRef } = useResizeObserver() @@ -114,7 +114,7 @@ const PricingTiers = ({ * @param {string} plan.included_if - Condition for plan inclusion. * @returns {string} - The pricing description for the plan. */ -function getPlanDescription(plan: BillingV2PlanType): string { +function getPlanDescription(plan: BillingPlanType): string { if (plan.free_allocation && !plan.tiers) { return 'Free forever' } else if (plan.unit_amount_usd) { @@ -283,7 +283,7 @@ export const AllProductsPlanComparison = ({ {includedPlans - .find((plan: BillingV2PlanType) => plan.included_if == 'has_subscription') + .find((plan: BillingPlanType) => plan.included_if == 'has_subscription') ?.features?.map((feature) => ( // Inclusion product feature row @@ -521,13 +521,7 @@ export const AllProductsPlanComparisonModal = ({ ) } -const AddonPlanTiers = ({ - plan, - addon, -}: { - plan: BillingV2PlanType - addon: BillingProductV2AddonType -}): JSX.Element => { +const AddonPlanTiers = ({ plan, addon }: { plan: BillingPlanType; addon: BillingProductV2AddonType }): JSX.Element => { const [showTiers, setShowTiers] = useState(false) return showTiers ? ( diff --git a/frontend/src/scenes/billing/Billing.stories.tsx b/frontend/src/scenes/billing/Billing.stories.tsx index 139cc156c4bc18..43ce5c0aa362db 100644 --- a/frontend/src/scenes/billing/Billing.stories.tsx +++ b/frontend/src/scenes/billing/Billing.stories.tsx @@ -32,7 +32,7 @@ const meta: Meta = { ], } export default meta -export const _BillingV2 = (): JSX.Element => { +export const _Billing = (): JSX.Element => { useStorybookMocks({ get: { '/api/billing/': { @@ -44,7 +44,7 @@ export const _BillingV2 = (): JSX.Element => { return } -export const BillingV2WithDiscount = (): JSX.Element => { +export const BillingWithDiscount = (): JSX.Element => { useStorybookMocks({ get: { '/api/billing/': { @@ -56,7 +56,7 @@ export const BillingV2WithDiscount = (): JSX.Element => { return } -export const BillingV2WithLimitAnd100PercentDiscount = (): JSX.Element => { +export const BillingWithLimitAnd100PercentDiscount = (): JSX.Element => { useStorybookMocks({ get: { '/api/billing/': { diff --git a/frontend/src/scenes/billing/Billing.tsx b/frontend/src/scenes/billing/Billing.tsx index 7052186af73f6f..084dd201ced20f 100644 --- a/frontend/src/scenes/billing/Billing.tsx +++ b/frontend/src/scenes/billing/Billing.tsx @@ -43,7 +43,7 @@ export function Billing(): JSX.Element { isAnnualPlan, billingError, } = useValues(billingLogic) - const { reportBillingV2Shown } = useActions(billingLogic) + const { reportBillingShown } = useActions(billingLogic) const { preflight, isCloudOrDev } = useValues(preflightLogic) const { openSupportForm } = useActions(supportLogic) const { featureFlags } = useValues(featureFlagLogic) @@ -54,7 +54,7 @@ export function Billing(): JSX.Element { useEffect(() => { if (billing) { - reportBillingV2Shown() + reportBillingShown() } }, [!!billing]) diff --git a/frontend/src/scenes/billing/BillingProduct.tsx b/frontend/src/scenes/billing/BillingProduct.tsx index be083745e9fead..8654f18d72c17d 100644 --- a/frontend/src/scenes/billing/BillingProduct.tsx +++ b/frontend/src/scenes/billing/BillingProduct.tsx @@ -15,7 +15,7 @@ import { eventUsageLogic } from 'lib/utils/eventUsageLogic' import { useRef } from 'react' import { getProductIcon } from 'scenes/products/Products' -import { BillingProductV2AddonType, BillingProductV2Type, BillingV2TierType } from '~/types' +import { BillingProductV2AddonType, BillingProductV2Type, BillingTierType } from '~/types' import { convertLargeNumberToWords, getUpgradeProductLink, summarizeUsage } from './billing-utils' import { BillingGauge } from './BillingGauge' @@ -29,7 +29,7 @@ import { ProductPricingModal } from './ProductPricingModal' import { UnsubscribeSurveyModal } from './UnsubscribeSurveyModal' export const getTierDescription = ( - tiers: BillingV2TierType[], + tiers: BillingTierType[], i: number, product: BillingProductV2Type | BillingProductV2AddonType, interval: string diff --git a/frontend/src/scenes/billing/PlanComparison.tsx b/frontend/src/scenes/billing/PlanComparison.tsx index 741609879ffd2a..c12dd34f96f0f1 100644 --- a/frontend/src/scenes/billing/PlanComparison.tsx +++ b/frontend/src/scenes/billing/PlanComparison.tsx @@ -13,7 +13,7 @@ import React, { useState } from 'react' import { getProductIcon } from 'scenes/products/Products' import useResizeObserver from 'use-resize-observer' -import { BillingProductV2AddonType, BillingProductV2Type, BillingV2FeatureType, BillingV2PlanType } from '~/types' +import { BillingFeatureType, BillingPlanType, BillingProductV2AddonType, BillingProductV2Type } from '~/types' import { convertLargeNumberToWords, getProration, getUpgradeProductLink } from './billing-utils' import { billingLogic } from './billingLogic' @@ -25,7 +25,7 @@ export function PlanIcon({ className, timeDenominator, }: { - feature?: BillingV2FeatureType + feature?: BillingFeatureType className?: string timeDenominator?: string }): JSX.Element { @@ -58,7 +58,7 @@ const PricingTiers = ({ plan, product, }: { - plan: BillingV2PlanType + plan: BillingPlanType product: BillingProductV2Type | BillingProductV2AddonType }): JSX.Element => { const { width, ref: tiersRef } = useResizeObserver() @@ -426,7 +426,7 @@ export const PlanComparison = ({ {includedPlans - .find((plan: BillingV2PlanType) => plan.included_if == 'has_subscription') + .find((plan: BillingPlanType) => plan.included_if == 'has_subscription') ?.features?.map((feature, i) => ( { +const AddonPlanTiers = ({ plan, addon }: { plan: BillingPlanType; addon: BillingProductV2AddonType }): JSX.Element => { const [showTiers, setShowTiers] = useState(false) return showTiers ? ( diff --git a/frontend/src/scenes/billing/ProductPricingModal.tsx b/frontend/src/scenes/billing/ProductPricingModal.tsx index fc372d232d3e7f..49e33563717106 100644 --- a/frontend/src/scenes/billing/ProductPricingModal.tsx +++ b/frontend/src/scenes/billing/ProductPricingModal.tsx @@ -1,7 +1,7 @@ import { LemonModal } from '@posthog/lemon-ui' import { capitalizeFirstLetter } from 'lib/utils' -import { BillingProductV2AddonType, BillingProductV2Type, BillingV2PlanType } from '~/types' +import { BillingPlanType, BillingProductV2AddonType, BillingProductV2Type } from '~/types' import { getTierDescription } from './BillingProduct' @@ -19,7 +19,7 @@ export const ProductPricingModal = ({ if (!planKey) { return null } - const tiers = product?.plans?.find((plan: BillingV2PlanType) => plan.plan_key === planKey)?.tiers + const tiers = product?.plans?.find((plan: BillingPlanType) => plan.plan_key === planKey)?.tiers if (!product || !tiers) { return null diff --git a/frontend/src/scenes/billing/billing-utils.ts b/frontend/src/scenes/billing/billing-utils.ts index 49457eb9a6a165..e0098f710403bd 100644 --- a/frontend/src/scenes/billing/billing-utils.ts +++ b/frontend/src/scenes/billing/billing-utils.ts @@ -2,7 +2,7 @@ import { FEATURE_FLAGS } from 'lib/constants' import { dayjs } from 'lib/dayjs' import { FeatureFlagsSet } from 'lib/logic/featureFlagLogic' -import { BillingProductV2Type, BillingV2TierType, BillingV2Type } from '~/types' +import { BillingProductV2Type, BillingTierType, BillingType } from '~/types' export const summarizeUsage = (usage: number | null): string => { if (usage === null) { @@ -15,10 +15,7 @@ export const summarizeUsage = (usage: number | null): string => { return `${Math.round(usage / 1000000)} million` } -export const projectUsage = ( - usage: number | undefined, - period: BillingV2Type['billing_period'] -): number | undefined => { +export const projectUsage = (usage: number | undefined, period: BillingType['billing_period']): number | undefined => { if (typeof usage === 'undefined') { return usage } @@ -39,7 +36,7 @@ export const projectUsage = ( export const convertUsageToAmount = ( usage: number, - productAndAddonTiers: BillingV2TierType[][], + productAndAddonTiers: BillingTierType[][], percentDiscount?: number ): string => { if (!productAndAddonTiers) { @@ -47,7 +44,7 @@ export const convertUsageToAmount = ( } let remainingUsage = usage let amount = 0 - let previousTier: BillingV2TierType | undefined = undefined + let previousTier: BillingTierType | undefined = undefined const tiers = productAndAddonTiers[0].map((tier, index) => { const allAddonsTiers = productAndAddonTiers.slice(1) @@ -91,7 +88,7 @@ export const convertUsageToAmount = ( export const convertAmountToUsage = ( amount: string, - productAndAddonTiers: BillingV2TierType[][], + productAndAddonTiers: BillingTierType[][], discountPercent?: number ): number => { if (!amount) { @@ -118,7 +115,7 @@ export const convertAmountToUsage = ( let remainingAmount = parseFloat(amount) let usage = 0 - let previousTier: BillingV2TierType | undefined = undefined + let previousTier: BillingTierType | undefined = undefined if (remainingAmount === 0) { if (parseFloat(tiers[0].unit_amount_usd) === 0) { @@ -172,7 +169,7 @@ export const getUpgradeProductLink = ({ upgradeToPlanKey: string redirectPath?: string includeAddons: boolean - subscriptionLevel?: BillingV2Type['subscription_level'] + subscriptionLevel?: BillingType['subscription_level'] featureFlags: FeatureFlagsSet }): string => { let url = '/api/billing/activate?' diff --git a/frontend/src/scenes/billing/billingLogic.tsx b/frontend/src/scenes/billing/billingLogic.tsx index 30604688729a5c..ec2d3718bc61df 100644 --- a/frontend/src/scenes/billing/billingLogic.tsx +++ b/frontend/src/scenes/billing/billingLogic.tsx @@ -15,7 +15,7 @@ import posthog from 'posthog-js' import { preflightLogic } from 'scenes/PreflightCheck/preflightLogic' import { userLogic } from 'scenes/userLogic' -import { BillingProductV2Type, BillingV2PlanType, BillingV2Type, ProductKey } from '~/types' +import { BillingPlanType, BillingProductV2Type, BillingType, ProductKey } from '~/types' import type { billingLogicType } from './billingLogicType' @@ -51,7 +51,7 @@ export interface BillingError { action: LemonButtonPropsBase } -const parseBillingResponse = (data: Partial): BillingV2Type => { +const parseBillingResponse = (data: Partial): BillingType => { if (data.billing_period) { data.billing_period = { current_period_start: dayjs(data.billing_period.current_period_start), @@ -72,7 +72,7 @@ const parseBillingResponse = (data: Partial): BillingV2Type => { data.amount_off_expires_at = data.billing_period.current_period_end } - return data as BillingV2Type + return data as BillingType } export const billingLogic = kea([ @@ -83,7 +83,7 @@ export const billingLogic = kea([ setShowLicenseDirectInput: (show: boolean) => ({ show }), reportBillingAlertShown: (alertConfig: BillingAlertConfig) => ({ alertConfig }), reportBillingAlertActionClicked: (alertConfig: BillingAlertConfig) => ({ alertConfig }), - reportBillingV2Shown: true, + reportBillingShown: true, registerInstrumentationProps: true, setRedirectPath: true, setIsOnboarding: true, @@ -182,7 +182,7 @@ export const billingLogic = kea([ }), loaders(({ actions, values }) => ({ billing: [ - null as BillingV2Type | null, + null as BillingType | null, { loadBilling: async () => { const response = await api.get('api/billing') @@ -298,7 +298,7 @@ export const billingLogic = kea([ ], projectedTotalAmountUsdWithBillingLimits: [ (s) => [s.billing], - (billing: BillingV2Type): number => { + (billing: BillingType): number => { if (!billing) { return 0 } @@ -340,7 +340,7 @@ export const billingLogic = kea([ ], supportPlans: [ (s) => [s.billing], - (billing: BillingV2Type): BillingV2PlanType[] => { + (billing: BillingType): BillingPlanType[] => { const platformAndSupportProduct = billing?.products?.find( (product) => product.type == ProductKey.PLATFORM_AND_SUPPORT ) @@ -357,7 +357,7 @@ export const billingLogic = kea([ ], hasSupportAddonPlan: [ (s) => [s.billing], - (billing: BillingV2Type): boolean => { + (billing: BillingType): boolean => { return !!billing?.products ?.find((product) => product.type == ProductKey.PLATFORM_AND_SUPPORT) ?.addons.find((addon) => addon.plans.find((plan) => plan.current_plan)) @@ -394,7 +394,7 @@ export const billingLogic = kea([ }, })), listeners(({ actions, values }) => ({ - reportBillingV2Shown: () => { + reportBillingShown: () => { posthog.capture('billing v2 shown') }, reportBillingAlertShown: ({ alertConfig }) => { diff --git a/frontend/src/scenes/billing/billingProductLogic.ts b/frontend/src/scenes/billing/billingProductLogic.ts index e365ca8fa2e72a..2441c100ad43c9 100644 --- a/frontend/src/scenes/billing/billingProductLogic.ts +++ b/frontend/src/scenes/billing/billingProductLogic.ts @@ -6,7 +6,7 @@ import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import posthog from 'posthog-js' import React from 'react' -import { BillingProductV2AddonType, BillingProductV2Type, BillingV2PlanType, BillingV2TierType } from '~/types' +import { BillingPlanType, BillingProductV2AddonType, BillingProductV2Type, BillingTierType } from '~/types' import { convertAmountToUsage } from './billing-utils' import { billingLogic } from './billingLogic' @@ -63,7 +63,7 @@ export const billingProductLogic = kea([ setBillingProductLoading: (productKey: string | null) => ({ productKey }), initiateProductUpgrade: ( product: BillingProductV2Type | BillingProductV2AddonType, - plan: BillingV2PlanType, + plan: BillingPlanType, redirectPath?: string ) => ({ plan, @@ -156,7 +156,7 @@ export const billingProductLogic = kea([ currentAndUpgradePlans: [ (_s, p) => [p.product], (product) => { - const currentPlanIndex = product.plans.findIndex((plan: BillingV2PlanType) => plan.current_plan) + const currentPlanIndex = product.plans.findIndex((plan: BillingPlanType) => plan.current_plan) const currentPlan = currentPlanIndex >= 0 ? product.plans?.[currentPlanIndex] : null const upgradePlan = // If in debug mode and with no license there will be @@ -188,9 +188,9 @@ export const billingProductLogic = kea([ const addonTiers = product.addons ?.filter((addon: BillingProductV2AddonType) => addon.subscribed) ?.map((addon: BillingProductV2AddonType) => addon.tiers) - const productAndAddonTiers: BillingV2TierType[][] = [product.tiers, ...addonTiers].filter( + const productAndAddonTiers: BillingTierType[][] = [product.tiers, ...addonTiers].filter( Boolean - ) as BillingV2TierType[][] + ) as BillingTierType[][] return product.tiers ? isEditingBillingLimit ? convertAmountToUsage( @@ -355,9 +355,9 @@ export const billingProductLogic = kea([ ?.map((addon: BillingProductV2AddonType) => addon.tiers) : [] - const productAndAddonTiers: BillingV2TierType[][] = [props.product.tiers, ...addonTiers].filter( + const productAndAddonTiers: BillingTierType[][] = [props.product.tiers, ...addonTiers].filter( Boolean - ) as BillingV2TierType[][] + ) as BillingTierType[][] const newAmountAsUsage = props.product.tiers ? convertAmountToUsage(`${input}`, productAndAddonTiers, values.billing?.discount_percent) diff --git a/frontend/src/scenes/onboarding/OnboardingProductIntroduction.tsx b/frontend/src/scenes/onboarding/OnboardingProductIntroduction.tsx index 75924b11061eb0..8a410d91471dce 100644 --- a/frontend/src/scenes/onboarding/OnboardingProductIntroduction.tsx +++ b/frontend/src/scenes/onboarding/OnboardingProductIntroduction.tsx @@ -12,13 +12,13 @@ import { preflightLogic } from 'scenes/PreflightCheck/preflightLogic' import { getProductIcon } from 'scenes/products/Products' import { userLogic } from 'scenes/userLogic' -import { BillingProductV2Type, BillingV2FeatureType, ProductKey } from '~/types' +import { BillingFeatureType, BillingProductV2Type, ProductKey } from '~/types' import { onboardingLogic, OnboardingStepKey } from './onboardingLogic' import { OnboardingStep } from './OnboardingStep' import { multiInstallProducts, sdksLogic } from './sdks/sdksLogic' -export const Feature = ({ name, description, images }: BillingV2FeatureType): JSX.Element => { +export const Feature = ({ name, description, images }: BillingFeatureType): JSX.Element => { return images ? (

  • @@ -32,7 +32,7 @@ export const Feature = ({ name, description, images }: BillingV2FeatureType): JS ) } -export const Subfeature = ({ name, description, icon_key }: BillingV2FeatureType): JSX.Element => { +export const Subfeature = ({ name, description, icon_key }: BillingFeatureType): JSX.Element => { return (
  • {getProductIcon(name, icon_key)} diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 4fe44d361ef4fa..f62f94ca179809 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -345,7 +345,7 @@ export interface OrganizationType extends OrganizationBasicType { updated_at: string plugins_access_level: PluginsAccessLevel teams: TeamBasicType[] - available_product_features: BillingV2FeatureType[] + available_product_features: BillingFeatureType[] is_member_join_email_enabled: boolean customer_id: string | null enforce_2fa: boolean | null @@ -1490,7 +1490,7 @@ export interface CurrentBillCycleType { current_period_end: number } -export type BillingV2FeatureType = { +export type BillingFeatureType = { key: AvailableFeatureUnion name: string description?: string | null @@ -1506,7 +1506,7 @@ export type BillingV2FeatureType = { type?: 'primary' | 'secondary' | null } -export interface BillingV2TierType { +export interface BillingTierType { flat_amount_usd: string unit_amount_usd: string current_amount_usd: string | null @@ -1529,7 +1529,7 @@ export interface BillingProductV2Type { docs_url: string free_allocation?: number | null subscribed: boolean | null - tiers?: BillingV2TierType[] | null + tiers?: BillingTierType[] | null tiered: boolean current_usage?: number projected_amount_usd?: string | null @@ -1541,10 +1541,10 @@ export interface BillingProductV2Type { has_exceeded_limit: boolean unit: string | null unit_amount_usd: string | null - plans: BillingV2PlanType[] + plans: BillingPlanType[] contact_support: boolean | null inclusion_only: any - features: BillingV2FeatureType[] + features: BillingFeatureType[] addons: BillingProductV2AddonType[] // addons-only: if this addon is included with the base product and not subscribed individually. for backwards compatibility. included_with_main_product?: boolean @@ -1558,7 +1558,7 @@ export interface BillingProductV2AddonType { icon_key?: string docs_url: string | null type: string - tiers: BillingV2TierType[] | null + tiers: BillingTierType[] | null tiered: boolean subscribed: boolean // sometimes addons are included with the base product, but they aren't subscribed individually @@ -1571,15 +1571,15 @@ export interface BillingProductV2AddonType { current_usage: number projected_usage: number | null projected_amount_usd: string | null - plans: BillingV2PlanType[] + plans: BillingPlanType[] usage_key?: string free_allocation?: number | null percentage_usage?: number - features: BillingV2FeatureType[] + features: BillingFeatureType[] included_if?: 'no_active_subscription' | 'has_subscription' | null usage_limit?: number | null } -export interface BillingV2Type { +export interface BillingType { customer_id: string has_active_subscription: boolean subscription_level: 'free' | 'paid' | 'custom' @@ -1601,15 +1601,15 @@ export interface BillingV2Type { license?: { plan: LicensePlan } - available_plans?: BillingV2PlanType[] + available_plans?: BillingPlanType[] discount_percent?: number discount_amount_usd?: string amount_off_expires_at?: Dayjs } -export interface BillingV2PlanType { +export interface BillingPlanType { free_allocation?: number | null - features: BillingV2FeatureType[] + features: BillingFeatureType[] name: string description: string is_free?: boolean @@ -1621,7 +1621,7 @@ export interface BillingV2PlanType { flat_rate: boolean product_key: ProductKeyUnion current_plan?: boolean | null - tiers?: BillingV2TierType[] | null + tiers?: BillingTierType[] | null unit_amount_usd: string | null included_if?: 'no_active_subscription' | 'has_subscription' | null initial_billing_limit?: number From c7f3a82bcacf3e4bc3ed5b84d9f5f23ab351caf0 Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 1 Jul 2024 21:17:52 +0100 Subject: [PATCH 06/18] feat(web-analytics): Fix group by, remove date range (#23367) * Fix group by, remove date range * Update query snapshots --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../migrations/0066_sessions_group_by.py | 6 ++++++ .../test/__snapshots__/test_schema.ambr | 11 ++++++----- posthog/models/raw_sessions/sql.py | 19 ++++++------------- 3 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 posthog/clickhouse/migrations/0066_sessions_group_by.py diff --git a/posthog/clickhouse/migrations/0066_sessions_group_by.py b/posthog/clickhouse/migrations/0066_sessions_group_by.py new file mode 100644 index 00000000000000..628803f4beba9d --- /dev/null +++ b/posthog/clickhouse/migrations/0066_sessions_group_by.py @@ -0,0 +1,6 @@ +from posthog.clickhouse.client.migration_tools import run_sql_with_exceptions +from posthog.models.raw_sessions.sql import RAW_SESSION_TABLE_UPDATE_SQL + +operations = [ + run_sql_with_exceptions(RAW_SESSION_TABLE_UPDATE_SQL), +] diff --git a/posthog/clickhouse/test/__snapshots__/test_schema.ambr b/posthog/clickhouse/test/__snapshots__/test_schema.ambr index 83fb6f0831b8c8..08d4d062afcdf6 100644 --- a/posthog/clickhouse/test/__snapshots__/test_schema.ambr +++ b/posthog/clickhouse/test/__snapshots__/test_schema.ambr @@ -1745,11 +1745,12 @@ -- replay false as maybe_has_session_replay FROM posthog_test.sharded_events - WHERE and( - bitAnd(bitShiftRight(toUInt128(accurateCastOrNull(`$session_id`, 'UUID')), 76), 0xF) == 7, -- has a session id and is valid uuidv7 - toYYYYMMDD(timestamp) >= 0 - ) - GROUP BY session_id_v7, team_id + WHERE bitAnd(bitShiftRight(toUInt128(accurateCastOrNull(`$session_id`, 'UUID')), 76), 0xF) == 7 -- has a session id and is valid uuidv7) + GROUP BY + team_id, + toStartOfHour(fromUnixTimestamp(intDiv(toUInt64(bitShiftRight(session_id_v7, 80)), 1000))), + cityHash64(session_id_v7), + session_id_v7 ''' diff --git a/posthog/models/raw_sessions/sql.py b/posthog/models/raw_sessions/sql.py index 184ff625cfd00a..9a144f278c2e8c 100644 --- a/posthog/models/raw_sessions/sql.py +++ b/posthog/models/raw_sessions/sql.py @@ -5,13 +5,6 @@ ReplicationScheme, AggregatingMergeTree, ) -from posthog.settings import TEST - -# the date of the day after this PR will be merged, this allows us to run the backfill script on complete days -# with a condition like toYYYYMMDD(timestamp) < X -INGEST_FROM_DATE = "toYYYYMMDD(timestamp) >= 20240626" -if TEST: - INGEST_FROM_DATE = "toYYYYMMDD(timestamp) >= 0" TABLE_BASE_NAME = "raw_sessions" RAW_SESSIONS_DATA_TABLE = lambda: f"sharded_{TABLE_BASE_NAME}" @@ -329,11 +322,12 @@ def source_int_column(column_name: str) -> str: -- replay false as maybe_has_session_replay FROM {database}.sharded_events -WHERE and( - bitAnd(bitShiftRight(toUInt128(accurateCastOrNull(`$session_id`, 'UUID')), 76), 0xF) == 7, -- has a session id and is valid uuidv7 - {INGEST_FROM_DATE} -) -GROUP BY session_id_v7, team_id +WHERE bitAnd(bitShiftRight(toUInt128(accurateCastOrNull(`$session_id`, 'UUID')), 76), 0xF) == 7 -- has a session id and is valid uuidv7) +GROUP BY + team_id, + toStartOfHour(fromUnixTimestamp(intDiv(toUInt64(bitShiftRight(session_id_v7, 80)), 1000))), + cityHash64(session_id_v7), + session_id_v7 """.format( database=settings.CLICKHOUSE_DATABASE, current_url=source_url_column("$current_url"), @@ -370,7 +364,6 @@ def source_int_column(column_name: str) -> str: mc_cid=source_string_column("mc_cid"), igshid=source_string_column("igshid"), ttclid=source_string_column("ttclid"), - INGEST_FROM_DATE=INGEST_FROM_DATE, ) ) From 1237677aba19a527848b156862af4e3fb779aa3b Mon Sep 17 00:00:00 2001 From: Brett Hoerner Date: Mon, 1 Jul 2024 14:45:59 -0600 Subject: [PATCH 07/18] fix(plugin-server): fix conflict case in addPersonlessDistinctId (#23378) --- plugin-server/src/utils/db/db.ts | 18 +++++++++++++++++- plugin-server/tests/main/db.test.ts | 17 +++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/plugin-server/src/utils/db/db.ts b/plugin-server/src/utils/db/db.ts index 9501f5a58cbf54..89f9b060e268cc 100644 --- a/plugin-server/src/utils/db/db.ts +++ b/plugin-server/src/utils/db/db.ts @@ -862,7 +862,23 @@ export class DB { 'addPersonlessDistinctId' ) - return result.rows[0]['is_merged'] + if (result.rows.length === 1) { + return result.rows[0]['is_merged'] + } + + // ON CONFLICT ... DO NOTHING won't give us our RETURNING, so we have to do another SELECT + const existingResult = await this.postgres.query( + PostgresUse.COMMON_WRITE, + ` + SELECT is_merged + FROM posthog_personlessdistinctid + WHERE team_id = $1 AND distinct_id = $2 + `, + [teamId, distinctId], + 'addPersonlessDistinctId' + ) + + return existingResult.rows[0]['is_merged'] } public async addPersonlessDistinctIdForMerge( diff --git a/plugin-server/tests/main/db.test.ts b/plugin-server/tests/main/db.test.ts index 670685f445ddce..1ff74e418f20df 100644 --- a/plugin-server/tests/main/db.test.ts +++ b/plugin-server/tests/main/db.test.ts @@ -284,6 +284,23 @@ describe('DB', () => { return selectResult.rows[0] } + test('addPersonlessDistinctId', async () => { + const team = await getFirstTeam(hub) + await db.addPersonlessDistinctId(team.id, 'addPersonlessDistinctId') + + // This will conflict, but shouldn't throw an error + await db.addPersonlessDistinctId(team.id, 'addPersonlessDistinctId') + + const result = await db.postgres.query( + PostgresUse.COMMON_WRITE, + 'SELECT id FROM posthog_personlessdistinctid WHERE team_id = $1 AND distinct_id = $2', + [team.id, 'addPersonlessDistinctId'], + 'addPersonlessDistinctId' + ) + + expect(result.rows.length).toEqual(1) + }) + describe('createPerson', () => { let team: Team const uuid = new UUIDT().toString() From 46d50b1748a468d8a468846e4ffee9c874e00b57 Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 1 Jul 2024 23:27:54 +0100 Subject: [PATCH 08/18] feat(web-analytics): Handle null values better in session properties (#23289) * Handle null values better in session properties * Update session replay query test * Remove unusef * Update query snapshots --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../scenes/web-analytics/WebAnalyticsTile.tsx | 8 +- .../scenes/web-analytics/webAnalyticsLogic.ts | 27 ++++- posthog/hogql/database/schema/sessions_v1.py | 24 ++-- posthog/hogql/database/schema/sessions_v2.py | 23 ++-- .../test_session_where_clause_extractor.py | 8 +- posthog/hogql/property.py | 8 +- .../web_analytics/stats_table.py | 19 +++- .../test/test_web_stats_table.py | 105 +++++++++++++++++- 8 files changed, 188 insertions(+), 34 deletions(-) diff --git a/frontend/src/scenes/web-analytics/WebAnalyticsTile.tsx b/frontend/src/scenes/web-analytics/WebAnalyticsTile.tsx index 6a9effb8e2e744..4cd3be6c9cfbfa 100644 --- a/frontend/src/scenes/web-analytics/WebAnalyticsTile.tsx +++ b/frontend/src/scenes/web-analytics/WebAnalyticsTile.tsx @@ -332,7 +332,7 @@ export const WebStatsTableTile = ({ const { key, type } = webStatsBreakdownToPropertyName(breakdownBy) || {} const onClick = useCallback( - (breakdownValue: string) => { + (breakdownValue: string | null) => { if (!key || !type) { return } @@ -400,7 +400,7 @@ export const WebStatsTableTile = ({ ) } -const getBreakdownValue = (record: unknown, breakdownBy: WebStatsBreakdown): string | undefined => { +const getBreakdownValue = (record: unknown, breakdownBy: WebStatsBreakdown): string | null | undefined => { if (typeof record !== 'object' || !record || !('result' in record)) { return undefined } @@ -429,6 +429,10 @@ const getBreakdownValue = (record: unknown, breakdownBy: WebStatsBreakdown): str break } + if (breakdownValue === null) { + return null // null is a valid value, as opposed to undefined which signals that there isn't a valid value + } + if (typeof breakdownValue !== 'string') { return undefined } diff --git a/frontend/src/scenes/web-analytics/webAnalyticsLogic.ts b/frontend/src/scenes/web-analytics/webAnalyticsLogic.ts index 23c835cce95727..e08193a7fd83b2 100644 --- a/frontend/src/scenes/web-analytics/webAnalyticsLogic.ts +++ b/frontend/src/scenes/web-analytics/webAnalyticsLogic.ts @@ -187,7 +187,7 @@ export const webAnalyticsLogic = kea([ togglePropertyFilter: ( type: PropertyFilterType.Event | PropertyFilterType.Person | PropertyFilterType.Session, key: string, - value: string | number, + value: string | number | null, tabChange?: { graphsTab?: string sourceTab?: string @@ -245,6 +245,25 @@ export const webAnalyticsLogic = kea([ { setWebAnalyticsFilters: (_, { webAnalyticsFilters }) => webAnalyticsFilters, togglePropertyFilter: (oldPropertyFilters, { key, value, type }): WebAnalyticsPropertyFilters => { + if (value === null) { + // if there's already an isNotSet filter, remove it + const isNotSetFilterExists = oldPropertyFilters.some( + (f) => f.type === type || f.key === key || f.operator === PropertyOperator.IsNotSet + ) + if (isNotSetFilterExists) { + return oldPropertyFilters.filter( + (f) => f.type !== type || f.key !== key || f.operator !== PropertyOperator.IsNotSet + ) + } + return [ + ...oldPropertyFilters, + { + type, + key, + operator: PropertyOperator.IsNotSet, + }, + ] + } const similarFilterExists = oldPropertyFilters.some( (f) => f.type === type && f.key === key && f.operator === PropertyOperator.Exact ) @@ -252,7 +271,11 @@ export const webAnalyticsLogic = kea([ // if there's already a matching property, turn it off or merge them return oldPropertyFilters .map((f) => { - if (f.key !== key || f.type !== type || f.operator !== PropertyOperator.Exact) { + if ( + f.key !== key || + f.type !== type || + ![PropertyOperator.Exact, PropertyOperator.IsNotSet].includes(f.operator) + ) { return f } const oldValue = (Array.isArray(f.value) ? f.value : [f.value]).filter(isNotNil) diff --git a/posthog/hogql/database/schema/sessions_v1.py b/posthog/hogql/database/schema/sessions_v1.py index 14ab2b8f2b9aef..c95076f603fe72 100644 --- a/posthog/hogql/database/schema/sessions_v1.py +++ b/posthog/hogql/database/schema/sessions_v1.py @@ -157,16 +157,16 @@ def arg_max_merge_field(field_name: str) -> ast.Call: ) ], ), - "$entry_current_url": arg_min_merge_field("entry_url"), - "$exit_current_url": arg_max_merge_field("exit_url"), - "$entry_utm_source": arg_min_merge_field("initial_utm_source"), - "$entry_utm_campaign": arg_min_merge_field("initial_utm_campaign"), - "$entry_utm_medium": arg_min_merge_field("initial_utm_medium"), - "$entry_utm_term": arg_min_merge_field("initial_utm_term"), - "$entry_utm_content": arg_min_merge_field("initial_utm_content"), - "$entry_referring_domain": arg_min_merge_field("initial_referring_domain"), - "$entry_gclid": arg_min_merge_field("initial_gclid"), - "$entry_gad_source": arg_min_merge_field("initial_gad_source"), + "$entry_current_url": null_if_empty(arg_min_merge_field("entry_url")), + "$exit_current_url": null_if_empty(arg_max_merge_field("exit_url")), + "$entry_utm_source": null_if_empty(arg_min_merge_field("initial_utm_source")), + "$entry_utm_campaign": null_if_empty(arg_min_merge_field("initial_utm_campaign")), + "$entry_utm_medium": null_if_empty(arg_min_merge_field("initial_utm_medium")), + "$entry_utm_term": null_if_empty(arg_min_merge_field("initial_utm_term")), + "$entry_utm_content": null_if_empty(arg_min_merge_field("initial_utm_content")), + "$entry_referring_domain": null_if_empty(arg_min_merge_field("initial_referring_domain")), + "$entry_gclid": null_if_empty(arg_min_merge_field("initial_gclid")), + "$entry_gad_source": null_if_empty(arg_min_merge_field("initial_gad_source")), "$event_count_map": ast.Call( name="sumMap", args=[ast.Field(chain=[table_name, "event_count_map"])], @@ -420,3 +420,7 @@ def get_lazy_session_table_values_v1(key: str, search_term: Optional[str], team: return [["1"], ["0"]] return [] + + +def null_if_empty(expr: ast.Expr) -> ast.Call: + return ast.Call(name="nullIf", args=[expr, ast.Constant(value="")]) diff --git a/posthog/hogql/database/schema/sessions_v2.py b/posthog/hogql/database/schema/sessions_v2.py index d83b8dd3d1a84f..7c3fd554bf9f74 100644 --- a/posthog/hogql/database/schema/sessions_v2.py +++ b/posthog/hogql/database/schema/sessions_v2.py @@ -18,6 +18,7 @@ LazyJoinToAdd, ) from posthog.hogql.database.schema.channel_type import create_channel_type_expr, POSSIBLE_CHANNEL_TYPES +from posthog.hogql.database.schema.sessions_v1 import null_if_empty from posthog.hogql.database.schema.util.where_clause_extractor import SessionMinTimestampWhereClauseExtractorV2 from posthog.hogql.errors import ResolutionError from posthog.models.property_definition import PropertyType @@ -185,20 +186,20 @@ def arg_max_merge_field(field_name: str) -> ast.Call: ) ], ), - "$entry_current_url": arg_min_merge_field("entry_url"), - "$end_current_url": arg_max_merge_field("end_url"), - "$entry_utm_source": arg_min_merge_field("initial_utm_source"), - "$entry_utm_campaign": arg_min_merge_field("initial_utm_campaign"), - "$entry_utm_medium": arg_min_merge_field("initial_utm_medium"), - "$entry_utm_term": arg_min_merge_field("initial_utm_term"), - "$entry_utm_content": arg_min_merge_field("initial_utm_content"), - "$entry_referring_domain": arg_min_merge_field("initial_referring_domain"), - "$entry_gclid": arg_min_merge_field("initial_gclid"), - "$entry_gad_source": arg_min_merge_field("initial_gad_source"), + "$entry_current_url": null_if_empty(arg_min_merge_field("entry_url")), + "$end_current_url": null_if_empty(arg_max_merge_field("end_url")), + "$entry_utm_source": null_if_empty(arg_min_merge_field("initial_utm_source")), + "$entry_utm_campaign": null_if_empty(arg_min_merge_field("initial_utm_campaign")), + "$entry_utm_medium": null_if_empty(arg_min_merge_field("initial_utm_medium")), + "$entry_utm_term": null_if_empty(arg_min_merge_field("initial_utm_term")), + "$entry_utm_content": null_if_empty(arg_min_merge_field("initial_utm_content")), + "$entry_referring_domain": null_if_empty(arg_min_merge_field("initial_referring_domain")), + "$entry_gclid": null_if_empty(arg_min_merge_field("initial_gclid")), + "$entry_gad_source": null_if_empty(arg_min_merge_field("initial_gad_source")), "$pageview_count": ast.Call(name="sum", args=[ast.Field(chain=[table_name, "pageview_count"])]), "$screen_count": ast.Call(name="sum", args=[ast.Field(chain=[table_name, "screen_count"])]), "$autocapture_count": ast.Call(name="sum", args=[ast.Field(chain=[table_name, "autocapture_count"])]), - "$last_external_click_url": arg_max_merge_field("last_external_click_url"), + "$last_external_click_url": null_if_empty(arg_max_merge_field("last_external_click_url")), } # Alias aggregate_fields["id"] = aggregate_fields["session_id"] diff --git a/posthog/hogql/database/schema/util/test/test_session_where_clause_extractor.py b/posthog/hogql/database/schema/util/test/test_session_where_clause_extractor.py index 96230257b187d1..4ed10becfd7577 100644 --- a/posthog/hogql/database/schema/util/test/test_session_where_clause_extractor.py +++ b/posthog/hogql/database/schema/util/test/test_session_where_clause_extractor.py @@ -478,21 +478,21 @@ def test_session_replay_query(self): ) expected = f"""SELECT s.session_id AS session_id, - min(toTimeZone(s.min_first_timestamp, %(hogql_val_5)s)) AS start_time + min(toTimeZone(s.min_first_timestamp, %(hogql_val_6)s)) AS start_time FROM session_replay_events AS s LEFT JOIN (SELECT - path(nullIf(argMinMerge(sessions.entry_url), %(hogql_val_0)s)) AS `$entry_pathname`, + path(nullIf(nullIf(argMinMerge(sessions.entry_url), %(hogql_val_0)s), %(hogql_val_1)s)) AS `$entry_pathname`, sessions.session_id AS session_id FROM sessions WHERE - and(equals(sessions.team_id, {self.team.id}), ifNull(greaterOrEquals(plus(toTimeZone(sessions.min_timestamp, %(hogql_val_1)s), toIntervalDay(3)), %(hogql_val_2)s), 0), ifNull(lessOrEquals(minus(toTimeZone(sessions.min_timestamp, %(hogql_val_3)s), toIntervalDay(3)), now64(6, %(hogql_val_4)s)), 0)) + and(equals(sessions.team_id, {self.team.id}), ifNull(greaterOrEquals(plus(toTimeZone(sessions.min_timestamp, %(hogql_val_2)s), toIntervalDay(3)), %(hogql_val_3)s), 0), ifNull(lessOrEquals(minus(toTimeZone(sessions.min_timestamp, %(hogql_val_4)s), toIntervalDay(3)), now64(6, %(hogql_val_5)s)), 0)) GROUP BY sessions.session_id, sessions.session_id) AS s__session ON equals(s.session_id, s__session.session_id) WHERE - and(equals(s.team_id, {self.team.id}), ifNull(equals(s__session.`$entry_pathname`, %(hogql_val_6)s), 0), ifNull(greaterOrEquals(toTimeZone(s.min_first_timestamp, %(hogql_val_7)s), %(hogql_val_8)s), 0), ifNull(less(toTimeZone(s.min_first_timestamp, %(hogql_val_9)s), now64(6, %(hogql_val_10)s)), 0)) + and(equals(s.team_id, {self.team.id}), ifNull(equals(s__session.`$entry_pathname`, %(hogql_val_7)s), 0), ifNull(greaterOrEquals(toTimeZone(s.min_first_timestamp, %(hogql_val_8)s), %(hogql_val_9)s), 0), ifNull(less(toTimeZone(s.min_first_timestamp, %(hogql_val_10)s), now64(6, %(hogql_val_11)s)), 0)) GROUP BY s.session_id LIMIT 50000""" diff --git a/posthog/hogql/property.py b/posthog/hogql/property.py index de99a9e4b085fa..13bbf579c32e0b 100644 --- a/posthog/hogql/property.py +++ b/posthog/hogql/property.py @@ -170,7 +170,11 @@ def property_to_expr( else: chain = ["properties"] - properties_field = ast.Field(chain=chain) + if property.type == "session": + properties_field = None + else: + properties_field = ast.Field(chain=chain) + field = ast.Field(chain=[*chain, property.key]) if isinstance(value, list): @@ -219,7 +223,7 @@ def property_to_expr( ] + ( [] - if properties_field == field + if not properties_field or properties_field == field else [ ast.Not( expr=ast.Call( diff --git a/posthog/hogql_queries/web_analytics/stats_table.py b/posthog/hogql_queries/web_analytics/stats_table.py index 14b236da042dcc..41f057f0ebb1e6 100644 --- a/posthog/hogql_queries/web_analytics/stats_table.py +++ b/posthog/hogql_queries/web_analytics/stats_table.py @@ -24,6 +24,8 @@ PersonPropertyFilter, ) +BREAKDOWN_NULL_DISPLAY = "(none)" + class WebStatsTableQueryRunner(WebAnalyticsQueryRunner): query: WebStatsTableQuery @@ -468,8 +470,17 @@ def _counts_breakdown_value(self): case WebStatsBreakdown.INITIAL_CHANNEL_TYPE: return ast.Field(chain=["session", "$channel_type"]) case WebStatsBreakdown.INITIAL_UTM_SOURCE_MEDIUM_CAMPAIGN: - return parse_expr( - "concatWithSeparator(' / ', coalesce(nullIf(session.$entry_utm_source, ''), nullIf(session.$entry_referring_domain, ''), '(null)'), coalesce(nullIf(session.$entry_utm_medium, ''), '(null)'), coalesce(nullIf(session.$entry_utm_campaign, ''), '(null)'))" + return ast.Call( + name="concatWithSeparator", + args=[ + ast.Constant(value=" / "), + coalesce_with_null_display( + ast.Field(chain=["session", "$entry_utm_source"]), + ast.Field(chain=["session", "$entry_referring_domain"]), + ), + coalesce_with_null_display(ast.Field(chain=["session", "$entry_utm_medium"])), + coalesce_with_null_display(ast.Field(chain=["session", "$entry_utm_campaign"])), + ], ) case WebStatsBreakdown.BROWSER: return ast.Field(chain=["properties", "$browser"]) @@ -530,3 +541,7 @@ def _apply_path_cleaning(self, path_expr: ast.Expr) -> ast.Expr: ) return path_expr + + +def coalesce_with_null_display(*exprs: ast.Expr) -> ast.Expr: + return ast.Call(name="coalesce", args=[*exprs, ast.Constant(value=BREAKDOWN_NULL_DISPLAY)]) diff --git a/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py b/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py index d3c9a7c49b9619..4034d07a82d26c 100644 --- a/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py +++ b/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py @@ -768,6 +768,109 @@ def test_source_medium_campaign(self, session_table_version: SessionTableVersion ).results self.assertEqual( - [["google / (null) / (null)", 1, 1], ["news.ycombinator.com / referral / (null)", 1, 1]], + [["google / (none) / (none)", 1, 1], ["news.ycombinator.com / referral / (none)", 1, 1]], + results, + ) + + @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) + def test_null_in_utm_tags(self, session_table_version: SessionTableVersion): + d1 = "d1" + s1 = str(uuid7("2024-06-26")) + + _create_person( + team_id=self.team.pk, + distinct_ids=[d1], + properties={ + "name": d1, + }, + ) + _create_event( + team=self.team, + event="$pageview", + distinct_id=d1, + timestamp="2024-06-26", + properties={"$session_id": s1, "utm_source": "google"}, + ) + + d2 = "d2" + s2 = str(uuid7("2024-06-26")) + _create_person( + team_id=self.team.pk, + distinct_ids=[d2], + properties={ + "name": d2, + }, + ) + _create_event( + team=self.team, + event="$pageview", + distinct_id=d2, + timestamp="2024-06-26", + properties={ + "$session_id": s2, + }, + ) + + results = self._run_web_stats_table_query( + "all", + "2024-06-27", + breakdown_by=WebStatsBreakdown.INITIAL_UTM_SOURCE, + session_table_version=session_table_version, + ).results + + self.assertEqual( + [["google", 1.0, 1.0], [None, 1.0, 1.0]], + results, + ) + + @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) + def test_is_not_set_filter(self, session_table_version: SessionTableVersion): + d1 = "d1" + s1 = str(uuid7("2024-06-26")) + + _create_person( + team_id=self.team.pk, + distinct_ids=[d1], + properties={ + "name": d1, + }, + ) + _create_event( + team=self.team, + event="$pageview", + distinct_id=d1, + timestamp="2024-06-26", + properties={"$session_id": s1, "utm_source": "google"}, + ) + + d2 = "d2" + s2 = str(uuid7("2024-06-26")) + _create_person( + team_id=self.team.pk, + distinct_ids=[d2], + properties={ + "name": d2, + }, + ) + _create_event( + team=self.team, + event="$pageview", + distinct_id=d2, + timestamp="2024-06-26", + properties={ + "$session_id": s2, + }, + ) + + results = self._run_web_stats_table_query( + "all", + "2024-06-27", + breakdown_by=WebStatsBreakdown.INITIAL_UTM_SOURCE, + properties=[EventPropertyFilter(key="utm_source", operator=PropertyOperator.IS_NOT_SET)], + session_table_version=session_table_version, + ).results + + self.assertEqual( + [[None, 1.0, 1.0]], results, ) From 27506a89d385c712172b354e36082cb406e7a02d Mon Sep 17 00:00:00 2001 From: Eric Duong Date: Mon, 1 Jul 2024 20:09:09 -0400 Subject: [PATCH 09/18] fix(data-warehouse): schema status optional type (#23379) * should be optional * adjust test to account for null status * Update query snapshots * Update query snapshots * func name * Update query snapshots --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Dylan Martin --- .../test_clickhouse_experiments.ambr | 103 +++++++++++++++--- frontend/src/queries/schema.json | 4 +- frontend/src/queries/schema.ts | 6 +- posthog/hogql/database/test/test_database.py | 4 +- posthog/schema.py | 2 +- 5 files changed, 95 insertions(+), 24 deletions(-) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index 11e1e0317f71d4..389171ebc7e126 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -227,26 +227,97 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') + AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([['test'], ['control']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + pdi.person_id as aggregation_target, + pdi.person_id as person_id, + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + AND distinct_id IN + (SELECT distinct_id + FROM events + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') + AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') ) + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') + AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.3 diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 7811c9e1e43bb6..f00512ba8906e5 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -2575,7 +2575,7 @@ "type": "string" } }, - "required": ["id", "name", "should_sync", "incremental", "status"], + "required": ["id", "name", "should_sync", "incremental"], "type": "object" }, "DatabaseSchemaSource": { @@ -5319,7 +5319,7 @@ "type": "object" }, "NodeKind": { - "description": "PostHog Query Schema definition.\n\nThis file acts as the source of truth for:\n\n- frontend/src/queries/schema.json - generated from typescript via \"pnpm run generate:schema:json\"\n\n- posthog/schema.py - generated from json the above json via \"pnpm run generate:schema:python\"", + "description": "PostHog Query Schema definition.\n\nThis file acts as the source of truth for:\n\n- frontend/src/queries/schema.json - generated from typescript via \"pnpm run schema:build:json\"\n\n- posthog/schema.py - generated from json the above json via \"pnpm run schema:build:python\"", "enum": [ "EventsNode", "ActionsNode", diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index cfbddedd9ce928..e34100a494b756 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -41,10 +41,10 @@ type integer = number * This file acts as the source of truth for: * * - frontend/src/queries/schema.json - * - generated from typescript via "pnpm run generate:schema:json" + * - generated from typescript via "pnpm run schema:build:json" * * - posthog/schema.py - * - generated from json the above json via "pnpm run generate:schema:python" + * - generated from json the above json via "pnpm run schema:build:python" * */ export enum NodeKind { @@ -1430,7 +1430,7 @@ export interface DatabaseSchemaSchema { name: string should_sync: boolean incremental: boolean - status: string + status?: string last_synced_at?: string } diff --git a/posthog/hogql/database/test/test_database.py b/posthog/hogql/database/test/test_database.py index f91187d1e091e5..215677abe41bac 100644 --- a/posthog/hogql/database/test/test_database.py +++ b/posthog/hogql/database/test/test_database.py @@ -161,8 +161,8 @@ def test_serialize_database_warehouse_table_source(self): source=source, table=warehouse_table, should_sync=True, - status=ExternalDataSchema.Status.COMPLETED, last_synced_at="2024-01-01", + # No status but should be completed because a data warehouse table already exists ) database = create_hogql_database(team_id=self.team.pk) @@ -183,7 +183,7 @@ def test_serialize_database_warehouse_table_source(self): assert table.schema_.name == "table_1" assert table.schema_.should_sync is True assert table.schema_.incremental is False - assert table.schema_.status == "Completed" + assert table.schema_.status is None assert table.schema_.last_synced_at == "2024-01-01 00:00:00+00:00" field = table.fields.get("id") diff --git a/posthog/schema.py b/posthog/schema.py index 38e3643d3a3b67..c46df6df526993 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -241,7 +241,7 @@ class DatabaseSchemaSchema(BaseModel): last_synced_at: Optional[str] = None name: str should_sync: bool - status: str + status: Optional[str] = None class DatabaseSchemaSource(BaseModel): From 3994a91d8c374907bc05cee7c0ce2f616e5800b6 Mon Sep 17 00:00:00 2001 From: Sandy Spicer Date: Tue, 2 Jul 2024 00:16:24 -0700 Subject: [PATCH 10/18] fix: add experimental settings to actors_query_runner (#23380) --- .../test_clickhouse_experiments.ambr | 206 +++--------------- posthog/hogql_queries/actors_query_runner.py | 11 + .../test/__snapshots__/test_funnel.ambr | 12 +- .../__snapshots__/test_funnel_persons.ambr | 9 +- .../test_funnel_strict_persons.ambr | 9 +- .../test_funnel_trends_persons.ambr | 9 +- .../test_funnel_unordered_persons.ambr | 3 +- 7 files changed, 71 insertions(+), 188 deletions(-) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index 389171ebc7e126..b1eb79a39945ce 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -441,97 +441,26 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 ''' - /* user_id:0 request:_snapshot_ */ - SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, - count(*) as count - FROM events e - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') - GROUP BY value - ORDER BY count DESC, value DESC - LIMIT 26 - OFFSET 0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 ''' - /* user_id:0 request:_snapshot_ */ - SELECT countIf(steps = 1) step_1, - countIf(steps = 2) step_2, - avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, - median(step_1_median_conversion_time_inner) step_1_median_conversion_time, - prop - FROM - (SELECT aggregation_target, - steps, - avg(step_1_conversion_time) step_1_average_conversion_time_inner, - median(step_1_conversion_time) step_1_median_conversion_time_inner , - prop - FROM - (SELECT aggregation_target, - steps, - max(steps) over (PARTITION BY aggregation_target, - prop) as max_steps, - step_1_conversion_time , - prop - FROM - (SELECT *, - if(latest_0 <= latest_1 - AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , - if(isNotNull(latest_1) - AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, - prop - FROM - (SELECT aggregation_target, timestamp, step_0, - latest_0, - step_1, - min(latest_1) over (PARTITION by aggregation_target, - prop - ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , - if(has([[''], ['test_1'], ['test'], ['control'], ['unknown_3'], ['unknown_2'], ['unknown_1'], ['test_2']], prop), prop, ['Other']) as prop - FROM - (SELECT *, - if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop - FROM - (SELECT e.timestamp as timestamp, - pdi.person_id as aggregation_target, - pdi.person_id as person_id, - if(event = '$pageview', 1, 0) as step_0, - if(step_0 = 1, timestamp, null) as latest_0, - if(event = '$pageleave', 1, 0) as step_1, - if(step_1 = 1, timestamp, null) as latest_1, - array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, - prop_basic as prop, - argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals - FROM events e - INNER JOIN - (SELECT distinct_id, - argMax(person_id, version) as person_id - FROM person_distinct_id2 - WHERE team_id = 2 - AND distinct_id IN - (SELECT distinct_id - FROM events - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) - GROUP BY distinct_id - HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') - AND (step_0 = 1 - OR step_1 = 1) ))) - WHERE step_0 = 1 )) - GROUP BY aggregation_target, - steps, - prop - HAVING steps = max_steps) - GROUP BY prop + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 @@ -655,97 +584,26 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.1 ''' - /* user_id:0 request:_snapshot_ */ - SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, - count(*) as count - FROM events e - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') - GROUP BY value - ORDER BY count DESC, value DESC - LIMIT 26 - OFFSET 0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.2 ''' - /* user_id:0 request:_snapshot_ */ - SELECT countIf(steps = 1) step_1, - countIf(steps = 2) step_2, - avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, - median(step_1_median_conversion_time_inner) step_1_median_conversion_time, - prop - FROM - (SELECT aggregation_target, - steps, - avg(step_1_conversion_time) step_1_average_conversion_time_inner, - median(step_1_conversion_time) step_1_median_conversion_time_inner , - prop - FROM - (SELECT aggregation_target, - steps, - max(steps) over (PARTITION BY aggregation_target, - prop) as max_steps, - step_1_conversion_time , - prop - FROM - (SELECT *, - if(latest_0 <= latest_1 - AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , - if(isNotNull(latest_1) - AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, - prop - FROM - (SELECT aggregation_target, timestamp, step_0, - latest_0, - step_1, - min(latest_1) over (PARTITION by aggregation_target, - prop - ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , - if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop - FROM - (SELECT *, - if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop - FROM - (SELECT e.timestamp as timestamp, - replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$account_id'), ''), 'null'), '^"|"$', '') as aggregation_target, - pdi.person_id as person_id, - if(event = '$pageview', 1, 0) as step_0, - if(step_0 = 1, timestamp, null) as latest_0, - if(event = '$pageleave', 1, 0) as step_1, - if(step_1 = 1, timestamp, null) as latest_1, - array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, - prop_basic as prop, - argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals - FROM events e - INNER JOIN - (SELECT distinct_id, - argMax(person_id, version) as person_id - FROM person_distinct_id2 - WHERE team_id = 2 - AND distinct_id IN - (SELECT distinct_id - FROM events - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) - GROUP BY distinct_id - HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id - WHERE team_id = 2 - AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') - AND (step_0 = 1 - OR step_1 = 1) ))) - WHERE step_0 = 1 )) - GROUP BY aggregation_target, - steps, - prop - HAVING steps = max_steps) - GROUP BY prop + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.3 diff --git a/posthog/hogql_queries/actors_query_runner.py b/posthog/hogql_queries/actors_query_runner.py index 78950b7da644e9..4cda01240f19ec 100644 --- a/posthog/hogql_queries/actors_query_runner.py +++ b/posthog/hogql_queries/actors_query_runner.py @@ -3,9 +3,11 @@ from collections.abc import Sequence, Iterator from posthog.hogql import ast +from posthog.hogql.constants import HogQLGlobalSettings from posthog.hogql.parser import parse_expr, parse_order_expr from posthog.hogql.property import has_aggregation from posthog.hogql_queries.actor_strategies import ActorStrategy, PersonStrategy, GroupStrategy +from posthog.hogql_queries.insights.funnels.funnels_query_runner import FunnelsQueryRunner from posthog.hogql_queries.insights.insight_actors_query_runner import InsightActorsQueryRunner from posthog.hogql_queries.insights.paginators import HogQLHasMorePaginator from posthog.hogql_queries.query_runner import QueryRunner, get_query_runner @@ -89,12 +91,21 @@ def prepare_recordings( return column_index_events, self.strategy.get_recordings(matching_events_list) def calculate(self) -> ActorsQueryResponse: + # Funnel queries require the experimental analyzer to run correctly + # Can remove once clickhouse moves to version 24.3 or above + settings = None + if isinstance(self.source_query_runner, InsightActorsQueryRunner) and isinstance( + self.source_query_runner.source_runner, FunnelsQueryRunner + ): + settings = HogQLGlobalSettings(allow_experimental_analyzer=True) + response = self.paginator.execute_hogql_query( query_type="ActorsQuery", query=self.to_query(), team=self.team, timings=self.timings, modifiers=self.modifiers, + settings=settings, ) input_columns = self.input_columns() missing_actors_count = None diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr index fc56c51aa897db..9822999809a624 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel.ambr @@ -235,7 +235,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_events_with_person_on_events_v2 @@ -702,7 +703,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_with_property_groups.2 @@ -864,7 +866,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_with_property_groups.3 @@ -1026,7 +1029,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFOSSFunnel.test_funnel_with_static_cohort_step_filter diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr index 2b88c6c1fdd974..2044dcbed3b96d 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_persons.ambr @@ -212,7 +212,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelPersons.test_funnel_person_recordings.1 @@ -443,7 +444,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelPersons.test_funnel_person_recordings.3 @@ -674,7 +676,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelPersons.test_funnel_person_recordings.5 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr index 910e0b5d6c51c2..ce3fa166cffc8a 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_strict_persons.ambr @@ -164,7 +164,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelStrictStepsPersons.test_strict_funnel_person_recordings.1 @@ -347,7 +348,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelStrictStepsPersons.test_strict_funnel_person_recordings.3 @@ -530,7 +532,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelStrictStepsPersons.test_strict_funnel_person_recordings.5 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends_persons.ambr index 42faebadeaf629..5b7df2345a412f 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_trends_persons.ambr @@ -195,7 +195,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTrendsPersons.test_funnel_trend_persons_returns_recordings.1 @@ -409,7 +410,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTrendsPersons.test_funnel_trend_persons_with_drop_off.1 @@ -623,7 +625,8 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- # name: TestFunnelTrendsPersons.test_funnel_trend_persons_with_no_to_step.1 diff --git a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr index fc3fdd46e08fbe..b610dfb3f779d3 100644 --- a/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr +++ b/posthog/hogql_queries/insights/funnels/test/__snapshots__/test_funnel_unordered_persons.ambr @@ -352,6 +352,7 @@ max_ast_elements=2000000, max_expanded_ast_elements=2000000, max_query_size=1048576, - max_bytes_before_external_group_by=0 + max_bytes_before_external_group_by=0, + allow_experimental_analyzer=1 ''' # --- From 90cac52974415297d1f8d28bf4993283d9da76d8 Mon Sep 17 00:00:00 2001 From: Robbie Date: Tue, 2 Jul 2024 09:04:07 +0100 Subject: [PATCH 11/18] feat(web-analytics): Add option behind FF to switch to V2 web analytics (#23364) --- frontend/src/lib/constants.tsx | 1 + frontend/src/lib/utils/eventUsageLogic.ts | 4 + frontend/src/scenes/settings/SettingsMap.tsx | 7 ++ .../settings/project/SessionsTableVersion.tsx | 75 +++++++++++++++++++ frontend/src/scenes/settings/types.ts | 1 + posthog/hogql/modifiers.py | 4 +- .../hogql_queries/test/test_query_runner.py | 8 +- 7 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 frontend/src/scenes/settings/project/SessionsTableVersion.tsx diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index cd74359799316a..8d764a1ecd6cd2 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -210,6 +210,7 @@ export const FEATURE_FLAGS = { SETTINGS_BOUNCE_RATE_PAGE_VIEW_MODE: 'settings-bounce-rate-page-view-mode', // owner: @robbie-c SURVEYS_BRANCHING_LOGIC: 'surveys-branching-logic', // owner: @jurajmajerik #team-feature-success WEB_ANALYTICS_LIVE_USER_COUNT: 'web-analytics-live-user-count', // owner: @robbie-c + SETTINGS_SESSION_TABLE_VERSION: 'settings-session-table-version', // owner: @robbie-c } as const export type FeatureFlagKey = (typeof FEATURE_FLAGS)[keyof typeof FEATURE_FLAGS] diff --git a/frontend/src/lib/utils/eventUsageLogic.ts b/frontend/src/lib/utils/eventUsageLogic.ts index e798813d59c030..8150bfa869a96f 100644 --- a/frontend/src/lib/utils/eventUsageLogic.ts +++ b/frontend/src/lib/utils/eventUsageLogic.ts @@ -395,6 +395,7 @@ export const eventUsageLogic = kea([ reportPoEModeUpdated: (mode: string) => ({ mode }), reportPersonsJoinModeUpdated: (mode: string) => ({ mode }), reportBounceRatePageViewModeUpdated: (mode: string) => ({ mode }), + reportSessionTableVersionUpdated: (version: string) => ({ version }), reportPropertySelectOpened: true, reportCreatedDashboardFromModal: true, reportSavedInsightToDashboard: true, @@ -810,6 +811,9 @@ export const eventUsageLogic = kea([ reportBounceRatePageViewModeUpdated: async ({ mode }) => { posthog.capture('bounce rate page view mode updated', { mode }) }, + reportSessionTableVersionUpdated: async ({ version }) => { + posthog.capture('session table version updated', { version }) + }, reportInsightFilterRemoved: async ({ index }) => { posthog.capture('local filter removed', { index }) }, diff --git a/frontend/src/scenes/settings/SettingsMap.tsx b/frontend/src/scenes/settings/SettingsMap.tsx index ee7c6c3b363b52..41c9f83b878b87 100644 --- a/frontend/src/scenes/settings/SettingsMap.tsx +++ b/frontend/src/scenes/settings/SettingsMap.tsx @@ -1,6 +1,7 @@ import { BounceRatePageViewModeSetting } from 'scenes/settings/project/BounceRatePageViewMode' import { PersonsJoinMode } from 'scenes/settings/project/PersonsJoinMode' import { PersonsOnEvents } from 'scenes/settings/project/PersonsOnEvents' +import { SessionsTableVersion } from 'scenes/settings/project/SessionsTableVersion' import { Invites } from './organization/Invites' import { Members } from './organization/Members' @@ -167,6 +168,12 @@ export const SettingsMap: SettingSection[] = [ component: , flag: 'SETTINGS_BOUNCE_RATE_PAGE_VIEW_MODE', }, + { + id: 'session-table-version', + title: 'Sessions Table Version', + component: , + flag: 'SETTINGS_SESSION_TABLE_VERSION', + }, ], }, diff --git a/frontend/src/scenes/settings/project/SessionsTableVersion.tsx b/frontend/src/scenes/settings/project/SessionsTableVersion.tsx new file mode 100644 index 00000000000000..368e9d1ef71ea5 --- /dev/null +++ b/frontend/src/scenes/settings/project/SessionsTableVersion.tsx @@ -0,0 +1,75 @@ +import { useActions, useValues } from 'kea' +import { LemonButton } from 'lib/lemon-ui/LemonButton' +import { LemonRadio, LemonRadioOption } from 'lib/lemon-ui/LemonRadio' +import { eventUsageLogic } from 'lib/utils/eventUsageLogic' +import { useState } from 'react' +import { teamLogic } from 'scenes/teamLogic' + +import { HogQLQueryModifiers } from '~/queries/schema' + +type SessionTableVersion = NonNullable + +const bounceRatePageViewModeOptions: LemonRadioOption[] = [ + { + value: 'auto', + label: ( + <> +
    Auto
    + + ), + }, + { + value: 'v1', + label: ( + <> +
    Version 1
    + + ), + }, + { + value: 'v2', + label: ( + <> +
    Version 2
    + + ), + }, +] + +export function SessionsTableVersion(): JSX.Element { + const { updateCurrentTeam } = useActions(teamLogic) + const { currentTeam } = useValues(teamLogic) + const { reportSessionTableVersionUpdated } = useActions(eventUsageLogic) + + const savedSessionTableVersion = + currentTeam?.modifiers?.sessionTableVersion ?? currentTeam?.default_modifiers?.sessionTableVersion ?? 'auto' + const [sessionTableVersion, setSessionTableVersion] = useState(savedSessionTableVersion) + + const handleChange = (version: SessionTableVersion): void => { + updateCurrentTeam({ modifiers: { ...currentTeam?.modifiers, sessionTableVersion: version } }) + reportSessionTableVersionUpdated(version) + } + + return ( + <> +

    + Choose which version of the session table to use. V2 is faster, but requires uuidv7 session ids. Use + auto unless you know what you're doing. +

    + +
    + handleChange(sessionTableVersion)} + disabledReason={sessionTableVersion === savedSessionTableVersion ? 'No changes to save' : undefined} + > + Save + +
    + + ) +} diff --git a/frontend/src/scenes/settings/types.ts b/frontend/src/scenes/settings/types.ts index d63d797ef536a0..35b01185e19862 100644 --- a/frontend/src/scenes/settings/types.ts +++ b/frontend/src/scenes/settings/types.ts @@ -82,6 +82,7 @@ export type SettingId = | 'hedgehog-mode' | 'persons-join-mode' | 'bounce-rate-page-view-mode' + | 'session-table-version' type FeatureFlagKey = keyof typeof FEATURE_FLAGS diff --git a/posthog/hogql/modifiers.py b/posthog/hogql/modifiers.py index 8deb1fffdae122..0fa3e390e1796e 100644 --- a/posthog/hogql/modifiers.py +++ b/posthog/hogql/modifiers.py @@ -52,8 +52,8 @@ def set_default_modifier_values(modifiers: HogQLQueryModifiers, team: "Team"): if modifiers.bounceRatePageViewMode is None: modifiers.bounceRatePageViewMode = BounceRatePageViewMode.COUNT_PAGEVIEWS - if modifiers.sessionTableVersion is None or modifiers.sessionTableVersion == SessionTableVersion.AUTO: - modifiers.sessionTableVersion = SessionTableVersion.V1 + if modifiers.sessionTableVersion is None: + modifiers.sessionTableVersion = SessionTableVersion.AUTO def set_default_in_cohort_via(modifiers: HogQLQueryModifiers) -> HogQLQueryModifiers: diff --git a/posthog/hogql_queries/test/test_query_runner.py b/posthog/hogql_queries/test/test_query_runner.py index 4db5cc85d39c04..c4fc6ecc34a0c7 100644 --- a/posthog/hogql_queries/test/test_query_runner.py +++ b/posthog/hogql_queries/test/test_query_runner.py @@ -90,7 +90,7 @@ def test_cache_payload(self): "optimizeJoinedFilters": False, "personsOnEventsMode": "disabled", "bounceRatePageViewMode": "count_pageviews", - "sessionTableVersion": "v1", + "sessionTableVersion": "auto", }, "limit_context": "query", "query": {"kind": "TestQuery", "some_attr": "bla"}, @@ -109,7 +109,7 @@ def test_cache_key(self): runner = TestQueryRunner(query={"some_attr": "bla"}, team=team) cache_key = runner.get_cache_key() - self.assertEqual(cache_key, "cache_19dbcf2dbe2bd72239f37007f2eb6224") + self.assertEqual(cache_key, "cache_c4e20e19f3cad552478257f71f80b52f") def test_cache_key_runner_subclass(self): TestQueryRunner = self.setup_test_query_runner_class() @@ -123,7 +123,7 @@ class TestSubclassQueryRunner(TestQueryRunner): runner = TestSubclassQueryRunner(query={"some_attr": "bla"}, team=team) cache_key = runner.get_cache_key() - self.assertEqual(cache_key, "cache_325bbd17cd27dd556d765984ba993da0") + self.assertEqual(cache_key, "cache_db0fcd4797812983cbf9df57cd9f3032") def test_cache_key_different_timezone(self): TestQueryRunner = self.setup_test_query_runner_class() @@ -134,7 +134,7 @@ def test_cache_key_different_timezone(self): runner = TestQueryRunner(query={"some_attr": "bla"}, team=team) cache_key = runner.get_cache_key() - self.assertEqual(cache_key, "cache_c1d666350117520920dbc3cc9286195c") + self.assertEqual(cache_key, "cache_8c92e69a656cc68522e5b48a7304b97d") @mock.patch("django.db.transaction.on_commit") def test_cache_response(self, mock_on_commit): From b16c3d81ac02ca234f0a04f410a6a375b1a9630f Mon Sep 17 00:00:00 2001 From: Xavier Vello Date: Tue, 2 Jul 2024 10:46:06 +0200 Subject: [PATCH 12/18] chore(capture-rs): add capture_billing_limits_loaded_tokens metric (#23193) --- rust/capture/src/limiters/billing.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/rust/capture/src/limiters/billing.rs b/rust/capture/src/limiters/billing.rs index b908519dda265e..259fbcf0d69ae1 100644 --- a/rust/capture/src/limiters/billing.rs +++ b/rust/capture/src/limiters/billing.rs @@ -1,3 +1,4 @@ +use metrics::gauge; use std::{collections::HashSet, ops::Sub, sync::Arc}; use crate::redis::Client; @@ -86,9 +87,9 @@ impl BillingLimiter { #[instrument(skip_all)] async fn fetch_limited( client: &Arc, - resource: QuotaResource, + resource: &QuotaResource, ) -> anyhow::Result> { - let now = time::OffsetDateTime::now_utc().unix_timestamp(); + let now = OffsetDateTime::now_utc().unix_timestamp(); client .zrangebyscore( @@ -130,12 +131,17 @@ impl BillingLimiter { // On prod atm we call this around 15 times per second at peak times, and it usually // completes in <1ms. - let set = Self::fetch_limited(&self.redis, resource).await; + let set = Self::fetch_limited(&self.redis, &resource).await; tracing::debug!("fetched set from redis, caching"); if let Ok(set) = set { let set = HashSet::from_iter(set.iter().cloned()); + gauge!( + "capture_billing_limits_loaded_tokens", + "resource" => resource.as_str(), + ) + .set(set.len() as f64); let mut limited = self.limited.write().await; *limited = set; From dd4be4fc3f97a85660db3e068c4ef002ddd5976b Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Tue, 2 Jul 2024 09:46:15 +0100 Subject: [PATCH 13/18] feat: remove non-hogql replay filtering (#23345) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../test_clickhouse_experiments.ambr | 578 ++- ...sion_recording_list_from_session_replay.py | 347 -- frontend/src/lib/constants.tsx | 1 - .../AdvancedSessionRecordingsFilters.tsx | 28 +- .../sessionRecordingsPlaylistLogic.ts | 5 - mypy-baseline.txt | 4 - package.json | 3 +- posthog/models/action/util.py | 33 +- .../session_recording_list_from_filters.py | 66 +- ...sion_recording_list_from_replay_summary.py | 785 ----- ...sion_recording_list_from_session_replay.py | 3115 ----------------- .../session_recording_api.py | 44 +- .../test_session_recordings.ambr | 2892 ++++++++++++--- .../test/test_session_recordings.py | 2 +- 14 files changed, 2929 insertions(+), 4974 deletions(-) delete mode 100644 ee/session_recordings/queries/test/test_session_recording_list_from_session_replay.py delete mode 100644 posthog/session_recordings/queries/session_recording_list_from_replay_summary.py delete mode 100644 posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index b1eb79a39945ce..c7dcdba03487c0 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -727,59 +727,155 @@ # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$pageview' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (((isNull(replaceRegexpAll(JSONExtractRaw(e.properties, 'exclude'), '^"|"$', '')) + OR NOT JSONHas(e.properties, 'exclude'))) + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', '')))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['test', 'control'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['test', 'control']), (['test', 'control']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview' + AND (((isNull(replaceRegexpAll(JSONExtractRaw(e.properties, 'exclude'), '^"|"$', '')) + OR NOT JSONHas(e.properties, 'exclude'))) + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', '')))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value ''' # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.3 - ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ''' -# --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.4 ''' /* user_id:0 request:_snapshot_ */ - SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, count(*) as count FROM events e WHERE team_id = 2 - AND event = '$pageview' + AND event = '$feature_flag_called' AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') AND (((isNull(replaceRegexpAll(JSONExtractRaw(e.properties, 'exclude'), '^"|"$', '')) OR NOT JSONHas(e.properties, 'exclude'))) - AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', '')))) + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', ''))))) GROUP BY value ORDER BY count DESC, value DESC LIMIT 26 OFFSET 0 ''' # --- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.4 + ''' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(DISTINCT person_id) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + breakdown_value + FROM + (SELECT person_id, + min(timestamp) as timestamp, + breakdown_value + FROM + (SELECT pdi.person_id as person_id, timestamp, transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['control', 'test']), (['control', 'test']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) as pdi ON events.distinct_id = pdi.distinct_id + WHERE e.team_id = 2 + AND event = '$feature_flag_called' + AND (((isNull(replaceRegexpAll(JSONExtractRaw(e.properties, 'exclude'), '^"|"$', '')) + OR NOT JSONHas(e.properties, 'exclude'))) + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', ''))))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) + GROUP BY person_id, + breakdown_value) AS pdi + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value + ''' +# --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.5 ''' /* user_id:0 request:_snapshot_ */ @@ -925,42 +1021,6 @@ ''' # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 - ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ''' -# --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 - ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ''' -# --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 - ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ''' -# --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.4 ''' /* user_id:0 request:_snapshot_ */ SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, @@ -977,7 +1037,7 @@ OFFSET 0 ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.5 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 ''' /* user_id:0 request:_snapshot_ */ SELECT groupArray(day_start) as date, @@ -1023,7 +1083,7 @@ ORDER BY breakdown_value ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.6 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 ''' /* user_id:0 request:_snapshot_ */ SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, @@ -1041,7 +1101,7 @@ OFFSET 0 ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.7 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.4 ''' /* user_id:0 request:_snapshot_ */ SELECT [now()] AS date, @@ -1050,45 +1110,82 @@ LIMIT 0 ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.5 ''' - /* user_id:0 celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test_1', 'test_2'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['control', 'test_1', 'test_2']), (['control', 'test_1', 'test_2']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview1' + AND (has(['control', 'test_1', 'test_2', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.1 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.6 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$feature_flag_called' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND ((has(['control', 'test_1', 'test_2', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', '')))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.2 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.7 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT [now()] AS date, + [0] AS total, + '' AS breakdown_value + LIMIT 0 ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.3 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + /* user_id:0 celery:posthog.tasks.tasks.sync_insight_caching_state */ SELECT team_id, date_diff('second', max(timestamp), now()) AS age FROM events @@ -1098,7 +1195,7 @@ ORDER BY age; ''' # --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.4 +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.1 ''' /* user_id:0 request:_snapshot_ */ SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, @@ -1115,6 +1212,132 @@ OFFSET 0 ''' # --- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.2 + ''' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 07:00:00', 'US/Pacific')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 02:10:00', 'US/Pacific')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['test', 'control'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'US/Pacific')) as day_start, + transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['test', 'control']), (['test', 'control']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview' + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + AND toTimeZone(timestamp, 'US/Pacific') >= toDateTime('2020-01-01 02:10:00', 'US/Pacific') + AND toTimeZone(timestamp, 'US/Pacific') <= toDateTime('2020-01-06 07:00:00', 'US/Pacific') + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value + ''' +# --- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.3 + ''' + /* user_id:0 request:_snapshot_ */ + SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$feature_flag_called' + AND toTimeZone(timestamp, 'US/Pacific') >= toDateTime('2020-01-01 02:10:00', 'US/Pacific') + AND toTimeZone(timestamp, 'US/Pacific') <= toDateTime('2020-01-06 07:00:00', 'US/Pacific') + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', '')))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 + ''' +# --- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.4 + ''' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 07:00:00', 'US/Pacific')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 02:10:00', 'US/Pacific')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(DISTINCT person_id) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'US/Pacific')) as day_start, + breakdown_value + FROM + (SELECT person_id, + min(timestamp) as timestamp, + breakdown_value + FROM + (SELECT pdi.person_id as person_id, timestamp, transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['control', 'test']), (['control', 'test']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) as pdi ON events.distinct_id = pdi.distinct_id + WHERE e.team_id = 2 + AND event = '$feature_flag_called' + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', '')))) + AND toTimeZone(timestamp, 'US/Pacific') >= toDateTime('2020-01-01 02:10:00', 'US/Pacific') + AND toTimeZone(timestamp, 'US/Pacific') <= toDateTime('2020-01-06 07:00:00', 'US/Pacific') ) + GROUP BY person_id, + breakdown_value) AS pdi + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value + ''' +# --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone.5 ''' /* user_id:0 request:_snapshot_ */ @@ -1255,58 +1478,149 @@ # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$pageview' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), 0))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['test', 'control'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['test', 'control']), (['test', 'control']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview' + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), 0))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value ''' # --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter.3 - ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ''' -# --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter.4 ''' /* user_id:0 request:_snapshot_ */ - SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, count(*) as count FROM events e WHERE team_id = 2 - AND event = '$pageview' + AND event = '$feature_flag_called' AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') - AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) - AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), 0))) + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', '')))) GROUP BY value ORDER BY count DESC, value DESC LIMIT 26 OFFSET 0 ''' # --- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter.4 + ''' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(DISTINCT person_id) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + breakdown_value + FROM + (SELECT person_id, + min(timestamp) as timestamp, + breakdown_value + FROM + (SELECT pdi.person_id as person_id, timestamp, transform(ifNull(nullIf(replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', ''), ''), '$$_posthog_breakdown_null_$$'), (['control', 'test']), (['control', 'test']), '$$_posthog_breakdown_other_$$') as breakdown_value + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) as pdi ON events.distinct_id = pdi.distinct_id + WHERE e.team_id = 2 + AND event = '$feature_flag_called' + AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', ''))) + AND (has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', '')))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) + GROUP BY person_id, + breakdown_value) AS pdi + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value + ''' +# --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter.5 ''' /* user_id:0 request:_snapshot_ */ diff --git a/ee/session_recordings/queries/test/test_session_recording_list_from_session_replay.py b/ee/session_recordings/queries/test/test_session_recording_list_from_session_replay.py deleted file mode 100644 index b743302f896bfd..00000000000000 --- a/ee/session_recordings/queries/test/test_session_recording_list_from_session_replay.py +++ /dev/null @@ -1,347 +0,0 @@ -from itertools import product -from unittest import mock -from uuid import uuid4 - -from dateutil.relativedelta import relativedelta -from django.utils.timezone import now -from freezegun import freeze_time -from parameterized import parameterized - -from ee.clickhouse.materialized_columns.columns import materialize -from posthog.clickhouse.client import sync_execute -from posthog.models import Person -from posthog.models.filters import SessionRecordingsFilter -from posthog.schema import PersonsOnEventsMode -from posthog.session_recordings.queries.session_recording_list_from_replay_summary import ( - SessionRecordingListFromReplaySummary, -) -from posthog.session_recordings.queries.test.session_replay_sql import produce_replay_summary -from posthog.session_recordings.sql.session_replay_event_sql import TRUNCATE_SESSION_REPLAY_EVENTS_TABLE_SQL -from posthog.test.base import ( - APIBaseTest, - ClickhouseTestMixin, - QueryMatchingTest, - snapshot_clickhouse_queries, - _create_event, -) - - -@freeze_time("2021-01-01T13:46:23") -class TestClickhouseSessionRecordingsListFromSessionReplay(ClickhouseTestMixin, APIBaseTest, QueryMatchingTest): - def tearDown(self) -> None: - sync_execute(TRUNCATE_SESSION_REPLAY_EVENTS_TABLE_SQL()) - - @property - def base_time(self): - return (now() - relativedelta(hours=1)).replace(microsecond=0, second=0) - - def create_event( - self, - distinct_id, - timestamp, - team=None, - event_name="$pageview", - properties=None, - ): - if team is None: - team = self.team - if properties is None: - properties = {"$os": "Windows 95", "$current_url": "aloha.com/2"} - return _create_event( - team=team, - event=event_name, - timestamp=timestamp, - distinct_id=distinct_id, - properties=properties, - ) - - @parameterized.expand( - [ - [ - "test_poe_v1_still_falls_back_to_person_subquery", - True, - False, - False, - PersonsOnEventsMode.PERSON_ID_NO_OVERRIDE_PROPERTIES_ON_EVENTS, - { - "kperson_filter_pre__0": "rgInternal", - "kpersonquery_person_filter_fin__0": "rgInternal", - "person_uuid": None, - "vperson_filter_pre__0": ["false"], - "vpersonquery_person_filter_fin__0": ["false"], - }, - True, - False, - ], - [ - "test_poe_being_unavailable_we_fall_back_to_person_subquery", - False, - False, - False, - PersonsOnEventsMode.DISABLED, - { - "kperson_filter_pre__0": "rgInternal", - "kpersonquery_person_filter_fin__0": "rgInternal", - "person_uuid": None, - "vperson_filter_pre__0": ["false"], - "vpersonquery_person_filter_fin__0": ["false"], - }, - True, - False, - ], - [ - "test_allow_denormalised_props_fix_does_not_stop_all_poe_processing", - False, - True, - False, - PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS, - { - "event_names": [], - "event_start_time": mock.ANY, - "event_end_time": mock.ANY, - "kglobal_0": "rgInternal", - "vglobal_0": ["false"], - }, - False, - True, - ], - [ - "test_poe_v2_available_person_properties_are_used_in_replay_listing", - False, - True, - True, - PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS, - { - "event_end_time": mock.ANY, - "event_names": [], - "event_start_time": mock.ANY, - "kglobal_0": "rgInternal", - "vglobal_0": ["false"], - }, - False, - True, - ], - ] - ) - def test_effect_of_poe_settings_on_query_generated( - self, - _name: str, - poe_v1: bool, - poe_v2: bool, - allow_denormalized_props: bool, - expected_poe_mode: PersonsOnEventsMode, - expected_query_params: dict, - unmaterialized_person_column_used: bool, - materialized_event_column_used: bool, - ) -> None: - with self.settings( - PERSON_ON_EVENTS_OVERRIDE=poe_v1, - PERSON_ON_EVENTS_V2_OVERRIDE=poe_v2, - ALLOW_DENORMALIZED_PROPS_IN_LISTING=allow_denormalized_props, - ): - assert self.team.person_on_events_mode == expected_poe_mode - materialize("events", "rgInternal", table_column="person_properties") - - filter = SessionRecordingsFilter( - team=self.team, - data={ - "properties": [ - { - "key": "rgInternal", - "value": ["false"], - "operator": "exact", - "type": "person", - } - ] - }, - ) - session_recording_list_instance = SessionRecordingListFromReplaySummary(filter=filter, team=self.team) - [generated_query, query_params] = session_recording_list_instance.get_query() - assert query_params == { - "clamped_to_storage_ttl": mock.ANY, - "end_time": mock.ANY, - "limit": 51, - "offset": 0, - "start_time": mock.ANY, - "team_id": self.team.id, - **expected_query_params, - } - - json_extract_fragment = ( - "has(%(vperson_filter_pre__0)s, replaceRegexpAll(JSONExtractRaw(properties, %(kperson_filter_pre__0)s)" - ) - materialized_column_fragment = 'AND ( has(%(vglobal_0)s, "mat_pp_rgInternal"))' - - # it will always have one of these fragments - assert (json_extract_fragment in generated_query) or (materialized_column_fragment in generated_query) - - # the unmaterialized person column - assert (json_extract_fragment in generated_query) is unmaterialized_person_column_used - # materialized event column - assert (materialized_column_fragment in generated_query) is materialized_event_column_used - self.assertQueryMatchesSnapshot(generated_query) - - settings_combinations = [ - ["poe v2 and materialized columns allowed", False, True, True], - ["poe v2 and materialized columns off", False, True, False], - ["poe off and materialized columns allowed", False, False, True], - ["poe off and materialized columns not allowed", False, False, False], - ["poe v1 and materialized columns allowed", True, False, True], - ["poe v1 and not materialized columns not allowed", True, False, False], - ] - - # Options for "materialize person columns" - materialization_options = [ - [" with materialization", True], - [" without materialization", False], - ] - - # Expand the parameter list to the product of all combinations with "materialize person columns" - # e.g. [a, b] x [c, d] = [a, c], [a, d], [b, c], [b, d] - test_case_combinations = [ - [f"{name}{mat_option}", poe_v1, poe, mat_columns, mat_person] - for (name, poe_v1, poe, mat_columns), (mat_option, mat_person) in product( - settings_combinations, materialization_options - ) - ] - - @parameterized.expand(test_case_combinations) - @snapshot_clickhouse_queries - def test_event_filter_with_person_properties_materialized( - self, - _name: str, - poe1_enabled: bool, - poe2_enabled: bool, - allow_denormalised_props: bool, - materialize_person_props: bool, - ) -> None: - # KLUDGE: I couldn't figure out how to use @also_test_with_materialized_columns(person_properties=["email"]) - # KLUDGE: and the parameterized.expand decorator at the same time, so we generate test case combos - # KLUDGE: for materialization on and off to test both sides the way the decorator would have - if materialize_person_props: - materialize("events", "email", table_column="person_properties") - materialize("person", "email") - - with self.settings( - PERSON_ON_EVENTS_OVERRIDE=poe1_enabled, - PERSON_ON_EVENTS_V2_OVERRIDE=poe2_enabled, - ALLOW_DENORMALIZED_PROPS_IN_LISTING=allow_denormalised_props, - ): - user_one = "test_event_filter_with_person_properties-user" - user_two = "test_event_filter_with_person_properties-user2" - session_id_one = f"test_event_filter_with_person_properties-1-{str(uuid4())}" - session_id_two = f"test_event_filter_with_person_properties-2-{str(uuid4())}" - - Person.objects.create(team=self.team, distinct_ids=[user_one], properties={"email": "bla"}) - Person.objects.create(team=self.team, distinct_ids=[user_two], properties={"email": "bla2"}) - - self._add_replay_with_pageview(session_id_one, user_one) - produce_replay_summary( - distinct_id=user_one, - session_id=session_id_one, - first_timestamp=(self.base_time + relativedelta(seconds=30)), - team_id=self.team.id, - ) - self._add_replay_with_pageview(session_id_two, user_two) - produce_replay_summary( - distinct_id=user_two, - session_id=session_id_two, - first_timestamp=(self.base_time + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - match_everyone_filter = SessionRecordingsFilter( - team=self.team, - data={"properties": []}, - ) - - session_recording_list_instance = SessionRecordingListFromReplaySummary( - filter=match_everyone_filter, team=self.team - ) - (session_recordings, _) = session_recording_list_instance.run() - - assert sorted([x["session_id"] for x in session_recordings]) == sorted([session_id_one, session_id_two]) - - match_bla_filter = SessionRecordingsFilter( - team=self.team, - data={ - "properties": [ - { - "key": "email", - "value": ["bla"], - "operator": "exact", - "type": "person", - } - ] - }, - ) - - session_recording_list_instance = SessionRecordingListFromReplaySummary( - filter=match_bla_filter, team=self.team - ) - (session_recordings, _) = session_recording_list_instance.run() - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_one - - def _add_replay_with_pageview(self, session_id: str, user_one): - self.create_event( - user_one, - self.base_time, - properties={"$session_id": session_id, "$window_id": str(uuid4())}, - ) - produce_replay_summary( - distinct_id=user_one, - session_id=session_id, - first_timestamp=self.base_time, - team_id=self.team.id, - ) - - @parameterized.expand(test_case_combinations) - @snapshot_clickhouse_queries - def test_person_id_filter( - self, - _name: str, - poe2_enabled: bool, - poe1_enabled: bool, - allow_denormalised_props: bool, - materialize_person_props: bool, - ) -> None: - # KLUDGE: I couldn't figure out how to use @also_test_with_materialized_columns(person_properties=["email"]) - # KLUDGE: and the parameterized.expand decorator at the same time, so we generate test case combos - # KLUDGE: for materialization on and off to test both sides the way the decorator would have - if materialize_person_props: - # it shouldn't matter to this test whether any column is materialized - # but let's keep the tests in this file similar so we flush out any unexpected interactions - materialize("events", "email", table_column="person_properties") - materialize("person", "email") - - with self.settings( - PERSON_ON_EVENTS_OVERRIDE=poe1_enabled, - PERSON_ON_EVENTS_V2_OVERRIDE=poe2_enabled, - ALLOW_DENORMALIZED_PROPS_IN_LISTING=allow_denormalised_props, - ): - three_user_ids = ["person-1-distinct-1", "person-1-distinct-2", "person-2"] - session_id_one = f"test_person_id_filter-session-one" - session_id_two = f"test_person_id_filter-session-two" - session_id_three = f"test_person_id_filter-session-three" - - p = Person.objects.create( - team=self.team, - distinct_ids=[three_user_ids[0], three_user_ids[1]], - properties={"email": "bla"}, - ) - Person.objects.create( - team=self.team, - distinct_ids=[three_user_ids[2]], - properties={"email": "bla2"}, - ) - - self._add_replay_with_pageview(session_id_one, three_user_ids[0]) - self._add_replay_with_pageview(session_id_two, three_user_ids[1]) - self._add_replay_with_pageview(session_id_three, three_user_ids[2]) - - filter = SessionRecordingsFilter(team=self.team, data={"person_uuid": str(p.uuid)}) - session_recording_list_instance = SessionRecordingListFromReplaySummary(filter=filter, team=self.team) - (session_recordings, _) = session_recording_list_instance.run() - assert sorted([r["session_id"] for r in session_recordings]) == sorted([session_id_two, session_id_one]) diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index 8d764a1ecd6cd2..ce310a14fbe9c6 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -194,7 +194,6 @@ export const FEATURE_FLAGS = { HEATMAPS_UI: 'heatmaps-ui', // owner: @benjackwhite THEME: 'theme', // owner: @aprilfools PLUGINS_FILTERING: 'plugins-filtering', // owner: @benjackwhite - SESSION_REPLAY_HOG_QL_FILTERING: 'session-replay-hogql-filtering', // owner: #team-replay INSIGHT_LOADING_BAR: 'insight-loading-bar', // owner: @aspicer PROXY_AS_A_SERVICE: 'proxy-as-a-service', // owner: #team-infrastructure LIVE_EVENTS: 'live-events', // owner: @zach or @jams diff --git a/frontend/src/scenes/session-recordings/filters/AdvancedSessionRecordingsFilters.tsx b/frontend/src/scenes/session-recordings/filters/AdvancedSessionRecordingsFilters.tsx index f34cd0cef2cb96..0a7917cfc4eae5 100644 --- a/frontend/src/scenes/session-recordings/filters/AdvancedSessionRecordingsFilters.tsx +++ b/frontend/src/scenes/session-recordings/filters/AdvancedSessionRecordingsFilters.tsx @@ -4,9 +4,7 @@ import { DateFilter } from 'lib/components/DateFilter/DateFilter' import { PropertyFilters } from 'lib/components/PropertyFilters/PropertyFilters' import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' import { TestAccountFilterSwitch } from 'lib/components/TestAccountFiltersSwitch' -import { FEATURE_FLAGS } from 'lib/constants' import { LemonLabel } from 'lib/lemon-ui/LemonLabel/LemonLabel' -import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { ActionFilter } from 'scenes/insights/filters/ActionFilter/ActionFilter' import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow' import { defaultRecordingDurationFilter } from 'scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic' @@ -74,8 +72,6 @@ export const AdvancedSessionRecordingsFilters = ({ }): JSX.Element => { const { groupsTaxonomicTypes } = useValues(groupsModel) - const { featureFlags } = useValues(featureFlagLogic) - const allowedPropertyTaxonomyTypes = [ TaxonomicFilterGroupType.EventProperties, TaxonomicFilterGroupType.EventFeatureFlags, @@ -84,16 +80,10 @@ export const AdvancedSessionRecordingsFilters = ({ ...groupsTaxonomicTypes, ] - const hasHogQLFiltering = featureFlags[FEATURE_FLAGS.SESSION_REPLAY_HOG_QL_FILTERING] - - if (hasHogQLFiltering) { - allowedPropertyTaxonomyTypes.push(TaxonomicFilterGroupType.SessionProperties) - } + allowedPropertyTaxonomyTypes.push(TaxonomicFilterGroupType.SessionProperties) const addFilterTaxonomyTypes = [TaxonomicFilterGroupType.PersonProperties, TaxonomicFilterGroupType.Cohorts] - if (hasHogQLFiltering) { - addFilterTaxonomyTypes.push(TaxonomicFilterGroupType.SessionProperties) - } + addFilterTaxonomyTypes.push(TaxonomicFilterGroupType.SessionProperties) return (
    @@ -125,15 +115,9 @@ export const AdvancedSessionRecordingsFilters = ({ buttonProps={{ type: 'secondary', size: 'small' }} /> - {hasHogQLFiltering ? ( - - Properties - - ) : ( - - Persons and cohorts - - )} + + Properties + { diff --git a/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts b/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts index 0b66d4bb34062d..0136947f1b41d0 100644 --- a/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts +++ b/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts @@ -287,7 +287,6 @@ export const sessionRecordingsPlaylistLogic = kea [s.featureFlags], - (featureFlags) => !!featureFlags[FEATURE_FLAGS.SESSION_REPLAY_HOG_QL_FILTERING], - ], useUniversalFiltering: [ (s) => [s.featureFlags], (featureFlags) => !!featureFlags[FEATURE_FLAGS.SESSION_REPLAY_UNIVERSAL_FILTERS], diff --git a/mypy-baseline.txt b/mypy-baseline.txt index f39c4d09a66e95..ceacd890ecdf1f 100644 --- a/mypy-baseline.txt +++ b/mypy-baseline.txt @@ -378,10 +378,6 @@ posthog/tasks/exports/test/test_export_utils.py:0: error: Function is missing a posthog/tasks/exports/test/test_csv_exporter_url_sanitising.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] posthog/tasks/exports/test/test_csv_exporter_url_sanitising.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] posthog/tasks/exports/test/test_csv_exporter_renders.py:0: error: Function is missing a type annotation [no-untyped-def] -posthog/session_recordings/queries/session_recording_list_from_replay_summary.py:0: error: Missing return statement [empty-body] -posthog/session_recordings/queries/session_recording_list_from_replay_summary.py:0: note: If the method is meant to be abstract, use @abc.abstractmethod -posthog/session_recordings/queries/session_recording_list_from_replay_summary.py:0: error: Missing return statement [empty-body] -posthog/session_recordings/queries/session_recording_list_from_replay_summary.py:0: note: If the method is meant to be abstract, use @abc.abstractmethod posthog/hogql_queries/test/test_query_runner.py:0: error: Variable "TestQueryRunner" is not valid as a type [valid-type] posthog/hogql_queries/test/test_query_runner.py:0: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases posthog/hogql_queries/test/test_query_runner.py:0: error: Invalid base class "TestQueryRunner" [misc] diff --git a/package.json b/package.json index d349c7fede5f62..20c91b7885743f 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,8 @@ "mobile-replay:web:schema:build:json": "ts-json-schema-generator -f tsconfig.json --path 'node_modules/@rrweb/types/dist/index.d.ts' --type 'eventWithTime' --expose all --no-top-ref --out ee/frontend/mobile-replay/schema/web/rr-web-schema.json && prettier --write ee/frontend/mobile-replay/schema/web/rr-web-schema.json", "mobile-replay:mobile:schema:build:json": "ts-json-schema-generator -f tsconfig.json --path 'ee/frontend/mobile-replay/mobile.types.ts' --type 'mobileEventWithTime' --expose all --no-top-ref --out ee/frontend/mobile-replay/schema/mobile/rr-mobile-schema.json && prettier --write ee/frontend/mobile-replay/schema/mobile/rr-mobile-schema.json", "mobile-replay:schema:build:json": "pnpm mobile-replay:web:schema:build:json && pnpm mobile-replay:mobile:schema:build:json", - "visualize-toolbar-bundle": "pnpm exec esbuild-visualizer --metadata ./toolbar-esbuild-meta.json --filename=toolbar-esbuild-bundle-visualization.html" + "visualize-toolbar-bundle": "pnpm exec esbuild-visualizer --metadata ./toolbar-esbuild-meta.json --filename=toolbar-esbuild-bundle-visualization.html", + "mypy-baseline-sync": "mypy -p posthog | mypy-baseline sync" }, "dependencies": { "@ant-design/icons": "^4.7.0", diff --git a/posthog/models/action/util.py b/posthog/models/action/util.py index 1e09758c438031..8fb0339075ed81 100644 --- a/posthog/models/action/util.py +++ b/posthog/models/action/util.py @@ -2,9 +2,9 @@ from typing import Literal, Optional from collections import Counter as TCounter -from posthog.constants import AUTOCAPTURE_EVENT, TREND_FILTER_TYPE_ACTIONS +from posthog.constants import AUTOCAPTURE_EVENT from posthog.hogql.hogql import HogQLContext -from posthog.models import Entity, Filter +from posthog.models import Filter from posthog.models.action import Action from posthog.models.action.action import ActionStepJSON from posthog.models.property import Property, PropertyIdentifier @@ -149,35 +149,6 @@ def filter_event( return conditions, params -def format_entity_filter( - team_id: int, - entity: Entity, - hogql_context: HogQLContext, - person_id_joined_alias: str, - prepend: str = "action", - filter_by_team=True, -) -> tuple[str, dict]: - if entity.type == TREND_FILTER_TYPE_ACTIONS: - action = entity.get_action() - entity_filter, params = format_action_filter( - team_id=team_id, - action=action, - prepend=prepend, - filter_by_team=filter_by_team, - person_id_joined_alias=person_id_joined_alias, - hogql_context=hogql_context, - ) - elif entity.id is None: - entity_filter = "1 = 1" - params = {} - else: - key = f"{prepend}_event" - entity_filter = f"event = %({key})s" - params = {key: entity.id} - - return entity_filter, params - - def get_action_tables_and_properties(action: Action) -> TCounter[PropertyIdentifier]: from posthog.models.property.util import extract_tables_and_properties diff --git a/posthog/session_recordings/queries/session_recording_list_from_filters.py b/posthog/session_recordings/queries/session_recording_list_from_filters.py index 97ab77c7550367..24d16e0f2b4156 100644 --- a/posthog/session_recordings/queries/session_recording_list_from_filters.py +++ b/posthog/session_recordings/queries/session_recording_list_from_filters.py @@ -6,6 +6,7 @@ from posthog.hogql.ast import Constant, CompareOperation from posthog.hogql.parser import parse_select from posthog.hogql.property import entity_to_expr, property_to_expr +from posthog.hogql.query import execute_hogql_query from posthog.hogql_queries.insights.paginators import HogQLHasMorePaginator from posthog.models import Team, Property from posthog.models.filters.session_recordings_filter import SessionRecordingsFilter @@ -152,7 +153,8 @@ def _where_predicates(self) -> Union[ast.And, ast.Or]: if person_id_compare_operation: exprs.append(person_id_compare_operation) - if self._filter.session_ids: + # we check for session_ids type not for truthiness since we want to allow empty lists + if isinstance(self._filter.session_ids, list): exprs.append( ast.CompareOperation( op=ast.CompareOperationOp.In, @@ -181,7 +183,7 @@ def _where_predicates(self) -> Union[ast.And, ast.Or]: optional_exprs: list[ast.Expr] = [] # if in PoE mode then we should be pushing person property queries into here - events_sub_query = EventsSubQuery(self._team, self._filter, self.ttl_days).get_query() + events_sub_query = ReplayFiltersEventsSubQuery(self._team, self._filter).get_query_for_session_id_matching() if events_sub_query: optional_exprs.append( ast.CompareOperation( @@ -193,7 +195,7 @@ def _where_predicates(self) -> Union[ast.And, ast.Or]: # we want to avoid a join to persons since we don't ever need to select from them, # so we create our own persons sub query here - # if PoE mode is on then this will be handled in the events subquery and we don't need to do anything here + # if PoE mode is on then this will be handled in the events subquery, and we don't need to do anything here person_subquery = PersonsPropertiesSubQuery(self._team, self._filter, self.ttl_days).get_query() if person_subquery: optional_exprs.append( @@ -426,15 +428,23 @@ def get_query(self) -> ast.SelectQuery | ast.SelectUnionQuery | None: ) -class EventsSubQuery: +class ReplayFiltersEventsSubQuery: _team: Team _filter: SessionRecordingsFilter - _ttl_days: int - def __init__(self, team: Team, filter: SessionRecordingsFilter, ttl_days: int): + @property + def ttl_days(self): + return ttl_days(self._team) + + def __init__( + self, + team: Team, + filter: SessionRecordingsFilter, + hogql_query_modifiers: Optional[HogQLQueryModifiers] = None, + ): self._team = team self._filter = filter - self._ttl_days = ttl_days + self._hogql_query_modifiers = hogql_query_modifiers @cached_property def _event_predicates(self): @@ -459,19 +469,43 @@ def _event_predicates(self): return event_exprs, list(event_names) - def get_query(self) -> ast.SelectQuery | ast.SelectUnionQuery | None: + def _select_from_events(self, select_expr: ast.Expr) -> ast.SelectQuery: + return ast.SelectQuery( + select=[select_expr], + select_from=ast.JoinExpr(table=ast.Field(chain=["events"])), + where=self._where_predicates(), + having=self._having_predicates(), + group_by=[ast.Field(chain=["$session_id"])], + ) + + def get_query_for_session_id_matching(self) -> ast.SelectQuery | ast.SelectUnionQuery | None: use_poe = poe_is_active(self._team) and self.person_properties if self._filter.entities or self.event_properties or use_poe: - return ast.SelectQuery( - select=[ast.Alias(alias="session_id", expr=ast.Field(chain=["$session_id"]))], - select_from=ast.JoinExpr(table=ast.Field(chain=["events"])), - where=self._where_predicates(), - having=self._having_predicates(), - group_by=[ast.Field(chain=["$session_id"])], - ) + return self._select_from_events(ast.Alias(alias="session_id", expr=ast.Field(chain=["$session_id"]))) else: return None + def get_query_for_event_id_matching(self) -> ast.SelectQuery | ast.SelectUnionQuery: + return self._select_from_events(ast.Call(name="groupUniqArray", args=[ast.Field(chain=["uuid"])])) + + def get_event_ids_for_session(self) -> SessionRecordingQueryResult: + query = self.get_query_for_event_id_matching() + + hogql_query_response = execute_hogql_query( + query=query, + team=self._team, + query_type="SessionRecordingMatchingEventsForSessionQuery", + modifiers=self._hogql_query_modifiers, + ) + + flattened_results = [str(uuid) for row in hogql_query_response.results for uuid in row[0]] + + return SessionRecordingQueryResult( + results=flattened_results, + has_more_recording=False, + timings=hogql_query_response.timings, + ) + def _where_predicates(self) -> ast.Expr: exprs: list[ast.Expr] = [ ast.Call( @@ -482,7 +516,7 @@ def _where_predicates(self) -> ast.Expr: ast.CompareOperation( op=ast.CompareOperationOp.GtEq, left=ast.Field(chain=["timestamp"]), - right=ast.Constant(value=datetime.now() - timedelta(days=self._ttl_days)), + right=ast.Constant(value=datetime.now() - timedelta(days=self.ttl_days)), ), ast.CompareOperation( op=ast.CompareOperationOp.LtEq, diff --git a/posthog/session_recordings/queries/session_recording_list_from_replay_summary.py b/posthog/session_recordings/queries/session_recording_list_from_replay_summary.py deleted file mode 100644 index 82db40b4e660ba..00000000000000 --- a/posthog/session_recordings/queries/session_recording_list_from_replay_summary.py +++ /dev/null @@ -1,785 +0,0 @@ -import dataclasses -import re -from datetime import datetime, timedelta -from typing import Any, Literal, NamedTuple, Union - -from django.conf import settings -from sentry_sdk import capture_exception - -from posthog.client import sync_execute -from posthog.constants import TREND_FILTER_TYPE_ACTIONS, PropertyOperatorType -from posthog.models import Entity, Team -from posthog.models.action.util import format_entity_filter -from posthog.models.filters.mixins.utils import cached_property -from posthog.models.filters.session_recordings_filter import SessionRecordingsFilter -from posthog.models.property import PropertyGroup -from posthog.models.property.util import parse_prop_grouped_clauses -from posthog.models.team import PersonsOnEventsMode -from posthog.queries.event_query import EventQuery -from posthog.queries.util import PersonPropertiesMode -from posthog.session_recordings.queries.session_replay_events import ttl_days - - -@dataclasses.dataclass(frozen=True) -class SummaryEventFiltersSQL: - having_conditions: str - having_select: str - where_conditions: str - params: dict[str, Any] - - -class SessionRecordingQueryResult(NamedTuple): - results: list - has_more_recording: bool - - -def _get_recording_start_time_clause(recording_filters: SessionRecordingsFilter) -> tuple[str, dict[str, Any]]: - start_time_clause = "" - start_time_params = {} - if recording_filters.date_from: - start_time_clause += "\nAND start_time >= %(start_time)s" - start_time_params["start_time"] = recording_filters.date_from - if recording_filters.date_to: - start_time_clause += "\nAND start_time <= %(end_time)s" - start_time_params["end_time"] = recording_filters.date_to - return start_time_clause, start_time_params - - -def _get_order_by_clause(filter_order: str | None) -> str: - order_by = filter_order or "start_time" - return f"ORDER BY {order_by} DESC" - - -def _get_filter_by_log_text_session_ids_clause( - team: Team, recording_filters: SessionRecordingsFilter, column_name="session_id" -) -> tuple[str, dict[str, Any]]: - if not recording_filters.console_search_query: - return "", {} - - log_query, log_params = LogQuery(team=team, filter=recording_filters).get_query() - - # we return this _even_ if there are no matching ids since if there are no matching ids - # then no sessions can match... - # sorted so that snapshots are consistent - return f'AND "{column_name}" in ({log_query}) as log_text_matching', log_params - - -def _get_filter_by_provided_session_ids_clause( - recording_filters: SessionRecordingsFilter, column_name="session_id" -) -> tuple[str, dict[str, Any]]: - if recording_filters.session_ids is None: - return "", {} - - return f'AND "{column_name}" in %(session_ids)s', {"session_ids": recording_filters.session_ids} - - -class LogQuery: - _filter: SessionRecordingsFilter - _team_id: int - _team: Team - - def __init__( - self, - team: Team, - filter: SessionRecordingsFilter, - ): - self._filter = filter - self._team = team - self._team_id = team.pk - - _rawQuery = """ - SELECT distinct log_source_id as session_id - FROM log_entries - PREWHERE team_id = %(team_id)s - -- regardless of what other filters are applied - -- limit by storage TTL - AND timestamp >= %(clamped_to_storage_ttl)s - -- make sure we don't get the occasional unexpected future event - AND timestamp <= now() - -- and then any time filter for the events query - {events_timestamp_clause} - WHERE 1=1 - {console_log_clause} - AND positionCaseInsensitive(message, %(console_search_query)s) > 0 - """ - - @property - def ttl_days(self): - return ttl_days(self._team) - - @cached_property - def _get_events_timestamp_clause(self) -> tuple[str, dict[str, Any]]: - timestamp_clause = "" - timestamp_params = {} - if self._filter.date_from: - timestamp_clause += "\nAND timestamp >= %(event_start_time)s" - timestamp_params["event_start_time"] = self._filter.date_from - timedelta(minutes=2) - if self._filter.date_to: - timestamp_clause += "\nAND timestamp <= %(event_end_time)s" - timestamp_params["event_end_time"] = self._filter.date_to - return timestamp_clause, timestamp_params - - @staticmethod - def _get_console_log_clause( - console_logs_filter: list[Literal["error", "warn", "info"]], - ) -> tuple[str, dict[str, Any]]: - return ( - ( - f"AND level in %(console_logs_levels)s", - {"console_logs_levels": console_logs_filter}, - ) - if console_logs_filter - else ("", {}) - ) - - def get_query(self) -> tuple[str, dict]: - if not self._filter.console_search_query: - return "", {} - - ( - events_timestamp_clause, - events_timestamp_params, - ) = self._get_events_timestamp_clause - console_log_clause, console_log_params = self._get_console_log_clause(self._filter.console_logs_filter) - - return self._rawQuery.format( - events_timestamp_clause=events_timestamp_clause, - console_log_clause=console_log_clause, - ), { - "team_id": self._team_id, - "clamped_to_storage_ttl": (datetime.now() - timedelta(days=self.ttl_days)), - "console_search_query": self._filter.console_search_query, - **events_timestamp_params, - **console_log_params, - } - - -class ActorsQuery(EventQuery): - _filter: SessionRecordingsFilter - - def __init__( - self, - team: Team, - **kwargs, - ): - person_on_events_mode = team.person_on_events_mode - super().__init__( - **kwargs, - team=team, - person_on_events_mode=person_on_events_mode, - ) - - # we have to implement this from EventQuery but don't need it - def _determine_should_join_distinct_ids(self) -> None: - pass - - # we have to implement this from EventQuery but don't need it - def _data_to_return(self, results: list[Any]) -> list[dict[str, Any]]: - pass - - _raw_persons_query = """ - SELECT distinct_id, argMax(person_id, version) as current_person_id - {select_person_props} - FROM person_distinct_id2 as pdi - {filter_persons_clause} - WHERE team_id = %(team_id)s - {prop_filter_clause} - {all_distinct_ids_that_might_match_a_person} - GROUP BY distinct_id - HAVING - argMax(is_deleted, version) = 0 - {prop_having_clause} - {filter_by_person_uuid_condition} - """ - - def get_query(self) -> tuple[str, dict[str, Any]]: - # we don't support PoE V1 - hopefully that's ok - if self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS: - return "", {} - - prop_query, prop_params = self._get_prop_groups( - PropertyGroup( - type=PropertyOperatorType.AND, - values=[g for g in self._filter.property_groups.flat if g.type == "person" or "cohort" in g.type], - ), - person_id_joined_alias=f"{self.DISTINCT_ID_TABLE_ALIAS}.person_id", - ) - - # hogql person props queries rely on an aggregated column and so have to go in the having clause - # not the where clause - having_prop_query, having_prop_params = self._get_prop_groups( - PropertyGroup( - type=PropertyOperatorType.AND, - values=[ - g for g in self._filter.property_groups.flat if g.type == "hogql" and "person.properties" in g.key - ], - ), - person_id_joined_alias=f"{self.DISTINCT_ID_TABLE_ALIAS}.current_person_id", - ) - - person_query, person_query_params = self._get_person_query() - should_join_persons = self._filter.person_uuid or person_query - - if not should_join_persons: - return "", {} - else: - filter_persons_clause = person_query or "" - filter_by_person_uuid_condition = ( - "and current_person_id = %(person_uuid)s" if self._filter.person_uuid else "" - ) - all_distinct_ids_that_might_match_a_person = ( - """ - AND distinct_id IN ( - SELECT distinct_id - FROM person_distinct_id2 - WHERE team_id = %(team_id)s - AND person_id = %(person_uuid)s) as all_distinct_ids_that_might_match_a_person - """ - if self._filter.person_uuid - else "" - ) - - return self._raw_persons_query.format( - filter_persons_clause=filter_persons_clause, - select_person_props=( - ", argMax(person_props, version) as person_props" if "person_props" in filter_persons_clause else "" - ), - prop_filter_clause=prop_query, - prop_having_clause=having_prop_query, - filter_by_person_uuid_condition=filter_by_person_uuid_condition, - all_distinct_ids_that_might_match_a_person=all_distinct_ids_that_might_match_a_person, - ), { - "team_id": self._team_id, - **person_query_params, - "person_uuid": self._filter.person_uuid, - **prop_params, - **having_prop_params, - } - - -class SessionIdEventsQuery(EventQuery): - _filter: SessionRecordingsFilter - - def __init__( - self, - team: Team, - **kwargs, - ): - person_on_events_mode = team.person_on_events_mode - super().__init__( - **kwargs, - team=team, - person_on_events_mode=person_on_events_mode, - ) - - # we have to implement this from EventQuery but don't need it - def _determine_should_join_distinct_ids(self) -> None: - pass - - # we have to implement this from EventQuery but don't need it - def _data_to_return(self, results: list[Any]) -> list[dict[str, Any]]: - pass - - def _determine_should_join_events(self): - filters_by_event_or_action = self._filter.entities and len(self._filter.entities) > 0 - # for e.g. test account filters might have event properties without having an event or action filter - has_event_property_filters = ( - len( - [ - pg - for pg in self._filter.property_groups.flat - # match when it is an event property filter - # or if its hogql and the key contains "properties." but not "person.properties." - # it's ok to match if there's both "properties." and "person.properties." in the key - # but not when its only "person.properties." - if pg.type == "event" or pg.type == "hogql" and re.search(r"(? 0 - ) - - has_poe_filters = ( - self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS - and len( - [ - pg - for pg in self._filter.property_groups.flat - if pg.type == "person" or (pg.type == "hogql" and "person.properties" in pg.key) - ] - ) - > 0 - ) - - has_poe_person_filter = ( - self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS - and self._filter.person_uuid - ) - - return filters_by_event_or_action or has_event_property_filters or has_poe_filters or has_poe_person_filter - - @property - def ttl_days(self): - return ttl_days(self._team) - - _raw_events_query = """ - {context_comment} - SELECT - {select_event_ids} - {event_filter_having_events_select} - `$session_id` - FROM events e - {groups_query} - -- sometimes we have to join on persons so we can access e.g. person_props in filters - {persons_join} - PREWHERE - team_id = %(team_id)s - -- regardless of what other filters are applied - -- limit by storage TTL - AND e.timestamp >= %(clamped_to_storage_ttl)s - -- make sure we don't get the occasional unexpected future event - AND e.timestamp <= now() - -- and then any time filter for the events query - {events_timestamp_clause} - WHERE - notEmpty(`$session_id`) - {event_filter_where_conditions} - {prop_filter_clause} - {provided_session_ids_clause} - -- other times we can check distinct id against a sub query which should be faster than joining - {persons_sub_query} - GROUP BY `$session_id` - HAVING 1=1 {event_filter_having_events_condition} - """ - - def format_event_filter(self, entity: Entity, prepend: str, team_id: int) -> tuple[str, dict[str, Any]]: - filter_sql, params = format_entity_filter( - team_id=team_id, - entity=entity, - prepend=prepend, - filter_by_team=False, - person_id_joined_alias=f"{self.DISTINCT_ID_TABLE_ALIAS}.person_id", - hogql_context=self._filter.hogql_context, - ) - - filters, filter_params = parse_prop_grouped_clauses( - team_id=team_id, - property_group=entity.property_groups, - prepend=prepend, - allow_denormalized_props=True, - has_person_id_joined=True, - person_properties_mode=( - PersonPropertiesMode.DIRECT_ON_EVENTS_WITH_POE_V2 - if self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS - else PersonPropertiesMode.USING_PERSON_PROPERTIES_COLUMN - ), - hogql_context=self._filter.hogql_context, - ) - filter_sql += f" {filters}" - params = {**params, **filter_params} - - return filter_sql, params - - @cached_property - def build_event_filters(self) -> SummaryEventFiltersSQL: - event_names_to_filter: list[Union[int, str]] = [] - params: dict = {} - condition_sql = "" - - for index, entity in enumerate(self._filter.entities): - if entity.type == TREND_FILTER_TYPE_ACTIONS: - action = entity.get_action() - # NOTE: Do we need a short circuit here for "none" - i.e. all events? - event_names_to_filter.extend( - [ae for ae in action.get_step_events() if ae and ae not in event_names_to_filter] - ) - else: - if entity.id and entity.id not in event_names_to_filter: - event_names_to_filter.append(entity.id) - - ( - this_entity_condition_sql, - this_entity_filter_params, - ) = self.format_event_filter(entity, prepend=f"event_matcher_{index}", team_id=self._team_id) - joining = "OR" if index > 0 else "" - condition_sql += f"{joining} {this_entity_condition_sql}" - # wrap in smooths to constrain the scope of the OR - condition_sql = f"( {condition_sql} )" - params = {**params, **this_entity_filter_params} - - params = {**params, "event_names": list(event_names_to_filter)} - - if len(event_names_to_filter) == 0: - # using "All events" - having_conditions = "" - having_select = "" - else: - having_conditions = "AND hasAll(event_names, %(event_names)s)" - having_select = """ - -- select the unique events in this session to support filtering sessions by presence of an event - groupUniqArray(event) as event_names,""" - - if self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS: - person_id_clause, person_id_params = self._get_person_id_clause - condition_sql += person_id_clause - params = {**params, **person_id_params} - - condition_sql = ( - f" AND {condition_sql}" if condition_sql and not condition_sql.startswith("AND") else condition_sql - ) - - return SummaryEventFiltersSQL( - having_conditions=having_conditions, - having_select=having_select, - where_conditions=f"{condition_sql}" if condition_sql else "", - params=params, - ) - - def _get_groups_query(self) -> tuple[str, dict]: - try: - from ee.clickhouse.queries.groups_join_query import GroupsJoinQuery - except ImportError: - # if EE not available then we use a no-op version - from posthog.queries.groups_join_query import GroupsJoinQuery - - return GroupsJoinQuery( - self._filter, - self._team_id, - self._column_optimizer, - person_on_events_mode=self._person_on_events_mode, - ).get_join_query() - - # We want to select events beyond the range of the recording to handle the case where - # a recording spans the time boundaries - @cached_property - def _get_events_timestamp_clause(self) -> tuple[str, dict[str, Any]]: - timestamp_clause = "" - timestamp_params = {} - if self._filter.date_from: - timestamp_clause += "\nAND timestamp >= %(event_start_time)s" - timestamp_params["event_start_time"] = self._filter.date_from - timedelta(hours=12) - if self._filter.date_to: - timestamp_clause += "\nAND timestamp <= %(event_end_time)s" - timestamp_params["event_end_time"] = self._filter.date_to + timedelta(hours=12) - return timestamp_clause, timestamp_params - - def get_query(self, select_event_ids: bool = False) -> tuple[str, dict[str, Any]]: - if not self._determine_should_join_events(): - return "", {} - - base_params = { - "team_id": self._team_id, - "clamped_to_storage_ttl": (datetime.now() - timedelta(days=self.ttl_days)), - } - - _, recording_start_time_params = _get_recording_start_time_clause(self._filter) - ( - provided_session_ids_clause, - provided_session_ids_params, - ) = _get_filter_by_provided_session_ids_clause(recording_filters=self._filter, column_name="$session_id") - - event_filters = self.build_event_filters - event_filters_params = event_filters.params - ( - events_timestamp_clause, - events_timestamp_params, - ) = self._get_events_timestamp_clause - - groups_query, groups_params = self._get_groups_query() - - # these will be applied to the events table, - # so we only want property filters that make sense in that context - prop_query, prop_params = self._get_prop_groups( - PropertyGroup( - type=PropertyOperatorType.AND, - values=[ - g - for g in self._filter.property_groups.flat - if ( - self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS - and g.type == "person" - ) - or ( - (g.type == "hogql" and "person.properties" not in g.key) - or (g.type != "hogql" and "cohort" not in g.type and g.type != "person") - ) - ], - ), - person_id_joined_alias=f"{self.DISTINCT_ID_TABLE_ALIAS}.person_id", - # TRICKY: we saw unusual memory usage behavior in EU clickhouse cluster - # when allowing use of denormalized properties in this query - # it is likely this can be returned to the default of True in future - # but would need careful monitoring - allow_denormalized_props=settings.ALLOW_DENORMALIZED_PROPS_IN_LISTING, - person_properties_mode=( - PersonPropertiesMode.DIRECT_ON_EVENTS_WITH_POE_V2 - if self._person_on_events_mode == PersonsOnEventsMode.PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS - else PersonPropertiesMode.USING_PERSON_PROPERTIES_COLUMN - ), - ) - - ( - persons_join, - persons_select_params, - persons_sub_query, - ) = self._persons_join_or_subquery(event_filters, prop_query) - - return ( - self._raw_events_query.format( - select_event_ids="groupArray(uuid) as event_ids," if select_event_ids else "", - event_filter_where_conditions=event_filters.where_conditions, - event_filter_having_events_condition=event_filters.having_conditions, - event_filter_having_events_select=event_filters.having_select, - events_timestamp_clause=events_timestamp_clause, - prop_filter_clause=prop_query, - provided_session_ids_clause=provided_session_ids_clause, - persons_join=persons_join, - persons_sub_query=persons_sub_query, - groups_query=groups_query, - context_comment=f"-- running in PoE Mode: {self._person_on_events_mode}", - ), - { - **base_params, - **recording_start_time_params, - **provided_session_ids_params, - **events_timestamp_params, - **event_filters_params, - **prop_params, - **persons_select_params, - **groups_params, - }, - ) - - def _persons_join_or_subquery(self, event_filters, prop_query): - persons_select, persons_select_params = ActorsQuery(filter=self._filter, team=self._team).get_query() - persons_join = "" - persons_sub_query = "" - if persons_select: - # we want to join as infrequently as possible so only join if there are filters that expect it - if ( - "person_props" in prop_query - or "pdi.person_id" in prop_query - or "person_props" in event_filters.where_conditions - ): - persons_join = f"JOIN ({persons_select}) as pdi on pdi.distinct_id = e.distinct_id" - else: - persons_sub_query = ( - f"AND e.distinct_id in (select distinct_id from ({persons_select}) as events_persons_sub_query)" - ) - return persons_join, persons_select_params, persons_sub_query - - @cached_property - def _get_person_id_clause(self) -> tuple[str, dict[str, Any]]: - person_id_clause = "" - person_id_params = {} - if self._filter.person_uuid: - person_id_clause = "AND person_id = %(person_uuid)s" - person_id_params = {"person_uuid": self._filter.person_uuid} - return person_id_clause, person_id_params - - def matching_events(self) -> list[str]: - self._filter.hogql_context.modifiers.personsOnEventsMode = self._person_on_events_mode - query, query_params = self.get_query(select_event_ids=True) - query_results = sync_execute(query, {**query_params, **self._filter.hogql_context.values}) - results = [row[0] for row in query_results] - # flatten and return results - return [item for sublist in results for item in sublist] - - -class SessionRecordingListFromReplaySummary(EventQuery): - # we have to implement this from EventQuery but don't need it - def _determine_should_join_distinct_ids(self) -> None: - pass - - _filter: SessionRecordingsFilter - SESSION_RECORDINGS_DEFAULT_LIMIT = 50 - - def __init__( - self, - team=Team, - **kwargs, - ): - person_on_events_mode = team.person_on_events_mode - super().__init__( - **kwargs, - team=team, - person_on_events_mode=person_on_events_mode, - ) - - @property - def ttl_days(self): - return ttl_days(self._team) - - _session_recordings_query: str = """ - {context_comment} - SELECT - s.session_id, - any(s.team_id), - any(s.distinct_id), - min(s.min_first_timestamp) as start_time, - max(s.max_last_timestamp) as end_time, - dateDiff('SECOND', start_time, end_time) as duration, - argMinMerge(s.first_url) as first_url, - sum(s.click_count), - sum(s.keypress_count), - sum(s.mouse_activity_count), - sum(s.active_milliseconds)/1000 as active_seconds, - duration-active_seconds as inactive_seconds, - sum(s.console_log_count) as console_log_count, - sum(s.console_warn_count) as console_warn_count, - sum(s.console_error_count) as console_error_count - FROM session_replay_events s - WHERE s.team_id = %(team_id)s - -- regardless of what other filters are applied - -- limit by storage TTL - AND s.min_first_timestamp >= %(clamped_to_storage_ttl)s - -- we can filter on the pre-aggregated timestamp columns - -- because any not-the-lowest min value is _more_ greater than the min value - -- and any not-the-highest max value is _less_ lower than the max value - AND s.min_first_timestamp >= %(start_time)s - AND s.min_first_timestamp <= %(end_time)s - {persons_sub_query} - {events_sub_query} - {provided_session_ids_clause} - {log_matching_session_ids_clause} - GROUP BY session_id - HAVING 1=1 {duration_clause} {console_log_clause} - {order_by_clause} - LIMIT %(limit)s OFFSET %(offset)s - """ - - @staticmethod - def _data_to_return(results: list[Any]) -> list[dict[str, Any]]: - default_columns = [ - "session_id", - "team_id", - "distinct_id", - "start_time", - "end_time", - "duration", - "first_url", - "click_count", - "keypress_count", - "mouse_activity_count", - "active_seconds", - "inactive_seconds", - "console_log_count", - "console_warn_count", - "console_error_count", - ] - - return [ - { - **dict(zip(default_columns, row[: len(default_columns)])), - } - for row in results - ] - - def _paginate_results(self, session_recordings) -> SessionRecordingQueryResult: - more_recordings_available = False - if len(session_recordings) > self.limit: - more_recordings_available = True - session_recordings = session_recordings[0 : self.limit] - return SessionRecordingQueryResult(session_recordings, more_recordings_available) - - def run(self) -> SessionRecordingQueryResult: - try: - self._filter.hogql_context.modifiers.personsOnEventsMode = self._person_on_events_mode - query, query_params = self.get_query() - - query_results = sync_execute(query, {**query_params, **self._filter.hogql_context.values}) - session_recordings = self._data_to_return(query_results) - return self._paginate_results(session_recordings) - except Exception as ex: - # error here weren't making it to sentry, let's be explicit - capture_exception(ex, tags={"team_id": self._team.pk}) - raise - - @property - def limit(self): - return self._filter.limit or self.SESSION_RECORDINGS_DEFAULT_LIMIT - - def get_query(self) -> tuple[str, dict[str, Any]]: - offset = self._filter.offset or 0 - - base_params = { - "team_id": self._team_id, - "limit": self.limit + 1, - "offset": offset, - "clamped_to_storage_ttl": (datetime.now() - timedelta(days=self.ttl_days)), - } - - _, recording_start_time_params = _get_recording_start_time_clause(self._filter) - ( - provided_session_ids_clause, - provided_session_ids_params, - ) = _get_filter_by_provided_session_ids_clause(recording_filters=self._filter) - - ( - log_matching_session_ids_clause, - log_matching_session_ids_params, - ) = _get_filter_by_log_text_session_ids_clause(team=self._team, recording_filters=self._filter) - - order_by_clause = _get_order_by_clause(self._filter.target_entity_order) - - duration_clause, duration_params = self.duration_clause(self._filter.duration_type_filter) - console_log_clause = self._get_console_log_clause(self._filter.console_logs_filter) - - events_select, events_join_params = SessionIdEventsQuery( - team=self._team, - filter=self._filter, - ).get_query() - if events_select: - events_select = f"AND s.session_id in (select `$session_id` as session_id from ({events_select}) as session_events_sub_query)" - - persons_select, persons_select_params = ActorsQuery(filter=self._filter, team=self._team).get_query() - if persons_select: - persons_select = ( - f"AND s.distinct_id in (select distinct_id from ({persons_select}) as session_persons_sub_query)" - ) - - return ( - self._session_recordings_query.format( - duration_clause=duration_clause, - provided_session_ids_clause=provided_session_ids_clause, - console_log_clause=console_log_clause, - persons_sub_query=persons_select, - events_sub_query=events_select, - log_matching_session_ids_clause=log_matching_session_ids_clause, - order_by_clause=order_by_clause, - context_comment=f"-- running in PoE Mode: {self._person_on_events_mode}", - ), - { - **base_params, - **events_join_params, - **recording_start_time_params, - **duration_params, - **provided_session_ids_params, - **persons_select_params, - **log_matching_session_ids_params, - }, - ) - - def duration_clause( - self, - duration_filter_type: Literal["duration", "active_seconds", "inactive_seconds"], - ) -> tuple[str, dict[str, Any]]: - duration_clause = "" - duration_params = {} - if self._filter.recording_duration_filter: - if self._filter.recording_duration_filter.operator == "gt": - operator = ">" - else: - operator = "<" - duration_clause = "\nAND {duration_type} {operator} %(recording_duration)s".format( - duration_type=duration_filter_type, operator=operator - ) - duration_params = { - "recording_duration": self._filter.recording_duration_filter.value, - } - return duration_clause, duration_params - - @staticmethod - def _get_console_log_clause(console_logs_filter: list[Literal["error", "warn", "info"]]) -> str: - # to avoid a CH migration we map from info to log when constructing the query here - filters = [f"console_{'log' if log == 'info' else log}_count > 0" for log in console_logs_filter] - return f"AND ({' OR '.join(filters)})" if filters else "" diff --git a/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py b/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py deleted file mode 100644 index 09b1c68cfe1225..00000000000000 --- a/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py +++ /dev/null @@ -1,3115 +0,0 @@ -from datetime import datetime -from uuid import uuid4 - -from dateutil.relativedelta import relativedelta -from django.utils.timezone import now -from freezegun import freeze_time - -from posthog.clickhouse.client import sync_execute -from posthog.clickhouse.log_entries import TRUNCATE_LOG_ENTRIES_TABLE_SQL -from posthog.constants import AvailableFeature -from posthog.models import Cohort, GroupTypeMapping, Person -from posthog.models.action import Action -from posthog.models.filters.session_recordings_filter import SessionRecordingsFilter -from posthog.models.group.util import create_group -from posthog.models.team import Team -from posthog.session_recordings.queries.session_recording_list_from_replay_summary import ( - SessionRecordingListFromReplaySummary, - SessionRecordingQueryResult, -) -from posthog.session_recordings.queries.session_replay_events import ttl_days -from posthog.session_recordings.queries.test.session_replay_sql import ( - produce_replay_summary, -) -from posthog.session_recordings.sql.session_replay_event_sql import ( - TRUNCATE_SESSION_REPLAY_EVENTS_TABLE_SQL, -) -from posthog.test.base import ( - APIBaseTest, - ClickhouseTestMixin, - _create_event, - also_test_with_materialized_columns, - flush_persons_and_events, - snapshot_clickhouse_queries, -) - - -@freeze_time("2021-01-01T13:46:23") -class TestClickhouseSessionRecordingsListFromSessionReplay(ClickhouseTestMixin, APIBaseTest): - @classmethod - def teardown_class(cls): - sync_execute(TRUNCATE_SESSION_REPLAY_EVENTS_TABLE_SQL()) - sync_execute(TRUNCATE_LOG_ENTRIES_TABLE_SQL) - - def create_action(self, name, team_id=None, properties=None): - if team_id is None: - team_id = self.team.pk - if properties is None: - properties = [] - action = Action.objects.create( - team_id=team_id, name=name, steps_json=[{"event": name, "properties": properties}] - ) - return action - - def create_event( - self, - distinct_id, - timestamp, - team=None, - event_name="$pageview", - properties=None, - ): - if team is None: - team = self.team - if properties is None: - properties = {"$os": "Windows 95", "$current_url": "aloha.com/2"} - return _create_event( - team=team, - event=event_name, - timestamp=timestamp, - distinct_id=distinct_id, - properties=properties, - ) - - def _filter_recordings_by(self, recordings_filter: dict) -> SessionRecordingQueryResult: - the_filter = SessionRecordingsFilter(team=self.team, data=recordings_filter) - session_recording_list_instance = SessionRecordingListFromReplaySummary(filter=the_filter, team=self.team) - return session_recording_list_instance.run() - - @property - def an_hour_ago(self): - return (now() - relativedelta(hours=1)).replace(microsecond=0, second=0) - - @snapshot_clickhouse_queries - def test_basic_query(self): - user = "test_basic_query-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_one = f"test_basic_query-{str(uuid4())}" - session_id_two = f"test_basic_query-{str(uuid4())}" - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago.isoformat().replace("T", " "), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=20)).isoformat().replace("T", " "), - distinct_id=user, - first_url="https://example.io/home", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=50 * 1000 * 0.5, # 50% of the total expected duration - ) - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=(self.an_hour_ago + relativedelta(seconds=10)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=50)), - distinct_id=user, - first_url="https://a-different-url.com", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=0, # 30% of the total expected duration - ) - - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=(self.an_hour_ago + relativedelta(seconds=20)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=2000)), - distinct_id=user, - first_url=None, - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=1980 * 1000 * 0.4, # 40% of the total expected duration - ) - - session_recordings, more_recordings_available = self._filter_recordings_by({"no_filter": None}) - - assert session_recordings == [ - { - "session_id": session_id_two, - "team_id": self.team.pk, - "distinct_id": user, - "click_count": 2, - "keypress_count": 2, - "mouse_activity_count": 2, - "duration": 1980, - "active_seconds": 792.0, - "inactive_seconds": 1188.0, - "start_time": self.an_hour_ago + relativedelta(seconds=20), - "end_time": self.an_hour_ago + relativedelta(seconds=2000), - "first_url": None, - "console_log_count": 0, - "console_warn_count": 0, - "console_error_count": 0, - }, - { - "session_id": session_id_one, - "team_id": self.team.pk, - "distinct_id": user, - "click_count": 4, - "keypress_count": 4, - "mouse_activity_count": 4, - "duration": 50, - "active_seconds": 25.0, - "inactive_seconds": 25.0, - "start_time": self.an_hour_ago, - "end_time": self.an_hour_ago + relativedelta(seconds=50), - "first_url": "https://example.io/home", - "console_log_count": 0, - "console_warn_count": 0, - "console_error_count": 0, - }, - ] - - assert more_recordings_available is False - - @snapshot_clickhouse_queries - def test_basic_query_active_sessions( - self, - ): - user = "test_basic_query-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_total_is_61 = f"test_basic_query_active_sessions-total-{str(uuid4())}" - session_id_active_is_61 = f"test_basic_query_active_sessions-active-{str(uuid4())}" - session_id_inactive_is_61 = f"test_basic_query_active_sessions-inactive-{str(uuid4())}" - - produce_replay_summary( - session_id=session_id_total_is_61, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago.isoformat().replace("T", " "), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=61)).isoformat().replace("T", " "), - distinct_id=user, - first_url="https://example.io/home", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=59000, - ) - - produce_replay_summary( - session_id=session_id_active_is_61, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=59)), - distinct_id=user, - first_url="https://a-different-url.com", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=61000, - ) - - produce_replay_summary( - session_id=session_id_inactive_is_61, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=61)), - distinct_id=user, - first_url="https://a-different-url.com", - click_count=0, - keypress_count=0, - mouse_activity_count=0, - active_milliseconds=0, - ) - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by( - { - "duration_type_filter": "duration", - "session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}', - } - ) - - assert sorted( - [(s["session_id"], s["duration"], s["active_seconds"]) for s in session_recordings], - key=lambda x: x[0], - ) == [ - (session_id_inactive_is_61, 61, 0.0), - (session_id_total_is_61, 61, 59.0), - ] - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by( - { - "duration_type_filter": "active_seconds", - "session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}', - } - ) - - assert [(s["session_id"], s["duration"], s["active_seconds"]) for s in session_recordings] == [ - (session_id_active_is_61, 59, 61.0) - ] - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by( - { - "duration_type_filter": "inactive_seconds", - "session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}', - } - ) - - assert [(s["session_id"], s["duration"], s["inactive_seconds"]) for s in session_recordings] == [ - (session_id_inactive_is_61, 61, 61.0) - ] - - @snapshot_clickhouse_queries - def test_basic_query_with_paging(self): - user = "test_basic_query_with_paging-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_one = f"test_basic_query_with_paging-{str(uuid4())}" - session_id_two = f"test_basic_query_with_paging-{str(uuid4())}" - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago.isoformat().replace("T", " "), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=20)).isoformat().replace("T", " "), - distinct_id=user, - first_url="https://example.io/home", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=50 * 1000 * 0.5, # 50% of the total expected duration - ) - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=(self.an_hour_ago + relativedelta(seconds=10)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=50)), - distinct_id=user, - first_url="https://a-different-url.com", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=0, # 30% of the total expected duration - ) - - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=(self.an_hour_ago + relativedelta(seconds=20)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=2000)), - distinct_id=user, - first_url=None, - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=1980 * 1000 * 0.4, # 40% of the total expected duration - ) - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by({"no_filter": None, "limit": 1, "offset": 0}) - - assert session_recordings == [ - { - "session_id": session_id_two, - "team_id": self.team.pk, - "distinct_id": user, - "click_count": 2, - "keypress_count": 2, - "mouse_activity_count": 2, - "duration": 1980, - "active_seconds": 792.0, - "inactive_seconds": 1188.0, - "start_time": self.an_hour_ago + relativedelta(seconds=20), - "end_time": self.an_hour_ago + relativedelta(seconds=2000), - "first_url": None, - "console_log_count": 0, - "console_warn_count": 0, - "console_error_count": 0, - } - ] - - assert more_recordings_available is True - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by({"no_filter": None, "limit": 1, "offset": 1}) - - assert session_recordings == [ - { - "session_id": session_id_one, - "team_id": self.team.pk, - "distinct_id": user, - "click_count": 4, - "keypress_count": 4, - "mouse_activity_count": 4, - "duration": 50, - "active_seconds": 25.0, - "inactive_seconds": 25.0, - "start_time": self.an_hour_ago, - "end_time": self.an_hour_ago + relativedelta(seconds=50), - "first_url": "https://example.io/home", - "console_log_count": 0, - "console_warn_count": 0, - "console_error_count": 0, - }, - ] - - assert more_recordings_available is False - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by({"no_filter": None, "limit": 1, "offset": 2}) - - assert session_recordings == [] - - assert more_recordings_available is False - - @snapshot_clickhouse_queries - def test_basic_query_with_ordering(self): - user = "test_basic_query_with_ordering-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_one = f"test_basic_query_with_ordering-session-1-{str(uuid4())}" - session_id_two = f"test_basic_query_with_ordering-session-2-{str(uuid4())}" - - session_one_start = self.an_hour_ago + relativedelta(seconds=10) - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=session_one_start, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=50)), - distinct_id=user, - console_error_count=1000, - active_milliseconds=1, # most errors, but the least activity - ) - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=session_one_start, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=50)), - distinct_id=user, - console_error_count=12, - active_milliseconds=1, # most errors, but the least activity - ) - - session_two_start = self.an_hour_ago - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - # starts before session one - first_timestamp=session_two_start, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=50)), - distinct_id=user, - console_error_count=430, - active_milliseconds=1000, # most activity, but the least errors - ) - - (session_recordings) = self._filter_recordings_by( - {"no_filter": None, "limit": 3, "offset": 0, "entity_order": "active_seconds"} - ) - - ordered_by_activity = [(r["session_id"], r["active_seconds"]) for r in session_recordings.results] - assert ordered_by_activity == [(session_id_two, 1.0), (session_id_one, 0.002)] - - (session_recordings) = self._filter_recordings_by( - {"no_filter": None, "limit": 3, "offset": 0, "entity_order": "console_error_count"} - ) - - ordered_by_errors = [(r["session_id"], r["console_error_count"]) for r in session_recordings.results] - assert ordered_by_errors == [(session_id_one, 1012), (session_id_two, 430)] - - (session_recordings) = self._filter_recordings_by( - {"no_filter": None, "limit": 3, "offset": 0, "entity_order": "start_time"} - ) - - ordered_by_default = [(r["session_id"], r["start_time"]) for r in session_recordings.results] - assert ordered_by_default == [(session_id_one, session_one_start), (session_id_two, session_two_start)] - - def test_first_url_selection(self): - user = "test_first_url_selection-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_one = f"first-url-on-first-event-{str(uuid4())}" - session_id_two = f"first-url-not-on-first-event-{str(uuid4())}" - session_id_three = f"no-url-from-many-{str(uuid4())}" - session_id_four = f"events-inserted-out-of-order-{str(uuid4())}" - - # session one has the first url on the first event - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago, - last_timestamp=self.an_hour_ago + relativedelta(seconds=20), - first_url="https://on-first-event.com", - ) - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - first_timestamp=self.an_hour_ago + relativedelta(seconds=10), - last_timestamp=self.an_hour_ago + relativedelta(seconds=20), - first_url="https://on-second-event.com", - ) - - produce_replay_summary( - session_id=session_id_one, - team_id=self.team.pk, - first_timestamp=self.an_hour_ago + relativedelta(seconds=20), - last_timestamp=self.an_hour_ago + relativedelta(seconds=40), - first_url="https://on-third-event.com", - ) - - # session two has no URL on the first event - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=10)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=50)), - first_url=None, - ) - - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=20)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - first_url="https://first-is-on-second-event.com", - ) - - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=25)), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - first_url="https://another-on-the-session.com", - ) - - # session three has no URLs - produce_replay_summary( - session_id=session_id_three, - team_id=self.team.pk, - first_timestamp=self.an_hour_ago, - last_timestamp=self.an_hour_ago + relativedelta(seconds=50), - distinct_id=user, - first_url=None, - ) - - produce_replay_summary( - session_id=session_id_three, - team_id=self.team.pk, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=10)), - last_timestamp=self.an_hour_ago + relativedelta(seconds=50), - distinct_id=user, - first_url=None, - ) - - produce_replay_summary( - session_id=session_id_three, - team_id=self.team.pk, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=20)), - last_timestamp=self.an_hour_ago + relativedelta(seconds=60), - distinct_id=user, - first_url=None, - ) - - # session four events are received out of order - produce_replay_summary( - session_id=session_id_four, - team_id=self.team.pk, - first_timestamp=self.an_hour_ago + relativedelta(seconds=20), - last_timestamp=self.an_hour_ago + relativedelta(seconds=25), - first_url="https://on-first-received-event.com", - ) - produce_replay_summary( - session_id=session_id_four, - team_id=self.team.pk, - first_timestamp=self.an_hour_ago + relativedelta(seconds=10), - last_timestamp=self.an_hour_ago + relativedelta(seconds=25), - first_url="https://on-second-received-event-but-actually-first.com", - ) - - session_recordings, more_recordings_available = self._filter_recordings_by({"no_filter": None}) - - assert sorted( - [{"session_id": r["session_id"], "first_url": r["first_url"]} for r in session_recordings], - key=lambda x: x["session_id"], - ) == sorted( - [ - { - "session_id": session_id_one, - "first_url": "https://on-first-event.com", - }, - { - "session_id": session_id_two, - "first_url": "https://first-is-on-second-event.com", - }, - { - "session_id": session_id_three, - "first_url": None, - }, - { - "session_id": session_id_four, - "first_url": "https://on-second-received-event-but-actually-first.com", - }, - ], - # mypy unhappy about this lambda 🀷️ - key=lambda x: x["session_id"], # type: ignore - ) - - def test_recordings_dont_leak_data_between_teams(self): - another_team = Team.objects.create(organization=self.organization) - user = "test_recordings_dont_leak_data_between_teams-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - Person.objects.create(team=another_team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_one = f"test_recordings_dont_leak_data_between_teams-1-{str(uuid4())}" - session_id_two = f"test_recordings_dont_leak_data_between_teams-2-{str(uuid4())}" - - produce_replay_summary( - session_id=session_id_one, - team_id=another_team.pk, - distinct_id=user, - first_timestamp=self.an_hour_ago, - last_timestamp=self.an_hour_ago + relativedelta(seconds=20), - first_url=None, - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=20 * 1000 * 0.5, # 50% of the total expected duration - ) - - produce_replay_summary( - session_id=session_id_two, - team_id=self.team.pk, - distinct_id=user, - first_timestamp=self.an_hour_ago, - last_timestamp=self.an_hour_ago + relativedelta(seconds=20), - first_url=None, - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=20 * 1000 * 0.5, # 50% of the total expected duration - ) - - (session_recordings, _) = self._filter_recordings_by({"no_filter": None}) - - assert [{"session": r["session_id"], "user": r["distinct_id"]} for r in session_recordings] == [ - {"session": session_id_two, "user": user} - ] - - @snapshot_clickhouse_queries - def test_event_filter(self): - user = "test_event_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - session_id_one = f"test_event_filter-{str(uuid4())}" - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - user, - self.an_hour_ago, - properties={"$session_id": session_id_one, "$window_id": str(uuid4())}, - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_one - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$autocapture", - "type": "events", - "order": 0, - "name": "$autocapture", - } - ] - } - ) - assert session_recordings == [] - - @snapshot_clickhouse_queries - def test_event_filter_has_ttl_applied_too(self): - user = "test_event_filter_has_ttl_applied_too-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - session_id_one = f"test_event_filter_has_ttl_applied_too-{str(uuid4())}" - - # this is artificially incorrect data, the session events are within TTL - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - # but the page view event is outside TTL - self.create_event( - user, - self.an_hour_ago - - relativedelta(days=SessionRecordingListFromReplaySummary.SESSION_RECORDINGS_DEFAULT_LIMIT + 1), - properties={"$session_id": session_id_one, "$window_id": str(uuid4())}, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ] - } - ) - assert len(session_recordings) == 0 - - (session_recordings, _) = self._filter_recordings_by({}) - # without an event filter the recording is present, showing that the TTL was applied to the events table too - # we want this to limit the amount of event data we query - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_one - - @snapshot_clickhouse_queries - def test_ttl_days(self): - assert ttl_days(self.team) == 21 - - with self.is_cloud(True): - # Far enough in the future from `days_since_blob_ingestion` but not paid - with freeze_time("2023-09-01T12:00:01Z"): - assert ttl_days(self.team) == 30 - - self.team.organization.available_product_features = [ - {"name": AvailableFeature.RECORDINGS_PLAYLISTS, "key": AvailableFeature.RECORDINGS_PLAYLISTS} - ] - - # Far enough in the future from `days_since_blob_ingestion` but paid - with freeze_time("2023-12-01T12:00:01Z"): - assert ttl_days(self.team) == 90 - - # Not far enough in the future from `days_since_blob_ingestion` - with freeze_time("2023-09-05T12:00:01Z"): - assert ttl_days(self.team) == 35 - - @snapshot_clickhouse_queries - def test_event_filter_with_active_sessions( - self, - ): - user = "test_basic_query-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_total_is_61 = f"test_basic_query_active_sessions-total-{str(uuid4())}" - session_id_active_is_61 = f"test_basic_query_active_sessions-active-{str(uuid4())}" - - self.create_event( - user, - self.an_hour_ago, - properties={ - "$session_id": session_id_total_is_61, - "$window_id": str(uuid4()), - }, - ) - produce_replay_summary( - session_id=session_id_total_is_61, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago.isoformat().replace("T", " "), - last_timestamp=(self.an_hour_ago + relativedelta(seconds=61)).isoformat().replace("T", " "), - distinct_id=user, - first_url="https://example.io/home", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=59000, - ) - - self.create_event( - user, - self.an_hour_ago, - properties={ - "$session_id": session_id_active_is_61, - "$window_id": str(uuid4()), - }, - ) - produce_replay_summary( - session_id=session_id_active_is_61, - team_id=self.team.pk, - # can CH handle a timestamp with no T - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=59)), - distinct_id=user, - first_url="https://a-different-url.com", - click_count=2, - keypress_count=2, - mouse_activity_count=2, - active_milliseconds=61000, - ) - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by( - { - "duration_type_filter": "duration", - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}', - } - ) - - assert [(s["session_id"], s["duration"], s["active_seconds"]) for s in session_recordings] == [ - (session_id_total_is_61, 61, 59.0) - ] - - ( - session_recordings, - more_recordings_available, - ) = self._filter_recordings_by( - { - "duration_type_filter": "active_seconds", - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}', - } - ) - - assert [(s["session_id"], s["duration"], s["active_seconds"]) for s in session_recordings] == [ - (session_id_active_is_61, 59, 61.0) - ] - - @also_test_with_materialized_columns(["$current_url", "$browser"]) - @snapshot_clickhouse_queries - def test_event_filter_with_properties(self): - user = "test_event_filter_with_properties-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - session_id_one = f"test_event_filter_with_properties-{str(uuid4())}" - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - user, - self.an_hour_ago, - properties={ - "$browser": "Chrome", - "$session_id": session_id_one, - "$window_id": str(uuid4()), - }, - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [ - { - "key": "$browser", - "value": ["Chrome"], - "operator": "exact", - "type": "event", - } - ], - } - ] - } - ) - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_one - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [ - { - "key": "$browser", - "value": ["Firefox"], - "operator": "exact", - "type": "event", - } - ], - } - ] - } - ) - assert session_recordings == [] - - @snapshot_clickhouse_queries - def test_multiple_event_filters(self): - session_id = f"test_multiple_event_filters-{str(uuid4())}" - user = "test_multiple_event_filters-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - - self.create_event( - user, - self.an_hour_ago, - properties={"$session_id": session_id, "$window_id": "1"}, - ) - self.create_event( - user, - self.an_hour_ago, - properties={"$session_id": session_id, "$window_id": "1"}, - event_name="new-event", - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - }, - { - "id": "new-event", - "type": "events", - "order": 0, - "name": "new-event", - }, - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - }, - { - "id": "new-event2", - "type": "events", - "order": 0, - "name": "new-event2", - }, - ] - } - ) - assert session_recordings == [] - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(["$session_id", "$browser"], person_properties=["email"]) - @freeze_time("2023-01-04") - def test_action_filter(self): - user = "test_action_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - session_id_one = f"test_action_filter-session-one" - window_id = "test_action_filter-window-id" - action_with_properties = self.create_action( - "custom-event", - properties=[ - {"key": "$browser", "value": "Firefox"}, - {"key": "$session_id", "value": session_id_one}, - {"key": "$window_id", "value": window_id}, - ], - ) - action_without_properties = self.create_action( - name="custom-event", - properties=[ - {"key": "$session_id", "value": session_id_one}, - {"key": "$window_id", "value": window_id}, - ], - ) - - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - user, - self.an_hour_ago, - event_name="custom-event", - properties={ - "$browser": "Chrome", - "$session_id": session_id_one, - "$window_id": window_id, - }, - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "actions": [ - { - "id": action_with_properties.id, - "type": "actions", - "order": 1, - "name": "custom-event", - } - ] - } - ) - assert session_recordings == [] - - (session_recordings, _) = self._filter_recordings_by( - { - "actions": [ - { - "id": action_without_properties.id, - "type": "actions", - "order": 1, - "name": "custom-event", - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_one - - # Adding properties to an action - (session_recordings, _) = self._filter_recordings_by( - { - "actions": [ - { - "id": action_without_properties.id, - "type": "actions", - "order": 1, - "name": "custom-event", - "properties": [ - { - "key": "$browser", - "value": ["Firefox"], - "operator": "exact", - "type": "event", - } - ], - } - ] - } - ) - assert session_recordings == [] - - # Adding matching properties to an action - (session_recordings, _) = self._filter_recordings_by( - { - "actions": [ - { - "id": action_without_properties.id, - "type": "actions", - "order": 1, - "name": "custom-event", - "properties": [ - { - "key": "$browser", - "value": ["Chrome"], - "operator": "exact", - "type": "event", - } - ], - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_one - - def test_all_sessions_recording_object_keys_with_entity_filter(self): - user = "test_all_sessions_recording_object_keys_with_entity_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - session_id = f"test_all_sessions_recording_object_keys_with_entity_filter-{str(uuid4())}" - window_id = str(uuid4()) - - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=60)), - team_id=self.team.id, - ) - self.create_event( - user, - self.an_hour_ago, - properties={"$session_id": session_id, "$window_id": window_id}, - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ] - } - ) - - assert session_recordings == [ - { - "session_id": session_id, - "distinct_id": user, - "duration": 60, - "start_time": self.an_hour_ago, - "end_time": self.an_hour_ago + relativedelta(seconds=60), - "active_seconds": 0.0, - "click_count": 0, - "first_url": "https://not-provided-by-test.com", - "inactive_seconds": 60.0, - "keypress_count": 0, - "mouse_activity_count": 0, - "team_id": self.team.id, - "console_log_count": 0, - "console_warn_count": 0, - "console_error_count": 0, - } - ] - - @snapshot_clickhouse_queries - def test_duration_filter(self): - user = "test_duration_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id_one = "session one is 29 seconds long" - produce_replay_summary( - distinct_id=user, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=29)), - team_id=self.team.id, - ) - - session_id_two = "session two is 61 seconds long" - produce_replay_summary( - distinct_id=user, - session_id=session_id_two, - first_timestamp=self.an_hour_ago, - last_timestamp=(self.an_hour_ago + relativedelta(seconds=61)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - {"session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}'} - ) - assert [r["session_id"] for r in session_recordings] == [session_id_two] - - (session_recordings, _) = self._filter_recordings_by( - {"session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"lt"}'} - ) - assert [r["session_id"] for r in session_recordings] == [session_id_one] - - @snapshot_clickhouse_queries - def test_date_from_filter(self): - user = "test_date_from_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - produce_replay_summary( - distinct_id=user, - session_id="three days before base time", - first_timestamp=(self.an_hour_ago - relativedelta(days=3, seconds=100)), - last_timestamp=(self.an_hour_ago - relativedelta(days=3)), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user, - session_id="two days before base time", - first_timestamp=(self.an_hour_ago - relativedelta(days=2, seconds=100)), - last_timestamp=(self.an_hour_ago - relativedelta(days=2)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by({"date_from": self.an_hour_ago.strftime("%Y-%m-%d")}) - assert session_recordings == [] - - (session_recordings, _) = self._filter_recordings_by( - {"date_from": (self.an_hour_ago - relativedelta(days=2)).strftime("%Y-%m-%d")} - ) - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == "two days before base time" - - @snapshot_clickhouse_queries - def test_date_from_filter_cannot_search_before_ttl(self): - with freeze_time(self.an_hour_ago): - user = "test_date_from_filter_cannot_search_before_ttl-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - produce_replay_summary( - distinct_id=user, - session_id="storage is past ttl", - first_timestamp=(self.an_hour_ago - relativedelta(days=22)), - # an illegally long session but it started 22 days ago - last_timestamp=(self.an_hour_ago - relativedelta(days=3)), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user, - session_id="storage is not past ttl", - first_timestamp=(self.an_hour_ago - relativedelta(days=19)), - last_timestamp=(self.an_hour_ago - relativedelta(days=2)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - {"date_from": (self.an_hour_ago - relativedelta(days=20)).strftime("%Y-%m-%d")} - ) - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == "storage is not past ttl" - - (session_recordings, _) = self._filter_recordings_by( - {"date_from": (self.an_hour_ago - relativedelta(days=21)).strftime("%Y-%m-%d")} - ) - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == "storage is not past ttl" - - (session_recordings, _) = self._filter_recordings_by( - {"date_from": (self.an_hour_ago - relativedelta(days=22)).strftime("%Y-%m-%d")} - ) - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == "storage is not past ttl" - - @snapshot_clickhouse_queries - def test_date_to_filter(self): - user = "test_date_to_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - produce_replay_summary( - distinct_id=user, - session_id="three days before base time", - first_timestamp=(self.an_hour_ago - relativedelta(days=3, seconds=100)), - last_timestamp=(self.an_hour_ago - relativedelta(days=3)), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user, - session_id="two days before base time", - first_timestamp=(self.an_hour_ago - relativedelta(days=2, seconds=100)), - last_timestamp=(self.an_hour_ago - relativedelta(days=2)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - {"date_to": (self.an_hour_ago - relativedelta(days=4)).strftime("%Y-%m-%d")} - ) - assert session_recordings == [] - - (session_recordings, _) = self._filter_recordings_by( - {"date_to": (self.an_hour_ago - relativedelta(days=3)).strftime("%Y-%m-%d")} - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == "three days before base time" - - def test_recording_that_spans_time_bounds(self): - user = "test_recording_that_spans_time_bounds-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - day_line = datetime(2021, 11, 5) - session_id = f"session-one-{user}" - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=(day_line - relativedelta(hours=3)), - last_timestamp=(day_line + relativedelta(hours=3)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "date_to": day_line.strftime("%Y-%m-%d"), - "date_from": (day_line - relativedelta(days=10)).strftime("%Y-%m-%d"), - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id - assert session_recordings[0]["duration"] == 6 * 60 * 60 - - @snapshot_clickhouse_queries - def test_person_id_filter(self): - three_user_ids = [str(uuid4()) for _ in range(3)] - session_id_one = f"test_person_id_filter-{str(uuid4())}" - session_id_two = f"test_person_id_filter-{str(uuid4())}" - p = Person.objects.create( - team=self.team, - distinct_ids=[three_user_ids[0], three_user_ids[1]], - properties={"email": "bla"}, - ) - produce_replay_summary( - distinct_id=three_user_ids[0], - session_id=session_id_one, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=three_user_ids[1], - session_id=session_id_two, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=three_user_ids[2], - session_id=str(uuid4()), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by({"person_uuid": str(p.uuid)}) - assert sorted([r["session_id"] for r in session_recordings]) == sorted([session_id_two, session_id_one]) - - @snapshot_clickhouse_queries - def test_all_filters_at_once(self): - three_user_ids = [str(uuid4()) for _ in range(3)] - target_session_id = f"test_all_filters_at_once-{str(uuid4())}" - - p = Person.objects.create( - team=self.team, - distinct_ids=[three_user_ids[0], three_user_ids[1]], - properties={"email": "bla"}, - ) - custom_event_action = self.create_action(name="custom-event") - - produce_replay_summary( - distinct_id=three_user_ids[0], - session_id=target_session_id, - first_timestamp=(self.an_hour_ago - relativedelta(days=3)), - team_id=self.team.id, - ) - produce_replay_summary( - # does not match because of user distinct id - distinct_id=three_user_ids[2], - session_id=target_session_id, - first_timestamp=(self.an_hour_ago - relativedelta(days=3)), - team_id=self.team.id, - ) - self.create_event( - three_user_ids[0], - self.an_hour_ago - relativedelta(days=3), - properties={"$session_id": target_session_id}, - ) - self.create_event( - three_user_ids[0], - self.an_hour_ago - relativedelta(days=3), - event_name="custom-event", - properties={"$browser": "Chrome", "$session_id": target_session_id}, - ) - produce_replay_summary( - distinct_id=three_user_ids[1], - session_id=target_session_id, - first_timestamp=(self.an_hour_ago - relativedelta(days=3) + relativedelta(hours=6)), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=three_user_ids[1], - # does not match because of session id - session_id=str(uuid4()), - first_timestamp=(self.an_hour_ago - relativedelta(days=3) + relativedelta(hours=6)), - team_id=self.team.id, - ) - - flush_persons_and_events() - - (session_recordings, _) = self._filter_recordings_by( - { - "person_uuid": str(p.uuid), - "date_to": (self.an_hour_ago + relativedelta(days=3)).strftime("%Y-%m-%d"), - "date_from": (self.an_hour_ago - relativedelta(days=10)).strftime("%Y-%m-%d"), - "session_recording_duration": '{"type":"recording","key":"duration","value":60,"operator":"gt"}', - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "actions": [ - { - "id": custom_event_action.id, - "type": "actions", - "order": 1, - "name": "custom-event", - } - ], - } - ) - # TODO this test has no assertion🫠 - - def test_teams_dont_leak_event_filter(self): - user = "test_teams_dont_leak_event_filter-user" - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - another_team = Team.objects.create(organization=self.organization) - - session_id = f"test_teams_dont_leak_event_filter-{str(uuid4())}" - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event(1, self.an_hour_ago + relativedelta(seconds=15), team=another_team) - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ] - } - ) - assert session_recordings == [] - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["email"]) - def test_filter_with_person_properties_exact(self): - session_id_one, session_id_two = self._two_sessions_two_persons( - "test_filter_with_person_properties_exact", - session_one_person_properties={"email": "bla@gmail.com"}, - session_two_person_properties={"email": "bla2@hotmail.com"}, - ) - - query_results: SessionRecordingQueryResult = self._filter_recordings_by( - { - "properties": [ - { - "key": "email", - "value": ["bla@gmail.com"], - "operator": "exact", - "type": "person", - } - ] - } - ) - - assert [x["session_id"] for x in query_results.results] == [session_id_one] - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["email"]) - def test_filter_with_person_properties_not_contains(self): - session_id_one, session_id_two = self._two_sessions_two_persons( - "test_filter_with_person_properties_not_contains", - session_one_person_properties={"email": "bla@gmail.com"}, - session_two_person_properties={"email": "bla2@hotmail.com"}, - ) - - query_results: SessionRecordingQueryResult = self._filter_recordings_by( - {"properties": [{"key": "email", "value": "gmail.com", "operator": "not_icontains", "type": "person"}]} - ) - - assert [x["session_id"] for x in query_results.results] == [session_id_two] - - def _two_sessions_two_persons( - self, label: str, session_one_person_properties: dict, session_two_person_properties: dict - ) -> tuple[str, str]: - sessions = [] - - for i in range(2): - user = f"{label}-user-{i}" - session = f"{label}-session-{i}" - sessions.append(session) - - Person.objects.create( - team=self.team, - distinct_ids=[user], - properties=session_one_person_properties if i == 0 else session_two_person_properties, - ) - - produce_replay_summary( - distinct_id=user, - session_id=session, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user, - session_id=session, - first_timestamp=(self.an_hour_ago + relativedelta(seconds=30)), - team_id=self.team.id, - ) - - return sessions[0], sessions[1] - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["$some_prop"]) - def test_filter_with_cohort_properties(self): - with self.settings(USE_PRECALCULATED_CH_COHORT_PEOPLE=True): - with freeze_time("2021-08-21T20:00:00.000Z"): - user_one = "test_filter_with_cohort_properties-user" - user_two = "test_filter_with_cohort_properties-user2" - session_id_one = f"test_filter_with_cohort_properties-1-{str(uuid4())}" - session_id_two = f"test_filter_with_cohort_properties-2-{str(uuid4())}" - - Person.objects.create(team=self.team, distinct_ids=[user_one], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=[user_two], - properties={"email": "bla2", "$some_prop": "some_val"}, - ) - cohort = Cohort.objects.create( - team=self.team, - name="cohort1", - groups=[ - { - "properties": [ - { - "key": "$some_prop", - "value": "some_val", - "type": "person", - } - ] - } - ], - ) - cohort.calculate_people_ch(pending_version=0) - - produce_replay_summary( - distinct_id=user_one, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - # self.create_event(user_one, self.an_hour_ago, team=self.team) - produce_replay_summary( - distinct_id=user_one, - session_id=session_id_one, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user_two, - session_id=session_id_two, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - # self.create_event(user_two, self.an_hour_ago, team=self.team) - produce_replay_summary( - distinct_id=user_two, - session_id=session_id_two, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "properties": [ - { - "key": "id", - "value": cohort.pk, - "operator": None, - "type": "cohort", - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_two - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["$some_prop"]) - def test_filter_with_events_and_cohorts(self): - with self.settings(USE_PRECALCULATED_CH_COHORT_PEOPLE=True): - with freeze_time("2021-08-21T20:00:00.000Z"): - user_one = "test_filter_with_events_and_cohorts-user" - user_two = "test_filter_with_events_and_cohorts-user2" - session_id_one = f"test_filter_with_events_and_cohorts-1-{str(uuid4())}" - session_id_two = f"test_filter_with_events_and_cohorts-2-{str(uuid4())}" - - Person.objects.create(team=self.team, distinct_ids=[user_one], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=[user_two], - properties={"email": "bla2", "$some_prop": "some_val"}, - ) - cohort = Cohort.objects.create( - team=self.team, - name="cohort1", - groups=[ - { - "properties": [ - { - "key": "$some_prop", - "value": "some_val", - "type": "person", - } - ] - } - ], - ) - cohort.calculate_people_ch(pending_version=0) - - produce_replay_summary( - distinct_id=user_one, - session_id=session_id_one, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - user_one, - self.an_hour_ago, - team=self.team, - event_name="custom_event", - properties={"$session_id": session_id_one}, - ) - produce_replay_summary( - distinct_id=user_one, - session_id=session_id_one, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user_two, - session_id=session_id_two, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - user_two, - self.an_hour_ago, - team=self.team, - event_name="custom_event", - properties={"$session_id": session_id_two}, - ) - produce_replay_summary( - distinct_id=user_two, - session_id=session_id_two, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - # has to be in the cohort and pageview has to be in the events - # test data has one user in the cohort but no pageviews - "properties": [ - { - "key": "id", - "value": cohort.pk, - "operator": None, - "type": "cohort", - } - ], - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - } - ) - - assert len(session_recordings) == 0 - - (session_recordings, _) = self._filter_recordings_by( - { - "properties": [ - { - "key": "id", - "value": cohort.pk, - "operator": None, - "type": "cohort", - } - ], - "events": [ - { - "id": "custom_event", - "type": "events", - "order": 0, - "name": "custom_event", - } - ], - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id_two - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(["$current_url"]) - def test_event_filter_with_matching_on_session_id(self): - user_distinct_id = "test_event_filter_with_matching_on_session_id-user" - Person.objects.create(team=self.team, distinct_ids=[user_distinct_id], properties={"email": "bla"}) - session_id = f"test_event_filter_with_matching_on_session_id-1-{str(uuid4())}" - - self.create_event( - user_distinct_id, - self.an_hour_ago, - event_name="$pageview", - properties={"$session_id": session_id}, - ) - self.create_event( - user_distinct_id, - self.an_hour_ago, - event_name="$autocapture", - properties={"$session_id": str(uuid4())}, - ) - - produce_replay_summary( - distinct_id=user_distinct_id, - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user_distinct_id, - session_id=session_id, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$autocapture", - "type": "events", - "order": 0, - "name": "$autocapture", - } - ] - } - ) - assert session_recordings == [] - - @also_test_with_materialized_columns(event_properties=["$current_url", "$browser"], person_properties=["email"]) - @snapshot_clickhouse_queries - def test_event_filter_with_hogql_properties(self): - user = "test_event_filter_with_hogql_properties-user" - - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id = f"test_event_filter_with_hogql_properties-1-{str(uuid4())}" - self.create_event( - user, - self.an_hour_ago, - properties={ - "$browser": "Chrome", - "$session_id": session_id, - "$window_id": str(uuid4()), - }, - ) - - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [ - {"key": "properties.$browser == 'Chrome'", "type": "hogql"}, - ], - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [{"key": "properties.$browser == 'Firefox'", "type": "hogql"}], - } - ] - } - ) - - assert session_recordings == [] - - @snapshot_clickhouse_queries - def test_event_filter_with_hogql_person_properties(self): - user = "test_event_filter_with_hogql_properties-user" - - Person.objects.create(team=self.team, distinct_ids=[user], properties={"email": "bla"}) - - session_id = f"test_event_filter_with_hogql_properties-1-{str(uuid4())}" - self.create_event( - user, - self.an_hour_ago, - properties={ - "$browser": "Chrome", - "$session_id": session_id, - "$window_id": str(uuid4()), - }, - ) - - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id=user, - session_id=session_id, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [ - { - "key": "person.properties.email == 'bla'", - "type": "hogql", - }, - ], - } - ] - } - ) - - assert len(session_recordings) == 1 - assert session_recordings[0]["session_id"] == session_id - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [ - { - "key": "person.properties.email == 'something else'", - "type": "hogql", - }, - ], - } - ] - } - ) - - assert session_recordings == [] - - @also_test_with_materialized_columns(["$current_url", "$browser"]) - @snapshot_clickhouse_queries - @freeze_time("2021-01-21T20:00:00.000Z") - def test_any_event_filter_with_properties(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - page_view_session_id = f"pageview-session-{str(uuid4())}" - my_custom_event_session_id = f"my-custom-event-session-{str(uuid4())}" - non_matching__event_session_id = f"non-matching-event-session-{str(uuid4())}" - - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$browser": "Chrome", - "$session_id": page_view_session_id, - "$window_id": "1", - }, - event_name="$pageview", - ) - - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$browser": "Chrome", - "$session_id": my_custom_event_session_id, - "$window_id": "1", - }, - event_name="my-custom-event", - ) - - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$browser": "Safari", - "$session_id": non_matching__event_session_id, - "$window_id": "1", - }, - event_name="my-non-matching-event", - ) - - produce_replay_summary( - distinct_id="user", - session_id=page_view_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id="user", - session_id=my_custom_event_session_id, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - produce_replay_summary( - distinct_id="user", - session_id=non_matching__event_session_id, - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - # an id of null means "match any event" - "id": None, - "type": "events", - "order": 0, - "name": "All events", - "properties": [], - } - ] - } - ) - - assert sorted( - [sr["session_id"] for sr in session_recordings], - ) == [ - my_custom_event_session_id, - non_matching__event_session_id, - page_view_session_id, - ] - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - # an id of null means "match any event" - "id": None, - "type": "events", - "order": 0, - "name": "All events", - "properties": [ - { - "key": "$browser", - "value": ["Chrome"], - "operator": "exact", - "type": "event", - } - ], - } - ] - } - ) - - assert sorted( - [sr["session_id"] for sr in session_recordings], - ) == [ - my_custom_event_session_id, - page_view_session_id, - ] - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": None, - "type": "events", - "order": 0, - "name": "All events", - "properties": [ - { - "key": "$browser", - "value": ["Firefox"], - "operator": "exact", - "type": "event", - } - ], - } - ] - } - ) - assert session_recordings == [] - - @snapshot_clickhouse_queries - @freeze_time("2021-01-21T20:00:00.000Z") - def test_filter_for_recordings_with_console_logs(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - with_logs_session_id = f"with-logs-session-{str(uuid4())}" - without_logs_session_id = f"no-logs-session-{str(uuid4())}" - - produce_replay_summary( - distinct_id="user", - session_id=with_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_log_count=4, - ) - produce_replay_summary( - distinct_id="user", - session_id=without_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["info"]}) - - assert sorted( - [(sr["session_id"], sr["console_log_count"]) for sr in session_recordings], - key=lambda x: x[0], - ) == [ - (with_logs_session_id, 4), - ] - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["warn"]}) - - assert session_recordings == [] - - @snapshot_clickhouse_queries - @freeze_time("2021-01-21T20:00:00.000Z") - def test_filter_for_recordings_with_console_warns(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - with_logs_session_id = f"with-logs-session-{str(uuid4())}" - without_logs_session_id = f"no-logs-session-{str(uuid4())}" - - produce_replay_summary( - distinct_id="user", - session_id=with_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_warn_count=4, - ) - produce_replay_summary( - distinct_id="user", - session_id=without_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["warn"]}) - - assert sorted( - [(sr["session_id"], sr["console_warn_count"]) for sr in session_recordings], - key=lambda x: x[0], - ) == [ - (with_logs_session_id, 4), - ] - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["info"]}) - - assert session_recordings == [] - - @snapshot_clickhouse_queries - @freeze_time("2021-01-21T20:00:00.000Z") - def test_filter_for_recordings_with_console_errors(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - with_logs_session_id = f"with-logs-session-{str(uuid4())}" - without_logs_session_id = f"no-logs-session-{str(uuid4())}" - - produce_replay_summary( - distinct_id="user", - session_id=with_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_error_count=4, - ) - produce_replay_summary( - distinct_id="user", - session_id=without_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["error"]}) - - assert sorted( - [(sr["session_id"], sr["console_error_count"]) for sr in session_recordings], - key=lambda x: x[0], - ) == [ - (with_logs_session_id, 4), - ] - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["info"]}) - - assert session_recordings == [] - - @snapshot_clickhouse_queries - @freeze_time("2021-01-21T20:00:00.000Z") - def test_filter_for_recordings_with_mixed_console_counts(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - with_logs_session_id = f"with-logs-session-{str(uuid4())}" - with_warns_session_id = f"with-warns-session-{str(uuid4())}" - with_errors_session_id = f"with-errors-session-{str(uuid4())}" - with_two_session_id = f"with-two-session-{str(uuid4())}" - - produce_replay_summary( - distinct_id="user", - session_id=with_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_log_count=4, - ) - produce_replay_summary( - distinct_id="user", - session_id=with_warns_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_warn_count=4, - ) - produce_replay_summary( - distinct_id="user", - session_id=with_errors_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_error_count=4, - ) - produce_replay_summary( - distinct_id="user", - session_id=with_two_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_error_count=4, - console_log_count=3, - ) - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["warn", "error"]}) - - assert sorted([sr["session_id"] for sr in session_recordings]) == sorted( - [ - with_errors_session_id, - with_two_session_id, - with_warns_session_id, - ] - ) - - (session_recordings, _) = self._filter_recordings_by({"console_logs": ["info"]}) - - assert sorted([sr["session_id"] for sr in session_recordings]) == sorted( - [ - with_two_session_id, - with_logs_session_id, - ] - ) - - @snapshot_clickhouse_queries - @freeze_time("2021-01-21T20:00:00.000Z") - def test_filter_for_recordings_by_console_text(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - with_logs_session_id = "with-logs-session" - with_warns_session_id = "with-warns-session" - with_errors_session_id = "with-errors-session" - with_two_session_id = "with-two-session" - - produce_replay_summary( - distinct_id="user", - session_id=with_logs_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_log_count=4, - log_messages={ - "info": [ - "log message 1", - "log message 2", - "log message 3", - "log message 4", - ] - }, - ) - produce_replay_summary( - distinct_id="user", - session_id=with_warns_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_warn_count=5, - log_messages={ - "warn": [ - "warn message 1", - "warn message 2", - "warn message 3", - "warn message 4", - "warn message 5", - ] - }, - ) - produce_replay_summary( - distinct_id="user", - session_id=with_errors_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_error_count=4, - log_messages={ - "error": [ - "error message 1", - "error message 2", - "error message 3", - "error message 4", - ] - }, - ) - produce_replay_summary( - distinct_id="user", - session_id=with_two_session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - console_error_count=4, - console_log_count=3, - log_messages={ - "error": [ - "error message 1", - "error message 2", - "error message 3", - "error message 4", - ], - "info": ["log message 1", "log message 2", "log message 3"], - }, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - # there are 5 warn and 4 error logs, message 4 matches in both - "console_logs": ["warn", "error"], - "console_search_query": "message 4", - } - ) - - assert sorted([sr["session_id"] for sr in session_recordings]) == sorted( - [ - with_errors_session_id, - with_two_session_id, - with_warns_session_id, - ] - ) - - (session_recordings, _) = self._filter_recordings_by( - { - # there are 5 warn and 4 error logs, message 5 matches only matches in warn - "console_logs": ["warn", "error"], - "console_search_query": "message 5", - } - ) - - assert sorted([sr["session_id"] for sr in session_recordings]) == sorted( - [ - with_warns_session_id, - ] - ) - - (session_recordings, _) = self._filter_recordings_by( - { - # match is case-insensitive - "console_logs": ["warn", "error"], - "console_search_query": "MESSAGE 5", - } - ) - - assert sorted([sr["session_id"] for sr in session_recordings]) == sorted( - [ - with_warns_session_id, - ] - ) - - (session_recordings, _) = self._filter_recordings_by( - { - # message 5 does not match log level "info" - "console_logs": ["info"], - "console_search_query": "message 5", - } - ) - - assert sorted([sr["session_id"] for sr in session_recordings]) == sorted([]) - - @also_test_with_materialized_columns( - event_properties=["is_internal_user"], - person_properties=["email"], - verify_no_jsonextract=False, - ) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_event_filter_with_test_accounts_excluded(self): - self.team.test_account_filters = [ - { - "key": "email", - "value": "@posthog.com", - "operator": "not_icontains", - "type": "person", - }, - { - "key": "is_internal_user", - "value": ["false"], - "operator": "exact", - "type": "event", - }, - {"key": "properties.$browser == 'Chrome'", "type": "hogql"}, - ] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$session_id": "1", - "$window_id": "1", - "is_internal_user": "true", - }, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 0) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 1) - - @also_test_with_materialized_columns( - event_properties=["$browser"], - person_properties=["email"], - verify_no_jsonextract=False, - ) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_event_filter_with_hogql_event_properties_test_accounts_excluded(self): - self.team.test_account_filters = [ - {"key": "properties.$browser == 'Chrome'", "type": "hogql"}, - ] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=["user2"], - properties={"email": "not-the-other-one"}, - ) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={"$session_id": "1", "$window_id": "1", "$browser": "Chrome"}, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - produce_replay_summary( - distinct_id="user2", - session_id="2", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user2", - self.an_hour_ago, - properties={"$session_id": "2", "$window_id": "1", "$browser": "Firefox"}, - ) - - # there are 2 pageviews - (session_recordings, _) = self._filter_recordings_by( - { - # pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 2) - - self.team.test_account_filters = [ - {"key": "person.properties.email == 'bla'", "type": "hogql"}, - ] - self.team.save() - - (session_recordings, _) = self._filter_recordings_by( - { - # only 1 pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - self.team.test_account_filters = [ - {"key": "properties.$browser == 'Chrome'", "type": "hogql"}, - {"key": "person.properties.email == 'bla'", "type": "hogql"}, - ] - self.team.save() - - # one user sessions matches the person + event test_account filter - (session_recordings, _) = self._filter_recordings_by( - { - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - # TRICKY: we had to disable use of materialized columns for part of the query generation - # due to RAM usage issues on the EU cluster - @also_test_with_materialized_columns(event_properties=["is_internal_user"], verify_no_jsonextract=False) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_top_level_event_property_test_account_filter(self): - """ - This is a regression test. A user with an $ip test account filter - reported the filtering wasn't working. - - The filter wasn't triggering the "should join events check", and so we didn't apply the filter at all - """ - self.team.test_account_filters = [ - { - "key": "is_internal_user", - "value": ["false"], - "operator": "exact", - "type": "event", - }, - ] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=["user2"], - properties={"email": "not-the-other-one"}, - ) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$session_id": "1", - "$window_id": "1", - "is_internal_user": False, - }, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - produce_replay_summary( - distinct_id="user2", - session_id="2", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user2", - self.an_hour_ago, - properties={ - "$session_id": "2", - "$window_id": "1", - "is_internal_user": True, - }, - ) - - # there are 2 pageviews - (session_recordings, _) = self._filter_recordings_by( - { - # pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 2) - - (session_recordings, _) = self._filter_recordings_by( - { - # only 1 pageview that matches the test_accounts filter - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - # TRICKY: we had to disable use of materialized columns for part of the query generation - # due to RAM usage issues on the EU cluster - @also_test_with_materialized_columns(event_properties=["is_internal_user"], verify_no_jsonextract=True) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_top_level_event_property_test_account_filter_allowing_denormalized_props(self): - """ - This is a duplicate of the test test_top_level_event_property_test_account_filter - but with denormalized props allowed - """ - - with self.settings(ALLOW_DENORMALIZED_PROPS_IN_LISTING=True): - self.team.test_account_filters = [ - { - "key": "is_internal_user", - "value": ["false"], - "operator": "exact", - "type": "event", - }, - ] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=["user2"], - properties={"email": "not-the-other-one"}, - ) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$session_id": "1", - "$window_id": "1", - "is_internal_user": False, - }, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - produce_replay_summary( - distinct_id="user2", - session_id="2", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user2", - self.an_hour_ago, - properties={ - "$session_id": "2", - "$window_id": "1", - "is_internal_user": True, - }, - ) - - # there are 2 pageviews - (session_recordings, _) = self._filter_recordings_by( - { - # pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 2) - - (session_recordings, _) = self._filter_recordings_by( - { - # only 1 pageview that matches the test_accounts filter - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - @also_test_with_materialized_columns(event_properties=["is_internal_user"]) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_top_level_hogql_event_property_test_account_filter(self): - """ - This is a regression test. A user with an $ip test account filter - reported the filtering wasn't working. - - The filter wasn't triggering the "should join events" check, and so we didn't apply the filter at all - """ - self.team.test_account_filters = [ - {"key": "properties.is_internal_user == 'true'", "type": "hogql"}, - ] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=["user2"], - properties={"email": "not-the-other-one"}, - ) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$session_id": "1", - "$window_id": "1", - "is_internal_user": False, - }, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - produce_replay_summary( - distinct_id="user2", - session_id="2", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user2", - self.an_hour_ago, - properties={ - "$session_id": "2", - "$window_id": "1", - "is_internal_user": True, - }, - ) - - # there are 2 pageviews - (session_recordings, _) = self._filter_recordings_by( - { - # pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 2) - - (session_recordings, _) = self._filter_recordings_by( - { - # only 1 pageview that matches the test_accounts filter - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - @also_test_with_materialized_columns(person_properties=["email"], verify_no_jsonextract=False) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_top_level_hogql_person_property_test_account_filter(self): - """ - This is a regression test. A user with an $ip test account filter - reported the filtering wasn't working. - - The filter wasn't triggering the "should join events" check, and so we didn't apply the filter at all - """ - self.team.test_account_filters = [ - {"key": "person.properties.email == 'bla'", "type": "hogql"}, - ] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=["user2"], - properties={"email": "not-the-other-one"}, - ) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$session_id": "1", - "$window_id": "1", - "is_internal_user": False, - }, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - produce_replay_summary( - distinct_id="user2", - session_id="2", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user2", - self.an_hour_ago, - properties={ - "$session_id": "2", - "$window_id": "1", - "is_internal_user": True, - }, - ) - - # there are 2 pageviews - (session_recordings, _) = self._filter_recordings_by( - { - # pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 2) - - (session_recordings, _) = self._filter_recordings_by( - { - # only 1 pageview that matches the test_accounts filter - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - @also_test_with_materialized_columns(person_properties=["email"], verify_no_jsonextract=False) - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_top_level_person_property_test_account_filter(self): - """ - This is a regression test. A user with an $ip test account filter - reported the filtering wasn't working. - - The filter wasn't triggering the "should join events" check, and so we didn't apply the filter at all - """ - self.team.test_account_filters = [{"key": "email", "value": ["bla"], "operator": "exact", "type": "person"}] - self.team.save() - - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create( - team=self.team, - distinct_ids=["user2"], - properties={"email": "not-the-other-one"}, - ) - - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user", - self.an_hour_ago, - properties={ - "$session_id": "1", - "$window_id": "1", - "is_internal_user": False, - }, - ) - produce_replay_summary( - distinct_id="user", - session_id="1", - first_timestamp=self.an_hour_ago + relativedelta(seconds=30), - team_id=self.team.id, - ) - - produce_replay_summary( - distinct_id="user2", - session_id="2", - first_timestamp=self.an_hour_ago, - team_id=self.team.id, - ) - self.create_event( - "user2", - self.an_hour_ago, - properties={ - "$session_id": "2", - "$window_id": "1", - "is_internal_user": True, - }, - ) - - # there are 2 pageviews - (session_recordings, _) = self._filter_recordings_by( - { - # pageview that matches the hogql test_accounts filter - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - } - ], - "filter_test_accounts": False, - } - ) - self.assertEqual(len(session_recordings), 2) - - (session_recordings, _) = self._filter_recordings_by( - { - # only 1 pageview that matches the test_accounts filter - "filter_test_accounts": True, - } - ) - self.assertEqual(len(session_recordings), 1) - - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_event_filter_with_two_events_and_multiple_teams(self): - another_team = Team.objects.create(organization=self.organization) - - # two teams, user with the same properties - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - Person.objects.create(team=another_team, distinct_ids=["user"], properties={"email": "bla"}) - - # a recording session with a pageview and a pageleave - self._a_session_with_two_events(self.team, "1") - self._a_session_with_two_events(another_team, "2") - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - }, - { - "id": "$pageleave", - "type": "events", - "order": 0, - "name": "$pageleave", - }, - ], - } - ) - - self.assertEqual([sr["session_id"] for sr in session_recordings], ["1"]) - - def _a_session_with_two_events(self, team: Team, session_id: str) -> None: - produce_replay_summary( - distinct_id="user", - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=team.pk, - ) - self.create_event( - "user", - self.an_hour_ago, - team=team, - event_name="$pageview", - properties={"$session_id": session_id, "$window_id": "1"}, - ) - self.create_event( - "user", - self.an_hour_ago, - team=team, - event_name="$pageleave", - properties={"$session_id": session_id, "$window_id": "1"}, - ) - - @freeze_time("2021-01-21T20:00:00.000Z") - @snapshot_clickhouse_queries - def test_event_filter_with_group_filter(self): - Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) - session_id = f"test_event_filter_with_group_filter-ONE-{uuid4()}" - different_group_session = f"test_event_filter_with_group_filter-TWO-{uuid4()}" - - produce_replay_summary( - distinct_id="user", - session_id=session_id, - first_timestamp=self.an_hour_ago, - team_id=self.team.pk, - ) - produce_replay_summary( - distinct_id="user", - session_id=different_group_session, - first_timestamp=self.an_hour_ago, - team_id=self.team.pk, - ) - - GroupTypeMapping.objects.create(team=self.team, group_type="project", group_type_index=0) - create_group( - team_id=self.team.pk, - group_type_index=0, - group_key="project:1", - properties={"name": "project one"}, - ) - - GroupTypeMapping.objects.create(team=self.team, group_type="organization", group_type_index=1) - create_group( - team_id=self.team.pk, - group_type_index=1, - group_key="org:1", - properties={"name": "org one"}, - ) - - self.create_event( - "user", - self.an_hour_ago, - team=self.team, - event_name="$pageview", - properties={ - "$session_id": session_id, - "$window_id": "1", - "$group_1": "org:1", - }, - ) - self.create_event( - "user", - self.an_hour_ago, - team=self.team, - event_name="$pageview", - properties={ - "$session_id": different_group_session, - "$window_id": "1", - "$group_0": "project:1", - }, - ) - - (session_recordings, _) = self._filter_recordings_by( - { - "events": [ - { - "id": "$pageview", - "type": "events", - "order": 0, - "name": "$pageview", - "properties": [ - { - "key": "name", - "value": ["org one"], - "operator": "exact", - "type": "group", - "group_type_index": 1, - } - ], - } - ], - } - ) - - self.assertEqual([sr["session_id"] for sr in session_recordings], [session_id]) diff --git a/posthog/session_recordings/session_recording_api.py b/posthog/session_recordings/session_recording_api.py index e4ecc1ccfe37a8..0b43b05c4e5715 100644 --- a/posthog/session_recordings/session_recording_api.py +++ b/posthog/session_recordings/session_recording_api.py @@ -37,12 +37,9 @@ SessionRecordingViewed, ) -from posthog.session_recordings.queries.session_recording_list_from_replay_summary import ( - SessionRecordingListFromReplaySummary, - SessionIdEventsQuery, -) from posthog.session_recordings.queries.session_recording_list_from_filters import ( SessionRecordingListFromFilters, + ReplayFiltersEventsSubQuery, ) from posthog.session_recordings.queries.session_recording_properties import ( SessionRecordingProperties, @@ -302,8 +299,21 @@ def matching_events(self, request: request.Request, *args: Any, **kwargs: Any) - "Must specify at least one event or action filter", ) - matching_events: list[str] = SessionIdEventsQuery(filter=filter, team=self.team).matching_events() - return JsonResponse(data={"results": matching_events}) + distinct_id = str(cast(User, request.user).distinct_id) + modifiers = safely_read_modifiers_overrides(distinct_id, self.team) + matching_events_query_response = ReplayFiltersEventsSubQuery( + filter=filter, team=self.team, hogql_query_modifiers=modifiers + ).get_event_ids_for_session() + + response = JsonResponse(data={"results": matching_events_query_response.results}) + + response.headers["Server-Timing"] = ", ".join( + f"{key};dur={round(duration, ndigits=2)}" + for key, duration in _generate_timings( + matching_events_query_response.timings, ServerTimingsGathered() + ).items() + ) + return response # Returns metadata about the recording def retrieve(self, request: request.Request, *args: Any, **kwargs: Any) -> Response: @@ -756,23 +766,13 @@ def list_recordings( filter = filter.shallow_clone({SESSION_RECORDINGS_FILTER_IDS: remaining_session_ids}) if (all_session_ids and filter.session_ids) or not all_session_ids: - has_hog_ql_filtering = request.GET.get("hog_ql_filtering", "false") == "true" - - if has_hog_ql_filtering: - distinct_id = str(cast(User, request.user).distinct_id) - modifiers = safely_read_modifiers_overrides(distinct_id, team) + distinct_id = str(cast(User, request.user).distinct_id) + modifiers = safely_read_modifiers_overrides(distinct_id, team) - with timer("load_recordings_from_hogql"): - (ch_session_recordings, more_recordings_available, hogql_timings) = SessionRecordingListFromFilters( - filter=filter, team=team, hogql_query_modifiers=modifiers - ).run() - else: - # Only go to clickhouse if we still have remaining specified IDs, or we are not specifying IDs - with timer("load_recordings_from_clickhouse"): - ( - ch_session_recordings, - more_recordings_available, - ) = SessionRecordingListFromReplaySummary(filter=filter, team=team).run() + with timer("load_recordings_from_hogql"): + (ch_session_recordings, more_recordings_available, hogql_timings) = SessionRecordingListFromFilters( + filter=filter, team=team, hogql_query_modifiers=modifiers + ).run() with timer("build_recordings"): recordings_from_clickhouse = SessionRecording.get_or_build_from_clickhouse(team, ch_session_recordings) diff --git a/posthog/session_recordings/test/__snapshots__/test_session_recordings.ambr b/posthog/session_recordings/test/__snapshots__/test_session_recordings.ambr index 6369fc4d2bec8d..1241e89b6aa2a8 100644 --- a/posthog/session_recordings/test/__snapshots__/test_session_recordings.ambr +++ b/posthog/session_recordings/test/__snapshots__/test_session_recordings.ambr @@ -429,62 +429,76 @@ # --- # name: TestSessionRecordings.test_get_session_recordings.16 ''' - SELECT "posthog_sessionrecording"."id", - "posthog_sessionrecording"."session_id", - "posthog_sessionrecording"."team_id", - "posthog_sessionrecording"."created_at", - "posthog_sessionrecording"."deleted", - "posthog_sessionrecording"."object_storage_path", - "posthog_sessionrecording"."distinct_id", - "posthog_sessionrecording"."duration", - "posthog_sessionrecording"."active_seconds", - "posthog_sessionrecording"."inactive_seconds", - "posthog_sessionrecording"."start_time", - "posthog_sessionrecording"."end_time", - "posthog_sessionrecording"."click_count", - "posthog_sessionrecording"."keypress_count", - "posthog_sessionrecording"."mouse_activity_count", - "posthog_sessionrecording"."console_log_count", - "posthog_sessionrecording"."console_warn_count", - "posthog_sessionrecording"."console_error_count", - "posthog_sessionrecording"."start_url", - "posthog_sessionrecording"."storage_version" - FROM "posthog_sessionrecording" - WHERE ("posthog_sessionrecording"."session_id" IN ('test_get_session_recordings-1', - 'test_get_session_recordings-2') - AND "posthog_sessionrecording"."team_id" = 2) + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 ''' # --- # name: TestSessionRecordings.test_get_session_recordings.17 ''' - SELECT "posthog_sessionrecordingviewed"."session_id" - FROM "posthog_sessionrecordingviewed" - WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 - AND "posthog_sessionrecordingviewed"."user_id" = 2) + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 ''' # --- # name: TestSessionRecordings.test_get_session_recordings.18 ''' - SELECT "posthog_persondistinctid"."id", - "posthog_persondistinctid"."team_id", - "posthog_persondistinctid"."person_id", - "posthog_persondistinctid"."distinct_id", - "posthog_persondistinctid"."version", - "posthog_person"."id", - "posthog_person"."created_at", - "posthog_person"."properties_last_updated_at", - "posthog_person"."properties_last_operation", - "posthog_person"."team_id", - "posthog_person"."properties", - "posthog_person"."is_user_id", - "posthog_person"."is_identified", - "posthog_person"."uuid", - "posthog_person"."version" - FROM "posthog_persondistinctid" - INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") - WHERE ("posthog_persondistinctid"."distinct_id" IN ('user2', - 'user_one_0') - AND "posthog_persondistinctid"."team_id" = 2) + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.19 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) ''' # --- # name: TestSessionRecordings.test_get_session_recordings.2 @@ -549,6 +563,151 @@ LIMIT 21 ''' # --- +# name: TestSessionRecordings.test_get_session_recordings.20 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.21 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.22 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.23 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.24 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.25 + ''' + SELECT "posthog_sessionrecording"."id", + "posthog_sessionrecording"."session_id", + "posthog_sessionrecording"."team_id", + "posthog_sessionrecording"."created_at", + "posthog_sessionrecording"."deleted", + "posthog_sessionrecording"."object_storage_path", + "posthog_sessionrecording"."distinct_id", + "posthog_sessionrecording"."duration", + "posthog_sessionrecording"."active_seconds", + "posthog_sessionrecording"."inactive_seconds", + "posthog_sessionrecording"."start_time", + "posthog_sessionrecording"."end_time", + "posthog_sessionrecording"."click_count", + "posthog_sessionrecording"."keypress_count", + "posthog_sessionrecording"."mouse_activity_count", + "posthog_sessionrecording"."console_log_count", + "posthog_sessionrecording"."console_warn_count", + "posthog_sessionrecording"."console_error_count", + "posthog_sessionrecording"."start_url", + "posthog_sessionrecording"."storage_version" + FROM "posthog_sessionrecording" + WHERE ("posthog_sessionrecording"."session_id" IN ('test_get_session_recordings-1', + 'test_get_session_recordings-2') + AND "posthog_sessionrecording"."team_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.26 + ''' + SELECT "posthog_sessionrecordingviewed"."session_id" + FROM "posthog_sessionrecordingviewed" + WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 + AND "posthog_sessionrecordingviewed"."user_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_get_session_recordings.27 + ''' + SELECT "posthog_persondistinctid"."id", + "posthog_persondistinctid"."team_id", + "posthog_persondistinctid"."person_id", + "posthog_persondistinctid"."distinct_id", + "posthog_persondistinctid"."version", + "posthog_person"."id", + "posthog_person"."created_at", + "posthog_person"."properties_last_updated_at", + "posthog_person"."properties_last_operation", + "posthog_person"."team_id", + "posthog_person"."properties", + "posthog_person"."is_user_id", + "posthog_person"."is_identified", + "posthog_person"."uuid", + "posthog_person"."version" + FROM "posthog_persondistinctid" + INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") + WHERE ("posthog_persondistinctid"."distinct_id" IN ('user2', + 'user_one_0') + AND "posthog_persondistinctid"."team_id" = 2) + ''' +# --- # name: TestSessionRecordings.test_get_session_recordings.3 ''' SELECT "posthog_team"."id", @@ -1071,6 +1230,165 @@ ''' # --- # name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.10 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.100 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.101 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.102 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.103 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.104 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.105 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.106 + ''' + SELECT "posthog_sessionrecording"."id", + "posthog_sessionrecording"."session_id", + "posthog_sessionrecording"."team_id", + "posthog_sessionrecording"."created_at", + "posthog_sessionrecording"."deleted", + "posthog_sessionrecording"."object_storage_path", + "posthog_sessionrecording"."distinct_id", + "posthog_sessionrecording"."duration", + "posthog_sessionrecording"."active_seconds", + "posthog_sessionrecording"."inactive_seconds", + "posthog_sessionrecording"."start_time", + "posthog_sessionrecording"."end_time", + "posthog_sessionrecording"."click_count", + "posthog_sessionrecording"."keypress_count", + "posthog_sessionrecording"."mouse_activity_count", + "posthog_sessionrecording"."console_log_count", + "posthog_sessionrecording"."console_warn_count", + "posthog_sessionrecording"."console_error_count", + "posthog_sessionrecording"."start_url", + "posthog_sessionrecording"."storage_version" + FROM "posthog_sessionrecording" + WHERE ("posthog_sessionrecording"."session_id" IN ('1', + '2', + '3', + '4', + '5', + '6') + AND "posthog_sessionrecording"."team_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.107 + ''' + SELECT "posthog_sessionrecordingviewed"."session_id" + FROM "posthog_sessionrecordingviewed" + WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 + AND "posthog_sessionrecordingviewed"."user_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.108 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -1089,11 +1407,16 @@ "posthog_person"."version" FROM "posthog_persondistinctid" INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") - WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1') + WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', + 'user2', + 'user3', + 'user4', + 'user5', + 'user6') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.11 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.109 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1155,7 +1478,25 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.12 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.11 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.110 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -1187,7 +1528,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.13 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.111 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1242,7 +1583,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.14 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.112 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -1273,7 +1614,174 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.15 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.113 + ''' + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.114 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.115 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.116 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.117 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.118 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.119 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.12 + ''' + SELECT "posthog_sessionrecordingviewed"."session_id" + FROM "posthog_sessionrecordingviewed" + WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 + AND "posthog_sessionrecordingviewed"."user_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.120 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.121 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.122 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -1297,11 +1805,16 @@ "posthog_sessionrecording"."storage_version" FROM "posthog_sessionrecording" WHERE ("posthog_sessionrecording"."session_id" IN ('1', - '2') - AND "posthog_sessionrecording"."team_id" = 2) - ''' + '2', + '3', + '4', + '5', + '6', + '7') + AND "posthog_sessionrecording"."team_id" = 2) + ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.16 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.123 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -1309,7 +1822,7 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.17 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.124 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -1329,11 +1842,16 @@ FROM "posthog_persondistinctid" INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', - 'user2') + 'user2', + 'user3', + 'user4', + 'user5', + 'user6', + 'user7') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.18 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.125 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1395,7 +1913,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.19 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.126 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -1427,7 +1945,62 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.2 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.127 + ''' + SELECT "posthog_team"."id", + "posthog_team"."uuid", + "posthog_team"."organization_id", + "posthog_team"."project_id", + "posthog_team"."api_token", + "posthog_team"."app_urls", + "posthog_team"."name", + "posthog_team"."slack_incoming_webhook", + "posthog_team"."created_at", + "posthog_team"."updated_at", + "posthog_team"."anonymize_ips", + "posthog_team"."completed_snippet_onboarding", + "posthog_team"."has_completed_onboarding_for", + "posthog_team"."ingested_event", + "posthog_team"."autocapture_opt_out", + "posthog_team"."autocapture_exceptions_opt_in", + "posthog_team"."autocapture_exceptions_errors_to_ignore", + "posthog_team"."session_recording_opt_in", + "posthog_team"."session_recording_sample_rate", + "posthog_team"."session_recording_minimum_duration_milliseconds", + "posthog_team"."session_recording_linked_flag", + "posthog_team"."session_recording_network_payload_capture_config", + "posthog_team"."session_replay_config", + "posthog_team"."capture_console_log_opt_in", + "posthog_team"."capture_performance_opt_in", + "posthog_team"."surveys_opt_in", + "posthog_team"."heatmaps_opt_in", + "posthog_team"."session_recording_version", + "posthog_team"."signup_token", + "posthog_team"."is_demo", + "posthog_team"."access_control", + "posthog_team"."week_start_day", + "posthog_team"."inject_web_apps", + "posthog_team"."test_account_filters", + "posthog_team"."test_account_filters_default_checked", + "posthog_team"."path_cleaning_filters", + "posthog_team"."timezone", + "posthog_team"."data_attributes", + "posthog_team"."person_display_name_properties", + "posthog_team"."live_events_columns", + "posthog_team"."recording_domains", + "posthog_team"."primary_dashboard_id", + "posthog_team"."extra_settings", + "posthog_team"."modifiers", + "posthog_team"."correlation_config", + "posthog_team"."session_recording_retention_period_days", + "posthog_team"."external_data_workspace_id", + "posthog_team"."external_data_workspace_last_synced_at" + FROM "posthog_team" + WHERE "posthog_team"."id" = 2 + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.128 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -1458,7 +2031,32 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.20 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.129 + ''' + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.13 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1506,6 +2104,13 @@ "posthog_team"."modifiers", "posthog_team"."correlation_config", "posthog_team"."session_recording_retention_period_days", + "posthog_team"."plugins_opt_in", + "posthog_team"."opt_out_capture", + "posthog_team"."event_names", + "posthog_team"."event_names_with_usage", + "posthog_team"."event_properties", + "posthog_team"."event_properties_with_usage", + "posthog_team"."event_properties_numerical", "posthog_team"."external_data_workspace_id", "posthog_team"."external_data_workspace_last_synced_at" FROM "posthog_team" @@ -1513,38 +2118,141 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.21 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.130 ''' - SELECT "posthog_organizationmembership"."id", - "posthog_organizationmembership"."organization_id", - "posthog_organizationmembership"."user_id", - "posthog_organizationmembership"."level", - "posthog_organizationmembership"."joined_at", - "posthog_organizationmembership"."updated_at", - "posthog_organization"."id", - "posthog_organization"."name", - "posthog_organization"."slug", - "posthog_organization"."created_at", - "posthog_organization"."updated_at", - "posthog_organization"."plugins_access_level", - "posthog_organization"."for_internal_metrics", - "posthog_organization"."is_member_join_email_enabled", - "posthog_organization"."enforce_2fa", - "posthog_organization"."is_hipaa", - "posthog_organization"."customer_id", - "posthog_organization"."available_product_features", - "posthog_organization"."usage", - "posthog_organization"."never_drop_data", - "posthog_organization"."customer_trust_scores", - "posthog_organization"."setup_section_2_completed", - "posthog_organization"."personalization", - "posthog_organization"."domain_whitelist" - FROM "posthog_organizationmembership" - INNER JOIN "posthog_organization" ON ("posthog_organizationmembership"."organization_id" = "posthog_organization"."id") - WHERE "posthog_organizationmembership"."user_id" = 2 + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.22 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.131 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.132 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.133 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.134 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.135 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.136 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.137 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.138 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -1569,11 +2277,16 @@ FROM "posthog_sessionrecording" WHERE ("posthog_sessionrecording"."session_id" IN ('1', '2', - '3') + '3', + '4', + '5', + '6', + '7', + '8') AND "posthog_sessionrecording"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.23 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.139 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -1581,7 +2294,39 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.24 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.14 + ''' + SELECT "posthog_user"."id", + "posthog_user"."password", + "posthog_user"."last_login", + "posthog_user"."first_name", + "posthog_user"."last_name", + "posthog_user"."is_staff", + "posthog_user"."is_active", + "posthog_user"."date_joined", + "posthog_user"."uuid", + "posthog_user"."current_organization_id", + "posthog_user"."current_team_id", + "posthog_user"."email", + "posthog_user"."pending_email", + "posthog_user"."temporary_token", + "posthog_user"."distinct_id", + "posthog_user"."is_email_verified", + "posthog_user"."has_seen_product_intro_for", + "posthog_user"."strapi_id", + "posthog_user"."theme_mode", + "posthog_user"."partial_notification_settings", + "posthog_user"."anonymize_data", + "posthog_user"."toolbar_mode", + "posthog_user"."hedgehog_config", + "posthog_user"."events_column_config", + "posthog_user"."email_opt_in" + FROM "posthog_user" + WHERE "posthog_user"."id" = 2 + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.140 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -1602,11 +2347,16 @@ INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', 'user2', - 'user3') + 'user3', + 'user4', + 'user5', + 'user6', + 'user7', + 'user8') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.25 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.141 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1668,7 +2418,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.26 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.142 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -1700,7 +2450,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.27 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.143 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1755,7 +2505,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.28 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.144 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -1786,53 +2536,264 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.29 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.145 ''' - SELECT "posthog_sessionrecording"."id", - "posthog_sessionrecording"."session_id", - "posthog_sessionrecording"."team_id", - "posthog_sessionrecording"."created_at", - "posthog_sessionrecording"."deleted", - "posthog_sessionrecording"."object_storage_path", - "posthog_sessionrecording"."distinct_id", - "posthog_sessionrecording"."duration", - "posthog_sessionrecording"."active_seconds", - "posthog_sessionrecording"."inactive_seconds", - "posthog_sessionrecording"."start_time", - "posthog_sessionrecording"."end_time", - "posthog_sessionrecording"."click_count", - "posthog_sessionrecording"."keypress_count", - "posthog_sessionrecording"."mouse_activity_count", - "posthog_sessionrecording"."console_log_count", - "posthog_sessionrecording"."console_warn_count", - "posthog_sessionrecording"."console_error_count", - "posthog_sessionrecording"."start_url", - "posthog_sessionrecording"."storage_version" - FROM "posthog_sessionrecording" - WHERE ("posthog_sessionrecording"."session_id" IN ('1', - '2', - '3', - '4') - AND "posthog_sessionrecording"."team_id" = 2) + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.3 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.146 ''' - SELECT "posthog_sessionrecordingviewed"."session_id" - FROM "posthog_sessionrecordingviewed" - WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 - AND "posthog_sessionrecordingviewed"."user_id" = 2) + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.30 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.147 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) ''' - SELECT "posthog_sessionrecordingviewed"."session_id" - FROM "posthog_sessionrecordingviewed" - WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 - AND "posthog_sessionrecordingviewed"."user_id" = 2) +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.148 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.31 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.149 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.15 + ''' + SELECT "posthog_team"."id", + "posthog_team"."uuid", + "posthog_team"."organization_id", + "posthog_team"."project_id", + "posthog_team"."api_token", + "posthog_team"."app_urls", + "posthog_team"."name", + "posthog_team"."slack_incoming_webhook", + "posthog_team"."created_at", + "posthog_team"."updated_at", + "posthog_team"."anonymize_ips", + "posthog_team"."completed_snippet_onboarding", + "posthog_team"."has_completed_onboarding_for", + "posthog_team"."ingested_event", + "posthog_team"."autocapture_opt_out", + "posthog_team"."autocapture_exceptions_opt_in", + "posthog_team"."autocapture_exceptions_errors_to_ignore", + "posthog_team"."session_recording_opt_in", + "posthog_team"."session_recording_sample_rate", + "posthog_team"."session_recording_minimum_duration_milliseconds", + "posthog_team"."session_recording_linked_flag", + "posthog_team"."session_recording_network_payload_capture_config", + "posthog_team"."session_replay_config", + "posthog_team"."capture_console_log_opt_in", + "posthog_team"."capture_performance_opt_in", + "posthog_team"."surveys_opt_in", + "posthog_team"."heatmaps_opt_in", + "posthog_team"."session_recording_version", + "posthog_team"."signup_token", + "posthog_team"."is_demo", + "posthog_team"."access_control", + "posthog_team"."week_start_day", + "posthog_team"."inject_web_apps", + "posthog_team"."test_account_filters", + "posthog_team"."test_account_filters_default_checked", + "posthog_team"."path_cleaning_filters", + "posthog_team"."timezone", + "posthog_team"."data_attributes", + "posthog_team"."person_display_name_properties", + "posthog_team"."live_events_columns", + "posthog_team"."recording_domains", + "posthog_team"."primary_dashboard_id", + "posthog_team"."extra_settings", + "posthog_team"."modifiers", + "posthog_team"."correlation_config", + "posthog_team"."session_recording_retention_period_days", + "posthog_team"."external_data_workspace_id", + "posthog_team"."external_data_workspace_last_synced_at" + FROM "posthog_team" + WHERE "posthog_team"."id" = 2 + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.150 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.151 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.152 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.153 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.154 + ''' + SELECT "posthog_sessionrecording"."id", + "posthog_sessionrecording"."session_id", + "posthog_sessionrecording"."team_id", + "posthog_sessionrecording"."created_at", + "posthog_sessionrecording"."deleted", + "posthog_sessionrecording"."object_storage_path", + "posthog_sessionrecording"."distinct_id", + "posthog_sessionrecording"."duration", + "posthog_sessionrecording"."active_seconds", + "posthog_sessionrecording"."inactive_seconds", + "posthog_sessionrecording"."start_time", + "posthog_sessionrecording"."end_time", + "posthog_sessionrecording"."click_count", + "posthog_sessionrecording"."keypress_count", + "posthog_sessionrecording"."mouse_activity_count", + "posthog_sessionrecording"."console_log_count", + "posthog_sessionrecording"."console_warn_count", + "posthog_sessionrecording"."console_error_count", + "posthog_sessionrecording"."start_url", + "posthog_sessionrecording"."storage_version" + FROM "posthog_sessionrecording" + WHERE ("posthog_sessionrecording"."session_id" IN ('1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9') + AND "posthog_sessionrecording"."team_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.155 + ''' + SELECT "posthog_sessionrecordingviewed"."session_id" + FROM "posthog_sessionrecordingviewed" + WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 + AND "posthog_sessionrecordingviewed"."user_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.156 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -1854,11 +2815,16 @@ WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', 'user2', 'user3', - 'user4') + 'user4', + 'user5', + 'user6', + 'user7', + 'user8', + 'user9') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.32 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.157 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -1920,7 +2886,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.33 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.158 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -1952,7 +2918,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.34 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.159 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2007,7 +2973,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.35 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.16 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -2038,7 +3004,222 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.36 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.160 + ''' + SELECT "posthog_organizationmembership"."id", + "posthog_organizationmembership"."organization_id", + "posthog_organizationmembership"."user_id", + "posthog_organizationmembership"."level", + "posthog_organizationmembership"."joined_at", + "posthog_organizationmembership"."updated_at", + "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organizationmembership" + INNER JOIN "posthog_organization" ON ("posthog_organizationmembership"."organization_id" = "posthog_organization"."id") + WHERE "posthog_organizationmembership"."user_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.161 + ''' + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.162 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.163 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.164 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.165 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.166 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.167 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.168 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.169 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.17 + ''' + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.170 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -2062,14 +3243,19 @@ "posthog_sessionrecording"."storage_version" FROM "posthog_sessionrecording" WHERE ("posthog_sessionrecording"."session_id" IN ('1', + '10', '2', '3', '4', - '5') + '5', + '6', + '7', + '8', + '9') AND "posthog_sessionrecording"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.37 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.171 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -2077,7 +3263,7 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.38 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.172 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -2097,14 +3283,242 @@ FROM "posthog_persondistinctid" INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', + 'user10', 'user2', 'user3', 'user4', - 'user5') + 'user5', + 'user6', + 'user7', + 'user8', + 'user9') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.39 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.18 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.19 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.2 + ''' + SELECT "posthog_organizationmembership"."id", + "posthog_organizationmembership"."organization_id", + "posthog_organizationmembership"."user_id", + "posthog_organizationmembership"."level", + "posthog_organizationmembership"."joined_at", + "posthog_organizationmembership"."updated_at", + "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organizationmembership" + INNER JOIN "posthog_organization" ON ("posthog_organizationmembership"."organization_id" = "posthog_organization"."id") + WHERE "posthog_organizationmembership"."user_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.20 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.21 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.22 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.23 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.24 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.25 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.26 + ''' + SELECT "posthog_sessionrecording"."id", + "posthog_sessionrecording"."session_id", + "posthog_sessionrecording"."team_id", + "posthog_sessionrecording"."created_at", + "posthog_sessionrecording"."deleted", + "posthog_sessionrecording"."object_storage_path", + "posthog_sessionrecording"."distinct_id", + "posthog_sessionrecording"."duration", + "posthog_sessionrecording"."active_seconds", + "posthog_sessionrecording"."inactive_seconds", + "posthog_sessionrecording"."start_time", + "posthog_sessionrecording"."end_time", + "posthog_sessionrecording"."click_count", + "posthog_sessionrecording"."keypress_count", + "posthog_sessionrecording"."mouse_activity_count", + "posthog_sessionrecording"."console_log_count", + "posthog_sessionrecording"."console_warn_count", + "posthog_sessionrecording"."console_error_count", + "posthog_sessionrecording"."start_url", + "posthog_sessionrecording"."storage_version" + FROM "posthog_sessionrecording" + WHERE ("posthog_sessionrecording"."session_id" IN ('1') + AND "posthog_sessionrecording"."team_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.27 + ''' + SELECT "posthog_sessionrecordingviewed"."session_id" + FROM "posthog_sessionrecordingviewed" + WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 + AND "posthog_sessionrecordingviewed"."user_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.28 + ''' + SELECT "posthog_persondistinctid"."id", + "posthog_persondistinctid"."team_id", + "posthog_persondistinctid"."person_id", + "posthog_persondistinctid"."distinct_id", + "posthog_persondistinctid"."version", + "posthog_person"."id", + "posthog_person"."created_at", + "posthog_person"."properties_last_updated_at", + "posthog_person"."properties_last_operation", + "posthog_person"."team_id", + "posthog_person"."properties", + "posthog_person"."is_user_id", + "posthog_person"."is_identified", + "posthog_person"."uuid", + "posthog_person"."version" + FROM "posthog_persondistinctid" + INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") + WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1') + AND "posthog_persondistinctid"."team_id" = 2) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.29 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2166,69 +3580,32 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.4 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.3 ''' - SELECT "posthog_team"."id", - "posthog_team"."uuid", - "posthog_team"."organization_id", - "posthog_team"."project_id", - "posthog_team"."api_token", - "posthog_team"."app_urls", - "posthog_team"."name", - "posthog_team"."slack_incoming_webhook", - "posthog_team"."created_at", - "posthog_team"."updated_at", - "posthog_team"."anonymize_ips", - "posthog_team"."completed_snippet_onboarding", - "posthog_team"."has_completed_onboarding_for", - "posthog_team"."ingested_event", - "posthog_team"."autocapture_opt_out", - "posthog_team"."autocapture_exceptions_opt_in", - "posthog_team"."autocapture_exceptions_errors_to_ignore", - "posthog_team"."session_recording_opt_in", - "posthog_team"."session_recording_sample_rate", - "posthog_team"."session_recording_minimum_duration_milliseconds", - "posthog_team"."session_recording_linked_flag", - "posthog_team"."session_recording_network_payload_capture_config", - "posthog_team"."session_replay_config", - "posthog_team"."capture_console_log_opt_in", - "posthog_team"."capture_performance_opt_in", - "posthog_team"."surveys_opt_in", - "posthog_team"."heatmaps_opt_in", - "posthog_team"."session_recording_version", - "posthog_team"."signup_token", - "posthog_team"."is_demo", - "posthog_team"."access_control", - "posthog_team"."week_start_day", - "posthog_team"."inject_web_apps", - "posthog_team"."test_account_filters", - "posthog_team"."test_account_filters_default_checked", - "posthog_team"."path_cleaning_filters", - "posthog_team"."timezone", - "posthog_team"."data_attributes", - "posthog_team"."person_display_name_properties", - "posthog_team"."live_events_columns", - "posthog_team"."recording_domains", - "posthog_team"."primary_dashboard_id", - "posthog_team"."extra_settings", - "posthog_team"."modifiers", - "posthog_team"."correlation_config", - "posthog_team"."session_recording_retention_period_days", - "posthog_team"."plugins_opt_in", - "posthog_team"."opt_out_capture", - "posthog_team"."event_names", - "posthog_team"."event_names_with_usage", - "posthog_team"."event_properties", - "posthog_team"."event_properties_with_usage", - "posthog_team"."event_properties_numerical", - "posthog_team"."external_data_workspace_id", - "posthog_team"."external_data_workspace_last_synced_at" - FROM "posthog_team" - WHERE "posthog_team"."id" = 2 + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.40 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.30 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -2260,7 +3637,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.41 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.31 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2315,15 +3692,40 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.42 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.32 + ''' + SELECT "posthog_organizationmembership"."id", + "posthog_organizationmembership"."organization_id", + "posthog_organizationmembership"."user_id", + "posthog_organizationmembership"."level", + "posthog_organizationmembership"."joined_at", + "posthog_organizationmembership"."updated_at", + "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organizationmembership" + INNER JOIN "posthog_organization" ON ("posthog_organizationmembership"."organization_id" = "posthog_organization"."id") + WHERE "posthog_organizationmembership"."user_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.33 ''' - SELECT "posthog_organizationmembership"."id", - "posthog_organizationmembership"."organization_id", - "posthog_organizationmembership"."user_id", - "posthog_organizationmembership"."level", - "posthog_organizationmembership"."joined_at", - "posthog_organizationmembership"."updated_at", - "posthog_organization"."id", + SELECT "posthog_organization"."id", "posthog_organization"."name", "posthog_organization"."slug", "posthog_organization"."created_at", @@ -2341,12 +3743,158 @@ "posthog_organization"."setup_section_2_completed", "posthog_organization"."personalization", "posthog_organization"."domain_whitelist" - FROM "posthog_organizationmembership" - INNER JOIN "posthog_organization" ON ("posthog_organizationmembership"."organization_id" = "posthog_organization"."id") - WHERE "posthog_organizationmembership"."user_id" = 2 + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.43 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.34 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.35 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.36 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.37 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.38 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.39 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.4 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.40 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.41 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.42 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -2370,15 +3918,11 @@ "posthog_sessionrecording"."storage_version" FROM "posthog_sessionrecording" WHERE ("posthog_sessionrecording"."session_id" IN ('1', - '2', - '3', - '4', - '5', - '6') + '2') AND "posthog_sessionrecording"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.44 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.43 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -2386,7 +3930,7 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.45 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.44 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -2406,15 +3950,11 @@ FROM "posthog_persondistinctid" INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', - 'user2', - 'user3', - 'user4', - 'user5', - 'user6') + 'user2') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.46 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.45 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2476,7 +4016,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.47 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.46 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -2508,7 +4048,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.48 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.47 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2563,7 +4103,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.49 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.48 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -2594,39 +4134,186 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.5 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.49 ''' - SELECT "posthog_user"."id", - "posthog_user"."password", - "posthog_user"."last_login", - "posthog_user"."first_name", - "posthog_user"."last_name", - "posthog_user"."is_staff", - "posthog_user"."is_active", - "posthog_user"."date_joined", - "posthog_user"."uuid", - "posthog_user"."current_organization_id", - "posthog_user"."current_team_id", - "posthog_user"."email", - "posthog_user"."pending_email", - "posthog_user"."temporary_token", - "posthog_user"."distinct_id", - "posthog_user"."is_email_verified", - "posthog_user"."has_seen_product_intro_for", - "posthog_user"."strapi_id", - "posthog_user"."theme_mode", - "posthog_user"."partial_notification_settings", - "posthog_user"."anonymize_data", - "posthog_user"."toolbar_mode", - "posthog_user"."hedgehog_config", - "posthog_user"."events_column_config", - "posthog_user"."email_opt_in" - FROM "posthog_user" - WHERE "posthog_user"."id" = 2 + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid LIMIT 21 ''' # --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.5 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- # name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.50 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.51 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.52 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.53 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.54 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.55 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.56 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.57 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.58 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -2651,15 +4338,11 @@ FROM "posthog_sessionrecording" WHERE ("posthog_sessionrecording"."session_id" IN ('1', '2', - '3', - '4', - '5', - '6', - '7') + '3') AND "posthog_sessionrecording"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.51 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.59 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -2667,7 +4350,24 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.52 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.6 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.60 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -2688,15 +4388,11 @@ INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', 'user2', - 'user3', - 'user4', - 'user5', - 'user6', - 'user7') + 'user3') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.53 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.61 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2758,7 +4454,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.54 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.62 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -2790,7 +4486,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.55 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.63 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -2845,7 +4541,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.56 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.64 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -2876,7 +4572,184 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.57 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.65 + ''' + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.66 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.67 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.68 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.69 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.7 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.70 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.71 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.72 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.73 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.74 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -2898,19 +4771,15 @@ "posthog_sessionrecording"."console_error_count", "posthog_sessionrecording"."start_url", "posthog_sessionrecording"."storage_version" - FROM "posthog_sessionrecording" - WHERE ("posthog_sessionrecording"."session_id" IN ('1', - '2', - '3', - '4', - '5', - '6', - '7', - '8') + FROM "posthog_sessionrecording" + WHERE ("posthog_sessionrecording"."session_id" IN ('1', + '2', + '3', + '4') AND "posthog_sessionrecording"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.58 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.75 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -2918,7 +4787,7 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.59 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.76 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -2940,70 +4809,11 @@ WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', 'user2', 'user3', - 'user4', - 'user5', - 'user6', - 'user7', - 'user8') + 'user4') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.6 - ''' - SELECT "posthog_team"."id", - "posthog_team"."uuid", - "posthog_team"."organization_id", - "posthog_team"."project_id", - "posthog_team"."api_token", - "posthog_team"."app_urls", - "posthog_team"."name", - "posthog_team"."slack_incoming_webhook", - "posthog_team"."created_at", - "posthog_team"."updated_at", - "posthog_team"."anonymize_ips", - "posthog_team"."completed_snippet_onboarding", - "posthog_team"."has_completed_onboarding_for", - "posthog_team"."ingested_event", - "posthog_team"."autocapture_opt_out", - "posthog_team"."autocapture_exceptions_opt_in", - "posthog_team"."autocapture_exceptions_errors_to_ignore", - "posthog_team"."session_recording_opt_in", - "posthog_team"."session_recording_sample_rate", - "posthog_team"."session_recording_minimum_duration_milliseconds", - "posthog_team"."session_recording_linked_flag", - "posthog_team"."session_recording_network_payload_capture_config", - "posthog_team"."session_replay_config", - "posthog_team"."capture_console_log_opt_in", - "posthog_team"."capture_performance_opt_in", - "posthog_team"."surveys_opt_in", - "posthog_team"."heatmaps_opt_in", - "posthog_team"."session_recording_version", - "posthog_team"."signup_token", - "posthog_team"."is_demo", - "posthog_team"."access_control", - "posthog_team"."week_start_day", - "posthog_team"."inject_web_apps", - "posthog_team"."test_account_filters", - "posthog_team"."test_account_filters_default_checked", - "posthog_team"."path_cleaning_filters", - "posthog_team"."timezone", - "posthog_team"."data_attributes", - "posthog_team"."person_display_name_properties", - "posthog_team"."live_events_columns", - "posthog_team"."recording_domains", - "posthog_team"."primary_dashboard_id", - "posthog_team"."extra_settings", - "posthog_team"."modifiers", - "posthog_team"."correlation_config", - "posthog_team"."session_recording_retention_period_days", - "posthog_team"."external_data_workspace_id", - "posthog_team"."external_data_workspace_last_synced_at" - FROM "posthog_team" - WHERE "posthog_team"."id" = 2 - LIMIT 21 - ''' -# --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.60 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.77 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -3065,7 +4875,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.61 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.78 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -3097,7 +4907,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.62 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.79 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -3152,7 +4962,19 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.63 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.8 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.80 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -3183,7 +5005,186 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.64 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.81 + ''' + SELECT "posthog_organization"."id", + "posthog_organization"."name", + "posthog_organization"."slug", + "posthog_organization"."created_at", + "posthog_organization"."updated_at", + "posthog_organization"."plugins_access_level", + "posthog_organization"."for_internal_metrics", + "posthog_organization"."is_member_join_email_enabled", + "posthog_organization"."enforce_2fa", + "posthog_organization"."is_hipaa", + "posthog_organization"."customer_id", + "posthog_organization"."available_product_features", + "posthog_organization"."usage", + "posthog_organization"."never_drop_data", + "posthog_organization"."customer_trust_scores", + "posthog_organization"."setup_section_2_completed", + "posthog_organization"."personalization", + "posthog_organization"."domain_whitelist" + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.82 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.83 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.84 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.85 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.86 + ''' + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.87 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.88 + ''' + SELECT "posthog_datawarehousesavedquery"."created_by_id", + "posthog_datawarehousesavedquery"."created_at", + "posthog_datawarehousesavedquery"."deleted", + "posthog_datawarehousesavedquery"."id", + "posthog_datawarehousesavedquery"."name", + "posthog_datawarehousesavedquery"."team_id", + "posthog_datawarehousesavedquery"."columns", + "posthog_datawarehousesavedquery"."external_tables", + "posthog_datawarehousesavedquery"."query" + FROM "posthog_datawarehousesavedquery" + WHERE ("posthog_datawarehousesavedquery"."team_id" = 2 + AND NOT ("posthog_datawarehousesavedquery"."deleted" + AND "posthog_datawarehousesavedquery"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.89 + ''' + SELECT "posthog_datawarehousejoin"."created_by_id", + "posthog_datawarehousejoin"."created_at", + "posthog_datawarehousejoin"."deleted", + "posthog_datawarehousejoin"."id", + "posthog_datawarehousejoin"."team_id", + "posthog_datawarehousejoin"."source_table_name", + "posthog_datawarehousejoin"."source_table_key", + "posthog_datawarehousejoin"."joining_table_name", + "posthog_datawarehousejoin"."joining_table_key", + "posthog_datawarehousejoin"."field_name" + FROM "posthog_datawarehousejoin" + WHERE ("posthog_datawarehousejoin"."team_id" = 2 + AND NOT ("posthog_datawarehousejoin"."deleted" + AND "posthog_datawarehousejoin"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.9 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) + ''' +# --- +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.90 ''' SELECT "posthog_sessionrecording"."id", "posthog_sessionrecording"."session_id", @@ -3210,15 +5211,11 @@ '2', '3', '4', - '5', - '6', - '7', - '8', - '9') + '5') AND "posthog_sessionrecording"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.65 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.91 ''' SELECT "posthog_sessionrecordingviewed"."session_id" FROM "posthog_sessionrecordingviewed" @@ -3226,7 +5223,7 @@ AND "posthog_sessionrecordingviewed"."user_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.66 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.92 ''' SELECT "posthog_persondistinctid"."id", "posthog_persondistinctid"."team_id", @@ -3249,15 +5246,11 @@ 'user2', 'user3', 'user4', - 'user5', - 'user6', - 'user7', - 'user8', - 'user9') + 'user5') AND "posthog_persondistinctid"."team_id" = 2) ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.67 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.93 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -3319,7 +5312,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.68 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.94 ''' SELECT "posthog_user"."id", "posthog_user"."password", @@ -3351,7 +5344,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.69 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.95 ''' SELECT "posthog_team"."id", "posthog_team"."uuid", @@ -3406,7 +5399,7 @@ LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.7 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.96 ''' SELECT "posthog_organizationmembership"."id", "posthog_organizationmembership"."organization_id", @@ -3437,15 +5430,9 @@ WHERE "posthog_organizationmembership"."user_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.70 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.97 ''' - SELECT "posthog_organizationmembership"."id", - "posthog_organizationmembership"."organization_id", - "posthog_organizationmembership"."user_id", - "posthog_organizationmembership"."level", - "posthog_organizationmembership"."joined_at", - "posthog_organizationmembership"."updated_at", - "posthog_organization"."id", + SELECT "posthog_organization"."id", "posthog_organization"."name", "posthog_organization"."slug", "posthog_organization"."created_at", @@ -3463,119 +5450,40 @@ "posthog_organization"."setup_section_2_completed", "posthog_organization"."personalization", "posthog_organization"."domain_whitelist" - FROM "posthog_organizationmembership" - INNER JOIN "posthog_organization" ON ("posthog_organizationmembership"."organization_id" = "posthog_organization"."id") - WHERE "posthog_organizationmembership"."user_id" = 2 - ''' -# --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.71 - ''' - SELECT "posthog_sessionrecording"."id", - "posthog_sessionrecording"."session_id", - "posthog_sessionrecording"."team_id", - "posthog_sessionrecording"."created_at", - "posthog_sessionrecording"."deleted", - "posthog_sessionrecording"."object_storage_path", - "posthog_sessionrecording"."distinct_id", - "posthog_sessionrecording"."duration", - "posthog_sessionrecording"."active_seconds", - "posthog_sessionrecording"."inactive_seconds", - "posthog_sessionrecording"."start_time", - "posthog_sessionrecording"."end_time", - "posthog_sessionrecording"."click_count", - "posthog_sessionrecording"."keypress_count", - "posthog_sessionrecording"."mouse_activity_count", - "posthog_sessionrecording"."console_log_count", - "posthog_sessionrecording"."console_warn_count", - "posthog_sessionrecording"."console_error_count", - "posthog_sessionrecording"."start_url", - "posthog_sessionrecording"."storage_version" - FROM "posthog_sessionrecording" - WHERE ("posthog_sessionrecording"."session_id" IN ('1', - '10', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9') - AND "posthog_sessionrecording"."team_id" = 2) - ''' -# --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.72 - ''' - SELECT "posthog_sessionrecordingviewed"."session_id" - FROM "posthog_sessionrecordingviewed" - WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 - AND "posthog_sessionrecordingviewed"."user_id" = 2) - ''' -# --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.73 - ''' - SELECT "posthog_persondistinctid"."id", - "posthog_persondistinctid"."team_id", - "posthog_persondistinctid"."person_id", - "posthog_persondistinctid"."distinct_id", - "posthog_persondistinctid"."version", - "posthog_person"."id", - "posthog_person"."created_at", - "posthog_person"."properties_last_updated_at", - "posthog_person"."properties_last_operation", - "posthog_person"."team_id", - "posthog_person"."properties", - "posthog_person"."is_user_id", - "posthog_person"."is_identified", - "posthog_person"."uuid", - "posthog_person"."version" - FROM "posthog_persondistinctid" - INNER JOIN "posthog_person" ON ("posthog_persondistinctid"."person_id" = "posthog_person"."id") - WHERE ("posthog_persondistinctid"."distinct_id" IN ('user1', - 'user10', - 'user2', - 'user3', - 'user4', - 'user5', - 'user6', - 'user7', - 'user8', - 'user9') - AND "posthog_persondistinctid"."team_id" = 2) + FROM "posthog_organization" + WHERE "posthog_organization"."id" = '00000000-0000-0000-0000-000000000000'::uuid + LIMIT 21 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.8 +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.98 ''' - SELECT "posthog_sessionrecording"."id", - "posthog_sessionrecording"."session_id", - "posthog_sessionrecording"."team_id", - "posthog_sessionrecording"."created_at", - "posthog_sessionrecording"."deleted", - "posthog_sessionrecording"."object_storage_path", - "posthog_sessionrecording"."distinct_id", - "posthog_sessionrecording"."duration", - "posthog_sessionrecording"."active_seconds", - "posthog_sessionrecording"."inactive_seconds", - "posthog_sessionrecording"."start_time", - "posthog_sessionrecording"."end_time", - "posthog_sessionrecording"."click_count", - "posthog_sessionrecording"."keypress_count", - "posthog_sessionrecording"."mouse_activity_count", - "posthog_sessionrecording"."console_log_count", - "posthog_sessionrecording"."console_warn_count", - "posthog_sessionrecording"."console_error_count", - "posthog_sessionrecording"."start_url", - "posthog_sessionrecording"."storage_version" - FROM "posthog_sessionrecording" - WHERE ("posthog_sessionrecording"."session_id" IN ('1') - AND "posthog_sessionrecording"."team_id" = 2) + SELECT "posthog_grouptypemapping"."id", + "posthog_grouptypemapping"."team_id", + "posthog_grouptypemapping"."group_type", + "posthog_grouptypemapping"."group_type_index", + "posthog_grouptypemapping"."name_singular", + "posthog_grouptypemapping"."name_plural" + FROM "posthog_grouptypemapping" + WHERE "posthog_grouptypemapping"."team_id" = 2 ''' # --- -# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.9 - ''' - SELECT "posthog_sessionrecordingviewed"."session_id" - FROM "posthog_sessionrecordingviewed" - WHERE ("posthog_sessionrecordingviewed"."team_id" = 2 - AND "posthog_sessionrecordingviewed"."user_id" = 2) +# name: TestSessionRecordings.test_listing_recordings_is_not_nplus1_for_persons.99 + ''' + SELECT "posthog_datawarehousetable"."created_by_id", + "posthog_datawarehousetable"."created_at", + "posthog_datawarehousetable"."deleted", + "posthog_datawarehousetable"."id", + "posthog_datawarehousetable"."name", + "posthog_datawarehousetable"."format", + "posthog_datawarehousetable"."team_id", + "posthog_datawarehousetable"."url_pattern", + "posthog_datawarehousetable"."credential_id", + "posthog_datawarehousetable"."external_data_source_id", + "posthog_datawarehousetable"."columns", + "posthog_datawarehousetable"."row_count" + FROM "posthog_datawarehousetable" + WHERE ("posthog_datawarehousetable"."team_id" = 2 + AND NOT ("posthog_datawarehousetable"."deleted" + AND "posthog_datawarehousetable"."deleted" IS NOT NULL)) ''' # --- diff --git a/posthog/session_recordings/test/test_session_recordings.py b/posthog/session_recordings/test/test_session_recordings.py index bed84f6be517a0..5efc1b1e58f4f4 100644 --- a/posthog/session_recordings/test/test_session_recordings.py +++ b/posthog/session_recordings/test/test_session_recordings.py @@ -167,7 +167,7 @@ def test_can_list_recordings_even_when_the_person_has_multiple_distinct_ids(self assert results_[0]["distinct_id"] == "user2" assert results_[1]["distinct_id"] in twelve_distinct_ids - @patch("posthog.session_recordings.session_recording_api.SessionRecordingListFromReplaySummary") + @patch("posthog.session_recordings.session_recording_api.SessionRecordingListFromFilters") def test_console_log_filters_are_correctly_passed_to_listing(self, mock_summary_lister): mock_summary_lister.return_value.run.return_value = ([], False) From b77705db067be9932fad0b3fb8446b784d9b7e71 Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Tue, 2 Jul 2024 10:17:15 +0100 Subject: [PATCH 14/18] fix: replay storybook scene rot (#23383) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ...layer-success--recent-recordings--dark.png | Bin 0 -> 52648 bytes ...ayer-success--recent-recordings--light.png | Bin 0 -> 52440 bytes ...s-play-list-no-pinned-recordings--dark.png | Bin 0 -> 14516 bytes ...-play-list-no-pinned-recordings--light.png | Bin 0 -> 15579 bytes ...play-list-with-pinned-recordings--dark.png | Bin 0 -> 14516 bytes ...lay-list-with-pinned-recordings--light.png | Bin 0 -> 15572 bytes ...uccess--second-recording-in-list--dark.png | Bin 0 -> 52685 bytes ...ccess--second-recording-in-list--light.png | Bin 0 -> 52398 bytes .../mocks/fixtures/_status_page_all_ok.json | 382 ++++++++++++++++++ frontend/src/mocks/handlers.ts | 9 + ...sionsRecordings-player-success.stories.tsx | 36 +- .../player/sessionRecordingPlayerLogic.ts | 27 +- .../sessionRecordingsPlaylistLogic.ts | 1 + frontend/src/scenes/urls.ts | 1 + 14 files changed, 448 insertions(+), 8 deletions(-) create mode 100644 frontend/__snapshots__/replay-player-success--recent-recordings--dark.png create mode 100644 frontend/__snapshots__/replay-player-success--recent-recordings--light.png create mode 100644 frontend/__snapshots__/replay-player-success--recordings-play-list-no-pinned-recordings--dark.png create mode 100644 frontend/__snapshots__/replay-player-success--recordings-play-list-no-pinned-recordings--light.png create mode 100644 frontend/__snapshots__/replay-player-success--recordings-play-list-with-pinned-recordings--dark.png create mode 100644 frontend/__snapshots__/replay-player-success--recordings-play-list-with-pinned-recordings--light.png create mode 100644 frontend/__snapshots__/replay-player-success--second-recording-in-list--dark.png create mode 100644 frontend/__snapshots__/replay-player-success--second-recording-in-list--light.png create mode 100644 frontend/src/mocks/fixtures/_status_page_all_ok.json diff --git a/frontend/__snapshots__/replay-player-success--recent-recordings--dark.png b/frontend/__snapshots__/replay-player-success--recent-recordings--dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5d30316a8b71273a08cae1e5cce822eeab35e20c GIT binary patch literal 52648 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⪚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 literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/replay-player-success--recent-recordings--light.png b/frontend/__snapshots__/replay-player-success--recent-recordings--light.png new file mode 100644 index 0000000000000000000000000000000000000000..46163479cd84910f64dcd515e3b6539a667e4de3 GIT binary patch literal 52440 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%0DgL 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Π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 Ks{QTupZ^V)ht3rM literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/replay-player-success--recordings-play-list-no-pinned-recordings--light.png b/frontend/__snapshots__/replay-player-success--recordings-play-list-no-pinned-recordings--light.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a58c75d714ee15cb89edfc4791c608428e7991 GIT binary patch literal 15579 zcmeHuX+V-`7dE}Ul~b8EO*y${n>D3Yrsm3|l{KbT?i)pCS}v$c}nuDl%r zfyiIEeBlNJvY8Ko{O7COf51C##!7F%Uz@^iSXn@-22>XykOPn_7tT9GoPu8-uLf^D68jcu9+A2h1ql#)q3>yu1-6-`p<3Kkv%gAgL2D@e0&0mwCA$+mo&bS zd-R`P9l6ch51M>A)p4rhi$oH7vjM!kcT&g_#C#b)S zr!g6I!*=lu!j2@h9jXJ{Aon(Fzn^xI@_g->cO5S)tgrpT+pjDK;$9rtk`dY`bYh5wJ88d9~{?Izoa9XRB50-N8FQ(kGcmH!co9Qb@8IJ@NYx_-- zs6lYa0`-Di&xJAdtD~DB_a1n4uke?A;F7e7wLR=Y4GP_-%eK0!DnRBWQZ)rnd_Ud1 z{3y9>8Jo>8&hT9d{;sv+jPoq+s@wQ114d19)5xYazUn%?Ua__}uvKp)nkQilGMTKW4SKr;c{)avTJ5?p#1EGNpsn;}#eKe_prv zw#QS8trbZ<*?357L)lo~;YLnP{lYeOV4jy&j`ZQH7#R9sp&B0_`ZWJp{f##~a(-$f zchPVnVxAf{H()~EJb5o_9^2WMO~jN~y{C3dIwL=KV_xCS;;a6iz0ltn#xA5wxi{x|o|9U1$oH zSlSw#lAvI|Oh{2Nj9V;2Fgv7+@8dc}n(?-3CPN(7>@+&NysV7X%(nA!ub(*^5D^{57%7+u@A<7{O z$x!;cs9Qd+p+22imS$P0IbWC)UoHtMV=&cyD_$0Ib#wEDr18B%kX_ZK z`sx&tCZ6m_^zrtNS2PHjsEre>#vq6OY^EBF-izQ-AJ6vXo(&#*bFs#ZC76!Qrla_+ z)!ObBa)1HT> zx%&B%)}dvL3gn#?M;7Xe&ShEZG}OGZBwn%^S7l7beF>tr_zsG~XsBu39qJM{90#pr zv6R6eNBkKe+V1MVI3&fp31{+No_L-a;<`34MQe?DsOa1O(ld53N6)YSrG9f^VPSNQ zujNB|+sd4)N8uQhaKebwTb~v2^XufNJ$AQgEeBBLoyj|JFPFpTJB)E*1H}v?rZ%5;PJEmW8waj-x27=#RxN}qzku%D&TSQ?O`z5YgF^J-MOl0 zjxV3ipI2<}N>O1oaaesi#KVS!P~ibK_{USMaedI}UFkntY&b9TW5%?`35aHdZZ2x@ zgOdC7rIf^-M#k}{?tHx$E4w3WX18URiO2Ya`*y=28Vs2!XQDkJdBBXVr)CoA(zyD- zN+Y@@mLKAmXA}c{O7tV;V`Sr&2wj&KP6CYp(*@F;h>efq4jo?{u0%{UtSs;Dc*-1X z=GDMsu|g}_#_?VwZc%`LYvcEzY}H~*wylN^mH6k@x7r4bFBWbgiM>B|z?Z^4vXLGc zw3%k?Wg;r!No{68No%37xz-}%s7-ZsjUVZyip86jmRr()2;=p^xou;)h<hiqcbS7Q#M+wBvOe{xE4r~5 z8~NA4wA~gZWn~i$?~ifq9UU9HC3ZQcK7!ajlgQh|5Ngw#H#YtqGzn>}Zn3vMXo1`q zCMic%us@UCVvl z+^MN_EnMC;C#U=-7bhp_SIg9WO4-bX&KintJ$Moo!+n+R1oS{&qh|a+VzJ_{&8Ho(Q=5=GG%H+I&~iz8PtX)J!`a_Z#3w{yWbWCX9hwdfL83d;r2;mN%$5mAoLqyw z@~R`m(CIE+Q~p#}%EdaIWNeX{YVxx?RRfCVEpu4bgjvGU@fCiuc>&_&?TAm!c=6rt z4tGneJkD|Pakze@11hBd88&0E&YfaZGhg9a#z{?C{5qKEfu#zQB<=+!=bWrVW8 z=-x1r8BXW}aG{iLXEd7;D|#gV`>9v%gpe&;1dE12E)93SG4un=3H?1i=JR8~-ewlH5(j(#AI;aDD~JiEpm zl?dixay?6ktp-Ya=V$eM`ugNGN8d&)Dz?u}O(~}58X`i{#}8|1nZ(b0z=ru{XvU|g z7z9ncyV;HLA*2>w$vE1rCQBl-@hzsM0OO^S?5r#U|LLZt$6x#vNHSvFDHPwfPz#=1^0>;z7r!#^V-SVsd zmX7PAp|j63_`KcjHNO3Y&POZh?_Rss%sFN{_Vi+LyGZ@P>1pr#c2x7c9IG1-$1hWe zV${5`N^(6SeS%vVJl1(BMY$MF>ghdRIff=GORJ4|dkzt7CJfMGd(9l?MB`v+x7zr! zjKb_p){Y+}{Vo9^?-)|9dhX7j_ix>$ z{4BGs54Yvz+`N*KQt;@FtlaUarLj8Ac=12~C|aO1-gf3D6GF5Rvt%W72WJ<+S%I5SmIQ9+ln6k_AVfu>Hbqod=0{9&tx`pfr{ z@0pyd56hgi-Pxg9&2`SYxqEESv4)(By}iAks2a6Q8oqbdt)J_6U;Fv3GGcLuY&DxW zkfVqE`Bl@%Xp}oa7vd^n)EQOOCLMPn>q`#8DWse^*19NF#xOiVT{(8_Gh)!!(5^R8 z!wzI4XRhBI`7wHAT5zgF`vW&gfo5+52qiue=A*t%R&Ip zU>b$F8z5lR=Khz4GVwe~1m0f}E+SOXQQ478V=R^d|DCL3*J8`<$v403$-g2oY?H1O zzfB7_uL%2uY`nAZz4vi&t7y%bOJ33o$d6@pZs91MJnqpX>Gh19>++cez&=-l2{~ z%;)oS6fJBE@}~MP;)&*{k*BU>v9)0H72D18R(v&JLH)T(s?pxK=&*TGjtOG<+XF@u zQ9inw5mN#{%=q-mYA#}6d(zidchvo6=V`lE>r%f21!%ta8NsJLvR#_0sI^!9xz-kP zjg5_fST+p{mXV4ObKx1~cedCV-cQ;&LxNZFQ*HP9lF*^+54Ng{lDt6N;>=OLk&!(A zVqCg0zVC;omAslkVM#+2Ya$wJ9Ddp6sO^>b3*ds|#d)gflcTbhYuB$|C)rTyWOi}4 z91?de(cz8NfMWJSpN>YnHL(Qrk#cLO#_}ZU-IqylJGumGf30 zI6;GNfc9?xZN&gDeCOQt z=w;w%QED*LQ?~eepsz2O{u*^LI=VS>=?3mOl{k&>15xVhJ6CKTaR~rrtv?>`Rwo22 zis3S^PmkgQu@CNS+jQ%OL+#2nh5M+q^}mOj7qXFN8g@d#>K=b$oWp=Q%pK(8l`B`0 z_w`%KZLrenN*`yKV5rGSN+EVB1^-dy*WT0J4x`R0GhW`U=`KB&CODOPbF*55(s*KA z^-;TgV=v*Cw1P{811Q(*2RuyH)~9~Nc`r2rx(2Mil8@v2^Y#4xlu6xtdjUmiQiaheP%Mh)x-Infwq6+3 zCvx$C=|hc=O73TJ;^uPZvsy(VmwbKMv{nXOaNr3B-&I3L{TFxO-Xn>CglXf`VwH3} zUgYM+idVYncRJ)-W7L=!PNJe)eUO04MkARc=Sb`O-Dgu(_2WS8jOHlCD}rhg+5Stn z24lC{9a#c0nkZt&?WEx8E)C)S851pOS}C{3YI|O*4_JkmLR1eRCqlbZ(Q5_Px~*$t zfq2ilfFV4ZTmG%UiYR21tJ&mE;BV!=-wgSHuBH1i*H~217d=vogtw$c#w^uQsv4#q zzxV1!uO!38Ums9SGzz=~qElY;mMGyq2!!|7#fzQai>%A-0u1BUmjTf#`juE+y=q7l z^nZPAX%hbP6nHyPJ?2>a9X=IF03E}(H%nT(atwmq`m(e&(Cd@r&R_N%RmF%`Kr3K6 z_riSLSRJWw|u&A5! z16UBGF@o7_rM-KXinm3XWGVo8hEt@A@}K&Yq?I2vrG}h1jbu%%m4~!)hjT-k76x(B zH8cLiAm|oO;9FMfC@>Mz51M=Va964Z&dskq{uj{Jn@>N{vydY}W#WrUp5$UX99_af z7UR&u2#O~X>;t8((+`K@O(pAYJcx#LIT3KR1#mi*v~dmDdN-(!ba1Iz%v!_bLzTC7 zI2h&BjYXM|LIfC0^+ZyK0M%ZsY7QB$aMg^rQjeaArHg2w)bmAjSzB2dgHM#9xHc5M zc6{9I2~ZuHm+Hqs7iSnc^=ad4GV=jnCIk{!XcObJI@h0@3Y~0dX<4F+-bVxqPUzbG zh3Y|a`O85xk24FI&bf1jl22Nfmb%^PY`sX3>#SBjjV|R85)u+L<2Uv@X0h_nr6+Ql z6>uWDC;f zIy(8MZdx2nlhce7jnnhZVtKXxg8>s$u6|fY2Zy!QKHXv`(MJXJ*Vb5mvQATpPhXZ_ ze)QY}1@qr60RIwvxW5^*{6NDaV#qN&=~U3k6V64p4PZ1H^9Q#HuFk`~TDI$XLsplIP(&G@2cXQ!QK zG~EvlFJI9D>|)|Bl{~lg_8q$B%kxB#h^mn;*&PZdg#}f1mo9bfb@mAD-0S=W@JjLe z3Q;Cu>o)xO2eeP6v3!=cTkQyVs)o?%tdp**!|sR##opdt3%PkLl7?*KU>(byf=Axn zT$$>e?n<#<3Sf{+HRC%J=z^4IuCC2V;~=vFMc; z7M>j?fs$y>9Jpd2?6iWKaX61T8ml^)=?sfrtR(2Ty!)G6a=pMRRoy&}54Wo&eHqyV zS^pU@R_o8mW-^(K1fvuJrs(g;fq|0X=QXIC1zoZ0RXvvFg@uRpj}sB}HW0Q{AXRwY zxRL(SB8(bAK`mIr|M=q%;fxkE$Jh;b7aXsjkB`lZQ#Zl03j~7V{Fs1%=!0oMewv9t zyAino^jm-v9YsPFjvVqbJnca_#c(5*mHi>1Ui9_#<+8a?mLIBwyf_y+Ra%@coXbVz zhj#5Zq(ymcR&Qzj;UY!X#|*u+>CBDcm2gfNY=S6Pp+xmik-*Lg?`Fmr**&yln}*qK z<_O!@$8VSN*>^FM{sneDf!_j$5vVwIv&bfAI<1URIpPk#;_Xa%jmxq zshs-z1G&^bqsKd-4zw>^<|yY)vQAlGJP1M^YBLgN91#Gx8N=+ummIxvJouofs0cvD zUqrM-icExpW)~{xu~QZwW99VHaocxfr>O8dw2O-1jq7~?WpWZ@&O!d%8MF3txWI~_ zyd!aEr9f>m>B3aQG;jWic=HT^k2a}rkq*!fJeUr=OKff4Z|I=gGWRmDZM{<$7CGtz0F(94mK`CDvsoa| zj_G$osUUSZ3A%BUfpF1SF;ud!amoE{>X-W~@z!P?BbC-Vjox2goTdwh380g#*g#bf z!?CJ252mem8Mb{Zvd%8Yw;Ah)Vm{p46f1KX_JjK}RY(1Pq@lJ_W7)V!&vPZb_S7^5 zs1!-}G!L0jurpnW4~4Ev;p*bWJ$B+);x0wVfvtwr@IfvGE(7uv3}hJrK+e0H9RPFb zZ!RV)wgW5}sq$+o*%f0sYw^;xV zBs0DTiaWG%4uSNkpWh1DM45CWi_n7EJzBOc++lZ;X-!+fd+tszf==U1`UdSqnpd+j-A#`i4^}W;{!@ZEaqir%&n;qd=t^L> zhrNfx+UJhc%xvc;>L^BvVTuiQrcN4YDF;OH=EZ?#zpFUc>({>(_1#qRxFgNh5yk~v zatIh_i`fK9g_~r3S{CrVuxH2_<26%~HXS0JR6$%t48G;QSZoU$^Di#s)x>aLnqat# zNqgX<4WahgI*C}!$7r~qSE(Gj-^~B}%(#rMyJJT-mqq1tvEf7#(jaraI4|z*p!h9R zI%(HUTc!e~^hibzIHo$#alSf$fttPoh0I~&(2g8AqF}c66=ZXtQ>B|{%tFyd)Vx+F z-xsef9a4bS-x53qXa`C|x4Os=meHbu5YyE0sMtv$&M%~c_w(}dzy%3Alq3MxfS9#J zAWAB+V)X}gI5@3=$I3f=;FKaW zM@PN70Au(4vS~~i%CX*83h{?C1df=Ir6Iv-!{oHH(spilA?A1Y`;f@Kkz&B7l1s zMv|h~j%N$|8AIh8Sj${S!7Q0`g=-X?bT zxxFnd(Zt22fjO5eLwx$Y8{Rtgot%#M5O+@7nM(bj0s%;5%-VEl@VJD~(y-~C%hFPz zSkdB=lkK-&qiw$DWGM!%P?NNr8iKppheQ3vspfS+pav?Jol!K8*%(Nv3jSO-kCTmZ zNV1^NmAQoEeU)*TSsjE{x}|^<*gP_wLsZ5c#JA-6SnDQ~%b?>C$8%`s~y+ z<$MX#jL$sb42$X6TRICA7|nS9!MA+osMp++9L;!pJF`aXY*2A^F|*cyc|v&%TG6i< z(6H0RU6cTiOdNcuU+j{BH>4^oWyF?X52OIL~3+NoHp`esZ|Mx7nZGqC&A*9DOUpr@ z)_)&|dV|Jp2)CdkdvqX{Qd z51T`l=_gF^K0{-p9GqYwtpIWR1B2{Gvxjb1ne&^in;4fLJV6w;n8tnuuE0>aGv4L> zo0y(hcCf6~W?aFc(;ik+GhQ5_>$+U~6Ci2mGh>hF=Q^}r6(^K0V*aDOV}#{+pHd~vvr zwnB+sad$>dcPeRBxz_NQc3Ago&)^OYsun*7i}~+vT3X6E$8oE(VR;RphSoqMLcq`9 zTN@yYZ>Z*&;u^F>s3HE*y?N`d-}UB9a&mHp`YlYLErF*1U+ zXCP5(#EM^A>ozy^O?uWp5AGq6psaN}@k%OYU7RrQjJNm7cnEKq9mZ*3#G#Q|7!`A*uH1z6s=mZUI|jm7S@ zSS>lfnI&DqqJ(P$0|Trv?y?C6Wd-CUPh?##jzEX~{%cYoUJ~i+dx_h=QOAHT2Iyo8 z;ChvQ?oc#fzSG^QI9Wcf!%ns4X!&@v(F1}3w5;rUdCaZn)Up6_Kp>|e%XinrGiqhu zFO-MZOpx}Bp!HAN$|D6l>P*$1kjRtetv;5;{7>Gi<@U1WL=n4Lh8(gEAxfMF=`TV# z4Jxr*M)c*xt&ruknvltwz&Uf*CgIZK?-7YHCpGj&qbpa(cp(&-o_0*WhZUOrozdgg zip#8rE#0w$r;kK%gh%n+I%&psGCVqhqJp>6;A807>kvp?9V5c699FExxPGCasmneo zf8zZeLiv)hE{5{OZg|XD$dan0&iZ-#{-&hlc}JR1nrvibWQdjtfiEdWnk$1H{jF}i zIkJding`DxkSu4x~-Qv7ML2G$m3$I1&EmSs{pQRXIfTJD}g<;M5(gO$9z!bxQ5!$4QTO1#k zX~PygSvwKg&-2_hsTBZ2&~|}!-)>f|v?F`8g`H2?yu5$Gnd!#rp^E4JGzXuV>d!IA z<|pO`$_MeiWh~K}k-5KpSo*@Y)eOy?5s5sQFcG|wKAe*AAew}<>%CTPqa&#LVUn{d*U`l0zgd|*B5 zj06wyAB=*4X@>)8=t!&@u9|vee9$hdMiM6gy0FP3%l|?kyBaR6%*iLl>;!Wc(&yjq zMS$y5_W;oY^8UI20#Q`?|Mrqx8!*HGL<+X@k{Ehc4hX$nd*b#LCeef3L zkWI@waC9$kUHAH+)tS;Egn@GP70atHmcxPaXdKCGK>Tkh?k!P0C0!#jAZ*@NqeA?*q=^ey z3#f22KFsS9A5~6ZOIFKxMv>NCE(!1ge&J9!k=7Z>j+IO@&G?kn+tyt=aet zmqc_sj?!o*nFD1^vj@3@cknEs#+3#sR|fA3hgC8 z+I@R9N6092o*&4`&B&mFdy|FJTBZ>|5SW{r3jrf4-^&5>oSk_HO|{NCxnI<(VrRS% zkH<*L!9I+)G|mu+t;NnHbxZ?a3Os1q-9_E)+gJHZd;bIZ@VYv+dzDh<>F(e_u5_oY zB>*)KCiu8bGafLEZR+dRXL3x1KMNiwCu?AsIDoU@mhM2eMe!y6fN%oyHXo2Dx=fl1 zrZ;-Yy`Y}}@9F&UM-20QcUV}Mh-Y?p;kyrKZs5cpe=w-c&c(LaEFDiUuTc$nFE|X@ z(iQ}8+W1Sc-pN_o`50+J|B)l5(Brki;|B3x>lSwd4er=&r{w{YWc%Dg`h@_~9`C!K zpMA8>)^R_DIq&G>16B`y5zrDkflM-#f0?uTDLd83*99;HuIKnt)vmP?rz($VdMkz* z=8fC5c^hb$1VGgI!EZx??cW0K6i91v1sbr09LVSKa^kN*j{`Dh>*R=+6>2)y`E8a* zNZZWDL=NaJ;Z%?P|A0J7Jp3UT|9jg9-`*oco#_uDsb$p2*l$7!Pl zoi`_-_KC_I%XjS9A>y+QL1%d=m5E}M;&y7PhJKm^u6=1{Sal6Cyr*+0`lavyVlurQ zw2TsxEbd6eg}CY_>zU>QFoj_NCJn?p2CS){z)%o~uE2>wpxH%p z=HVzV;fB)U=+J$2M?k8e{6o zsPFo_z_zf6lyWeb0CbvpHRH&UKFSsdMB^7x)Klycf1jN6t4Eb|Vc&t=H#Ic{1o6Ey z^FZmJxdO89?7|Qb5@x;U;}!4Ttp@Wh9AF3QdNx%6stk0{KY$Wzu*CgVjB~=S1I@%D zz!wux6~Y3=dk2AO zD;6{MZZud;N#18%9UPv&y!V_1X0tZp&$BsFGd?CVLh({24o7df$N`P3Ie%h@g84e7 zD@D18=PLOeuLvYP>g!?8lIi^u`RiU?9=UB|pzwo%mtGmNj|5tp58V`V^*;EGhP5Yp zmx^_P?H_q?H)y+ajIF$*FK$4=4d)2v$ZG_#O*0sHhFqa@II+f4`1d;(~N zg471nC67Ru&CSlKqd!do2|!=Hy|LI%n>bN#gEvZo*{8aTg@{7}yx1{ApAletV z@`RNH$<(`!0CT`q;+`xMvkn+J~U?VubLx7rW41hQT$ z|G_2@gTZ69uJz%gy_qNMi>n1oR3eza2o}z88SWEC$DxO&!F*xS97)W@W7tE@&H-gH zayK_@@`KmSDxq~(%AG1{o;(%+m>Z`h-B9y8!uSj%FZ~!3WBtkBhf@foq(xZgXX=WailrPF58yai7 z-Z*y`G|7a9>8bQ12?ci0rCDGf@J8o>;jE61 zua;;IkldPY7@m$sk@2F$KD2ynmM37|@{WvJ}a66ZRAqY7T&3Jc&1OqC!pi>tO z)Nnp3$_xTozMgT6)-w4glTce*`{tH=imn4lZujfgLt(HGKxGEAv!6eIp6z@VL939~ z{F#-NC0*}^s_4y){qv9bjm<^D7D1iXND#G2-^9d3ax8*t6EyDRdhHpJ0Jq})EJ!8X z{w4-`a~a6uU4m0GK`6^n>K`zit=phZCTwuq<*6p>wsNC8Xl13AdtNR2;?6FU;P7o;$fm#1m5;U+_3o#QrmxG2?F^M za`n=$H>2}crx5WjTd#!NbnYKVzBfFT{OC}9`Co4P1VL4JX(hgAZF+)S?NU=kRw1&< zY#0nr*R2}Wtw}HX$Kj0b@0G5Oef!ImkJBOvci@WBfy5uT**lUJ^qjHrq8T%yuzZ>p zAzUy!VD+_)H3ag@FW)M_xk)^$S-$qT0kI=F8{BGCa=Yhif`?QKu+k%DMlw) zPyaekRGt4B0{I+m-1OG;Y`A_DSp9`FY7oe8#k@V>@Tze$*?#kw{TtQhW;GEjA*eDq ziamiW>U>{k6yoM{IX2eXZ$44=io)AG_M3$x1DIV*n=a5k2DUy08!>dnYd~Kez+$d@B}fVhABq6VmnR z!G!#$PuHKxqtEG>*HCJu0f@=*!9ku0V(gV~T*u+K+SET5dYAA9kv*=}e_7@mMs^pH z{XB^<&fIq=6m4YwNky7LDV0^hqcxsXVNO6^UY_aBtpbxkn~H{6Ty^y=O8opFx^*+Q zBjWQD6-urgdAlI;g4|bcKgD%^SkBp(5?JR#gfF!|n&@~GkmQT@em0J0lWvIaX{4xZ zOg7khcz70Rc6W6tUDTxZkWA`$a`UdPF4@_fm9ReI+E4PwFKFtR>tKq88;5^=xF0sz z#7&8rJ`&#H-}}PFg@CKsKp|*I_}g^V(&G4rk&$5?WT5-mEVDm8KE0Z*(b(8{)AXZ-!0ZIi7bscqJ%;L^ip1dn85PFVaU|!G1=4%*tN0c;i=7GnUh59|1NiH+DK^adU-^Xva7|wmKLd5nUaZzz#m^MMEmtkSV1LL^g#5SjSRXMGJ%+V?0k|JzAacn7s>Hlj@qWS z*WVd;A0JmT4Q+ZUej?W}(Zy?9o|N!B1swg#+RD(NySeA?#Vc6XxrKl$Aw{i87xgbY zD%j;-oEbK5SXoi_j^?TXcUsJk8-4ojVUcF8N#t^G&QR4EZP#kIOv`h!_XlaFVU0OT zN*fD>j-FmSA5W&WE2^uXj*^v^e4t;BE0JKsySw(v&BGa#;sBbe@%WUf*+X*d)-_uP zMoXk;LNFy#-dIa3@UD-KlkZTvgT<5^^J3$hb6Q$UZ}p$1r;}g|!h?sr09xV54A1HW z*Hp>G%-5;RKKEkG`_#b#YwLEagroT;0Z|MBa(nZton6e#<5G5hl~%e&L3np>H>Ufj zwkw}a7kFh;^nXYqzxhLUI!V!zJ~n)x^`qP-2b+_Lr!-wGx9Oj3F7H%SooAfZ)?O(} z(!FA9n`C+2);5kdpY7+T%BB{pNb+sISem?H6m7~nMWCyrS=I^N@+S3)y3MsL!AS#7VzOwC@scz+R?(;u8A8+Xgy6^dSP zk02p9C{`7kWzxxl?72%LmED{dT+0@AUXocza*wH2j9J$3^(BPHU};RqT@f)4Dfia`uJ1>Qzq4xSNZUa z5B>f3fx$`MdRtl};j-EeYvh0mQg7_7xOEqLm!glac?zB;e4}*2Hl@asL;;Vcl0Sx7 z&-U%J!eICUr{Lffs9L<{Pe0B0s*z(qKK%*isS+47IUdlTB72(0Fqdu=r_ng8N}hFh zoE;sn`uX{VhOWJKJh{VP+L$05IwUXV(rRjCy!{reTXwk@&SQ!?7xnH21_s`}dr>r} zw0C0z*il5#U&zR0CqZp3ZX&HD59Or*N`DoJfTJbrnROHGoSmKB-N)5A@jDz2*%DJ^ zJ1yeZcoLkQUDcxIt#)_zC#_d(^MT2+)@W{njmh-$L&_%cb*c9&jbIbQgTp_cvqX12 zSCl){8w?Aadh?3hGiGBcU9GNOnQB=%s-AwbF zst19zB9GjX_gZ{$;ztNO&#w(sV&o^;>HBv1r z9H^*6TZdLgYb?)wt|$4q(r?m-M=v=lP(7`Qp;JYg%UL5eEiEmtUIB;m>yi1bg@lF* zCMVY%6=24nJv<_v`_dhBl4WATkbPfo_g%D1NomP>#F_h~wzeWwFQoJB1JTi=M>A~@ zJ*h<2PiZI4o1qHAN4xan_{&G3gD#>G{D_^M9T(Q{Gc<22vSj{VaYwQVYtc%Z+NM8B za>WhVo8oQKChK{~1BnL?$cfvmBkkC~CZbu*7;H{eZ7gli%G@R8!-8&=mxNIC;)s!< z|EV=gqK%B;-W0}ND(`D%z27L-^jXP*Iq2LPd$*zT(g{vTP>tQ3Y@l7gZhwn#r+u0n z$FQ8{L#s~~EO&Ht^m!7#Iezh+y1L&lvOS)JkR+-tR3=Qna}|cYagCU5u_NB-^fg06 z*N1mczglnWk?V;`vMqc;eHpxRe+C2=G$`EGBWNN~)%xP#(BRN>Q{+lUt*f*Ow>Dl! zzTZ1`-to7_)zYJOxW3fCiZm-RQF)w;c0co-4xRuIcL8@;>)@)n*z=+LWEBNw9^GBerQXU?<$SQB_fwl}4B=(_WM zv$FCv?PN%kM*1ssb+wdkoQvkoB_?(ywp+99=u4|IH`Q3yr_s?Y45oXEBp+ehO}8xk z@ZkfG$74#Q6t{5RqXV;@4i^J=_=A2u*@&nDT{YnOL0gN2&fm`(k3P;*h$QohH9hL? z_{sK2ioikm$gflnP-Eo}`BP_A6f;A{&iVJg7Ir%-)ZE(Y)++Cf?rc|F)0{H)dEaCn z*E11IY>j7{3nt^{GqY(gEMT)8eWr-Dkj09$Mwwk65flmHKR0M8MUNhRI9#@}$z~X3 z9cK*Y1UA8&t#r?7Ucso7dEFD8s&W6K%vHw(B&(Xn-t~Exi(mPoe*c|l5#LBSby_`i zY<+@^NNsFwm@xM3s+)7W7BbOTL5>py!InOg<5ERf63)%8^8e>B}9Bo^KMRAkTOmK}r>kURVuZ%Ox9dPlP9Qc0;S zdg)4M+y%YSXZDd-xgE^`m(n%tFdoHUo^JuL$rs(d6kKb_< z{N{HmE6;3f><^i$kL2zV5G)6Id(CCygFV@iVLk7o`p1rJDBg5&NmbIXY-%cbMIkpU zC78SFQJOY$0t#u}{kbN7AX?-tgzE&DDX2bV0*$KRs&a>d+{|a6q!x_(%djB>ujmGA z$IZzNy~Yc~>mWg#KhOQ|rUW@Km2G-QtIO0DL2!EOr7C;YD&>N5SuDcIvl&FrT+Yyr zfDNES?}J{Ons8Yyu)yduWY2GdBm}nDEy<|h(NB+yQ}5u3$sp8vdz0(yd77A7>3|#n z5Y(onrSV`loGL6@T^sM@2S1#SE-;yUcp|X7k1PDG)Tn_TaX4*|8`nVYR}AK_x;vF! z_h@8|m)goc^#{SnWNxY9W}UZ=$qXPDRbvHf4RL~6dl>Iw58wWn!Aw&Mi}{IX(1U9x z+LRl{cn*|^Ie=Ha~&l6zpCLWTJGEm@>m`_UtFvSDuITPH6_T26iXD?O(MH7Q$>K)uKbY z;}$k!z>4K}N;a}NlBHsX5xbU?cZ9UOiOTMukZH6Zva6v>%KngIc*(;b`vRFjP~bO`vgoihZlp1Y=Xpe0h&r+CA06$2H<4u^9$ONBbi} zT~?p;Bz&`!&M&Zpxi?oVUupXb?BhPuIKR$NA=+yHmOYs*pEnv(lUl@@DUG9Sz0C@2 zYX~LRzbVCU6+XsIDU%DnLrH7D6sh2$r27NqdLNxT5wbLuqNgQGtqrNe--N)AgK#8*-ah zMC>6`^yUCx&AbsAEo;Pin?&F6A!=fDE%CH!$Ei;FE={au7j(8pr#4#iT%^TK;gg@MPac|my9IvR zgj1GD!&M#2#EM9dNxP?5GJou-P;lNtz~i*uav{rX&oGo`M$NYtuP=WmbNzFvt-+D>A8xc$FP&~gxa4@hzeLrDNn9GiJVB1wjQAE^>$J{x~#&hG@})(<|nSDG@XnEez~aP!4h#l{8$`TjNDAjteZ?t6Jb zfxzZ?$Fos*Ak5A_78WzO2YX>cX-1>J2W$GO^Zm%YZPFP|E;JUzICY)>D_iYK`D?Ln zwFA~-e0<#6+S;a07xIhTHN={DQjs!=gEOs@uz{Y!v~2H|r3FUrapi0sG~1S?hTP=l z=H`N?gFQLk?D?hjT|X(X9i5LwbXB88*QTmBOEfX6Qk!u`z~=UH>BC~piPjxF?aY*Z zx`S$_WUi9OTP_>wjC4q0b68xfdXT9T_qlUdHj|)Qv@3Qdn@TnderL5SLSV2I93P4v z|GC6rf)T*C82k!A(@CXC)2-6yl?1AWH+dd!X?St)tKgM9sAlB}iytM+`f|6B{`Y&3 zc~aqI)frh|)yvx-b&Qx#Gjq0*Owpo6s#$bV!d}Rum#<$py?!lx`FJ-+zf`ZOsd2C* zvkskbRU~iBP0K{(I;P#nFV6>LWEo77ZwJsqy8`T4-&s2{^T&!@`4ZSt;dV#X4tBgC z?5(;mLPOBHMpVxAEON*WZyC>__!%)HzUE}Go3fZH(7?%{VS$O~Ba5g|$L?11w zR7-jeniO*YJI-fN~+SBy2T;N|z*9QXO{ zxBC+Ke^LQOf7^wQH*2np|HJ$8BF!(ZB|NR*P&+O}6E)xFihkMl82%FuEq=KFaO?bn zvQ#Q4ua#^Y)wV2S5Vzt#omcr0^2=8ik>1mtG^KNBYY`pg9Ny_`+9BU1ZZE$aNxKdp zFi!2nsJ3a;thqAB`}gg-i2WZ9zwkp(Ts5vMd6eHT9F5O35JeWP_2GIHA zd6`S~kL;R|)lWJ<$V8(%MiO?rc~U4g{u=@FF}yvTD)xQ(=H-tTj*DE4h0g5O_4k8n z5|)OmH@9$dl5e5)56HTU03;gP&H@H&)(Qi;5o<}2IMCQA##LjD*xx$?yiwv7A)AN> z>N*I?+)fMa6WXfgT^UJgf!Cs*Qy{fmkY)k#^{EYa#|y z>dmB(^_u5YMn*=Ml4*HG9Tb1mGc?}ZYF4QBqADWdvj=UZf-7Q zqIJHI$&90WQG;MpmJQ3p*)MH$ZSd?jU#2cX zncgT7iMO$FTv>T&Xh@H=`aCyxS(zH+nLt%Je@BR<$|7T9W4*k*oScRL`2iPp;LYRs z!f63|jKKEeP#WRb>57U9cXxNN*-YCLZv@*lL0*MF5{yeLx;xoahmd|jr>Ca_emg;4Eoza59>n{e)jSry zQe$MXHTT|>(`t$->h0}Su9a=;5aU-SBWSAU!^ae<_hAtc8+8}6L1t0{i7>@3rEYF4 zQT3zpsjPhAOvCf?cL4?e=sxfTduz9WRF@CsXHooZB1(*o+PwZ#}8(tGi49bK;p~KzeOO1e3{GP z?7U5wh3+##PJqIowt2w`G*D9%fUN^20|TsAxHo z6h*G!`0j%Yyy~~_PIE;uP8{;4PP9zu-jv>J&5{jRrDbGi+c<6tk8EgMKSr-|#TAR# zWPxO6dPh1?<4OGPB*;|C10)1a6VrmAS%fh(7Gz|=i?M6#l728Bnw;FFn79ee=HbPf zCW6(5BF*FHZoh@2kpb~BfTLEh)(^N2rBd!LX8?xL95`+sF(jpkRZBuej%0F{hCj6* zL3bV0ldedxlQ7$fZ44R5;Jo4_z}?j(A4j0#_W><$uz>4FNw%l%b$St}rEDv- zr=ufaG}2o4>@Z_uLn2}vW4m$C7q<^liuFAwT2B3;?IA|j)r+DnwxXY<0RINYd8U)j;z35c|w1avV z1)7E?$>mt@_;J7NTk%|xU|N$N@T9?(br{C)!! z+gYG&6e=E&n?_`iR18DLbd1ox^B8BDsDPuEA=LN3zO(FFo4#w~=0(F2`;YK3ie616 zEQyNR(FKx@fFgScEOtos!g?xJ(o|h- zrmYRAali>pZ}xeDkTIdQp#dS&<5Yf~BIY5yqCbh0mX_Mpm0Ji{j_fmavEQ5w%AYjL z?b|UT%Gy-Jk?+5E!J+&BL0YW2&BRWhN31b^*8f>GZcY!6k92m7y7)Ebs)c-%YxbItU4Dw9RSh)I&mxXJzaO6ws;kT3OF`*3h@Ue&cBQ&kP>0oe}n&)S1T*?6$j zmtXBp_d@$#y?T}Y4z_+?i@Xd?%$XGr;%Z<_B-GA2atNCh zaLI9HroPpDSDRJo-1Ec_oI_1AHo_q742s^8uowa86$rotTsp|hlUj84H z=Ks4xV>he?c{lqN+3bP*LRXKZEkzb}zRkPh^X@4pevy!*YlbT;^Y5F8)QG(Z8gOe~ zqACRbuZQ~&wQh|n1E|x$B15~3;4QjgecbYgg6QhHkQ+fgS_2y8a`eyURVGcCkWM>Yf1U%dRWMccB zBO1wZf#aC6va;gIxw|E0Ww)Ydn$s+Jm*|F;_QgTFY<6SgFdzh(lfz~{;;ZWF$|j_Q z_wWA%Y4p6l{%l?6VrTYQcitCy)cPzfejz>0+=3dcrVN2xbZqe!i9|6VaAE*hYGQyp zIvh7$087ir=6Dh*tQV>42J#a2r^B-5+i(9ZJ)&V3J=2apAvta1+h5UO1e3x=3c%iYdZvqSbCo}P%ci4l@34eS5_Vd2-sHfg(c;`&V6^XKW_ z$Vl002CzCe-nI4A>@D1N$iNWf+wx~tOxy_vB# zX$+rM$}@x|wm)C&GbK0PUu+Bn1aAI7gKOI0pcmLspsHdG=T{pRN=r)S=I%4eaSjUj z4x>a_6p(_4%I#DPf-c<{lyW~{?*JUqz?%7f`M?EfmO+47ZeH2pvw<|zg+{K!`}+F0 z>NXQ2TvcZekBO4R+4Ad!7eiPB9c5)a9+JDY*qbBS978wrvD^EpyQ-#xj`*(=wsPXLwK%WJAjzdSoLQ_bX=|8}ERl}k-64u03P zv2ATRI<3+bR|uBP2Ch9?>&3)DnM7#(I~7ZrA4pq(?gl?3#>CyZaYx+N=7`ad7PZr) zLXF+xF@`<`GKSIA<`%D>r-u@)kfI{FSUq682Q6+QAWZ_|s;a6={??0}%w{-~qKR4P zH7+e9@SoYJrs;7$HQ1m~-j0r48C~g^B%=?w3-Bod+0(@(ejbqUR10BP{5-gtk`E=q z(R7=$)d zvW?&-uvd3&Q&zUSSVm)vt%9|(VQB8pemAaNt8UrGt6X->$jgh^%$}Z2l!>1!qSxEh z)HbUy$fHm(kB(T?WcTL%10Yh8E=t=4g_{0V5ePoV&F+3)==0S7`RCL2$Dm%$=7EEc zgtGa$`|yyv$wja0D(=mFoB_^XjFzGBcswbJ)Bo|~F~r~);8b7?P+w$q1n@f-bBSI# zszO@8i5FPnYUw=pMQYJ&kdd2XWF~v}Z{jK{5Xgq{`abKu@3X z`lGOou%Gqy8U8=uwa%WXheLtN=;x>q`KD^ttP;>OnC|XR#Wwx<#*(6gG$4)tMH^F! zej5ySDoq$)ei*MVMNkE8d$ZAN4YGT@-X-XEcjWhKkk2($NpxUtIWzKl&fe_g6X#n& z;RBo$pi6R*rg2t&`jEM_%8L}Gcr^QxV`JEiK0tM=g9pp(a~cC^(@f@0!n=oZ6d=@D z!Dm2k2=oUWAsQBUOg8fl?JZ0z(zJyC61dbar0tb&s+=NpeSWtW3=QC0#rX1L15{b+ z;Gpp9JR^9b-s(tIz}X*6FTi#LD|Ex)Qi+!e-LbU192zDy&dJFEc%rALhpVb$5@0sL zpcV?chVwRO*bjr`l&$0WX{N_0UiiinF72@N_K;3-B^BGG7okP~jjx0rhAv zNc|<+nP^st7@#PSg0~Vy2R%GI>g($H)D_)k!PbLX|R>dyOKma*Y!AJi5W z7i&E5+b``dr}UbvYsGFY8;9MV7E|^9!o9&26~P#wDIjRGU|^)-(%2h^vqh_&6@Ca0vcS!lcb0)IxU3DuD#vDf@;0)(!y4j)0@cgn`Xsa`^|b-c3#Q z^~*2Ij|p+|j1PC}a&sjSffM7qX+egPe2G9kfBxJau;>Id>tdLsEB!PD$erL3-GK5V`J|_MXH2G(|nzOLkmOq-B?i8zuZrj@0 zMn-Ne=y-BuZE6hvMx5RmUCk5WBXP_lRIR?jQkfei-cP|=kJ`GO-#|NY{!a9b8(%=I zugTi5AnPV!Y%!Q?wO|*(P#QotjY79KK5ZSsOm<@XXmz_fndO?hm*G+%iz1J0o6Qd6uI+T)=iwq13O_hr^CB^Q&yv18~wMR4Z>wG&e7#P$-p_8ELrN*Ec+vDR?Pvq73dCch{ zX|R!hFDq+w6f`B|y+>plSV@|DgFi}CMORcrY_Bu|#p%ekV;7_6xMOe-F=v0Ms@%@b zTR(OBw7;L<=*Wn{g$vS^ZZIiT*WG`TkaI_`AIr7YgfH|8WGj~=znYK<=OBKs6y17jCZ1*ey@c5e+I@nj$AMf~lz4iO7{S|6>qHt0+=Jf-_v9%x|e#=$C*4XuBMQ zL`oi{52ww&?b?Rv)8z-p#-hjOZA1zQ6HWJqUepyc#z&M5E2CUgE!Rq(baWg(BKr}f zX{bk+LEL!Y?M7C|w(N16XLjJiB-8VMVr)6#q8+-E#CXdKk!_YW#kRMO|r-C19 z=TP=RAk&Ti`w7&)Km9L5xqqAFZPKz zbNU+}{>F#@5AZ=Oi(2^w+-(QB{gk?8PAU2-^eniu?*IAAKhC#C!V(#6yZ8S=u3Fn) Ks{QTupZ^V)ht3rM literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/replay-player-success--recordings-play-list-with-pinned-recordings--light.png b/frontend/__snapshots__/replay-player-success--recordings-play-list-with-pinned-recordings--light.png new file mode 100644 index 0000000000000000000000000000000000000000..22110547d5591875a87beb460afd3db467a96225 GIT binary patch literal 15572 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 literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/replay-player-success--second-recording-in-list--dark.png b/frontend/__snapshots__/replay-player-success--second-recording-in-list--dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2d993d05efba9e69cf8de2887fb0c69ce015d2 GIT binary patch literal 52685 zcmd43Wl&yQ*Co1Q4EFhuq!F=>Z z;j{Lg7=s`Je*ynGz|p_|dl04{Z|DN`?*-9piQ6Q9Pk*wY9~Az3`umDje8k^7BAcV4 zx6xRr`TxD`nOcF#vH+(cmReJ~lkwk&j*ZH)KqVwcZ3g21dteLk|1^p`jaiF-c&69B zp~M$_Y3caJR4@92t$84Rw>`9QpY`o!Vjz1J;+qft-Ox|U%IM3 zJ;Y&8<0}5KDfid?vQ`vHI!MmW&cWq@*^YGv@l{N0aH&IlCl@z9$xj(J`*(Ty_k(1Q z6Ef8wKR#1XL3n0GXZiUF8XF&!?bm&~No;Z{^7bayj`ujYYS0`rLY#gAC*&DnW@ZNP zZeHSg8`G~}h0F0lo)Zo(_~5`eStZ%HaHgN4Uv?JxsGE6QhH-{XK~_F%a<7fJ>y-d0 zK~7O4wRm|NdH9;A@7soi-NLXLxDt$10fIKDaMp%5o7PJ z+2U6e5+cUL!ZPjMk<}NNe@n;{y?t_0lA4wp8;j1wYvAwCO-=b;p9>N&T$(FXqFW8U zlER`>FPPAZL*5`>RFajyx;{47)x}0bGgzJzRaF%`@Uvu+i;10L?mv9mPcbzxfdWof z+{&v=j7>~PhAs?-lhZF*cEuFqTUy){6=(ig(t$zJSS1FNnJaJa4xL`ff!f}DbmM>< zGqYq?8ENV7Qm^Q^&YE*BH?yX1v%4BAwrkCrJ{?i9)y2~er=nxTwd(5ob0g4EQ>T8> zrUnd6Oh%Gf+*Vh7^tQL-d{S9V9(JXYoSdA(k&qDHZr-FdX;xL~ahmGNU4kYce_C8p z;>4w)f}8H+LCKmDm(V*fI9O#k)wi%f$<8j=F)--Nl#*|Pgm1gE< zW?qn%D`~IUi3IVa`_x=)LRh4wrc!^T!78x7+=i!I@O`fjn=ou=w1NQa**0eT@ZZd) zT5v-G^{fu(dvjjhKZS)_WaXvzRyr3equv1Z4GlF$lga&BU0q#CNh#MS$Exfq3K$r4 zqosPJdUX~7k%IDYf|q!d+b-1`3l^)bB@KS_yF+x1jT|bt$+EY<($mwUD<|@#GIC1q zcg-2&M9oaihPN#Vxg5K+t#DOU6xF`1bAF;9$6@C_2)kqIep$#X5`5&-z_mJ-E0yNCeEDl6k^H z^72j>TkHXYB?P~NDk=(-7kYnxqQR$;8l~0MMnuMAVX5J9bEcr6h-#yxpa{ce6_BXO zU6q;n$IhoY`T6;QKUaJ_zw>e+P~JYg-B83{iZ;s43#E7|(>2vHEiL2vWVNbwr5$lBr+qVa2 zMF&Nh7kvajgEx+` zPq^ZtTk%7rzu*3*R#7oNC`bguBJZo^@dKhaQLcEpp^*_qF==V)*5q)EYi3D_NNcMN zTXn4qH5nN#14B}~7HF@F^Ygg4uCFe``c-rqjl?KVmVnZ{QfcWh#G1JwcE+ed)x6na zV@gVrU~iB8$wI}iU!N%tNCP{5R+VbD!2+22`p(Xcf2W)*Mp;^#-tuc3lffv|pFa@K zJbJGB@qy1Fih{$)tiIAMlT%YegTp3!pQT$UXlZB0$NNY6F&nBCNYcH+Pw0>j+9Wkq zdzU$$H}J;AKo0`n|E~Eb&0h4x`$}m@8=I<)jh{lpWLo$9Z1c4Rh)y3H)E8MBot<@q=m+U2sMf6;bk$j= zPc^H9sL1Ep=MZ(tQxkuNme~&piJqvWq;S7>6FkA;Z9|Ql z8HW^EU4;Z<zT%I_W6m z2DBLQIN;caxVZEdt;`m5}g{;A@u!`|IJ zGdx`JaK@ZYLm-;e6p5UHAB%0YWtJ*T;o)M#ivsSLJPV# zZ~UO%A=x-J7s!!|EWaw;U?dFZP>h`{wGM8d!$QJ%_r+Zke=9*sDG!L?ur(w{fl23b zQY_Liwkroy3aoD^jzt+<+EqW^8yKRl9oM!IqzNU^2mh|!)yftMv-FLKtcKEHp09ER z0)v8BSQ#Ka6X)tFL$b1UIPDL{+B`D0V$t8di`%S65m*R#!ADTN~@Y>~3Sh zTrPKXWPuq#I4;Xji(S#w)K!@#sRZ7q(&y?c1Xa}(4Q>|z1zK?6gr1rCH`N4_F_Yv& z#GrJOX;(@ikNUN+8a>SADGdgCcogG2t@Yi2FCNCup(^JkTBJqHN52tVf5O7v5={VEUa*JU;{ zzNFZkj1je2452DJ>JI6vltr~UowAHrhDSWy8((Q}Ke@kz;Z~=B`doBcl%Jmf{f*gV zXK$ub@SA)4^4#|tEoc}r-!H&$DdqUx%~RaGr-UG-Z9pS3b-9o$0CxP=3h8tP5v zi>;T3N+LQMVF-x&Ly7KdYf;wmv289eA8`zgjct!7a_Z}U@bhPzsop9>T*45snyEcz zTKt5KDJab)z`glZUtgcu`4oc^KV#4G<2WMo*RNlNg|gDpFaR2PsGOqgLaR+(eca>q zadu|G$3>x`B*B7jeZG^?M8Ml`~$q>y^-sr@OnuB8l59nFXeC|5EC*&gQ<&TFO zC(Y(-^A-!WR-=Q%DclC_figOI;+N!duD}EUCMaC&Nnq&pa>+0}Xtf8GU zQoaJ@l5fdBHNOMAJf%h$sWS^sc$R@*0TB)@yvlT>6xxHe_`LgGZisVAK3{CAWip}FO!py=# z3d2W)qN}g3pb?vN@7L@!J2!V{llxnWh11@2f1-bLY+Z+ep&|^AEuGm)4bR~gHM^(s zN9B@Jo7>_}W#xn?J3Mi=2IQa6BpW7PkEqPFx1TJOc>+2c(5z39mQ41(x~DaoR@U=w zSU>fu|9)N5_Ca|MCX84w@W2P8Q?n)2by+0guFGqI%F0UPg{hr~>y#GfdleNGxD3W{ zceeJ3%6HY%uO`wY7fLQnaoyz6nyy+`M$d%97bRixxE#>ZGBRMwD=jNeNku0oCx^#7 zQW^MY ziHM@`jAa{)5;&NvOE^A0jFc2{yWF7Q$coB#Tp7jGnX25f-b`QSAq$0lpjG=+*;wD& z=w#Pob^OzHsmR5_BJ=}8wKbM4F1O)z@Lj!91fgFz0ZY~eF)XSmqK1URbw`7oc4i$S zLKn}PqW*`{H93NiS2OdvotXo+g!(I^l6L@C>spsjacj}f<=wWUHnJ0EU0NX3HE|mk zh4jNTT3UxCVqoKa<)kA2ZQwy0`aqZVAG(h473Qp-aJ!-8!;3r4TZ+t=Ae2@auc{Q6Keo zs??ye0IkzBI`9PXW-N{$-+2bBUQcL205TyJ6&)1NHcqm%q@q@DdEenTShBqAk4y*$ zkmls{hNmThwaFC4E1DB767JmV@uH))>^}jZMWe}H=e(|WDvnr z^Uwo4^9*<``1w4D|HaJho?n+Wbo@wfW7-Q>dKWjSen1T*Tz$yYrWU zCvlZeVCG(;hI;oT*mdN2zr9^7lkGpN8zpUS{xWA31FT&i?p17(#l^=%ex0RFb1+@J zx-sMX`sc~vbmerewm@uGk~lk=-rdyR{^ZFoL{4@xp6+qByW**;ndZ;qE)T?JhYipUMpV+=^OE7je zH6THFm(K+!Z4h)}P)r0#h9?7OpE4~+GP`<&28x7K>};o0Y>kq4M$2}#gA8ChEqPBPGG}75l>F7pjB_)xj7p-i|Bb=`rMc32a-j%8~kX`2&Stoy{ zDw5|xt!$OY&!5bbD%10N<#M|r)*69?`-Zd0R_Kp+$mT2{E}r@t3cU59xF0ISx?uhJ z4n$fqa$*7k3L6hP%Y{kxFz(~Mz4>+}2>_IvHPrhj9za@7?r^RG%BLL$*+aGs;)jX~ zq-UI6_Z_0Tx*53vxi`QXfOdVMfQSbs8CKTTPY(UoK)u81%K(Ph@Q^r<+W@qum5xwv zPpf*lB?GVo+pxQ)b$WF4eI~m6dwz5C(|UFIwnK<%&Dro;)|d@i@PKYRc5U zxv>WiA-E82q-O;N=1+e+1lERA_Q=<77wb&W2s4OE8~a+Hp2^9ZU0!c_y@))|&hp55 zgh+%DxLxnC8<=Tmp3B-2BF`5W=O4ldtnLRC`cXxZG{pEx?z*%|NV0jJ-x}xz^(7vf z+gmW9;rp!#Yu2syExD6S_Wal{`xd5FG7X`X81Rjgb67v#7|_zozalE#vxBQ@sBs=7 zJ3!tD?r}+q#5(2VFf5=P2iDeFigU>ZLf$E(Kv!2x->LNRyfPc;l4nzL2bpGe;rySUH*h6Z`xTJxo*SyhNoV9I9Tp&>ZBobI~7+@A|th79uc+bR?k!C1g zLsq$h_#I-dmCj*UZeFxwe;S}s= z(K!w5EZxJqIp1~t-)bpH$H&YLMnJArH z2mwym?nBgwAv9e0FVh~Yy=&}9VF z@NnM(4C588+^&h@WNAXDCpR&Hvz+#nDGf!tr+gFyi#}6 zg_RHPpB2QElmNr=355&S`)J{#NadHX!vxBNNM#-XMZT~+mGAx|Vr=>M_ufSAp#n?2 z$gQ552?xNR-Aj^e4fDBj1zV!HjXc=`B2z^^toJSk^oeasuoTo| zD;-5`;r#gK67#{&UH!q8DjF81D*eo)V9q2B=)Y+R^2wfa`&Jh`5vG1 z4^wR!3MGl4g_YKg^&n^%aNj+-B#WHLs8vn64s)s7c5K3Hk})C$=!YHYeksckygq0a zjR@F<|GMQu`thO$i;19xX2`%=9)p4aNtWR8M`z>#YR2elt=a5iJ@o6o9DzTtcGY~Z zRC?CrK7RlL2nK@ymXFUU;2E7YF;(!o*l3s6cUlarnYnta!p~CrfpJIAV0WqBO6)?0 z{DB!Yf)B;@kG$sS*WqoY@r-$dMpAn z{bUOz#CzI^r142xttP^gLj}29$Uh}YZ=RQ~`}Q3sY+60ir{r^LY9<{~lz#l^INm5O z_+B>0J4`(d4QXheBa|B|^&UR7}+$(*Ha#=Q|c^dgN5(ovR2_|IC}1{;hMzt!`7Y zmXLMEB+PFXmMtFrgndxX;*CUrLWh9$Tt!J ztWtb0=U@Z{TZ(0gQD6vyaEVkM9&ZT`<}y29o&!FWk!g2HI%Jqbe}kq~#V6E^Vnatq zU#Yhr?_E5+3tA%)mNH$bw(opkaX9sNwm<%no_BtEXqTzeGVs7T(<4;xO6{ z_2^Kd+H`QTEKPW7E|Ibzp2}RZlS19#9M^ht#BQneT8h8Os@~*2*^}Fk@LFIns)?RU z=I`%+=&k6tf_!)~IXp6AulUEcK>a&ndhh12>e*}!6;?dWv&&8D8bp|zMw~{wC$xHK}aX>D|3M7sfbwwX5;JIyt6y{l7OIc z%hbH{BcGswb&6!m0KM+9(M{&?t#Jwj`zg3R@2H(tZ|)a;x`QO%?6(WbbpC}gC7~n%!zC~ zH&rsQu-vC6iI5GGk@al#;Y0@o$>{6HeT+Okv2S8rJF!8b4newf;j6=0P6qaZ`f|si zM42t@k5Qk%SjHFM^jj|ay)Q4}YA+8Ad=eVH+_!I;1f373L=Kz3gEj%J-J4;tSM{aM z-uqdw{(0VUw!Ix08bZgMvB9oFtUbx#_w-2Ios1|CCTJ$cR;o>SCRw34n-(xDE z(mP}p77mQyr(9oO0Yq2siLXQK!>MVt=JRV?TWh>Fk|l5JzL#pWl#KgDtZkns<$|+8)LD+zC1rhEIJ&WEY{UU)F}zo)%8gvnxDg*JCkuKzDsyewGL>-kR{KRlBuT5~ z3r-|hD6vYft0aeM9}gWbl6vQL8gXg%EHqk#qlPIdq#Yz{WfY0x(3j{CWku1X%orUS^18h6@sYf|RI!;Y z>>M9AI88QsK|Q7+@NnA?eFA~^Te;lenD)F`i@A;Q%;gyxJoJ6I_Ph}otmi7-dk`|d zw}B#)O2V!-&-Tr{i5@L>{`Ny_Xo!rohA-lR-Kvh*$MkcD+#BpLv^IYDzz^g=~ zD!iHLAwrscCs)F(xPBn~d_ zP%4AlUitV|>`H#Sh@(^;Qolom&HXm&GrFC}26ag1VJ&l`3;c4o5AL+qHAj#;7WZNC z-n{;&X3b9$5)xo~E+{B?aDc1xBs7v<1)_|m3n;c*dqMBX`1$27HTIsfvNkd>U5@wm z40m^x#7i5&F#O`?!r4^)P{1v^>^0rb^V6VrWEo7@K$`Ohy~T(xtWI-tBL_QsPf+9G z{q3g@64#Hmx9gp~$b>vEg@K^mLIAPxap_H#Rtwer%!R*S(b&~S_L+9+yM;aC%jdkC zEH0Atn%j@B@Hj9jf`fy7(PqDJvYReedNucW+%IxHv_)8LKJARAwOG7n-rYgtrI7Kz zLq?ZGy-_VVtaoKiX>nNff<@~AJTL30H8nLo%>NA0s&jzsXiknnDv!<0+4^S3huNtq z$CcE1kUdgTP!JIn<+0o|+{R1)G(}41^6rh<*qA&at8Jh+{E%w`~nVBEi3wv`#Ha%Wn26L^@E(&lSoShSB)2C-AH_sh&a`ZqXSCzE{1S*M7 z!y?rZm`$~pa&Z2m1(?%fVv<7&$SyAC((U^*F%hjtHB-)>T3k%M?k4s=J)6OK%F@m4 z87$OzA~bsq5fKn*HM#Qg^2BKE?CqBtomwg~*H@n3b=&P89Xal;5#WaPY@VB%CV${4 zSG{P(Xs7_z_V$QOd&kGMUsuxNOx~0zujEP5T?kp|=xkQFXM@|NH#F_jA!jHG--V}W z&becyxMP4jzkKp>m*}yT3VUzNo&ufjnKHSnI)29J?f!V4pX%Zu?bIQaUY7lQb@Q&(Em`b5uXwBp^ZT32jg zYKC9G1$w>F03^cY+Li+-G8DeOHlM+56aeH-*xA_;@!<=p+}xl52&JbFe%;#wumR8P zoRd?31eQ4R-Q8Z2lT?RxF1z&g9FYdZ4jOivpv)*@!~HaQ)JPc`!Lt7nlW!0{4br^s`e z60^}ssX26aBdDw6%f$rqa^&hWzFccF{$q+;$IyV5?o+35Y@NksOXGEQU6t9&QupFw zkqvo-=RDKTpBn^RuAfvLU_M^uQPCMNB>4>#;`a3Pg#Hx5DM}5{w0<$lXHKrniuU(^ z8!<{nLy;9kSn$-~snQ`M{VT3~e!o#gWk7V`f8+bhANr9wA_y-1N8g8GV6w=u^T!e_;Y}o=8m1LHPHrjC>M-(2@ zxwTd|XM!)5Uud}9dan9`KkJt1JZ`k5O$l_GE-o%N2ggkgubER*Q?Q#oQ(RL6SvngW z4i{(VHw!HW7W(=#i3}uuA-1;F5ro_@&=qEjBXW78EAWURjxR7kXjnIoEQoGyX?)Z6 z3a+HgOZ}Efv3IafNl7_IfBZOU+3*1~M7@K0!%A6H)Y$Kh-^PqbIzR)^eqpL7jOzsONCtFHMMx0})S% zKRd&VMWGV~rlTv*>FH?-3i5pBnlw~Y28=k{+uNd|HLck{S6_Urb%gpFtK7L}u?nY41!|?uf-e4*ugCt4w zB%D2l4tz$)ovS+^CKohmdGEajITkXw4-B-i{&~%MdM{~(gZiv&8XvLyYp50fY)C~Z zwmA{y++hbbWRTjPEJ(?1yZKV!SznzfG})+o=r9? zDw98+nV@T=rlic3EjWjTz1*RJiYT`6cd=p=FpD2KR?vG zdVZWOUH%N-GM;a-+B2HgWO=*t{JzoUnap{kivrB=J|KZIEWL@>r}-n5h)PILgHa9f z+l*&$VAhn&_08V?nCE`$i_(O7h)esUxtREPb7SLEij7~lJ%vW5&|3*f$mhle+LNfpLoQpBT* zPr{Vq$3c6}$f^&$lmG4({~J3-c~Y4X9PlF!(j6uJ;48`X$#RVAg^iIBPKbi!$k^+- z&d)L)sQ!7!zY@PO4;%%tCi~0b?A3OVpFn%Rf`fx|aJUc3bM#yvTwk8L--Nuh8yWs9 z7u5KVL=Z`&;Suv6fg$LRdfTZ9|NYg;N15ke-Qh(psCf#Z`QL?uQ%99wHmU!;s7-bn zLCshwoW%a`tDyWpi4p&M9RA5!Hp4yae{bWv4vLSvuF2H-`maoJn*76GTI-{4Wb=RD z^53ua_Ak^4Ui*KRD*oREk^e70P@<&DRq9=!s#w__Y*w3w#3DT;FXf*)Zhk00&dhxZ zPK7@}4!%~xY(j1|idTeCr<2bjjDWlOf;edr8bCz621(m#hrYk_^8Gzd%s4~}JMil} zRE9n}FY-a-dY89c^Fz1mfHKx-LfFZL=mA+(= zBJK9&9l6iwRLeXl$^nx#(qgT}sU7n^7I?9y##_I?Yw?{?|DLdtQlra#-n}=d};Vdy;b%h>EJtn_7-^w|L?nbR61juqQw#aQhF#acZS)% zrc_x{StwGNn&x*m^qBo&e1)r`hH@-IG(9Xz)DWBp)%A9q-2UTAac=jU@pS4Oj-+!4 ztya1UI|O`SV`jo)8bjf>b`AerNL8^Xnuz-Gf1OH?12=PYVfduSM|CXWg+lq4(Uvvg~pub*otU)rC!n^ zZ0P+;OC3F1k!*fRNsY6Dmb~uWqwj10^6_7-1y74xHgPAcH_t{3H*UJ$_D%~=DUH6j46pxIKn&=$wv3CXWL_&8|s^ZUBn zp!zIg-i`S;cFYmNmJ}Cy@v*_U#`DGe=jF}(;}qH2)%A$g-sjYJ0WZR{GEuUAM9}W| z`Ga&;yBQl36kRtJa6tJZkHw}061%ZsM{A*vJq(I%bv7-}aFTN(jVf1Dk8Bgi`$ztJ zom*>jVfb7}nI3zT<-5`fc{<^P_IFPVO$|yK7f)OQN8(W_0KnNR%{ecF%)1soKiq=f zsX3QN+|4GxJ9;SLau?2PMOc?FQ10T|=_>MbzHj4j_K4C?m95Oecv82c%V=f!5lqA1 zmM9|uA01AM3JPnDr=!(+XJ^S-Z_L18e9byNB_Hu&!R2aB~?1Q(V zr&FY9GIRPm@AXkbh{6Dfs7s*y(TxZ5p-vF5{sIGlA^oERzstjefPetR*HHo<5MV}| zFV4-)jgFp}Hes`|wtjsfNAUyz))fA5bmCVQ7M6lmq`%&^kOrsfX^w~ki0ov3U*#x= zd(oBO~0!>{ET97HUx%c zTlcPlu^781C!+bJ14HQiwk@9#EebG7oHs`>(Y^Un9iO;o7Av@rIZ+?09>~6^N`FS* z*xNkKb}$#bTv!+b*6b*^=%IHF##ao^=>+-CCUMQITO6@o;edR3+=yOotBb1>?stX7 zfAp)kxjE~M=R1~`hQ`Ogfrt)uoAtKPSn{?QloA+{z`6$%jw3`Jd%UFLynpX}`OtmH zX1>~p&*x4Vsr|3^{8L=0@{8~D2cVqkBj#0Bk3LGy(P@Z2{x;)}I7N)Fg3gFvvjbbH zX(|WU>{_B}__-8d1k`0p?<}PYAR6b|Srl9{<=%j^f8iJ67{}T$D0-8RRGm)Sm9=uU zQu?&c=`p?~2qtF`p!BMLWTe2ojrto(J2_H8VSz@Y>v8|&E;Z(1*SXJDRzL&+6(wao z$enF$Tpc+H*h_}j(~`YdG&Z?V(T$EYIhZ#%?hh1BAL^-sEG%fzB4j#9_)*ZPB9_!@ zC~?$#heCS=5I|S%3^@C?ah(9tOUpzczOWMZFx4-_Z zMt0Wfo+;e2BZ1PCKoGwrpm$r2Zxi}uMP5R0rN!~vr4apOKzurt<5f6#CY>Cv$00Ya z{LTvJ$%%VkLL%@N6;WoeucVyyJrT;#85yn61rJsr$eV=hj&rupg~wX6HhJ4_-!ua8L=Gna%v|3WN>5J zQGtoSjDz19N%WnYiuAzz#KMC@rH!?isOVed1CQ$k2~deD7_y_N;kRlsHm13 z@rg^{EatNAj;19t+A040DJ!L!F*U_p$;Cz&F}myGWFHh5T4_4<{XY&}@gRAd=|`*& zvSUn>tUArQ9pw;DyDGOYV>7;;xbWJ=x?Q2xLsYP<+XTc&`gt|Ziacdp2X#QuW5az8 zKvWR?g@Qfy(84jMQQCzy&t8+L;NpL&Ma>nMZ^^N#1sZ*hB**Bq#b2b@=tDuB*Rs)`6{*v59Cf7+W zcmSFy{Dqcj7_2tJaJd;i8{VgS;(%I0)74gk%Uq)M2`oBdW$Kx#T{>)p+@(#|FsNa8n>Ob;)Lp=LmHo%w2R%y0}{gQGg${c*Q zuIx_G)tp|fAL2flcRwR=*BKdCG`rkjQ&oK|s-EUeqfcPghrdTbe?$8Ab^HhTxfloU+fZ}UvM&x_om0oIYuA#v%>;-@-`^669nU-UH`7vXv9-Jk!BCUA3j5}BN zw8}>dXz$=rc<67^pTD%i|MPXONy?RE%H1kAPL=>qOtHQaRXcu`=WU3nt- z3a+1*_Z+edix);J%--$V@4UrqOa>DL)!2k{mQAap7=!asu>nzBj<4X;E-cEaCe@VQ z$USAiRk=FJF-Y#_RU>Q(K4(lkctq=wzyseU#9mpJjfzZ=PdTa$775_42-7nRw1557 z)>>IaB_P9$eYiT*Y`(H+=DP589!N?Xa(ZUJJs|pfyIy2rqYs zPsUnl0510@+vlDV-lis2q>~UKT4@E@xbkpFbt_L{-VDX%nY4v7=9BqRBv??xVDjyz_zX}VxJWRb(P|RLk(Na;ZR_I7+%gD4`t$2dKOr!n2 zyu4a*LFPCp$30?)hxH7@o4I;U?9yeNo}LDS9W^a&>8d2GH}*ESwQXG#%M*c+f(VP{ zQFOLL_?uPE=c-n0aOJNw$s>Ih%{*)pw+AyaII?oxaoHGH?QKkCiYR+}gr=*Wwj!() zM0>(BonXEBSZ{@g4)T?qFLMW-pEpJu2D4M#R2>YqNp zy@Y$8Dpzg)-rY+uJ1kpmZgKC_XHAjgzO1UXdf!@GY03<0dTY&=z|6u{{3yPJGfRhZ z#$svCdHu~zt?u!Y&~e&Bjg zsT9^DEX)NSVA3CbePWl}dO%FP0%;#`bS!#@kN26|g9+4?PfPb9Qt3Q{Lr;*vVr}v5 z-q^{+w#fu;QNa%D@Gf!+iR$vakHHS+cI(qwVXOByS-azj{@MZwS!>b0G~R^0%_I1APW195+ddZU{z~QpJTD*gXhrbNj^(jC0B z1KA$g4n>!Sd@^qkNw17Pn_wB$n!fVO>v<%NXT0h3SL{^vL5u2-#L;91yW@vpg=|KK zR@;}@GAZ1c=^3~y@7^vTS>MH2SG3tjE>8DU{aWz>q?GzQ0@<4z2EvhXm zYYpW`(hqiy4U0>_dV^l013g0^_YV47A~v4K`^$R))@RPE%-|%Pg4FItn_YVWU1*Tb zVPE{J*){;jOj#oJsIgJ$s-O@j2)`4K&Erc10~$?#KShTii9a$9qob!pOb;Z4tGGCa z&CL_YSoRA}^ZF{?f1nj86{%IbRGC&qQ4&*^Fk5L>=5BNWE5)7`iMeLI$EsaamZd-8 z1jo;LQdZ@4o7U_R8C>uxb^Bn8$aE(rPMoj)?$FI`2G1M7e6@j!C5Dxm`A4-@sc?Y3 zEeFlP_TjG@JYF)g>70S(MI}78+S2Bi3bZ`Pgp&6-DW<32hkXhLWv$KvF`T+YS)I2m z+r~SGhlj1Lt-%(oMx9v#qyRD6=<>-=!m0^Ad0^kE+G{BNIzdSO~IO>%(%yWCk8CuIUQ)R8NZ?qR!0N*xl`^-^xn58q)2? zcG2OC#rqR}SbUNEoXpJgTg^+iW^P#Tdi&>@f$77(q5zgtrQh{?-!U+@2k^F!w(7T5 z1tr6gG~4t~S6t49<}VcrBQ4(DCwH#v>*{`Bx4-D>pS1JH1NCb?7G-mI2Ln?`H@G2h zStq13qqZYvnUxd@jUFiZx+Z3 zjLbAdZ*nqjks>t>t-gRjYi#CuR!0`M3o_)NC>`=_4c|J8)ml*}j4A`k*|D)ic9)lH zygFcQz4HugsSwBJ)gNgV1o0y|CAkzvGtB#pLvRs6op%b0&Vsk#>-UqQi>#*G4p2dm zyv}O}UP}y>PVYVxXTnzW)St+%lN=siOJ8`2MMtN>Jlfwclei70))1af@R$a=t{m1! zUCr!Ox^qf^mYJE|!BqpP7Zt>s-PEML*|MI=?k)L+cS}Km$ej-gkO&S~j5DdGQmsdi zy>*htZPQp&qo==%Qjj(}IQSxIEgKVaXMZ23 z8$l>x1YfnD^>o@Hvc9a`SXNL~wP`>S&7DS>n{|FA3iqvCLe9n-Dpe;cr}@#I$E!x4 zZhW&7+UC*Gmrjr1^z@U}SK64ye>Oy~&pWWegFu?pVQO~vaA`hUF)VPh((f={!XyE@ zG&IzirQBl`O&Iy^YA+=rLyGqL%&^UgU)omObQo``nc=&Pj1`ExFQ}+c#nYi`5XUY> z)vEyIF1wh(8Qvo=sJ?O5TU+%Qes$OnPQIm*ZEJ1OXbUo5Ee$L08XCHqi+TpRX4u50 zzV;RK=Y=?NvP)1%J$(oY>|lXC=Ekb3&0xLP3&&=VD2fU>xRXrNT>Dl0{aN;p25xHQ zgR4rU<|eM903Yu&yYL4j1CcdRQ2gM2Oo@+wJP>kqWjkA@4w4X131vH$#tzXjLqkKj z%86_>Mtm>GpPG3@v&X?dV|c+`(s9jMZ84}DAK6(0u?7MHC5!edtsuBpZL#Rzt_%12 zumq2&L!U%|zaVm4RJlt>49YUP^+v&X0(K^wD85x}fN$Zk`;Qg?wo(pkyUj;HM08X; z36A>)(s7ujUo~|T{C)%@Y_fwASf)eR3wh_9MbQeX)B;j*(TPNd(|f3Xy_d@P;CevqWOJM!)w!%vTW`5P;3uY} zQfH0FV@eO8V`8SW+i3g0#umho&kTm<9H%V=ne1-%Mu@)!nX$YrOc-y&!>L?nr@U}{ zuuqfKVp+y*93=fAw9a|GeEdUk=^eW^JmO*DA+#>0k~%VGEwUii9>P*&*?zB>AnvX9 z)-((@Ih?k*T;VX9UPWb-8!{)qR`;{a{{e}9H0TP0)An??w+}bCmV0Lm{QN$!o4wz| zgsrQ#)b|0)*Y@nID}?^zP&}rEjt(x?lM;sr9=8X?2J378+}s|}J?NJ5q4>tfllk-) zH&0S(HWt1AComxXS73-+55#A3h6WG_+3n~0Dq_eUq5iCWdsdK-%{gK2AD=m2`*?a} z?O>tMpnLY`Wh>+AAA!LH7~tsCnxoUxD?m~hq<4iQaB0;Rz&;&t#b$%05{kf1)su;a zP2N{pF>&$mQ0E%^PJ7 zNvt%OtRg>Z5BvsMBQUMH*`M5vY|6xAGs9!dZ|ge%^TmG}Q7bF?PW;VR8g)WfzprO; zw8{xBz>#qT)8G|J-LkY0%1P_72Hs|f^_of;R;_LSs`luEIP6YU$Eo@=Vz5;07g#45w~)Pph)FLyVW5|sw|j)=ZC%{Yk^ zMhaSv=%)tj{ZL;PWok_J+Fk9tP2qJZM=k>3PAcW;WI4bio*LfcN%!zZoy}qyhut-> zd|=t-cD8u=$E{4?h-A2WlWj87X&I9NT_h>(h$MJXgY)qY2m)KIHXKeA<0uojJ{&dQ zhj4Q@ePQRAs*nTrjuu3gh|zR(UiV+ro9yEjzH{c;Ps6XaO6<)Wtli+d6w*D!o+mZ? zZEd_Ib|+Xr=ntooIZbjk*}wH%TdUH2>Xk};j~PtT5De}_ zKfeCK!7>dQHPek7Gl}m=xwK;4?IemFs8qD+I^>ciKWc8wTp@w3o>tPbUj<;WUpA7> zjw`n@-Z*I)%k+7tNQ=Ye_{T3q$+rz`JTFme-Rhov_di(s%CM;0uUixmMCp>2mR4F) zK)Sm_y1P^9M!LJZyQI5Adg$(M&h7J@_dV}9*Z0rUw z#N;JZi_4YM>BY~J4*!Bc>j{5la1h5VWXKkP!aa?))5oC8VKpKG0?6}gx;N@7Mb9Yl z;s&GK(7u1Be6X0v97#(tp*A))8XH{UjtkaLzwx}1<9n+_moiuXggR7L$QRQZjQjRE(5 zdYk!I!m3R}*|fIjr_k#e(=;7fv05n;+1?BeQdrogwr7pl$VhhmvsY)t$BRD_01q>o z)W$|eX1@^-Rr%ShrwMCD!BXQ58YmGG&Jhv z>@uyYyivFho>ZRg(P?RASy>vld%0d-FH#OUXG(&C!$O>{te%?ZHXwo#6(X~B%tT+}8)-0L!(3IW z*N4pM)zx;x17B^h3JMEr?^s&Y!jG0KtSyTczX5GxQE{>Q?O=6Rw%*&|<7Y~%hMJ~; zK?7SV%cb%R@3gjnU-KZ^QvkW;@JX7@>e^=F^;;-x>@+GQOGXw3oX>83Ptg9&^?>p2#zrElNgYlO1;R`PRRNO#p|8RP7-_XJw6pjJ->2*Ol@E`n$r8_NQ{8%%K3hDDaiSu@YN zYEEi?T|PkTu0p+awVghqwL=;%XZ%wXe|G;cnVj`qWr3Xe^H?O4N&41EN*hSY9S-kk zp`qQ`Q|OR?g%fOg4v)-Lm>v%(nEINgzT=LHjz&czS@Xjz@aV?l5ET`rj-!`RP*ABc z(AYc!5n_qvt>@JdJKaDw64Z@ZWm7a${tvqXVOFY_4vvl~_71Hx&U;JF4&NQ?2*{Vn zKEQn>`#?ENS8@Avy3$D3H0bpssO{LFCp9@?dk$tRVVjk4!SQgh@%v=$4D+_3zCMrp z6$2UB;pTa76h$bH%OY$M9^?CvyirXSE^bmLx5Zf*@7FFmu7`)_mg+4h8*O=mo?5t= zC|^JVJo@6X;@J?I^R9oepUd;9aIX2)7xq~|ZQa1W7WsJIBe9Um*+@-sO?HJtJq^Z^ zfa@wWER31?Gm!FlwM|@GXcZNerLnt@tW&hEu10*8X$O#4NxcSx-dVzA@6wX`)7|!u z(OugT;f!G}w~LL{EDA^@AMf|?X6kN5Qrk8S6%}RIhn5hLf@M-N*w?-Xkh<-mxnN}@ z#kHhtB5zoR_wR@!n2dfY^=%_|b^0MDGP?E*D!l+m10@Mm@S4k)Y-x1naJwx~?gE>v-CIrCg zyziG$P_TNv)(^lM$A=1`GZhVV3=}@xnX=r;U1#Upt*u<3jL@x^TDkVxTP%9ZD|G!FI^_k_7(odMv3=b+ z*V7JX8=K07+Gom2Gt{FJCQ_^|wX2|JhklP!OS7uY_Kw%JW~%-*{35oK*_7s0TB(os zS6f?K_?&LVyQSqPeQRrxG9-Q)tuFXPOx7Ls6s=M)LO05dZWus+Jc$jL@fNF0v(XCY zEw$6_fal2v%VNTnmGamQ{I7BXLu26_eShxZ;*i=9GJ?=A>Vj(J@1@D6bI_IpF|HGsDMY)a)IqSN;4 zGZ-Tf(P9xXeSeruOibh#^66DGOT^;gP{4>eT^9tqAU?+BNHjec$>jEhO1sklz%N{# zT^?E-<62V8^%bV;KWEjeA7zkG+`w+QKd`yY{xVe>>F#NDu($4Ehpk%^1klIg@H83q zJ#=_)r`NGmGUqVF^<=EV=G2mi9gXv7kh=KB=bKOGX&Tz%lKMPVy&Q7fAeYUBo~Y>j znSQW0e+LkLg1}RRbi(IUw?W-P+-$K1w+>JRz{q5KnA>Sb`Kz{7Qe4Kga&auzPs@8q z55OQ^z4kR*u7vjIcYRv?taI}V2yzjUYR|$?uW-_{vQknW+j&+7Nvy*O8sRc}@(WkS za=|Jr%JYTc`$$TPMYl-W_r>^VWbC7Q+D0ohXV>bo;PDeH?N3mzF=^#eoawd(kGG=DBBLgeS zhlwSmefyAk_BXzST$J0u{!JGzzo7kLAqG0$!1}3RIL_%YPZLELVcm7vBS^Z}L_eM_ zi}KriZ`CiW@56rc?`j+W^QXz_DY}^E@Gf-Wp%f?5GLb3A{Ay6wD1US_$epFtdH)EM zbkJ$Fl%}VD8gu=fT~PJvnjt|v{OQrmthl<#vFa0RRD`ixw(~>R^(as6;f-#1Zm!_5 zCKuKtIcGEsz%}_IR_oU6W#qHPG^k^K4-M&Em*OYYnho|3M{$#6RJ{ttV{Y&3v)YeE z05HlNg~yfM8_Ewp#U*za_Kx=ZtkOmt{(}N=k4?`f)NN2Si2mQmX*JoD^k{j$e11*z zjTCj(Y-D<$)ps75%u_Z}L&aD$il|TSO(A?osKl*4!t>%NN7YnU&sT1m8k^mMcVWMa&W-y$e_NKm0`Xv$BD3djkn z$^Zq0XqE?2R{32HDx!-(^0p_eh0?1QD=WTmbzUr~vN`Nu#nEd!5mIGZ#w8%6??uQ6D(@ z4Ka&yXQv`+?q$Y@+gq5dUdgj_Bpl8@*OB5~!t-;(VU_n77@a)Yld*?NrORV~Ce^B~ zQUP?3V2kx^uCP#*RP>flSgQ;c(~Tb8({p8P9LV%*iRaS90KnDeVe#;BIf~ox@X#y_ zZywAz?On^aQYoD5HeKZo1BsG(Rq-^%*jc%L9veIT*i~DjiB%_k<59DOE(bqYZo|C_ z@-4i3YtIs6$r#Lbw0*|Lb-8^71Ympxgu+rbEH{!EU0?IH_~HYzrUWd;cp67ZoS0TS4b}zF#l0vg=d40gsUN ze;+<8xYQY(^Ycq(n(Re|nP)4jQM77~XLVw&#uL%Cb8755Q$Ec5EWrz|_ebt%x+HIH ztH!hZJp1}3#2*-T5D@*F+*XGs$li(tiCHYQQruKy;-Qk0km%}~Gdulq)RTXQIY_!Q znKuDs(e7MaPnh`ThX$^ltYQiRo7JNg04P3(5C})fOjf;e@9TF52iJCK3tG<`)^o9h zmwY>(YAnf3R@kn5nDRgmziGqYNqnOQATB#QyKm$Sb~o|h7;|z$+|^yLHazCexQ<2T zE-<*1&f77TPEtHY;lratB8pZ3b=Ukn$JaRs-Rf$J0;x_b<3dV|0`RwkA1C|?JjMHU zzhx_=c*w9#DXOT$CyFvS_?_JoY~;A>ak^@-9Pe<@3=k6O&4)I+HhMUzP9K(|?$YzR zw79CMx497P3(`}I=~m4>e7tV3HQ3qT2l`#FjG){3mRLdppsyJgd_!*pHef&uWM%5A zC04e|NSSp|`bdA5i74=`i7J8(?#8^MroZs#W@I#N&(x2dkz~0lt=gs&^|&XaBjzHp zed@@GRSW}v=UB8DA=c<|aVtC+Vy1at&N1JHMN&G&t}sOPGO8S5UK zEDt&?`WSn)sm?Au0P6Bf;{_|r{`vun_I0YKD*Ms<*TD@~55@w-JWUFwECc-m1RRxG z3JNep8{35ScDGdSTrHij&k3L12MQ()eKi&8GLDv-HnGsP+v+sh2u>u$#L$Y2G0-vL z9W?F)6JUmsh?k3-BV!-^JLlnUZE=B(1AI&T(ez};$V_8prD#6Vj6c$s*?n}g-^dwy z-6=7ViGIjucw2=#3^!%E-st3lTRL9g%t_vzg|8v|imu=kh*(rLvc#+2ps;py(^R#ohgQ zgxSpU*~3D4zg|0_1ljsJ7Sv>SS^<$BWps}tWMDw_8?j7chuh$?;!Ss31?s@0g4p@| zrY#Q6UfILTnNkSNY?b7hglTQ{8l9XA5JGr7{X`=VNnrB`Sz&vejS6gOIXw6hJd)h> z9{Iiatn(8YOV>O@gLIhpepS=Uq%AGrR0N?GBEgNAmXzgnD!se8R_ht0+4?Y-9N#JX z6m8V~ZP!YTM4LfHU>%ox3xTWSadd{;?zpU$R-45mW`yPYHg*|twUiZy3|-=^Ojsw+ zY1QNV3*X~OtO<%`lZ*_MEWvjiC&yZQdxe0>i=)%(eCiCv| z%_TPCL*l4k_#}h7vTMxff^~bP4(A)}I~x_eVV&2l@*T@k;WBi4-EUyE`EN9uti_BB zesNqASj<&hfKB|+%v?MqRGEh5**?LiDh&Vni|5sb*RAc{#jd$_x>SzrG2Dd!n&S*O zCVD~$DvVaui-Q0R526c10#uY2i&NuhdCAFmTO+CCAms7$Yb*_O(9wyM)(4P#KM0W( z-DxUDC?dVjx+AQN!FNbv`mUbF-J-?m-ltO~5fTcjTfzyV(5XM(qC@gV5QL(lM|{QQr)pP@2%>A_RZ2sqz$%r0(L&7XgKpb_Nz8_`%6 z9i7uZhQ>&zQpb&c&zk(zzp*Za>mRew=&odK9k`J+V`ki~VGyj|W_@2h`k5e{n(gt+ zjQEH)P%Uum^`k+K=9m7I-R_lKW>K{EhU2BnQhGfey-HzozU%msHdK7jmmd$3j>`k% z3X{VgMJ!aJYQt+uponSlWM!cxBA}wBHf15PHqa&VSNaA-xo)Q`FOaZ;gCo2a5q??QtuhH$yp=+H5#MDJc+G_S3%VTyhA=UuC=3(Tu zel@GC@BkI%aoEm=bdQTzY16WqJPPl7xqNHyPQWVlnp0cv)qkC@-%^&jqD* z8QO`{!xSajs8+pr9wRyiy5=oxHTy$pL45UWH%SuVeev8kRlA3p{W>aY>g}P_?z-GhNHNyou(!x@30Ssbt>pJTFLF!fI5JAY8pgT3t9e0K;H3uYl;;}3OP_| zC;I*tlU}XjppHAX1r(NmeWnjdCdNw9*|{4;J}kv*hkI+n#1T5{Yeu=JyV{}IMLgwcO2B@BFn>POEmdaoEnGd?CShsw4fegabpA%!1K#Pis zqbVzkdd<$eV`-qFu{1RI*5SF~@p`i@Cp#CPW7Yc-Zxa#4@dr0-@~w z2^7M%a3`*fhR3azX>bB#1yMr4>LM(KjjX#OeZ1W|jYguaKq~iFCC<#R6w9H;$*07E zvT?z6jaqpf)wN^CscbfBDgy&@u*)X1Ig?+_fUqhj-xnc$EEY1iV&#Myj4JQdM?P8edrM%SubjBM_73@c5TN;IBAT>2ubO3C>e1`6sSn@)>;VQlQ=e!zZq z1>4+LG-qJKh!%(IwRX)z;~jgXdeZb6ublMYakQ1w%b&fV5W6{-5wVUYqvsUL`Vc(= ziT(F^Jl5X89%FM}%}%ixeQ9$5%I6xqzn4~D;#we?1Mw#8w#Q+F&34bGO|a-7#s+#e z8)h}?)ENhDej;@1;AolNmSJg9vtaDR11VtfdX|ekg>t{y3y%ZS_lF>pJ?k1X0}l~i z*2_{z6HN-Hj|%jO7@SmC{PSq0!TwPMrOX80Yw%LH;0IA1QKE+OkcgBtHHk8V3N=O) z|gKc8X0HmX69t(6y|#&Qx#EBf20;4bd8Hoy&-?gC-wpg zs=6t_O!W9@$cqZw1-hy-7b;vC&brMpqZI>)z!}ZwW@9Ey+0|^T(qoZ+mu*TYqRMZA zce!Z=-l9V*uoLtO2FPnj@dZ$Ii}0{7(ZvYB5YAItzZ5CW$@|)c2tFtj)Q-_L>ZZxw z9GSu;;h^)y%&7OfF0Wd*f1W$RUljXwJXx}=SytJ ze}NlMsE?Z{ANQtfTqZ(`X`UUZXjFB9|90@tlTc%GUug;dx%*=zml=hl#7Y0(C!lsd zl@x5o#l`@13ks^_h1AmD$Bp2L9sYfO#|(U{f9`%Ygs%Db6G5@#zNaVrkw)ON1r471 z3O5CQ(Oq7DC-9GSTW^($f8Pov4N8;#-qI(3s&fDPSPBAo?LT+Hg|BI$Qqme56EnSl z@*dQ#;wLi$X{!|*(2J0ziE^-+f)}nRUCGUyojN`2$aD%J5}FuT6n-d^R#CyeW(U!C z(fD`;zM^08#RdRx2-)45J8fR2+h1I|oH#WD5CwL{q?is`?!0D256nwpX_ zyu6BvEcg79u-kt};Gq&ONJC!D&MP@t-CQGuNys3Ff&>p}3XIL?zENamPi>xcPfq5F zyF^`F&0i*66LLz9_ElF@Xx=Tngcl&E;XG5TjA|vNj(x_&z&{UFg8f~WHEx9JL3VlR zQa*P8;=jg57exQb3IR~ahv*L|03{if0-(q(&X!kEnLhnzFgzTXa6%;wt9PQ)ifIY` zJMlRxA$?=oYa0n=>u5I%qbY6GdZ%8~MX}o(TTAuM+fA`3KL~vr6LG@*0Xpk(?DfG% zTGAp_6G;Q`CQ`_af5)bpC%Lv1_?e7NO&K}Br&=sE`n_shDN|MDn4X&Y;KK=f@$7z! z>i$RoYFM}F)LR`MF&%!?I$W2iu>kV3T)BAV*BI^df(n0Luz1&k>F@q^f5oyTJHY>I za?uKgy%)`6oLFvQWo2FRTnQKr>;&QfEPQGMil(HD5vwF9)t=evNbW=y73Be7=vpBbV zH4KPqfCExiTDf}fI_FN1%lByctK}%hAm;x5KFD=a*xkdP$B60X!2b&EA9l58yt=iQ zobtGOt+3C*cMj7NI-lOZ;3aZ?$*d|is0j|! zG;Y^G0cYBHp8LJ&BxXByM1NbG>bmkzLU1{GhCY4*<#T4%BD9a@-|ftjLlx2}T1Q`@ zVL5*y2zRu#XJKYuwPE|oO9b7*6;5#7o+_!KkphH&$b6Iq#^1lAa1xZ29Q`N^3aZx< zA>sE1^Rw~{KEf5e0;pBNfu*l+OpK)c$s{-^h=H+6ZgROsL( zTxaYKZh&SeG4cJg<^D+9(;V;)taraRunq(+p~dy}fB6E3+L<~_O=|~-i>os>8zaaB z1Y8(^Y`~&N$I#T9tVz2akHx=5XR|SXCtic24#*K-EgX%v9Y^rrFXv`IwVJrA&fk;x zUtJz=FHb~%@FADN(^Ax|u;|<>J~#mLN%`uC^2;dzFwG#fUxJJB`!C% z9+mcn69|v?sXyJ%gVSfJsTM%7!jhOoOr|~6tRj{mOw7s2vES`5=1@xlRFAK(5RE3= zX!l$N7xx;WP?;vCzWye6-YA#TMOsmC)Jo~l5Djn#;3Nn~o;X@A0gi0tUliv3Ul6BNzC9dcyWlz_@+hYJq~~T%M8=3g~+f{LyQ+n&{~TP%u4t0NF)h zVLkxbZ^5)o#MuMC6~2un^3SjND3=aWApX3_UtL~?2E*8`0I-e9N+v*JSsuU05<*at z{`GuyHZ?W&=2b^s-rptp!=Og2OA=W0TM57C`}mO*UG4Y$x5~cCWI@P5&6Ji`ra8K-mNf)1Vb@VuIpVXj! z1OQA%#wg#nTd!ZeuFEHd%h-vZ<#N6LUh_N#_FjkDK+8xnQf}Lxsp#lxKxpd1m;1RWhr~!MjLf&A*Vr?i%pBDZK`+wT-vN0@WT&Ge zG;I?X4cM~$UNJk{(QqCYORJ%$r-zJzzkf_f`reBEn}R??c{v=B-uLfMH-YrAd~Of8 z#j#q7iebo^G6l2kZvriED0*7M2w4r#Yt1YST!5IBE-u&}Ap}6BTsGgt#JrGQuIcdA zK7Is6+v9r1k!V2P-s<}N;`zeIhZS?nfX`S}IUdsT{HyKmx)pjj7MtjTD9?Ha^?-}t z*%?N$R{&0?0DY=pch87}gJaFA9xVRc!{OseMlkJcZO*}=w;0k8Y!2}Kcn0H_NX$J$ z$S1G*MNZrDhqtKzVZZ`ul@#1}4M6&%cI#YISt%ul9-y<VOy861zkv%(PfsE9ffgysT7o{mT2l#TPAfpt3zuO!qaq@_MJxA8KGrjnj)Wzk7*?DDzlO2lcc>leA_dd6;eY!28 z-FqUU79)ua_{p2`^u$Z-DLOb%9v}n-^$RsZ*v{5=wGPWMzOc~5kyVKpIE+IUDrnpC z^Xs*E>R3hk0sIG-0q6j!dps_1a;;NHg@(S1qf@cFA87$&L=b*Gs^#f1Grww6WaX5v`yIbeWmw6JOt#biD2Q>2xjU`S;J%9znlzEV^#;-RM@*wE!_ZB0Jza z%;WHIeB9Ec*?eK^XuCVkALltU`FupkZL@g28w@_~NHV*_3ZyNS%X6-*Y`^QxIwp-O z`IkAZ#X+SfXjqp>;p}+j@rWa^!WS2lwOTLMEd#^C>}{&kxb0C>zXH<^c(`{F3 zjCzV;oL+idmmVgumOesid64;7W)xwspKI*zOXFw%=n925+nf&lZYQb8EuJ~-fLjtd zJX&%i^qg+uhvaX!wmIVB?C2KB!3!`1qJD0R{}>aK4Ap~-)@~#N03bx7Vd?m zJtF)V8CYDLS{{iN%mE0{-7US8U~PY@(Uy}z~vkts&vuc@i7+5Y~Y;8GY^ZD()u3kze(dqK?Mes^KP zURRKj!OP1_bbpS^XB|g>#6Y&KV`(^<7p~8@hHHkY1n)`*YjL^>R4K! z`~ufwey(b;In4EIyyNjaEG#XZtF+$+Qjl2(p6B1d*NjH1)@gRE{Y!&0K*idrj%cX@ z>x(es*!Xt#YLbAoaxzZ>gyCaZy{$kure5jvqP7ThHW}Xf;PU|O6-%SmV79x~?%f<5 z99(C%bUQ%*)uyto9_dTN!)I~eW5UFh4hkph^S^!K_6Grq(6{ePhDj2lix)k_NLyBH zPcL}E9~=>CVBacJkDYbH;>xd2?WGGmI5~70k&s+%&s?mbq^zZug=@O;>x~VgwquAl zUy&ZeZ4+i8LViI(;(J^GpoU!%+!{jKp`VYsO>Wz0Q$5$WQkt#_bbbcA)3{2cvD~h# z>Xt0~qBKS=HQEECo;q7QESi|>bd-^iFrXq`bu5S!7Z8{mob-Nvnp_$d*nu*DK4110 zGG|k!g=(Xrm5{(P%!5TDjEhs6Rlde%8#^Caf>pkZ9$rmmcbD9`0W8X#vdU7^b9rN9 z&+zn|?GOLs$!$0yz^s7=6`({Od@&HbDk>i!HbI3^9tNJzwdBMxlV1L*t17}7s;&6jDo zyJvpyZg?SzBCOZs_VK= zGoq)219&3z#Dc`2BdycyqQ3t@Hx*<(2&Z)V2{2XMb~p9fCDrx_2`O)4L=Sc6nmUQ~ z%!*4uVLD$YF&kc3NvJ*OqtLr?e^?4C2WZEPm>3e&Wr$n?+^s=AhzSrxP0cW5Sw%$$ zM_cEU6YKkEbRr*hjbsNi$b^CzBR7%t@Vo?|S^*n?&tU_V#0})7{!cG{dKKl3CbxN9 zb~M9?JuTn+gCw-L_`usgyzS<}W&5;qVRtv7XvXZfBJI%d-rhdX#s+)|4lXu)?Dv@= z<0=F3=`rciz9Dw2laE(M{s}ymS0TG{@(R&fy%eR88y*@ub&-NW091m-wy~i{LY!51 zc*DrkmOi&1nH(3D^_bRFYig3;+ajsl;-D+iPmyt7?(k^PUUYv^Fg4R2nuhP+*>2MD z>Sgz!+&#>Xk)M1Kfk8p-xeVgM;%njZrRg8ShrLO&!}X8H z%B{@8&d18(6cjMbnn2X-^bK8cJ1_(|@7JOhZYCwZx8I++9M{z%j`(DT5h6T2~01 z`>enU9pr)R?6aQ76U@3-#k+tE@ziSV8l2SaUxPvG2?wOHRM7cX>WKc0ImSG&eh~K= z6C)ErU}!iJ->AK820q62sFuBWtGVyj5AU!yBtEQwk;!3u2nIw2$N_;rKv6-#(XFkk z7$K^v$yP`~(H{#uMh|!aze?SE%maO_t9;AjDaUO>S0BZS_eUulwFeL9WiOUHM>Oi2 zJt3NPqvpSXFXDqtAu=D>CqNRuruZ31Yc#91kHUDaoDguVch71-()!)n8!iLpd>fdT z+OKb!L;Ht_ibyosp2Nq83cwvg>Oe)7c6(+Hki-_0lq^-5HZlDnBcca`S(O*A)oSAo zoST6p9z;CmE`*7i_*zP|!}?-aOD)$>Z(V=}y5VI@D+5Cnuv$}V5nC)VWjFW%riyV| z7LdEU-yH~;Et(b-Zq?J1&@uTUeDjOSM8bedSD7QUStez6z@C^Mr=z26kHtXWphO=4 z6bIH&+WO`$FEKLbab^Xjoi{zyo_-Wep>E(EmgG8`3X z_P?b>hVxnNeC@bD!^}j(NzKtDu>BgwzjE$i$k&TZb z_l%5H$b8QPY;F%bFMN=r`a2TUZpQ7rid5mitaE=RfPeFbA8x7P9<)z0ANOjQEgZw; z0lV`(5<#F^H~SrZGLPZlOv z4*=1Hgl1-XH6;y3jlO^(Bg;WSkpYvziL-PY3dzw?iKh(|l*b4%GcYtiub?CiWA7aH zLnO(g_V)KHY!k%E6KIH4$v=J6+l};{C2Wkv9BpqOSsuxam2uraZ&Z7x64f3>l^)*emW%drel+IsSx-_E|evx8(^Q!J63FBu3UfgXkciHxkx z-2U@Bgv*AtB;(ui!cU4Zc_K?^C>Z#IT8O~`>YqFvCUu2LGfP65S?o0?6+&WTb1N$& zwXycnSH@Hr^UfUKw7zMu+hni(t;fK1cU@Ic0Wh86jzw`n!Ee!?llzgslstG>LDU>h zxOfEwZMVTnw0pxWHdC*F`vX9pij`aSAZ`BTe$-&&Xg4xz-^m{_bV1^}&9@+9yj2O{6S=r_vDaf7R`Vf}T8 zE0N*D@y1FeHT3^vD*VN4P7%x*!QlxKogjOtz(Qcuq)B3J7#}^-|0#t2sNn zEH*t$^MzTIjsU=*%RW{Bj+yC`F;k&7uG{1wmScijr0w|RKJN$Qz5PAV*vAh!C|s)R z^;ovF9uCgD(*~4N$s4GzBz_3v)8nQ2#oyrO=9R@5V~yl2BbPnIFbIj5{t*Rr&Ae@k z(5{DjA%%?n!a{$VqAeZD6w$Jg>P0M0EDQlXUK~gV>9p9Y?D{(**CN&Gj?HJQFV*OL zw18tzT$yrB*x$iz_FTW4p2#~PqPX6qeokq+l6=ql+BH8Pggt(wJv&CGx*2RG3uH$# zr#vr#_-K+_h}Ckgy=+aF_VE(}925@@Ljor_oj`(Se7t)}sEINS}b9V9$8_2+xPULDL^;S}OqEvMhTs zO9$2vkd;u-Uq7ZwZhfh9{ZuYbTwXz8eCEi)(h_w3%4FQ80|=U& zu`B{P$rpNHw1lRcwX-wJ<@wm;vXm==)*IMl#qG+G1d4f2OecV15;VlM?+gtK#ATRG z^4u6Bg68KZQT=;5tSeoB6ktTF{sO?V5{@-QcpXIVjbMLRekDZ}3VWXzbIEH2#{mO# z%e$-zWXpOC{r%%aTqI}K+ewL61R_FOT9$nuELBu+ets>lK2VTXr}@$gN`g`@z63vNdpExg zO;nbao^4T6`X^$5MLL_9IimX#2QnzIF#$`-S1(hAi6i^|aUN z(QIo&YsRYXaxeB|9?_o3_n=?n3(_saBtP)e-z4yXNR!G+}<+1bpg6Xz4Z@VBT8Gcumc>OL@r72C+| zr_@kTw9~znN`FdKO$rNV6k}&&O<66#WY^cz>+kQENM%bECN? zTWB!+a|OsF0|U^&tRWU65D&rrA((Yl{V6=mB;+lYDu&(N0SsnR%b_Q3#W-zTiSlrG zH;=;_y8qx@lWSgKkj+{W5Rm5nnVu%{F&NP-zaKqpqkpC)V?LaHljiPu9DCN-wHXur z;4r%E>G)WoAfWOE=tz?I=Nk-RkU0g#qA8V}6=8+(x~{*3KjA8|cge_e-y0zfaw z3e;O{=0*&B2kV-X7p8W^ZeT;gJ&@@vSxsjk}?G%g!cj~TsVx&t@1fMff0W>RYgTD zNP2GW-L71L&mfj_0)Y7CUdhKvX})eB43a!o;{8RV`*?0 zJ%aiaK5)IMlLQrAMq4jhfjodZJ3!=cZc<%CV;I6CyrGGWo$xtJ=wbW5xv`TXA7Hc& zIse5ErPC7r7zz3M!HP{QR5dClCM7DWsA!>b>tSfp${K?8y?WH)$Thh!KsDB9~IRDJZ{Q1)u@GyxspTNfI)Skk`zyM3JP9Y@J%gZe(dr}r4U>?8U zFnulB+{W72#&SCb?cjfhm$sPPsuQPzj({fsEzT3pM0N`3*88jitAt( z^>*8O1iXl>NX3LSp+i-Zfd$b?1SHV1GWdpoVYAl@XihAoT05ORzi9x^Xfy~0fLTzup`bM@T&l6>K@u#QzVBHcr5@j3ecv$ zIu{&JKfk6+e>^+0QKyUJEh9!Eq+q zNclz{xY)gZ`U=94^d1)*7gwXrI(Tps5RcV`pb7oGopI^Q>W06di>1vusDUzO0)8-Y zC~F8fJJU@{qpTuYp>OiDvJTe{Zca`;H#ae2TU-&&f`v+L|4R#S)#!Xr$0sZ%H`zV6 z+uqp=Uc)lu{u=S3+4hW{&ML}A%0+SNJWp7@+>{v%8AX?tmZOzSEN@>^TbUup~ zC%@jwFg06b+e$1bum%O!^3?$qMJRm0-5Xfou&|{1J8c={&M!5c8|p-bqikVl`WG*F0q8QKCH2BoPtR)ijM?m!1pp6MJNQ@fRk2I(aDL*Xn;$DY$7Ja1F9gK;I0b@LChBJ#v z9ARXxpOAEoqP98e^%MEuRNQ!b%~M8QHZ!9%47si}HVirL$MKHEr@xwZ&KUAu{(4aU zgrCd-evp$vle}6tx;1ND)7xfpl0>kY1_jg!)~vzy#|3+#q#)OBAS@#08jf6fuq4JS z^Mc3+i}6GY6z{aSUU%`im(#)r!GmOtf;1>TM&eg&>{i}{EPKj`PQ{eGg4o~yg%l3( zq4tnHQ_D!lhxeW6t-J~65j9AU-=Ka?0wCq zElL<+1&MSFR`Hr`g9M2~IXqWXzf0Qk`(m%o^$K4A>F26Y+V3*h_5IFWxWBTe1v*@+ z*eN5boAM`9>woY$dkY`XRhFs-s+|(VdsKZ3X|;XY@JFwT=_39a)PtDy4o=zGk5vo;sW^(=kDH~&337k zZXq(P>p~)qi>S#w2pTxl_8%TzIy-;C3B|<1qIZf18P3n2slj5p(N`eNIbL*^R#nX{ zEd|X-%AHIJ!h`uUJBdJ=jl#EyfdNQIVxP!J2qsp{`=s|d?p$HtRa6pk{ahq12>68M zziIyH~GXgUl)%Ch&CK_BGO(s7F#_+%>42&B^$wA}80WSE<=cF;Z8%mL^6X zB@~MHL{9nTaOwWo5eNc-@=&3AVc*rGD=eVijbJUv{dGX7Ye`Yj@Vd?Z-oDT~LR36F zzv-ZSc`9GxNxO|?RuPfz?rz{h!M6ZJ4PuPuq6UgAn8|XQnnd*UmPYAiWqH81O(UZd zh$*|ZG%FtJ02NjN8t*z&!1{wmg`X3|DTMrUQ(l0g(Vt)Y`i43bVT2R`^L3b+--lKY zZ7C<4l8h(H9kX`I2Bt#>1;WXa%GFVKehI?cU}@=Jj@H)jaBv;9)RdI{6Gm`E!1seo zV+oXG?(gH$(7Iw^VCljl2X=w<-ay}7SlEa>=-uCMnJ!VSrp6t&FxwW}XTS)oC4#?x z05o>jIuRmfQ71nhP5gGz)p0oCd6w=Pjq7Dd^K&1N@;YAkl-7N&D4U#QOfyzW(egQ z@I8NAc~8zT8;`#M(9FYE80+}TSFxNC%A?&C4NiEiO__y3d{~Jz3X+Op?WS-ek~)>~ zPAqZKqhyRuuSx?xV&UVPtKfvnsF_+CMx|-}ioF60U6wCQk6|v$Qwt4^%r_-C**eo~+lCtkS!IuTx3R_`TrdX#Z@8Q0%8d(eT;P5bBwp+n(dqeJxnrTq~x zZgA74VOIJg%|GVn-9N8_f;xQp-17GC8^Fy-_rHaRRsUIt_@5MxAU*o$-TzZL`5FYk z|J>|Y{^KPpFt+mx^Q-?VDgU{dXEE12tZaUt^}1!5tffPOO4na0!2SD_1n>V=enS0U zipc+8ALRdtEa!`2(_&Jab#5)a)D&r+X{osyazIzoe{QPqKnnZMz5l85@LLoSy<7AadTwZBdvi1}Gz5;6_VrUZB0!;24N#lz*!lcQ zDX9S*FernkQ*Q>guYW7S_?JdzR68&bK9z8DGebn{B!3Plq}!C(?T1MX6Kbn2<<=qm{q8A?jzyb7 zyyM~_E~s5Pfaf8 zLqVkW7HdcVuEjM?Q(peyVB-g}je|`rzXIkn{bHL-DBfT>*GSaS?1qZ#~>$}LPAlFA= z)F&KOmQWx9v~*GZK-xS085r1>{?&v1`t^xCs#}l2+lwF21*GcZ>VIq~S%FbI6jZ>u zJ2B{#alD+P`xXSna72kT2x=+Jwm5trsn~PN^YiD{hlj<1BjE2%8&Ii;NWnnma?yt} z`yEt%gqGZdUBMy}C;)Fq8#`$^1+s_$@bEAu^aBkzmQzyjt=ZI#jT5}Qtds}uFWx~z zKPE470>+nB_ecj9*yiSnC;sLS{ml4^lh;O;22*XoZF6G-L^~Cmg@sg4?I4nkNmHVx zrUs9asz>}(^^V5Z`zheWsH&;;YHgm?6H66mOj<71a{({X7X*($ z@JU7(-nr_tmULT^*G`o2zuNoms3y~HU)0YsdK8s5f`m~Aslq4%QZtT&3?LvKq^Srf zRip$6B#w%VAVfuoNK=YP4ZV}t=uLVj0*25-2mwOc-OM@Xo^{s!*1C7yb=Upti?|jg z$@}Jc_Or`x|MuRHg)5$S87|1Pwhew1QJoW)QU5yE5OeW{o11lMg8=fte`i;n{td12 zf55JS9Qsd>gujby?u7;zz~abqb=~(?$+6~Z(yhNm=WE4?!c7@D4KNBw`S_@UqfdUv z@xq13KdYjrAVlL$pnhR_x29peEG%IV?A`w$J_Y|z;!~01iML0fe_Vg7D|r144bo7E zyuM!HQ>b)e=RwvRA>fJ!A5Z=Dr=gL*_62449t+U?3^1ou;lprmZ5@;ePmlSeobD_ zrO=RfGxY^i+Qdu+rPOY17M-wBO6~6M9tMi@dFs6j$sp$7U3img>{g%aW_Ln!0Z#pf zAmGecetFwa^Ge^G|4IrfRY`M2vVG7m43w zPtZFuQ4W z)fJcABpz%``3Lg6eEht|8$Oh&8npOo{iG$~si3D90on0GkuE^gDX<^ZLP?dO-sQ^6 zKgclKJ}hq--N1LBBe7{}jfVu5Vy>L-O4R^)!Q?$Zj z*ht1HZ!g>Z!|y2%O`=aMrAsR(5pK!rQ}n~zfGhLrB*eL1oU_;`G@?D6MAq%^3^ zn}a&*-IYm6Nh71fJ@5M-eEJPZ`XH_;IqKtabMgE4Uo*_1^RP2(H{>cRYo7glw3twv z^!BZ8T#KQBLG;ropFs0(?zjF6aXPJex^Q?Y>?EnIq@;|v?4zkU?zaygmm~ol9Ip2T z^<{0Z#5bEYNe|YZ$6NE_9&&Pbh+R%UJqo?{s`s|#^K#BM9)nF&Dl_}1sLGDt{?OMS zZ5XCcPV-ya6co`L;@_778S9R3{h?X(A3wjCy-5#_&}(o|60--^TvqpcYNzw%ztnHP zv4Q>#?-bL2Om zF9XfQ#rfLyUEdE{l{^^)=E~f>2L`lnbBn)M%AFkj{m5?sj(`&%p=K_7&dlsARL#L5 zfAr<&gMoow=rb7uK-cT(Ij4kA0>L?d{10d6u8GbH^oGw#EKqM99g{cr!W6r@)dSa| z3B~EQE+pV@Wd**wHvQ~uUq$Nw-aQ8ucr^gU95~?LG71s9uh*@=&O~#1Jl^M#Vokwn zT{*3wc{-M#^>@5=TSjs`flydzZ4cOoO7pD}e73%ub7bl z8qE=?gB&_1y8BVY6oU9y|X0OWx zYws}qAi8n^;@x|mgdaI!+h_<9yRkny3YY`ZzJ&bzF9^Ga@H;@S85y~zuitbMilDuB zlRj^+pup1G3{MtdR9R_;a{+sjI;?GM6qJ?IwEZ|u98P9tCC8)YC3yDG>}1;!8=L)h z-QCySqV0WsAeGo$dh1p*$MtmSpTETeS4=qf>D7P3{&%FI+*Rxc%)MLZa)?BPz1z9O zTjvZ`*P*|Xp~)|@7j8{$7DFm!--$gb-RBejJ!bO`3^;>4d-ex=n2`w{2lOR8^1OSz z#zRAML}=e;B#sw%PEtH(yDP-sO?r-gT!QVT(|-WcqEjkjV;SicdJ{tL-~MXw2tz-6 z{ygHaJP`5^6Kh01etgT_s_A;I5%cl-mxcyFh052XK6XX6+yaVhen_fe)-Q>QEu%^O z1Ooc9n>BP(0N?IoA)$5@>x@kK+sh~`pdH5h`no@isLsyJy!pIiyWr#ewbfBeIg6j- zS~4yl!p6N!USHP1X5{8Z)zxWRi=ZXbhOCS%zE{H_LwG>O(xvI?aV@t@koWZT-%S1e z-+l&u_s*TrjanDQ9O-~k%mkvl020XD=Zs?-zlInacbKLbO8ZJ_Hyhd4);{`2U|Frc zUK6x$h6fNE=Kj$BaeF7fjfO{_4Jtu?zuup*y1E}00V)=t45)H>3}D`#WRw3)HJ*U< z)VHAjHHbct(mZ`)Cn62zTNF&xZ)9a5HPuYa%q|uQ0LpsS!}If}lYmh=IwbGh`GB~T z{;})3w_$Ev+@+Rmb8Q3_oL>MtLTX_Yree(L6X5mSgZi5x`hd0dN&T09FW>D;y@8QtgN!MwRKyn z-RmChBPXLf(c)@X94N>2x=XwG{;X9IXACQ?tglZf7O5ny5wf1FafzAy;5CX3$%M(6U`rv2_(W=I_+<=+M|BRG(+;aYvfh;G&c1yYIDZkmsZ*};hw6i7?nQkKSN{=ywBysG^WvV+dMT#`Lc_> z?~HZpR^q-ijT6SlSkiG&v|a8QS9Jj~^pArQ=U*YQ9jHQq`_ImMk7TCv$80_avRp;P z#EhU^@4Z960|c$VX2C2cfy3hQP|Nq$?0@&ILC*3HfuuZtYHYvGquc~U!?lK+iDoaQ zloN&YhWm980z>H~r8d?9Lh*v5b=?_Ggyj>K1vHt2@A*+Ox+W%3q0B3W#xYhKZv?Kl z4SVBwBI92~w1ByXz!?f5qtd5d$odABAKE8Su{-IW5|+khOY7bqdQ%d)YlU>PSXM(r zUMV(RRvd{5D|PD-SN$W`qV`T8?tnmrN0K=!8n2l1;JH9j`i+Mx*b$$B^J-`l?Wpvp zPoJ8kysq#~TkE%R4qO~M3)Hci$UOq~a)Xpz_O+rNar3Ug!+`p^-QzVs>zSPg?yqCe za8^yzZUKAcctNjS9s^I)Wh(}q>Yc;r4P}2nb{`Nuf2Sw&@8`(DbBwmumqyd|qVK?d zr0F_Rc751-A9mfo2Yw|Rr5QNimt&DVk2oOURo|WoV9Wo0q5sKF9L|S_ts-DVb)OGu z!L5i%IE6qXFSy?)>9Z@J1^K;cJjE znug^~MJp@uw*4iP<`*yqaU`Hu9ilGr2CLleJFFb+hucQ(oA?fXw*AJ3$;8@FuF;f&XBFy zoQk$D_b6W|ti`Oh$WW90J9|x$+%f+y?~jCozcyRy{@U!(_uj11XME2=abYnr?ABbi zpw8M?cr~GRxdxsbK33&N4&NAmZrS(%X=xB%1?BacXnAws^ETlK&~sK;4_-7sTV!$xg#S5el?? za%f991M`V6Yu)T1m##HcomB7LJ#=wjnu_f|V1Yo)`?KHfX66$>(%u=p$D? z>|)GxpcjjqoUmLb%yq>>0h%wF2e)#q+@oI-HAesTP%uG9Qy|Hdvg=X)jn9wa{Y}4Y zrJ|QZ;GSqz)3NH~0lgqADbJt#ahZb~^Zg6k!a4a!D0FSM7(QKTmo9oK#UXey0^ZT1 z_g%;LmN?&6x)-VU`7X}L0eHNxx8+Qe4_r?qU+5nBZwD}xHzs`OEwJ(AHRNebQ z^|d_#1h$U1wE#_H&4deVi>F}G@+`7V0tNS9mw2ci{RUSOx|LpC2CtyGiX#8Ljf0KBnU40J_Szo;mPR&O$R__HcB=OnagQ9Q%j^ zVsJ1#SgVxms5rjSZfl$Lf~o9%{oX2TJ-uk_IY?UZoF{#|A!hr{TS)C_n9?SBfc zm0K4&*nv)jj~zJs^(|yx7XO6KrtC%uU(jY5@88dY^hTw>cWp}mVFKMcH#eu^-l;wP zR7G6fCpp;3cd*crRu3ACRhu`bvTwhB<4n!tsG+Z#aQ0aF1r zzg1=#m(SQ&EP~B~PO2Ur^CPv6CASRVx$q)Q7?d8$oTtppoCfAxcD9(9*kHb$|Kz6# z$g2Un2&N6g`glsoN=r)@YXe#Z48UQCCCX08}jM`sHTv88&m* zkhKP$Bn|3(gN*J%T_)L&@7htJ5Bs9P-HcJ6_z|p*ri~UHd?BgDnuS7%acV*3M9rj# z+TAxQoflj(*n6+5dz`VWSz~lHb#mz0 zs@Au!l6YTTaG|t^f*TW_T^tTaed72qF}yYfy>Tr*Nozi3n%c4OpIiW-g)0wzz#JVV z@+bAVTgzt`sKdTEaY?=IL*uo~;c67v%hFOCjE)ayLrA88@fT$**R@TQy;N)JR&dRq z+9Ad4oVCikH&}JfeM#Y^W{?;1*2){%D5aW}x+g+1B$ci4a+G-vc4tuvs8Xf+p3`rA z$=hX#{10*^hDWu7t0% zu*<~JLhi;0BjSj%cQ8^eM@~|!49hGZ^uK4VXV&N6ga~IZ>xQ1EQHODBho7TDvvkW%)Rmgjj%zBt|0m6&B2(P%g+ zkqZ9zj@FKZS2|9JYj_Ogr)9`qtG-8>Jxf~}rm1_{U^FTXO$pCmygnB=Up6*Yha$7z zB;(s5*GesHjY*ePS67ZoA1U|r{bV8_U@H|*iU9c}>3FR9UBWGoWHCU62_4w>BhGn% zDIf%tr(s_A*KWivj9r>a4)rth1I+^UFjLdtUw&U*%sxK=cFwWXy5o`{!ol49h3(Pk zh5?&?%CHBeHNH2yOPg2al5N7iv9)&0f2Px(TBw$99<)>7SGjl+Me$l$@FJc+N5&E= zFUO92@Sq1%j{EFlhb*&>=r!nxj8AS=gmPn`jrZ+|LdVgMdk-d`cb$jbsA=3!(NHIK zrw9mK#klp1r8mZMJsP4!*lT13`W;Z%P80Jp9ZB(pFpVk?)SFd6C53DXzlR}lZf*r4 z3ME3MqbeT00sMtgc{uMk9`5m8X{=+V?CNVHp?5VwBl|tA0yC~@N)29dW$V0DQz}C7k;p-KIi^H z7u}zS?}yV%1RK7t>(5x7q6gOodH4483{(qUS20f2W);>hhl2VXu+?>KeHmEDCt$e? za7!sbxe+}kDPYwmqGdnQlhvlnU5p0*?vJo7W))qU{({HdFl@ii8fZ52B!}7~DCDk9 zI$2ayc)6JEV;8tk*xr(;?K+Ql_Tf;YnBL`gC)06ARseYi7u4!ZXA*LC33YUV1W_Az zeU$o$d?pK^|sSF~ffaNi8BC*R8^}sFbl>oZ}J_Wq^@j(eSkG|W(C9Ys4k|0_+ zqJRAPix=i1Djb2UCdJm?HI}y@g2_>ID#>hZ++}&?^PYo^7~aJ|+=GH{aE!zNC#I&N zV}Cq*5{fR0ii+O6xenX3ZB4B523|-TiK}@9x5{N}uYJ7)UXkSa+h4)=8ZY-8v@3N3 zJ7JuBp%^w?LqlT_90ZjvZIyu8uU|aOgu}s^1lzg2l zpIh-mJS|F6U|{lnM(j1R(NU@E3)E$M0fBunt-zK1`X1ure|`I}b@-PM{Od6MOB4J{ zBmTcJ2gZhhf&xPhY^mV8fr2{(hHBo24b2#*Y+c&^>HTlUNoqN>rwgIR?_Y}d|D)o~ zwA>K5-x2>}9(zmR8}FC-Ch5C93EHCe z@3z#_A^MADb*2k-n#UT1W^UD~$oaQtj)X)QJn7{a7)q(dgRhf&aeAbIH10ht7mjz! zd`s=-yG8RnN>ucA#zGyf4O>^QiCT z?ZJu=_oeboOvk4Zv2_6vii55f>d zX3Iyk&X}4yHtm;dF{^ZAT?#D>n~C0|>gm?k-u(Wt*>CZ3^75@69SX9F@8@@E-~~rh z7;K}kHzUHLP3ge~OXAXJ7DNhsQ`+I1lKmO7(3`ZxRe!G)RP#w^%p`0MTLDMU-o(#9 z5uvBrYbXw^D6;0U9O;89(dn{LO;);IC&52ViPXKl+S?-zVAyr7_}9mA4e3@a14ij! zV7-a3p4m(LS7ov?(or`J+&X1004x(y9b*6O*TS~QrOpNNtva6Z=saRK?3g}X7D4$g z(_xp|b5lob>3hD(>-zJm2<4WJwl@2v{g;M>F~9E-sCW}B+%SziV<4$oY%*DMl9c)L zYoe_8+V?BH3m;~#vIIUP2t_x*KFT0N)-p%1?EDGwx6TenWB3|eWtzHe(YZ6CIBmYD zTB1Ub07wD?r`&9U`Tp>+(9FP(11P(;(A}!$(+ulO%!PshGBS^J*VXW5Zdi<9(v|JS zu$()#WwpE5OlTqYwQc2M9!dKL1yN~@=ca)y8e<3qYKwBBonAt&8T|*Og1qiLxdxIb zO%E2v-89oiG~6tP@AS-sjYbl#MLm0|>r?IZwF%Y|lJfA^j7_z;Es(wUh~nRs8`5PB zA6c}kYFcIlYo~6;=BGG?d61;F&UcaDhByi9k-IuJeS%_0;nrAJ%sp)oaX$C)cufu{ z*$U|MqJ2i%$u_ynrYT-s>MZGoo8O!fI`CS#O}3Rj(+<<1(4m|3Jn^-;`PH(64)rdv zlEB*9A04+9*bb|v;VMM3jMHo|O+JSv#3~$!u8hG1DM<<3U%EDRkE5v?#Si;F))Rpu z^{&uy5(ya1nVvfx^P=RiFLfU`1|6z3j^Fh~ zQ>(m_+cdOgkDks88$x7eXJ=(+!AL0?8EKmh+X}G;>4pZq2G(vC6w6CEl|q0G;P0^c z^n+%UWd0>M;kUD`t6lMD+KgMy{2?Cf%w{Q=n~a4IOYK!MR3zsx=X;DR+~lQxO8_{{ zF3gGh!DHls z`vne)QAob4b?3bE0(WxSUA@2}xZkrwH#s4Mb&-MXJ*ys-zF0Tp?>rEl{vxzX`Nf7$xY)fD#V&bM>r{=p%`{cN= z^%YSm{#C6gUoMq?in_X^BE-g-l}(c|0U&ttKo^&rcFKvk6k7{mwv*#S17qVmgB9NO zTg<5a(Zr-*-oANrH(F9tAD`~} zI)}sn%vF4Pq#qlEv0H#hCN|L`jImTi(F7zf!xg6tSem zl;!XDItJ<0>W$^mZP>q)DR$;sShqADV1wM_3qDIh?-82}7xi3cGm zrH#;|-_~>L*+o;mw!jS5j?y3fkflkw%KD&oedXdVQ^}yI;--}2I~XZ`)g1b?M-)HlaY#RULI{?<@j z9)pn~oBKRkAYvkT

    o8g(`pkIgbgqK4cSYl)`(BZNx!OP6!%Ty^jYl*Y zp8$#^dhzbq*9_ERHZu5W(MgpG`F0hA`Za+%?7}K|V9O*!i+q zKzp}7hb}0Fcl3spG0~n|yB7JUd zcuL}eI;qiULA$(5^jVeUEH%yD^i>hPl>m9CDdo{K=gMZQsrqC0rUTW-?{|!Ul44b{dCN;O~q4H-x3Fyk;KGAYBG9qw-}cQ z1DM5}?oK>L#Y6GS+e>T-->Mq2@4D@DR%47r3T8x(n(FVyY9di$5R3`TUIb^>#q^NQ z`YcMH6!K*<(z^Rk5Y|_l-wK{*4480aqqZULm5=%uPK!I9JNe?0;4z0Mkv`pZ!#UZh zedR`YtoBA11B0TAKatYwez5yM8g{Y)gj+<<>~hD`gfp)R?xrFZrEZM{l@3Ukkw?)= zW6dbD5Qj4IrzjcTpLcdSDJN}`T5qSSePd?2J-jxkTzCCLdWRI^Tt5a4NwH)GjQufeSGVn!`+(Nh7)6xH0)qP)E~uf>Z253Z*yL;51i@N+gJ! zsZyMFnDekS5He<8ou%Qz&};C)oWth&TP)rov~OLVA{N&1M}Xi^6S%b6*Za9mqYg%@ z0+C>@xG8mH_6dh6S?@P}8NI%M9$i9pL6S@g^NRlUGj99E!_)}JkOo&5B>&A~p@{}- zQ=fN_Jk?+{@S{7yNo)J+DVl**la2Om8oYV)t5@$frEDA$zqk2xPK8!8op40?-)KX{ z;aO7BzRY%cI(BX}$p+uq~d0oeCwuHek8( zrs1|*A%!|vxCDs!KxH0D5WC!x{aB_@Rlb%3$qzC*?N5k+fVHAP-OL+=0Pm-YvxH%rr+zg?KS=qmTjSZb%e? zH*!RoSVE*_J$Uem&=kWD9oy_cI^^sU9P({_nS*x@S;97A>R4#4I~!RdDK}KB$6L%U zm&!&N&ft_bSKgP^^Ah{6SN0PEP3D5#3~A025z*&f%T#K~y}rjk8=in;SI^Ag;=HXA zJx$aw-6oWA)7Pm93Dz?j_m3S@U9OoPfE);)NzZocO0@_*VZ2~{#at@^4-@&GRS`*^qSyR582tQ5&(u;^3o)6=RP%7GudQbk1y4n^u26#e9g2iKnrB26( zeBtF4y}t`qKS9y1WWD{yLK5Pv7Mjur3}niTUh$APe)u?Q?5r|rmB3V88;QNZc_yM@ zUB~~ZPvOUSeVYYcQ57(}+GFtC2s(Dx-J(xPQ;=UOAg@bnO!AeW_vE3*f_gs-PV}O> z!ttC-5}-+={q#6j`q@1|2Edk z`=U&Fhe?BjC_W{_d1i;4yf`-G=0$q@Wbw5E^U#T_HP_geSiJJ=#9re~%#`DX_SHG6@qB-qCOf~ER?C0;;6WgVZ*}$R3Yf=KRA(aD zG`TJ;gwkF-`u0*S**Wxvu%3ZI@gVufMBAb4E)$X#e^E9nfnZCg;Q0oMkb?|A>i!S6 zjxAQUou{sOr95Dhg$1@mpz46$HPvQS%A|7ah4q*VuF||^`wFiR;Jg6QCH2(}H(EWr zz#*}8QsyAgMu79-`F%8F+l!Np+H+9zx?LjaGH^#~87B41MCzaSVqp%v_mG?nxWSGT z2W+^$GchcrJ``w1TprHmXC-q(V`E2Rf7e?lz1)C9G1UxA^eM3n@4eHeD`ZOD{V0IKi>{sH)e{ zPdYl@-RTXUirA?flFjOK-op2|SQt=qd8&dPxV2cSdo!s?IiuHrVM!CXSV$xn%$7JH1kyPNluzp}jRV8uEXm1~H0VUKs|#*f zn^S4ksK~%+hC%cw6~1PmG3ZS0mN8B>2g+2C_h>tqbJ?h%`Eh?>JUzh)K{obkwn@q{ zl>zpzUj%Ns4Qx$IDe2NTr$r%jnxHA=%zqyD8w|(kY+Y9rtz{HC)4F_ms{DY2a^uGC z)cG1+fGi^P^vXTm6Bu8uHaf=7wzd?$)R>X*swJ|9kcURn;jb) z17@D0ZPiTe1FPRDpP~92@1(;mvv6zY_)UJ&14nZi6i67Kn<*QmySXwA1jh{sMmC#D zl>?S~Sk0#d>!(^5T781aI+e-}RkO(qC3(lyo;HFG^NaH#om9}V>GjO+2AXOx437teZus+oF}& z983uxn2VIuyj7`#fw@7D_x9Vc1+>ImQI7s|eQ2VC)$wSK7qID04c;XGBVftbT@u3*Z$c$ z&wIH4D4X!LvrX&1nCgkUCIykpr9LVeyIpj*V8eUReYRM?BSoFo8zWhqtWTo9L-NV4cpmfl-u?RzOknvL zk^GY9cbsCir@ofp=v&|FpPLD%1Z_cKNJtlw9Wb}5&f}U3>j~;`X30FB7ptjS8o1)T zfg}R0lwso1gb8F>4R$26T(YFn9cwFq?b&;I*T&P{NFa>Qr<{$y_cg06A)H0Qf~~vT z{OqDcc&^Xo%a^UkYZwEn1x{Jbt+{Nrky02ic50VKs3UnwNJcU_-v2Ycsb8lWs+wQ! z=XhP!Ug~}s>#ldl&MfrdOCS7c(bK5vZ&+)2TPOI-gY?-3LaF@9=uZ~_i3WAKUgfe! z5K%R$YC|pH%_FCCXKOfT78Bjmq%`KSKFu0i&7X~?=y+$A&2Yp=a&-J*&;EBt5o)(b z$_(b72)!AJ*TGk>8`+0l$RFIpd!@!u?myOhdTisv=k1jrjsP^C!+UYSRCjJO%LqTd zO4Z^qM&KiP}w+j9U- zb?D8<+*A0=XsMSjQf9(>R6*MSo~{VH*VH2PPW<@+xVtAI0stU1*Z!-d<~0twvc<07Cen!eVK#P;jKl8C8N3JHjd#P z2Q3DeYY)L}0<$;-P3xyY(5lNRI_g&CJPKsOg8(5(_-rwvM24lpHtB4suz(IL>=wWo z0~(~J5#H8~haYvUt#7xsy%;8l)}ii>Ah3>2)4q%u(J+j4OWpIhnJgshiPUN(Dk37H zlI&+1GQe5#Yx;SnH~*zVP=cb9IlvXZIIVZu3Rq^EU++8a)gSa-9f4DO;aa6nAiF?) z8K4azVp?!(j=OQ{xpG56d|Db7kRV;wkh9X}xQ6#g8Id(G+Gg^uyCyL2v!K={z&wUV zM)j~b3Mi*GAh6t)-g0e2??H(LRs3UsZ28NHm~`IQi;Kw4=aW1bi6|3&)mt$MzuBQD2`cZolHC5_4zH+PY zhKzOV#A(yStue-_t+nACZH2BRb!Uo=WW3?sasK^0}fTkTn{WTdTw$^>e z`m0my_3`>3H#cFuhzLC)8Iw@>*s0-|-&tu7EAEJ^-TvkF*B$6ZqGwaAzJ`Pn%s*xpMc|U2)$K8-=!m^XK{{nqWE3+c6|6C$P`j%K7v~7OPa?`T+~p z;rzPXurG2VQ(ZgnpSeQ0R0MEpo5me=D|ymS$U2D;fuYu%uzkb8J)hd4T@q$53P^N8 zYr(RaK+!lb-yh{yWrAhNnwz@=|61f)S`1qHb<&sg{0#hn(}@8tF0s-=;QbzXsZaPc z=QpaA*G`|m)y8n#JG#pTMymaK+Y(YikKTQXcXn_%UcH@7u6P=3>EPhd9V73+f-It0 ze)@LZe$q+A=*w&c>#9|MfB)Xzp7svtiDU&?z3i-az^=9m_`Kf+T&|1IO~5d!B?L;B zJs=>-`dNlTrP>64Hoh>_8n4i6-V3e*r4+yU5T$&*b;Q->yISAJB7~-v9sr literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/replay-player-success--second-recording-in-list--light.png b/frontend/__snapshots__/replay-player-success--second-recording-in-list--light.png new file mode 100644 index 0000000000000000000000000000000000000000..693947ce7669de7d2b535d26f81676476bad3d52 GIT binary patch literal 52398 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%0DgL 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%0AJi5khU>HAMJi!pnszO4;L<2gkA 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 G^S=SdcCl;# literal 0 HcmV?d00001 diff --git a/frontend/src/mocks/fixtures/_status_page_all_ok.json b/frontend/src/mocks/fixtures/_status_page_all_ok.json new file mode 100644 index 00000000000000..73bf18fde65b28 --- /dev/null +++ b/frontend/src/mocks/fixtures/_status_page_all_ok.json @@ -0,0 +1,382 @@ +{ + "page": { + "id": "1ll2gn427qjl", + "name": "PostHog", + "url": "https://status.posthog.com", + "time_zone": "Etc/UTC", + "updated_at": "2024-06-29T05:42:34.351Z" + }, + "components": [ + { + "id": "6v7xydh2714r", + "name": "App", + "status": "operational", + "created_at": "2020-08-03T22:28:14.454Z", + "updated_at": "2024-05-28T10:24:00.192Z", + "position": 1, + "description": "Frontend application and API servers", + "showcase": true, + "start_date": null, + "group_id": "41df083ftqt6", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "xtkq4whlbry9", + "name": "Update Service", + "status": "operational", + "created_at": "2022-11-21T21:30:16.813Z", + "updated_at": "2022-11-21T21:40:45.215Z", + "position": 1, + "description": null, + "showcase": true, + "start_date": "2022-08-01", + "group_id": "0cn1jr2pwdwm", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "j6bgzv8dh942", + "name": "PostHog.com", + "status": "operational", + "created_at": "2022-11-21T21:31:36.659Z", + "updated_at": "2023-04-28T19:15:51.255Z", + "position": 1, + "description": "Homepage, Docs, and Handbook", + "showcase": true, + "start_date": "2022-07-01", + "group_id": null, + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "y4bsf3hcl974", + "name": "AWS ec2-us-east-1", + "status": "operational", + "created_at": "2022-11-21T21:37:14.434Z", + "updated_at": "2024-03-26T22:17:17.790Z", + "position": 1, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "z0y6m9kyvy3j", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "fm3yyllyxhgj", + "name": "AWS elb-eu-central-1", + "status": "operational", + "created_at": "2022-11-21T21:38:24.779Z", + "updated_at": "2022-11-21T21:46:47.748Z", + "position": 1, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "nfknrn2bf3yz", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "gl055wcw583j", + "name": "App", + "status": "operational", + "created_at": "2022-11-21T21:39:13.887Z", + "updated_at": "2024-05-08T15:33:56.331Z", + "position": 1, + "description": "Frontend application and API servers", + "showcase": true, + "start_date": "2022-07-01", + "group_id": "c4d9jd1jcx3f", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "ylm2gzb49rr7", + "name": "License Server", + "status": "operational", + "created_at": "2022-11-21T21:34:54.421Z", + "updated_at": "2022-11-21T21:40:55.589Z", + "position": 2, + "description": null, + "showcase": true, + "start_date": "2022-07-01", + "group_id": "0cn1jr2pwdwm", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "cjgb5s1jqy56", + "name": "Event and Data Ingestion", + "status": "operational", + "created_at": "2022-11-21T21:35:18.114Z", + "updated_at": "2024-04-30T19:32:00.323Z", + "position": 2, + "description": null, + "showcase": true, + "start_date": "2022-07-01", + "group_id": "41df083ftqt6", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "ps354j1bvl04", + "name": "AWS elasticache-eu-central-1", + "status": "operational", + "created_at": "2022-11-21T21:38:04.615Z", + "updated_at": "2022-11-21T21:47:06.804Z", + "position": 2, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "nfknrn2bf3yz", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "t053nl3g63sw", + "name": "AWS elb-us-east-1", + "status": "operational", + "created_at": "2022-11-21T21:38:15.462Z", + "updated_at": "2024-06-26T03:49:53.357Z", + "position": 2, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "z0y6m9kyvy3j", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "41df083ftqt6", + "name": "US Cloud πŸ‡ΊπŸ‡Έ", + "status": "operational", + "created_at": "2022-11-21T21:43:17.594Z", + "updated_at": "2022-11-22T01:55:51.439Z", + "position": 2, + "description": null, + "showcase": false, + "start_date": null, + "group_id": null, + "page_id": "1ll2gn427qjl", + "group": true, + "only_show_if_degraded": false, + "components": ["6v7xydh2714r", "cjgb5s1jqy56", "1t4b8gf5psbc"] + }, + { + "id": "4tw78vnj4045", + "name": "Event and Data Ingestion", + "status": "operational", + "created_at": "2022-11-21T21:48:51.909Z", + "updated_at": "2024-05-27T23:47:54.117Z", + "position": 2, + "description": null, + "showcase": true, + "start_date": "2022-07-01", + "group_id": "c4d9jd1jcx3f", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "1t4b8gf5psbc", + "name": "Feature Flags and Experiments", + "status": "operational", + "created_at": "2022-11-21T21:35:49.794Z", + "updated_at": "2024-05-22T17:36:43.895Z", + "position": 3, + "description": "Decide endpoint", + "showcase": true, + "start_date": "2022-07-01", + "group_id": "41df083ftqt6", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "tkzg024s2zsc", + "name": "AWS rds-us-east-1", + "status": "operational", + "created_at": "2022-11-21T21:37:21.722Z", + "updated_at": "2023-06-13T21:28:10.603Z", + "position": 3, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "z0y6m9kyvy3j", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "9t36hjkpdffk", + "name": "AWS rds-eu-central-1", + "status": "operational", + "created_at": "2022-11-21T21:37:32.316Z", + "updated_at": "2022-11-21T21:47:25.843Z", + "position": 3, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "nfknrn2bf3yz", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "c4d9jd1jcx3f", + "name": "EU Cloud πŸ‡ͺπŸ‡Ί", + "status": "operational", + "created_at": "2022-11-21T21:44:27.968Z", + "updated_at": "2022-11-21T21:45:39.939Z", + "position": 3, + "description": null, + "showcase": false, + "start_date": null, + "group_id": null, + "page_id": "1ll2gn427qjl", + "group": true, + "only_show_if_degraded": false, + "components": ["gl055wcw583j", "4tw78vnj4045", "1mcb5g8sznnz"] + }, + { + "id": "1mcb5g8sznnz", + "name": "Feature Flags and Experiments", + "status": "operational", + "created_at": "2022-11-21T21:49:13.429Z", + "updated_at": "2024-05-22T17:36:43.909Z", + "position": 3, + "description": "Decide endpoint", + "showcase": true, + "start_date": "2022-07-01", + "group_id": "c4d9jd1jcx3f", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "7zz5gc65m794", + "name": "AWS ec2-eu-central-1", + "status": "operational", + "created_at": "2022-11-21T21:37:41.686Z", + "updated_at": "2022-11-21T21:47:44.353Z", + "position": 4, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "nfknrn2bf3yz", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "833w3100npw3", + "name": "AWS elasticache-us-east-1", + "status": "operational", + "created_at": "2022-11-21T21:37:50.482Z", + "updated_at": "2023-09-18T23:53:20.416Z", + "position": 4, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "z0y6m9kyvy3j", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "0cn1jr2pwdwm", + "name": "Support APIs", + "status": "operational", + "created_at": "2022-11-21T21:40:45.187Z", + "updated_at": "2022-11-22T01:55:51.456Z", + "position": 4, + "description": null, + "showcase": false, + "start_date": null, + "group_id": null, + "page_id": "1ll2gn427qjl", + "group": true, + "only_show_if_degraded": false, + "components": ["xtkq4whlbry9", "ylm2gzb49rr7"] + }, + { + "id": "z0y6m9kyvy3j", + "name": "AWS US πŸ‡ΊπŸ‡Έ", + "status": "operational", + "created_at": "2022-11-21T21:46:33.358Z", + "updated_at": "2022-11-22T01:55:51.473Z", + "position": 5, + "description": null, + "showcase": false, + "start_date": null, + "group_id": null, + "page_id": "1ll2gn427qjl", + "group": true, + "only_show_if_degraded": false, + "components": ["y4bsf3hcl974", "t053nl3g63sw", "tkzg024s2zsc", "833w3100npw3", "rgyd1tg1jhcv"] + }, + { + "id": "rgyd1tg1jhcv", + "name": "AWS kafka-us-east-1", + "status": "operational", + "created_at": "2022-11-22T02:03:23.870Z", + "updated_at": "2023-09-29T04:43:36.890Z", + "position": 5, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "z0y6m9kyvy3j", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "20jjhvqn3xcq", + "name": "AWS kafka-eu-central-1", + "status": "operational", + "created_at": "2022-11-22T02:03:26.507Z", + "updated_at": "2022-11-22T02:04:08.037Z", + "position": 5, + "description": null, + "showcase": false, + "start_date": null, + "group_id": "nfknrn2bf3yz", + "page_id": "1ll2gn427qjl", + "group": false, + "only_show_if_degraded": false + }, + { + "id": "nfknrn2bf3yz", + "name": "AWS EU πŸ‡ͺπŸ‡Ί", + "status": "operational", + "created_at": "2022-11-21T21:46:47.736Z", + "updated_at": "2022-11-22T01:55:51.491Z", + "position": 6, + "description": null, + "showcase": false, + "start_date": null, + "group_id": null, + "page_id": "1ll2gn427qjl", + "group": true, + "only_show_if_degraded": false, + "components": ["fm3yyllyxhgj", "ps354j1bvl04", "9t36hjkpdffk", "7zz5gc65m794", "20jjhvqn3xcq"] + } + ], + "incidents": [], + "scheduled_maintenances": [], + "status": { + "indicator": "none", + "description": "All Systems Operational" + } +} diff --git a/frontend/src/mocks/handlers.ts b/frontend/src/mocks/handlers.ts index 885e116ef08da1..f1c8f9bfc93f56 100644 --- a/frontend/src/mocks/handlers.ts +++ b/frontend/src/mocks/handlers.ts @@ -16,6 +16,7 @@ import { SharingConfigurationType } from '~/types' import { getAvailableProductFeatures } from './features' import { billingJson } from './fixtures/_billing' +import * as statusPageAllOK from './fixtures/_status_page_all_ok.json' import { Mocks, MockSignature, mocksToHandlers } from './utils' export const EMPTY_PAGINATED_RESPONSE = { count: 0, results: [] as any[], next: null, previous: null } @@ -123,6 +124,11 @@ export const defaultMocks: Mocks = { '/api/billing/': { ...billingJson, }, + '/api/billing/get_invoices': { + link: null, + count: 0, + }, + 'https://status.posthog.com/api/v2/summary.json': statusPageAllOK, }, post: { 'https://us.i.posthog.com/e/': (req, res, ctx): MockSignature => posthogCORSResponse(req, res, ctx), @@ -133,5 +139,8 @@ export const defaultMocks: Mocks = { '/api/projects/:team_id/insights/:insight_id/viewed/': (): MockSignature => [201, null], 'api/projects/:team_id/query': [200, { results: [] }], }, + patch: { + '/api/projects/:team_id/session_recording_playlists/:playlist_id/': {}, + }, } export const handlers = mocksToHandlers(defaultMocks) diff --git a/frontend/src/scenes/session-recordings/SessionsRecordings-player-success.stories.tsx b/frontend/src/scenes/session-recordings/SessionsRecordings-player-success.stories.tsx index f520ab947b8153..39b6bbd3d9980d 100644 --- a/frontend/src/scenes/session-recordings/SessionsRecordings-player-success.stories.tsx +++ b/frontend/src/scenes/session-recordings/SessionsRecordings-player-success.stories.tsx @@ -14,7 +14,6 @@ import recordings from './__mocks__/recordings.json' const meta: Meta = { title: 'Replay/Player/Success', - tags: ['test-skip'], // TODO: Fix the flakey rendering due to player playback parameters: { layout: 'fullscreen', viewMode: 'story', @@ -118,37 +117,62 @@ const meta: Meta = { }, }, post: { - '/api/projects/:team/query': recordingEventsJson, + '/api/projects/:team/query': (req, res, ctx) => { + const body = req.body as Record + + if ( + body.query.kind === 'HogQLQuery' && + body.query.query.startsWith( + 'SELECT properties.$session_id as session_id, any(properties) as properties' + ) + ) { + return res(ctx.json({ results: [['session_id_one', '{}']] })) + } + + if (body.query.kind === 'EventsQuery' && body.query.properties.length === 1) { + return res(ctx.json(recordingEventsJson)) + } + + // default to an empty response or we duplicate information + return res(ctx.json({ results: [] })) + }, }, }), ], } export default meta +const sceneUrl = (url: string, searchParams: Record = {}): string => + combineUrl(url, { + pause: true, + t: 7, + ...searchParams, + }).url + export function RecentRecordings(): JSX.Element { useEffect(() => { - router.actions.push(urls.replay()) + router.actions.push(sceneUrl(urls.replay())) }, []) return } export function RecordingsPlayListNoPinnedRecordings(): JSX.Element { useEffect(() => { - router.actions.push(urls.replayPlaylist('abcdefg')) + router.actions.push(sceneUrl(urls.replayPlaylist('abcdefg'))) }, []) return } export function RecordingsPlayListWithPinnedRecordings(): JSX.Element { useEffect(() => { - router.actions.push(urls.replayPlaylist('1234567')) + router.actions.push(sceneUrl(urls.replayPlaylist('1234567'))) }, []) return } export function SecondRecordingInList(): JSX.Element { useEffect(() => { - router.actions.push(combineUrl(urls.replay(), undefined, { sessionRecordingId: recordings[1].id }).url) + router.actions.push(sceneUrl(urls.replay(), { sessionRecordingId: recordings[1].id })) }, []) return } diff --git a/frontend/src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts b/frontend/src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts index d2cee712bcbb24..b37c30ed8cca4b 100644 --- a/frontend/src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts +++ b/frontend/src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts @@ -20,7 +20,7 @@ import { subscriptions } from 'kea-subscriptions' import { delay } from 'kea-test-utils' import { now } from 'lib/dayjs' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' -import { clamp, downloadFile, fromParamsGivenUrl } from 'lib/utils' +import { clamp, downloadFile } from 'lib/utils' import { eventUsageLogic } from 'lib/utils/eventUsageLogic' import { wrapConsole } from 'lib/utils/wrapConsole' import posthog from 'posthog-js' @@ -621,7 +621,7 @@ export const sessionRecordingPlayerLogic = kea( // Check for the "t" search param in the url on first load if (!cache.hasInitialized) { cache.hasInitialized = true - const searchParams = fromParamsGivenUrl(window.location.search) + const searchParams = router.values.searchParams if (searchParams.timestamp) { const desiredStartTime = Number(searchParams.timestamp) actions.seekToTimestamp(desiredStartTime, true) @@ -673,6 +673,29 @@ export const sessionRecordingPlayerLogic = kea( if (props.autoPlay) { // Autoplay assumes we are playing immediately so lets go ahead and load more data actions.setPlay() + + if (router.values.searchParams.pause) { + setTimeout(() => { + /** KLUDGE: when loaded for visual regression tests we want to pause the player + ** but only after it has had time to buffer and show the frame + * + * Frustratingly if we start paused we never process the data, + * so the player frame is just a black square. + * + * If we play (the default behaviour) and then stop after its processed the data + * then we see the player screen + * and can assert that _at least_ the full snapshot has been processed + * (i.e. we didn't completely break rrweb playback) + * + * We have to be paused so that the visual regression snapshot doesn't flap + * (because of the seekbar timestamp changing) + * + * And don't want to be at 0, so we can see that the seekbar + * at least paints the "played" portion of the recording correctly + **/ + actions.setPause() + }, 100) + } } }, diff --git a/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts b/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts index 0136947f1b41d0..2ae00e988273f9 100644 --- a/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts +++ b/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.ts @@ -731,6 +731,7 @@ export const sessionRecordingsPlaylistLogic = kea { const params: Params = objectClean({ + ...router.values.searchParams, simpleFilters: values.simpleFilters ?? undefined, advancedFilters: values.advancedFilters ?? undefined, sessionRecordingId: values.selectedRecordingId ?? undefined, diff --git a/frontend/src/scenes/urls.ts b/frontend/src/scenes/urls.ts index 4d99bb15b5d8cf..2df0d9875fba96 100644 --- a/frontend/src/scenes/urls.ts +++ b/frontend/src/scenes/urls.ts @@ -115,6 +115,7 @@ export const urls = { replaySingle: (id: string, filters?: Partial): string => combineUrl(`/replay/${id}`, filters ? { filters } : {}).url, replayFilePlayback: (): string => combineUrl('/replay/file-playback').url, + personByDistinctId: (id: string, encode: boolean = true): string => encode ? `/person/${encodeURIComponent(id)}` : `/person/${id}`, personByUUID: (uuid: string, encode: boolean = true): string => From 11a7bf7969d9e49aa6db447ef2b324ff1e80adb4 Mon Sep 17 00:00:00 2001 From: Marcus Hof <13001502+MarconLP@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:13:55 +0200 Subject: [PATCH 15/18] feat: include org id when creating new tickets (#23388) --- frontend/src/lib/components/Support/supportLogic.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/lib/components/Support/supportLogic.ts b/frontend/src/lib/components/Support/supportLogic.ts index 013eab72eb24f1..1d56a697bccc80 100644 --- a/frontend/src/lib/components/Support/supportLogic.ts +++ b/frontend/src/lib/components/Support/supportLogic.ts @@ -404,6 +404,10 @@ export const supportLogic = kea([ id: 22129191462555, value: posthog.get_distinct_id(), }, + { + id: 27031528411291, + value: userLogic?.values?.user?.organization?.id ?? '', + }, { id: 26073267652251, value: values.hasAvailableFeature(AvailableFeature.PRIORITY_SUPPORT) From a3a69640813cb9b923ad3f640d957dc2c71cdc90 Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Tue, 2 Jul 2024 12:43:24 +0100 Subject: [PATCH 16/18] feat: sample message too large to s3 (#23374) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../test_clickhouse_experiments.ambr | 103 ++++++++-- posthog/api/capture.py | 22 ++- posthog/api/test/test_capture.py | 187 +++++++++++++----- posthog/settings/session_replay.py | 5 + posthog/storage/object_storage.py | 8 +- 5 files changed, 258 insertions(+), 67 deletions(-) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index c7dcdba03487c0..8f452cd79146c9 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -441,26 +441,97 @@ # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 26 + OFFSET 0 ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([[''], ['test_1'], ['test'], ['control'], ['unknown_3'], ['unknown_2'], ['unknown_1'], ['test_2']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + pdi.person_id as aggregation_target, + pdi.person_id as person_id, + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + AND distinct_id IN + (SELECT distinct_id + FROM events + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') ) + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop ''' # --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 diff --git a/posthog/api/capture.py b/posthog/api/capture.py index 6081f6e6469370..73f71fad5d5933 100644 --- a/posthog/api/capture.py +++ b/posthog/api/capture.py @@ -1,5 +1,6 @@ import json import re +from random import random import sentry_sdk import structlog @@ -41,6 +42,7 @@ preprocess_replay_events_for_blob_ingestion, split_replay_events, ) +from posthog.storage import object_storage from posthog.utils import get_ip_address from posthog.utils_cors import cors_response @@ -639,7 +641,8 @@ def replace_with_warning(event: dict[str, Any]) -> dict[str, Any] | None: We do this so that when we're playing back the recording we can insert useful info in the UI. """ try: - # + sample_replay_data_to_object_storage(event, random()) + properties = event.pop("properties", {}) snapshot_items = properties.pop("$snapshot_items", []) # since we had message too large there really should be an item in the list @@ -677,6 +680,23 @@ def replace_with_warning(event: dict[str, Any]) -> dict[str, Any] | None: return None +def sample_replay_data_to_object_storage(event: dict[str, Any], random_number: float) -> None: + """ + the random number is passed in to make testing easier + both the random number and the sample rate must be between 0 and 0.01 + if the random number is less than the sample_rate then we write the event to S3 + """ + try: + sample_rate = settings.REPLAY_MESSAGE_TOO_LARGE_SAMPLE_RATE + if 0 < random_number < sample_rate <= 0.01: + object_key = f"session_id/{event.get('properties', {}).get('$session_id', 'unknown')}.json" + object_storage.write(object_key, json.dumps(event), bucket=settings.REPLAY_MESSAGE_TOO_LARGE_SAMPLE_BUCKET) + except Exception as ex: + with sentry_sdk.push_scope() as scope: + scope.set_tag("capture-pathway", "replay") + capture_exception(ex) + + def preprocess_events(events: list[dict[str, Any]]) -> Iterator[tuple[dict[str, Any], UUIDT, str]]: for event in events: event_uuid = UUIDT() diff --git a/posthog/api/test/test_capture.py b/posthog/api/test/test_capture.py index c4f2c79e5e14ba..153bc50ce1e1bd 100644 --- a/posthog/api/test/test_capture.py +++ b/posthog/api/test/test_capture.py @@ -1,20 +1,27 @@ -from collections import Counter -from unittest import mock - import base64 import gzip import json -from django.test import override_settings -import lzstring import pathlib -import pytest import random import string +from collections import Counter +from datetime import UTC +from datetime import datetime, timedelta +from typing import Any, Union, cast +from unittest import mock +from unittest.mock import ANY, MagicMock, call +from unittest.mock import patch +from urllib.parse import quote + +import lzstring +import pytest import structlog import zlib -from datetime import datetime, timedelta -from datetime import UTC +from boto3 import resource +from botocore.client import Config +from botocore.exceptions import ClientError from django.http import HttpResponse +from django.test import override_settings from django.test.client import MULTIPART_CONTENT, Client from django.utils import timezone from freezegun import freeze_time @@ -25,9 +32,6 @@ from prance import ResolvingParser from rest_framework import status from token_bucket import Limiter, MemoryStorage -from typing import Any, Union, cast -from unittest.mock import ANY, MagicMock, call, patch -from urllib.parse import quote from ee.billing.quota_limiting import QuotaLimitingCaches from posthog.api import capture @@ -35,6 +39,7 @@ LIKELY_ANONYMOUS_IDS, get_distinct_id, is_randomly_partitioned, + sample_replay_data_to_object_storage, ) from posthog.api.test.mock_sentry import mock_sentry_context_for_tagging from posthog.api.test.openapi_validation import validate_response @@ -49,6 +54,13 @@ DATA_UPLOAD_MAX_MEMORY_SIZE, KAFKA_EVENTS_PLUGIN_INGESTION_TOPIC, ) +from posthog.settings import ( + OBJECT_STORAGE_ACCESS_KEY_ID, + OBJECT_STORAGE_ENDPOINT, + OBJECT_STORAGE_SECRET_ACCESS_KEY, +) +from posthog.storage import object_storage +from posthog.storage.object_storage import ObjectStorageError from posthog.test.base import BaseTest @@ -148,6 +160,51 @@ def mocked_get_ingest_context_from_token(_: Any) -> None: "uuid": "deaa7e00-e1a4-480d-9145-fb8461678dae", } +TEST_SAMPLES_BUCKET = "posthog-test-replay-samples" + +s3 = resource( + "s3", + endpoint_url=OBJECT_STORAGE_ENDPOINT, + aws_access_key_id=OBJECT_STORAGE_ACCESS_KEY_ID, + aws_secret_access_key=OBJECT_STORAGE_SECRET_ACCESS_KEY, + config=Config(signature_version="s3v4"), + region_name="us-east-1", +) + + +# snapshot events are processed and altered during capture processing +def make_processed_recording_event( + event_data: dict | list[dict] | None = None, + session_id="abc123", + window_id="def456", + distinct_id="ghi789", + timestamp=1658516991883, + snapshot_bytes=60, +) -> dict[str, Any]: + if event_data is None: + # event_data is an array of RRWeb events + event_data = [{"type": 3, "data": {"source": 1}}, {"type": 3, "data": {"source": 2}}] + + if isinstance(event_data, dict): + event_data = [event_data] + + return { + "event": "$snapshot_items", + "properties": { + # estimate of the size of the event data + "$snapshot_bytes": snapshot_bytes, + "$snapshot_items": event_data, + "$session_id": session_id, + "$window_id": window_id, + # snapshot events have the distinct id in the properties + # as well as at the top-level + "distinct_id": distinct_id, + "$snapshot_source": "web", + }, + "timestamp": timestamp, + "distinct_id": distinct_id, + } + class TestCapture(BaseTest): """ @@ -162,6 +219,16 @@ def setUp(self): # it is really important to know that /capture is CSRF exempt. Enforce checking in the client self.client = Client(enforce_csrf_checks=True) + try: + s3.meta.client.head_bucket(Bucket=TEST_SAMPLES_BUCKET) + except ClientError: + # probably the bucket doesn't exist + s3.create_bucket(Bucket=TEST_SAMPLES_BUCKET) + + def teardown_method(self, method) -> None: + bucket = s3.Bucket(TEST_SAMPLES_BUCKET) + bucket.objects.delete() + def _to_json(self, data: Union[dict, list]) -> str: return json.dumps(data) @@ -226,40 +293,6 @@ def _send_original_version_session_recording_event( return event - # snapshot events are processed and altered during capture processing - def _make_processed_recording_event( - self, - event_data: dict | list[dict] | None = None, - session_id="abc123", - window_id="def456", - distinct_id="ghi789", - timestamp=1658516991883, - snapshot_bytes=60, - ) -> dict[str, Any]: - if event_data is None: - # event_data is an array of RRWeb events - event_data = [{"type": 3, "data": {"source": 1}}, {"type": 3, "data": {"source": 2}}] - - if isinstance(event_data, dict): - event_data = [event_data] - - return { - "event": "$snapshot_items", - "properties": { - # estimate of the size of the event data - "$snapshot_bytes": snapshot_bytes, - "$snapshot_items": event_data, - "$session_id": session_id, - "$window_id": window_id, - # snapshot events have the distinct id in the properties - # as well as at the top-level - "distinct_id": distinct_id, - "$snapshot_source": "web", - }, - "timestamp": timestamp, - "distinct_id": distinct_id, - } - def _send_august_2023_version_session_recording_event( self, number_of_events: int = 1, @@ -467,7 +500,7 @@ def test_capture_snapshot_event_too_large(self, kafka_produce: MagicMock) -> Non ) assert response.status_code == 200 - expected_data = self._make_processed_recording_event( + expected_data = make_processed_recording_event( snapshot_bytes=0, event_data=[ { @@ -2171,3 +2204,65 @@ def test_capture_historical_analytics_events_opt_in(self, kafka_produce) -> None kafka_produce.call_args_list[0][1]["topic"], KAFKA_EVENTS_PLUGIN_INGESTION_HISTORICAL, ) + + def test_capture_replay_to_bucket_when_random_number_is_less_than_sample_rate(self): + sample_rate = 0.001 + random_number = sample_rate / 2 + + with self.settings( + REPLAY_MESSAGE_TOO_LARGE_SAMPLE_RATE=sample_rate, REPLAY_MESSAGE_TOO_LARGE_SAMPLE_BUCKET=TEST_SAMPLES_BUCKET + ): + event = make_processed_recording_event( + session_id="abcdefgh", + snapshot_bytes=0, + event_data=[ + { + "type": 4, + "data": {"href": "https://keepme.io"}, + "$window_id": "the window id", + "timestamp": 1234567890, + }, + { + "type": 5, + "data": {"tag": "Message too large"}, + "timestamp": 1234567890, + "$window_id": "the window id", + }, + ], + ) + sample_replay_data_to_object_storage(event, random_number) + contents = object_storage.read("session_id/abcdefgh.json", bucket=TEST_SAMPLES_BUCKET) + assert contents == json.dumps(event) + + @parameterized.expand( + [ + ["does not write when random number is more than sample rate", 0.0001, 0.0002], + ["does not write when random number is less than sample rate but over max limit", 0.011, 0.001], + ] + ) + def test_capture_replay_does_not_write_to_bucket(self, _name: str, sample_rate: float, random_number: float): + with self.settings( + REPLAY_MESSAGE_TOO_LARGE_SAMPLE_RATE=sample_rate, REPLAY_MESSAGE_TOO_LARGE_SAMPLE_BUCKET=TEST_SAMPLES_BUCKET + ): + event = make_processed_recording_event( + session_id="abcdefgh", + snapshot_bytes=0, + event_data=[ + { + "type": 4, + "data": {"href": "https://keepme.io"}, + "$window_id": "the window id", + "timestamp": 1234567890, + }, + { + "type": 5, + "data": {"tag": "Message too large"}, + "timestamp": 1234567890, + "$window_id": "the window id", + }, + ], + ) + sample_replay_data_to_object_storage(event, random_number) + + with pytest.raises(ObjectStorageError): + object_storage.read("session_id/abcdefgh.json", bucket=TEST_SAMPLES_BUCKET) diff --git a/posthog/settings/session_replay.py b/posthog/settings/session_replay.py index 429f3207dccf7c..0141efc0c09257 100644 --- a/posthog/settings/session_replay.py +++ b/posthog/settings/session_replay.py @@ -26,3 +26,8 @@ REPLAY_EMBEDDINGS_CLUSTERING_DBSCAN_MIN_SAMPLES = get_from_env( "REPLAY_EMBEDDINGS_CLUSTERING_DBSCAN_MIN_SAMPLES", 10, type_cast=int ) + +REPLAY_MESSAGE_TOO_LARGE_SAMPLE_RATE = get_from_env("REPLAY_MESSAGE_TOO_LARGE_SAMPLE_RATE", 0, type_cast=float) +REPLAY_MESSAGE_TOO_LARGE_SAMPLE_BUCKET = get_from_env( + "REPLAY_MESSAGE_TOO_LARGE_SAMPLE_BUCKET", "posthog-cloud-prod-us-east-1-k8s-replay-samples" +) diff --git a/posthog/storage/object_storage.py b/posthog/storage/object_storage.py index 52d7486dbcfe16..e073d6bf65dae1 100644 --- a/posthog/storage/object_storage.py +++ b/posthog/storage/object_storage.py @@ -218,9 +218,9 @@ def object_storage_client() -> ObjectStorageClient: return _client -def write(file_name: str, content: Union[str, bytes], extras: dict | None = None) -> None: +def write(file_name: str, content: Union[str, bytes], extras: dict | None = None, bucket: str | None = None) -> None: return object_storage_client().write( - bucket=settings.OBJECT_STORAGE_BUCKET, + bucket=bucket or settings.OBJECT_STORAGE_BUCKET, key=file_name, content=content, extras=extras, @@ -231,8 +231,8 @@ def tag(file_name: str, tags: dict[str, str]) -> None: return object_storage_client().tag(bucket=settings.OBJECT_STORAGE_BUCKET, key=file_name, tags=tags) -def read(file_name: str) -> Optional[str]: - return object_storage_client().read(bucket=settings.OBJECT_STORAGE_BUCKET, key=file_name) +def read(file_name: str, bucket: str | None = None) -> Optional[str]: + return object_storage_client().read(bucket=bucket or settings.OBJECT_STORAGE_BUCKET, key=file_name) def read_bytes(file_name: str) -> Optional[bytes]: From 22c14f9f8776ae729d5cc53d6786a07c42ad6bf0 Mon Sep 17 00:00:00 2001 From: Xavier Vello Date: Tue, 2 Jul 2024 14:16:22 +0200 Subject: [PATCH 17/18] chore(capture): add billing limits integration tests (#23389) --- rust/capture/src/config.rs | 2 + rust/capture/src/limiters/billing.rs | 64 +++++++++++++++++++--------- rust/capture/src/redis.rs | 19 +++++---- rust/capture/src/server.rs | 8 +++- rust/capture/tests/common.rs | 34 +++++++++++++++ rust/capture/tests/django_compat.rs | 2 +- rust/capture/tests/events.rs | 62 +++++++++++++++++++++++++++ 7 files changed, 161 insertions(+), 30 deletions(-) diff --git a/rust/capture/src/config.rs b/rust/capture/src/config.rs index d91e7b72413371..cfc38877fec33a 100644 --- a/rust/capture/src/config.rs +++ b/rust/capture/src/config.rs @@ -33,8 +33,10 @@ pub struct Config { #[envconfig(default = "capture")] pub otel_service_name: String, + // Used for integration tests #[envconfig(default = "true")] pub export_prometheus: bool, + pub redis_key_prefix: Option, } #[derive(Envconfig, Clone)] diff --git a/rust/capture/src/limiters/billing.rs b/rust/capture/src/limiters/billing.rs index 259fbcf0d69ae1..6f9fe8d2b450ea 100644 --- a/rust/capture/src/limiters/billing.rs +++ b/rust/capture/src/limiters/billing.rs @@ -35,7 +35,7 @@ pub enum QuotaResource { } impl QuotaResource { - fn as_str(&self) -> &'static str { + pub fn as_str(&self) -> &'static str { match self { Self::Events => "events", Self::Recordings => "recordings", @@ -53,6 +53,7 @@ pub enum LimiterError { pub struct BillingLimiter { limited: Arc>>, redis: Arc, + redis_key_prefix: String, interval: Duration, updated: Arc>, } @@ -69,6 +70,7 @@ impl BillingLimiter { pub fn new( interval: Duration, redis: Arc, + redis_key_prefix: Option, ) -> anyhow::Result { let limited = Arc::new(RwLock::new(HashSet::new())); @@ -81,22 +83,20 @@ impl BillingLimiter { limited, updated, redis, + redis_key_prefix: redis_key_prefix.unwrap_or_default(), }) } #[instrument(skip_all)] async fn fetch_limited( client: &Arc, + key_prefix: &str, resource: &QuotaResource, ) -> anyhow::Result> { let now = OffsetDateTime::now_utc().unix_timestamp(); - + let key = format!("{key_prefix}{QUOTA_LIMITER_CACHE_KEY}{}", resource.as_str()); client - .zrangebyscore( - format!("{QUOTA_LIMITER_CACHE_KEY}{}", resource.as_str()), - now.to_string(), - String::from("+Inf"), - ) + .zrangebyscore(key, now.to_string(), String::from("+Inf")) .await } @@ -131,7 +131,7 @@ impl BillingLimiter { // On prod atm we call this around 15 times per second at peak times, and it usually // completes in <1ms. - let set = Self::fetch_limited(&self.redis, &resource).await; + let set = Self::fetch_limited(&self.redis, &self.redis_key_prefix, &resource).await; tracing::debug!("fetched set from redis, caching"); @@ -178,25 +178,51 @@ mod tests { #[tokio::test] async fn test_dynamic_limited() { - let client = MockRedisClient::new().zrangebyscore_ret(vec![String::from("banana")]); + let client = MockRedisClient::new() + .zrangebyscore_ret("@posthog/quota-limits/events", vec![String::from("banana")]); let client = Arc::new(client); - let limiter = BillingLimiter::new(Duration::microseconds(1), client) + let limiter = BillingLimiter::new(Duration::microseconds(1), client, None) .expect("Failed to create billing limiter"); - assert_eq!( - limiter - .is_limited("idk it doesn't matter", QuotaResource::Events) + assert!( + !limiter + .is_limited("not_limited", QuotaResource::Events) .await, - false ); + assert!(limiter.is_limited("banana", QuotaResource::Events).await); + } + + #[tokio::test] + async fn test_custom_key_prefix() { + let client = MockRedisClient::new().zrangebyscore_ret( + "prefix//@posthog/quota-limits/events", + vec![String::from("banana")], + ); + let client = Arc::new(client); - assert_eq!( - limiter - .is_limited("some_org_hit_limits", QuotaResource::Events) + // Default lookup without prefix fails + let limiter = BillingLimiter::new(Duration::microseconds(1), client.clone(), None) + .expect("Failed to create billing limiter"); + assert!(!limiter.is_limited("banana", QuotaResource::Events).await); + + // Limiter using the correct prefix + let prefixed_limiter = BillingLimiter::new( + Duration::microseconds(1), + client, + Some("prefix//".to_string()), + ) + .expect("Failed to create billing limiter"); + + assert!( + !prefixed_limiter + .is_limited("not_limited", QuotaResource::Events) .await, - false ); - assert!(limiter.is_limited("banana", QuotaResource::Events).await); + assert!( + prefixed_limiter + .is_limited("banana", QuotaResource::Events) + .await + ); } } diff --git a/rust/capture/src/redis.rs b/rust/capture/src/redis.rs index c83c0ad89a8ac9..7ab812e3bdae5e 100644 --- a/rust/capture/src/redis.rs +++ b/rust/capture/src/redis.rs @@ -1,6 +1,7 @@ +use std::collections::HashMap; use std::time::Duration; -use anyhow::Result; +use anyhow::{anyhow, Result}; use async_trait::async_trait; use redis::AsyncCommands; use tokio::time::timeout; @@ -48,19 +49,18 @@ impl Client for RedisClient { // mockall got really annoying with async and results so I'm just gonna do my own #[derive(Clone)] pub struct MockRedisClient { - zrangebyscore_ret: Vec, + zrangebyscore_ret: HashMap>, } impl MockRedisClient { pub fn new() -> MockRedisClient { MockRedisClient { - zrangebyscore_ret: Vec::new(), + zrangebyscore_ret: HashMap::new(), } } - pub fn zrangebyscore_ret(&mut self, ret: Vec) -> Self { - self.zrangebyscore_ret = ret; - + pub fn zrangebyscore_ret(&mut self, key: &str, ret: Vec) -> Self { + self.zrangebyscore_ret.insert(key.to_owned(), ret); self.clone() } } @@ -74,7 +74,10 @@ impl Default for MockRedisClient { #[async_trait] impl Client for MockRedisClient { // A very simplified wrapper, but works for our usage - async fn zrangebyscore(&self, _k: String, _min: String, _max: String) -> Result> { - Ok(self.zrangebyscore_ret.clone()) + async fn zrangebyscore(&self, key: String, _min: String, _max: String) -> Result> { + match self.zrangebyscore_ret.get(&key) { + Some(val) => Ok(val.clone()), + None => Err(anyhow!("unknown key")), + } } } diff --git a/rust/capture/src/server.rs b/rust/capture/src/server.rs index 85850363e762c3..5b8cf06c86842d 100644 --- a/rust/capture/src/server.rs +++ b/rust/capture/src/server.rs @@ -24,8 +24,12 @@ where let redis_client = Arc::new(RedisClient::new(config.redis_url).expect("failed to create redis client")); - let billing = BillingLimiter::new(Duration::seconds(5), redis_client.clone()) - .expect("failed to create billing limiter"); + let billing = BillingLimiter::new( + Duration::seconds(5), + redis_client.clone(), + config.redis_key_prefix, + ) + .expect("failed to create billing limiter"); let app = if config.print_sink { // Print sink is only used for local debug, don't allow a container with it to run on prod diff --git a/rust/capture/tests/common.rs b/rust/capture/tests/common.rs index 868b27c120a7f1..5dd4c639aa5f04 100644 --- a/rust/capture/tests/common.rs +++ b/rust/capture/tests/common.rs @@ -3,6 +3,7 @@ use std::default::Default; use std::net::SocketAddr; use std::num::NonZeroU32; +use std::ops::Add; use std::str::FromStr; use std::string::ToString; use std::sync::{Arc, Once}; @@ -17,12 +18,15 @@ use rdkafka::config::{ClientConfig, FromClientConfig}; use rdkafka::consumer::{BaseConsumer, Consumer}; use rdkafka::util::Timeout; use rdkafka::{Message, TopicPartitionList}; +use redis::{Client, Commands}; +use time::OffsetDateTime; use tokio::net::TcpListener; use tokio::sync::Notify; use tokio::time::timeout; use tracing::{debug, warn}; use capture::config::{Config, KafkaConfig}; +use capture::limiters::billing::QuotaResource; use capture::server::serve; pub static DEFAULT_CONFIG: Lazy = Lazy::new(|| Config { @@ -47,6 +51,7 @@ pub static DEFAULT_CONFIG: Lazy = Lazy::new(|| Config { otel_sampling_rate: 0.0, otel_service_name: "capture-testing".to_string(), export_prometheus: false, + redis_key_prefix: None, }); static TRACING_INIT: Once = Once::new(); @@ -206,6 +211,35 @@ async fn delete_topic(topic: String) { .expect("failed to delete topic"); } +pub struct PrefixedRedis { + key_prefix: String, + client: Client, +} + +impl PrefixedRedis { + pub async fn new() -> Self { + Self { + key_prefix: random_string("test", 8) + "/", + client: Client::open(DEFAULT_CONFIG.redis_url.clone()) + .expect("failed to create redis client"), + } + } + + pub fn key_prefix(&self) -> Option { + Some(self.key_prefix.to_string()) + } + + pub fn add_billing_limit(&self, res: QuotaResource, token: &str, until: time::Duration) { + let key = format!("{}@posthog/quota-limits/{}", self.key_prefix, res.as_str()); + let score = OffsetDateTime::now_utc().add(until).unix_timestamp(); + self.client + .get_connection() + .expect("failed to get connection") + .zadd::(key, token, score) + .expect("failed to insert in redis"); + } +} + pub fn random_string(prefix: &str, length: usize) -> String { let suffix: String = rand::thread_rng() .sample_iter(Alphanumeric) diff --git a/rust/capture/tests/django_compat.rs b/rust/capture/tests/django_compat.rs index 87b0a1b269256f..abbc5356803b9b 100644 --- a/rust/capture/tests/django_compat.rs +++ b/rust/capture/tests/django_compat.rs @@ -100,7 +100,7 @@ async fn it_matches_django_capture_behaviour() -> anyhow::Result<()> { let timesource = FixedTime { time: case.now }; let redis = Arc::new(MockRedisClient::new()); - let billing = BillingLimiter::new(Duration::weeks(1), redis.clone()) + let billing = BillingLimiter::new(Duration::weeks(1), redis.clone(), None) .expect("failed to create billing limiter"); let app = router( diff --git a/rust/capture/tests/events.rs b/rust/capture/tests/events.rs index 7d2defcebd5fff..0554aae905ec8b 100644 --- a/rust/capture/tests/events.rs +++ b/rust/capture/tests/events.rs @@ -1,7 +1,9 @@ use std::num::NonZeroU32; +use time::Duration; use anyhow::Result; use assert_json_diff::assert_json_include; +use capture::limiters::billing::QuotaResource; use reqwest::StatusCode; use serde_json::json; @@ -349,3 +351,63 @@ async fn it_trims_distinct_id() -> Result<()> { Ok(()) } + +#[tokio::test] +async fn it_applies_billing_limits() -> Result<()> { + setup_tracing(); + let token1 = random_string("token", 16); + let token2 = random_string("token", 16); + let token3 = random_string("token", 16); + let distinct_id = random_string("id", 16); + + let topic = EphemeralTopic::new().await; + + // Setup billing limits: + // - token1 limit is expired -> accept messages + // - token2 limit is active -> drop messages + // - token3 is not in redis -> accept by default + let redis = PrefixedRedis::new().await; + redis.add_billing_limit(QuotaResource::Events, &token1, Duration::seconds(-60)); + redis.add_billing_limit(QuotaResource::Events, &token2, Duration::seconds(60)); + + let mut config = DEFAULT_CONFIG.clone(); + config.redis_key_prefix = redis.key_prefix(); + config.kafka.kafka_topic = topic.topic_name().to_string(); + let server = ServerHandle::for_config(config).await; + + for payload in [ + json!({ + "token": token1, + "batch": [{"event": "event1","distinct_id": distinct_id}] + }), + json!({ + "token": token2, + "batch": [{"event": "to drop","distinct_id": distinct_id}] + }), + json!({ + "token": token3, + "batch": [{"event": "event1","distinct_id": distinct_id}] + }), + ] { + let res = server.capture_events(payload.to_string()).await; + assert_eq!(StatusCode::OK, res.status()); + } + + // Batches 1 and 3 go through, batch 2 is dropped + assert_json_include!( + actual: topic.next_event()?, + expected: json!({ + "token": token1, + "distinct_id": distinct_id + }) + ); + assert_json_include!( + actual: topic.next_event()?, + expected: json!({ + "token": token3, + "distinct_id": distinct_id + }) + ); + + Ok(()) +} From 5c113906b5893f044800bf68d6bcc80cde58f94f Mon Sep 17 00:00:00 2001 From: Juraj Majerik Date: Tue, 2 Jul 2024 14:55:40 +0200 Subject: [PATCH 18/18] fix(multi project flags): remove flag id from URL when switching projects (#23394) --- frontend/src/layout/navigation/ProjectSwitcher.tsx | 5 +++-- frontend/src/lib/utils/router-utils.ts | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/frontend/src/layout/navigation/ProjectSwitcher.tsx b/frontend/src/layout/navigation/ProjectSwitcher.tsx index 7f5b6f6134a64b..4ef00133e525e8 100644 --- a/frontend/src/layout/navigation/ProjectSwitcher.tsx +++ b/frontend/src/layout/navigation/ProjectSwitcher.tsx @@ -5,7 +5,7 @@ import { upgradeModalLogic } from 'lib/components/UpgradeModal/upgradeModalLogic import { LemonButton } from 'lib/lemon-ui/LemonButton' import { LemonDivider } from 'lib/lemon-ui/LemonDivider' import { LemonSnack } from 'lib/lemon-ui/LemonSnack/LemonSnack' -import { removeProjectIdIfPresent } from 'lib/utils/router-utils' +import { removeFlagIdIfPresent, removeProjectIdIfPresent } from 'lib/utils/router-utils' import { useMemo } from 'react' import { organizationLogic } from 'scenes/organizationLogic' import { isAuthenticatedTeam, teamLogic } from 'scenes/teamLogic' @@ -91,7 +91,8 @@ function OtherProjectButton({ team }: { team: TeamBasicType; onClickInside?: () // project switch lands on something like insight/abc that won't exist. // On the other hand, if we remove the ID, it could be that someone opens a page, realizes they're in the wrong project // and after switching is on a different page than before. - const route = removeProjectIdIfPresent(location.pathname) + let route = removeProjectIdIfPresent(location.pathname) + route = removeFlagIdIfPresent(route) return urls.project(team.id, route) }, [location.pathname]) diff --git a/frontend/src/lib/utils/router-utils.ts b/frontend/src/lib/utils/router-utils.ts index f93c28ab636ff7..6ac6307ba71080 100644 --- a/frontend/src/lib/utils/router-utils.ts +++ b/frontend/src/lib/utils/router-utils.ts @@ -46,6 +46,13 @@ export function removeProjectIdIfPresent(path: string): string { return path } +export function removeFlagIdIfPresent(path: string): string { + if (path.match(/^\/feature_flags\/\d+/)) { + return path.replace(/(feature_flags).*$/, '$1/') + } + return path +} + export function addProjectIdIfMissing(path: string, teamId?: TeamType['id']): string { return isPathWithoutProjectId(removeProjectIdIfPresent(path)) ? removeProjectIdIfPresent(path)