From 3cb7fa34b00bf09e751ab0cef87c14afbfe07970 Mon Sep 17 00:00:00 2001 From: rkoh-rq <49420412+rkoh-rq@users.noreply.github.com> Date: Tue, 4 Nov 2025 11:00:33 +0800 Subject: [PATCH 1/3] fix: quote "event" reserved keyword in journey queries Fixes PostgreSQL syntax error by quoting the "event" column alias. This was causing the journey query to fail. "event" is a reserved keyword in PostgreSQL. Added double quotes to treat it as an identifier rather than a keyword. Changes: - Quote "event" in PostgreSQL - Quote "event" in ClickHouse for consistency --- src/queries/sql/reports/getJourney.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/queries/sql/reports/getJourney.ts b/src/queries/sql/reports/getJourney.ts index e831a96dd..9d927cfef 100644 --- a/src/queries/sql/reports/getJourney.ts +++ b/src/queries/sql/reports/getJourney.ts @@ -72,7 +72,7 @@ async function relationalQuery( for (let i = 1; i <= steps; i++) { const endQuery = i < steps ? ',' : ''; selectQuery += `s.e${i},`; - maxQuery += `\nmax(CASE WHEN event_number = ${i} THEN event ELSE NULL END) AS e${i}${endQuery}`; + maxQuery += `\nmax(CASE WHEN event_number = ${i} THEN "event" ELSE NULL END) AS e${i}${endQuery}`; groupByQuery += `s.e${i}${endQuery} `; } @@ -118,7 +118,7 @@ async function relationalQuery( select distinct visit_id, referrer_path, - coalesce(nullIf(event_name, ''), url_path) event, + coalesce(nullIf(event_name, ''), url_path) "event", row_number() OVER (PARTITION BY visit_id ORDER BY created_at) AS event_number from website_event where website_id = {{websiteId::uuid}} @@ -182,7 +182,7 @@ async function clickhouseQuery( for (let i = 1; i <= steps; i++) { const endQuery = i < steps ? ',' : ''; selectQuery += `s.e${i},`; - maxQuery += `\nmax(CASE WHEN event_number = ${i} THEN event ELSE NULL END) AS e${i}${endQuery}`; + maxQuery += `\nmax(CASE WHEN event_number = ${i} THEN "event" ELSE NULL END) AS e${i}${endQuery}`; groupByQuery += `s.e${i}${endQuery} `; } @@ -227,7 +227,7 @@ async function clickhouseQuery( WITH events AS ( select distinct visit_id, - coalesce(nullIf(event_name, ''), url_path) event, + coalesce(nullIf(event_name, ''), url_path) "event", row_number() OVER (PARTITION BY visit_id ORDER BY created_at) AS event_number from website_event where website_id = {websiteId:UUID} From cb63e49a9b2d3f5f26f580acba63fca611a1519d Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 14 Nov 2025 15:42:23 -0800 Subject: [PATCH 2/3] Fixed triggered event lookup. Closes #3742. --- .../[websiteId]/(reports)/funnels/FunnelEditForm.tsx | 11 +++++------ .../[websiteId]/(reports)/goals/GoalAddButton.tsx | 3 +-- src/components/common/DateDistance.tsx | 7 ++++++- src/lib/date.ts | 4 ++++ 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx b/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx index 30976bff7..13712f2ad 100644 --- a/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx +++ b/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx @@ -56,7 +56,7 @@ export function FunnelEditForm({ const defaultValues = { name: data?.name || '', window: data?.parameters?.window || 60, - steps: data?.parameters?.steps || [{ type: 'path', value: '/' }], + steps: data?.parameters?.steps || [{ type: 'path', value: '' }], }; return ( @@ -82,12 +82,10 @@ export function FunnelEditForm({ validate: value => value.length > 1 || 'At least two steps are required', }} > - {({ fields, append, remove, getValues }) => { + {({ fields, append, remove }) => { return ( {fields.map(({ id }: { id: string }, index: number) => { - const type = getValues(`steps.${index}.type`); - return ( @@ -103,7 +101,8 @@ export function FunnelEditForm({ name={`steps.${index}.value`} rules={{ required: formatMessage(labels.required) }} > - {({ field }) => { + {({ field, context }) => { + const type = context.watch(`steps.${index}.type`); return ; }} @@ -118,7 +117,7 @@ export function FunnelEditForm({ })}