@rudderhq/db 0.4.6-canary.0 → 0.4.6-canary.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -158,6 +158,167 @@ describe("applyPendingMigrations", () => {
158
158
  await verifySql.end();
159
159
  }
160
160
  }, 20_000);
161
+ it("completes migration 0100 when an older version already created the alias table", async () => {
162
+ const connectionString = await createTempDatabase();
163
+ await applyPendingMigrations(connectionString);
164
+ const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
165
+ try {
166
+ const migration0100Hash = await migrationHash("0100_mean_richard_fisk.sql");
167
+ await sql.unsafe(`
168
+ INSERT INTO "organizations" ("id", "url_key", "name", "issue_prefix")
169
+ VALUES ('00000000-0000-0000-0000-000000000100', 'migration-recovery', 'Migration Recovery', 'MRC')
170
+ `);
171
+ await sql.unsafe(`
172
+ INSERT INTO "organization_issue_prefix_aliases" ("org_id", "prefix")
173
+ VALUES ('00000000-0000-0000-0000-000000000100', 'OLDMRC')
174
+ `);
175
+ await sql.unsafe(`DROP TRIGGER "organizations_route_key_namespace_trigger" ON "organizations"`);
176
+ await sql.unsafe(`DROP TRIGGER "organization_alias_route_key_namespace_trigger" ON "organization_issue_prefix_aliases"`);
177
+ await sql.unsafe(`DROP FUNCTION "enforce_organization_route_key_namespace"()`);
178
+ await sql.unsafe(`DROP FUNCTION "enforce_organization_alias_route_key_namespace"()`);
179
+ await sql.unsafe(`ALTER TABLE "organization_issue_prefix_aliases" DROP CONSTRAINT "organization_issue_prefix_aliases_org_id_organizations_id_fk"`);
180
+ await sql.unsafe(`DROP INDEX "organization_issue_prefix_aliases_prefix_idx"`);
181
+ await sql.unsafe(`DELETE FROM "drizzle"."__drizzle_migrations" WHERE hash = '${migration0100Hash}'`);
182
+ await sql.unsafe(`
183
+ INSERT INTO "drizzle"."__drizzle_migrations" ("hash", "created_at")
184
+ VALUES ('legacy-0100-hash', 1783928221647)
185
+ `);
186
+ }
187
+ finally {
188
+ await sql.end();
189
+ }
190
+ const pendingState = await inspectMigrations(connectionString);
191
+ expect(pendingState).toMatchObject({
192
+ status: "needsMigrations",
193
+ pendingMigrations: ["0100_mean_richard_fisk.sql"],
194
+ reason: "pending-migrations",
195
+ });
196
+ await applyPendingMigrations(connectionString);
197
+ const finalState = await inspectMigrations(connectionString);
198
+ expect(finalState.status).toBe("upToDate");
199
+ const verifySql = postgres(connectionString, { max: 1, onnotice: () => { } });
200
+ try {
201
+ const aliases = await verifySql.unsafe(`SELECT prefix FROM "organization_issue_prefix_aliases" ORDER BY prefix`);
202
+ expect(aliases.map((row) => row.prefix)).toEqual(["OLDMRC"]);
203
+ const constraints = await verifySql.unsafe(`
204
+ SELECT conname
205
+ FROM pg_constraint
206
+ WHERE conname = 'organization_issue_prefix_aliases_org_id_organizations_id_fk'
207
+ `);
208
+ expect(constraints).toHaveLength(1);
209
+ const indexes = await verifySql.unsafe(`
210
+ SELECT indexname
211
+ FROM pg_indexes
212
+ WHERE schemaname = 'public'
213
+ AND indexname = 'organization_issue_prefix_aliases_prefix_idx'
214
+ `);
215
+ expect(indexes).toHaveLength(1);
216
+ const functions = await verifySql.unsafe(`
217
+ SELECT proname
218
+ FROM pg_proc
219
+ WHERE proname IN (
220
+ 'enforce_organization_route_key_namespace',
221
+ 'enforce_organization_alias_route_key_namespace'
222
+ )
223
+ ORDER BY proname
224
+ `);
225
+ expect(functions.map((row) => row.proname)).toEqual([
226
+ "enforce_organization_alias_route_key_namespace",
227
+ "enforce_organization_route_key_namespace",
228
+ ]);
229
+ const triggers = await verifySql.unsafe(`
230
+ SELECT tgname
231
+ FROM pg_trigger
232
+ WHERE NOT tgisinternal
233
+ AND tgname IN (
234
+ 'organizations_route_key_namespace_trigger',
235
+ 'organization_alias_route_key_namespace_trigger'
236
+ )
237
+ ORDER BY tgname
238
+ `);
239
+ expect(triggers.map((row) => row.tgname)).toEqual([
240
+ "organization_alias_route_key_namespace_trigger",
241
+ "organizations_route_key_namespace_trigger",
242
+ ]);
243
+ }
244
+ finally {
245
+ await verifySql.end();
246
+ }
247
+ }, 20_000);
248
+ it("rolls back migration 0100 when a legacy alias conflicts with another organization route", async () => {
249
+ const connectionString = await createTempDatabase();
250
+ await applyPendingMigrations(connectionString);
251
+ const sql = postgres(connectionString, { max: 1, onnotice: () => { } });
252
+ const migration0100Hash = await migrationHash("0100_mean_richard_fisk.sql");
253
+ try {
254
+ await sql.unsafe(`DROP TRIGGER "organizations_route_key_namespace_trigger" ON "organizations"`);
255
+ await sql.unsafe(`DROP TRIGGER "organization_alias_route_key_namespace_trigger" ON "organization_issue_prefix_aliases"`);
256
+ await sql.unsafe(`DROP FUNCTION "enforce_organization_route_key_namespace"()`);
257
+ await sql.unsafe(`DROP FUNCTION "enforce_organization_alias_route_key_namespace"()`);
258
+ await sql.unsafe(`ALTER TABLE "organization_issue_prefix_aliases" DROP CONSTRAINT "organization_issue_prefix_aliases_org_id_organizations_id_fk"`);
259
+ await sql.unsafe(`DROP INDEX "organization_issue_prefix_aliases_prefix_idx"`);
260
+ await sql.unsafe(`DELETE FROM "drizzle"."__drizzle_migrations" WHERE hash = '${migration0100Hash}'`);
261
+ await sql.unsafe(`
262
+ INSERT INTO "drizzle"."__drizzle_migrations" ("hash", "created_at")
263
+ VALUES ('legacy-conflicting-0100-hash', 1783928221647)
264
+ `);
265
+ await sql.unsafe(`
266
+ INSERT INTO "organizations" ("id", "url_key", "name", "issue_prefix")
267
+ VALUES
268
+ ('00000000-0000-0000-0000-000000000101', 'legacy-owner', 'Legacy Owner', 'LOWN'),
269
+ ('00000000-0000-0000-0000-000000000102', 'claimed-route', 'Claimed Route', 'CRTE')
270
+ `);
271
+ await sql.unsafe(`
272
+ INSERT INTO "organization_issue_prefix_aliases" ("org_id", "prefix")
273
+ VALUES ('00000000-0000-0000-0000-000000000101', 'CLAIMED-ROUTE')
274
+ `);
275
+ }
276
+ finally {
277
+ await sql.end();
278
+ }
279
+ await expect(applyPendingMigrations(connectionString)).rejects.toThrow("Existing organization route identities and historical Issue Keys conflict case-insensitively");
280
+ const pendingState = await inspectMigrations(connectionString);
281
+ expect(pendingState).toMatchObject({
282
+ status: "needsMigrations",
283
+ pendingMigrations: ["0100_mean_richard_fisk.sql"],
284
+ reason: "pending-migrations",
285
+ });
286
+ const verifySql = postgres(connectionString, { max: 1, onnotice: () => { } });
287
+ try {
288
+ const migrationEntries = await verifySql.unsafe(`
289
+ SELECT count(*)::int AS count
290
+ FROM "drizzle"."__drizzle_migrations"
291
+ WHERE hash = '${migration0100Hash}'
292
+ `);
293
+ expect(migrationEntries[0]?.count).toBe(0);
294
+ const aliases = await verifySql.unsafe(`SELECT prefix FROM "organization_issue_prefix_aliases" ORDER BY prefix`);
295
+ expect(aliases.map((row) => row.prefix)).toEqual(["CLAIMED-ROUTE"]);
296
+ const restoredObjects = await verifySql.unsafe(`
297
+ SELECT (
298
+ (SELECT count(*) FROM pg_constraint
299
+ WHERE conname = 'organization_issue_prefix_aliases_org_id_organizations_id_fk')
300
+ + (SELECT count(*) FROM pg_indexes
301
+ WHERE schemaname = 'public'
302
+ AND indexname = 'organization_issue_prefix_aliases_prefix_idx')
303
+ + (SELECT count(*) FROM pg_proc
304
+ WHERE proname IN (
305
+ 'enforce_organization_route_key_namespace',
306
+ 'enforce_organization_alias_route_key_namespace'
307
+ ))
308
+ + (SELECT count(*) FROM pg_trigger
309
+ WHERE NOT tgisinternal
310
+ AND tgname IN (
311
+ 'organizations_route_key_namespace_trigger',
312
+ 'organization_alias_route_key_namespace_trigger'
313
+ ))
314
+ )::int AS count
315
+ `);
316
+ expect(restoredObjects[0]?.count).toBe(0);
317
+ }
318
+ finally {
319
+ await verifySql.end();
320
+ }
321
+ }, 20_000);
161
322
  it("replays migration 0044 safely when its schema changes already exist", async () => {
162
323
  const connectionString = await createTempDatabase();
163
324
  await applyPendingMigrations(connectionString);
@@ -1 +1 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ CREATE TABLE IF NOT EXISTS "organization_issue_prefix_aliases" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "org_id" uuid NOT NULL,
4
+ "prefix" text NOT NULL,
5
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
6
+ );
7
+ --> statement-breakpoint
8
+ DO $$
9
+ BEGIN
10
+ IF NOT EXISTS (
11
+ SELECT 1
12
+ FROM pg_constraint
13
+ WHERE conname = 'organization_issue_prefix_aliases_org_id_organizations_id_fk'
14
+ AND conrelid = 'organization_issue_prefix_aliases'::regclass
15
+ ) THEN
16
+ ALTER TABLE "organization_issue_prefix_aliases"
17
+ ADD CONSTRAINT "organization_issue_prefix_aliases_org_id_organizations_id_fk"
18
+ FOREIGN KEY ("org_id") REFERENCES "public"."organizations"("id")
19
+ ON DELETE cascade ON UPDATE no action;
20
+ END IF;
21
+ END
22
+ $$;
23
+ --> statement-breakpoint
24
+ CREATE UNIQUE INDEX IF NOT EXISTS "organization_issue_prefix_aliases_prefix_idx" ON "organization_issue_prefix_aliases" USING btree ("prefix");
25
+ --> statement-breakpoint
26
+ SELECT pg_advisory_xact_lock(hashtext('rudder:organization-issue-prefix'));
27
+ --> statement-breakpoint
28
+ LOCK TABLE "organizations" IN SHARE ROW EXCLUSIVE MODE;
29
+ --> statement-breakpoint
30
+ DO $$
31
+ BEGIN
32
+ IF EXISTS (
33
+ SELECT lower(route_key)
34
+ FROM (
35
+ SELECT "id" AS org_id, "url_key" AS route_key FROM "organizations"
36
+ UNION ALL
37
+ SELECT "id" AS org_id, "issue_prefix" AS route_key FROM "organizations"
38
+ UNION ALL
39
+ SELECT "org_id", "prefix" AS route_key FROM "organization_issue_prefix_aliases"
40
+ ) existing_route_keys
41
+ GROUP BY lower(route_key)
42
+ HAVING count(DISTINCT org_id) > 1
43
+ ) THEN
44
+ RAISE EXCEPTION 'Existing organization route identities and historical Issue Keys conflict case-insensitively. Resolve the conflicting keys before applying migration 0100.';
45
+ END IF;
46
+ END
47
+ $$;
48
+ --> statement-breakpoint
49
+ CREATE OR REPLACE FUNCTION "enforce_organization_route_key_namespace"() RETURNS trigger
50
+ LANGUAGE plpgsql
51
+ AS $$
52
+ BEGIN
53
+ PERFORM pg_advisory_xact_lock(hashtext('rudder:organization-issue-prefix'));
54
+ IF EXISTS (
55
+ SELECT 1
56
+ FROM "organizations" other
57
+ WHERE other."id" <> NEW."id"
58
+ AND (
59
+ lower(other."url_key") IN (lower(NEW."url_key"), lower(NEW."issue_prefix"))
60
+ OR lower(other."issue_prefix") IN (lower(NEW."url_key"), lower(NEW."issue_prefix"))
61
+ )
62
+ ) OR EXISTS (
63
+ SELECT 1
64
+ FROM "organization_issue_prefix_aliases" alias
65
+ WHERE alias."org_id" <> NEW."id"
66
+ AND lower(alias."prefix") IN (lower(NEW."url_key"), lower(NEW."issue_prefix"))
67
+ ) THEN
68
+ RAISE EXCEPTION 'Organization URL key and Issue Key routes must be unique across organizations.';
69
+ END IF;
70
+ RETURN NEW;
71
+ END
72
+ $$;
73
+ --> statement-breakpoint
74
+ CREATE OR REPLACE FUNCTION "enforce_organization_alias_route_key_namespace"() RETURNS trigger
75
+ LANGUAGE plpgsql
76
+ AS $$
77
+ BEGIN
78
+ PERFORM pg_advisory_xact_lock(hashtext('rudder:organization-issue-prefix'));
79
+ IF EXISTS (
80
+ SELECT 1
81
+ FROM "organizations" organization
82
+ WHERE organization."id" <> NEW."org_id"
83
+ AND (
84
+ lower(organization."url_key") = lower(NEW."prefix")
85
+ OR lower(organization."issue_prefix") = lower(NEW."prefix")
86
+ )
87
+ ) OR EXISTS (
88
+ SELECT 1
89
+ FROM "organization_issue_prefix_aliases" alias
90
+ WHERE alias."org_id" <> NEW."org_id"
91
+ AND alias."id" <> NEW."id"
92
+ AND lower(alias."prefix") = lower(NEW."prefix")
93
+ ) THEN
94
+ RAISE EXCEPTION 'Historical Issue Key routes must be unique across organizations.';
95
+ END IF;
96
+ RETURN NEW;
97
+ END
98
+ $$;
99
+ --> statement-breakpoint
100
+ DROP TRIGGER IF EXISTS "organizations_route_key_namespace_trigger" ON "organizations";
101
+ --> statement-breakpoint
102
+ CREATE TRIGGER "organizations_route_key_namespace_trigger"
103
+ BEFORE INSERT OR UPDATE OF "url_key", "issue_prefix" ON "organizations"
104
+ FOR EACH ROW EXECUTE FUNCTION "enforce_organization_route_key_namespace"();
105
+ --> statement-breakpoint
106
+ DROP TRIGGER IF EXISTS "organization_alias_route_key_namespace_trigger" ON "organization_issue_prefix_aliases";
107
+ --> statement-breakpoint
108
+ CREATE TRIGGER "organization_alias_route_key_namespace_trigger"
109
+ BEFORE INSERT OR UPDATE OF "org_id", "prefix" ON "organization_issue_prefix_aliases"
110
+ FOR EACH ROW EXECUTE FUNCTION "enforce_organization_alias_route_key_namespace"();
@@ -0,0 +1,111 @@
1
+ ALTER TABLE "heartbeat_runs" ADD COLUMN "result_summary_json" jsonb;--> statement-breakpoint
2
+ CREATE FUNCTION "rudder_backfill_run_result_summary"("input" jsonb)
3
+ RETURNS jsonb
4
+ LANGUAGE plpgsql
5
+ AS $$
6
+ DECLARE
7
+ "summary" jsonb;
8
+ "line" text;
9
+ "event" jsonb;
10
+ "event_type" text;
11
+ "candidate" text;
12
+ "message" jsonb;
13
+ BEGIN
14
+ IF "input" IS NULL OR jsonb_typeof("input") <> 'object' THEN
15
+ RETURN NULL;
16
+ END IF;
17
+
18
+ "summary" := jsonb_strip_nulls(jsonb_build_object(
19
+ 'summary', CASE WHEN jsonb_typeof("input" -> 'summary') = 'string' THEN left("input" ->> 'summary', 500) END,
20
+ 'result', CASE
21
+ WHEN jsonb_typeof("input" -> 'result') = 'string' THEN left("input" ->> 'result', 500)
22
+ WHEN jsonb_typeof("input" -> 'body') = 'string' THEN left("input" ->> 'body', 500)
23
+ END,
24
+ 'message', CASE WHEN jsonb_typeof("input" -> 'message') = 'string' THEN left("input" ->> 'message', 500) END,
25
+ 'error', CASE WHEN jsonb_typeof("input" -> 'error') = 'string' THEN left("input" ->> 'error', 500) END,
26
+ 'userMessage', CASE WHEN jsonb_typeof("input" -> 'userMessage') = 'string' THEN left("input" ->> 'userMessage', 500) END,
27
+ 'total_cost_usd', CASE
28
+ WHEN jsonb_typeof("input" -> 'total_cost_usd') = 'number' THEN "input" -> 'total_cost_usd'
29
+ END,
30
+ 'cost_usd', CASE
31
+ WHEN jsonb_typeof("input" -> 'cost_usd') = 'number' THEN "input" -> 'cost_usd'
32
+ END,
33
+ 'costUsd', CASE
34
+ WHEN jsonb_typeof("input" -> 'costUsd') = 'number' THEN "input" -> 'costUsd'
35
+ END
36
+ ));
37
+
38
+ IF "summary" ?| array['summary', 'result', 'message', 'userMessage']
39
+ OR jsonb_typeof("input" -> 'stdout') <> 'string' THEN
40
+ RETURN NULLIF("summary", '{}'::jsonb);
41
+ END IF;
42
+
43
+ FOR "line" IN SELECT regexp_split_to_table("input" ->> 'stdout', E'\\r?\\n') LOOP
44
+ BEGIN
45
+ "event" := "line"::jsonb;
46
+ EXCEPTION WHEN OTHERS THEN
47
+ CONTINUE;
48
+ END;
49
+ IF jsonb_typeof("event") <> 'object' THEN
50
+ CONTINUE;
51
+ END IF;
52
+
53
+ "event_type" := "event" ->> 'type';
54
+ "candidate" := NULL;
55
+ IF "event_type" = 'result' THEN
56
+ "candidate" := coalesce("event" ->> 'result', "event" ->> 'text', "event" ->> 'response');
57
+ ELSIF "event_type" = 'item.completed' AND "event" #>> '{item,type}' = 'agent_message' THEN
58
+ "candidate" := "event" #>> '{item,text}';
59
+ ELSIF "event_type" IN ('assistant', 'turn_end') THEN
60
+ "message" := "event" -> 'message';
61
+ IF jsonb_typeof("message") = 'string' THEN
62
+ "candidate" := "message" #>> '{}';
63
+ ELSIF jsonb_typeof("message") = 'object' THEN
64
+ "candidate" := coalesce("message" ->> 'text',
65
+ CASE WHEN jsonb_typeof("message" -> 'content') = 'string' THEN "message" ->> 'content' END);
66
+ IF "candidate" IS NULL AND jsonb_typeof("message" -> 'content') = 'array' THEN
67
+ SELECT string_agg("piece", E'\n\n' ORDER BY "ordinality") INTO "candidate"
68
+ FROM (
69
+ SELECT "ordinality", CASE
70
+ WHEN jsonb_typeof("part") = 'string' THEN "part" #>> '{}'
71
+ WHEN jsonb_typeof("part") = 'object' THEN coalesce("part" ->> 'text', "part" ->> 'content')
72
+ END AS "piece"
73
+ FROM jsonb_array_elements("message" -> 'content') WITH ORDINALITY AS "parts"("part", "ordinality")
74
+ ) AS "message_parts"
75
+ WHERE "piece" IS NOT NULL AND btrim("piece") <> '';
76
+ END IF;
77
+ END IF;
78
+ ELSIF "event_type" = 'agent_end' AND jsonb_typeof("event" -> 'messages') = 'array' THEN
79
+ SELECT "assistant_message" INTO "message"
80
+ FROM jsonb_array_elements("event" -> 'messages') WITH ORDINALITY AS "messages"("assistant_message", "ordinality")
81
+ WHERE "assistant_message" ->> 'role' = 'assistant'
82
+ ORDER BY "ordinality" DESC
83
+ LIMIT 1;
84
+ IF jsonb_typeof("message" -> 'content') = 'string' THEN
85
+ "candidate" := "message" ->> 'content';
86
+ ELSIF jsonb_typeof("message" -> 'content') = 'array' THEN
87
+ SELECT string_agg("piece", E'\n\n' ORDER BY "ordinality") INTO "candidate"
88
+ FROM (
89
+ SELECT "ordinality", CASE
90
+ WHEN jsonb_typeof("part") = 'string' THEN "part" #>> '{}'
91
+ WHEN jsonb_typeof("part") = 'object' THEN coalesce("part" ->> 'text', "part" ->> 'content')
92
+ END AS "piece"
93
+ FROM jsonb_array_elements("message" -> 'content') WITH ORDINALITY AS "parts"("part", "ordinality")
94
+ ) AS "message_parts"
95
+ WHERE "piece" IS NOT NULL AND btrim("piece") <> '';
96
+ END IF;
97
+ END IF;
98
+
99
+ IF "candidate" IS NOT NULL AND btrim("candidate") <> '' THEN
100
+ "summary" := "summary" || jsonb_build_object('result', left(btrim("candidate"), 500));
101
+ END IF;
102
+ END LOOP;
103
+
104
+ RETURN NULLIF("summary", '{}'::jsonb);
105
+ END;
106
+ $$;--> statement-breakpoint
107
+ UPDATE "heartbeat_runs"
108
+ SET "result_summary_json" = "rudder_backfill_run_result_summary"("result_json")
109
+ WHERE "result_json" IS NOT NULL;--> statement-breakpoint
110
+ DROP FUNCTION "rudder_backfill_run_result_summary"(jsonb);--> statement-breakpoint
111
+ CREATE INDEX "heartbeat_runs_org_created_id_idx" ON "heartbeat_runs" USING btree ("org_id","created_at","id");