@mastra/pg 1.26.0 → 1.27.0-alpha.1

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.
package/dist/index.js CHANGED
@@ -5642,6 +5642,19 @@ var ChannelsPG = class ChannelsPG extends ChannelsStorage {
5642
5642
  function jsonbArg(value) {
5643
5643
  return value === void 0 || value === null ? null : JSON.stringify(value);
5644
5644
  }
5645
+ /** Preserve JSON null as data, rather than converting it to an absent SQL value. */
5646
+ function jsonDataArg(value) {
5647
+ return value === void 0 ? null : JSON.stringify(value);
5648
+ }
5649
+ const ITEM_SELECT_COLUMNS = [
5650
+ ...Object.keys(DATASET_ITEMS_SCHEMA),
5651
+ "createdAtZ",
5652
+ "updatedAtZ"
5653
+ ].map((column) => [
5654
+ "input",
5655
+ "groundTruth",
5656
+ "expectedTrajectory"
5657
+ ].includes(column) ? `"${column}"::text AS "${column}"` : `"${column}"`).join(", ");
5645
5658
  function parseStoredJSON(value) {
5646
5659
  if (typeof value === "string") try {
5647
5660
  return JSON.parse(value);
@@ -5816,9 +5829,9 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
5816
5829
  groundTruthSchema: row.groundTruthSchema ? safelyParseJSON(row.groundTruthSchema) : void 0,
5817
5830
  requestContextSchema: row.requestContextSchema ? safelyParseJSON(row.requestContextSchema) : void 0,
5818
5831
  tags: row.tags ? safelyParseJSON(row.tags) : void 0,
5819
- targetType: row.targetType || null,
5820
- targetIds: row.targetIds || null,
5821
- scorerIds: row.scorerIds || null,
5832
+ targetType: row.targetType || void 0,
5833
+ targetIds: row.targetIds ?? void 0,
5834
+ scorerIds: row.scorerIds ?? void 0,
5822
5835
  organizationId: row.organizationId ?? null,
5823
5836
  projectId: row.projectId ?? null,
5824
5837
  candidateKey: row.candidateKey ?? null,
@@ -5920,9 +5933,9 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
5920
5933
  inputSchema: input.inputSchema ?? void 0,
5921
5934
  groundTruthSchema: input.groundTruthSchema ?? void 0,
5922
5935
  requestContextSchema: input.requestContextSchema ?? void 0,
5923
- targetType: input.targetType ?? null,
5924
- targetIds: input.targetIds ?? null,
5925
- scorerIds: input.scorerIds ?? null,
5936
+ targetType: input.targetType ?? void 0,
5937
+ targetIds: input.targetIds ?? void 0,
5938
+ scorerIds: input.scorerIds ?? void 0,
5926
5939
  organizationId: input.organizationId ?? null,
5927
5940
  projectId: input.projectId ?? null,
5928
5941
  candidateKey: input.candidateKey ?? null,
@@ -6049,9 +6062,9 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6049
6062
  groundTruthSchema: (args.groundTruthSchema !== void 0 ? args.groundTruthSchema : existing.groundTruthSchema) ?? void 0,
6050
6063
  requestContextSchema: (args.requestContextSchema !== void 0 ? args.requestContextSchema : existing.requestContextSchema) ?? void 0,
6051
6064
  tags: (args.tags !== void 0 ? args.tags : existing.tags) ?? void 0,
6052
- targetType: (args.targetType !== void 0 ? args.targetType : existing.targetType) ?? null,
6053
- targetIds: (args.targetIds !== void 0 ? args.targetIds : existing.targetIds) ?? null,
6054
- scorerIds: (args.scorerIds !== void 0 ? args.scorerIds : existing.scorerIds) ?? null,
6065
+ targetType: (args.targetType !== void 0 ? args.targetType : existing.targetType) ?? void 0,
6066
+ targetIds: (args.targetIds !== void 0 ? args.targetIds : existing.targetIds) ?? void 0,
6067
+ scorerIds: (args.scorerIds !== void 0 ? args.scorerIds : existing.scorerIds) ?? void 0,
6055
6068
  organizationId: existing.organizationId ?? null,
6056
6069
  projectId: existing.projectId ?? null,
6057
6070
  candidateKey: existing.candidateKey ?? null,
@@ -6229,8 +6242,8 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6229
6242
  parentOrganizationId,
6230
6243
  parentProjectId,
6231
6244
  JSON.stringify(args.input),
6232
- jsonbArg(args.groundTruth),
6233
- jsonbArg(args.expectedTrajectory),
6245
+ jsonDataArg(args.groundTruth),
6246
+ jsonDataArg(args.expectedTrajectory),
6234
6247
  jsonbArg(args.toolMocks),
6235
6248
  args.unmockedToolPolicy ?? null,
6236
6249
  jsonbArg(args.scorerIds),
@@ -6346,8 +6359,8 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6346
6359
  parentOrganizationId,
6347
6360
  parentProjectId,
6348
6361
  JSON.stringify(mergedInput),
6349
- jsonbArg(mergedGroundTruth),
6350
- jsonbArg(mergedExpectedTrajectory),
6362
+ jsonDataArg(mergedGroundTruth),
6363
+ jsonDataArg(mergedExpectedTrajectory),
6351
6364
  jsonbArg(mergedToolMocks),
6352
6365
  mergedUnmockedToolPolicy ?? null,
6353
6366
  jsonbArg(mergedScorerIds),
@@ -6436,8 +6449,8 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6436
6449
  parentOrganizationId,
6437
6450
  parentProjectId,
6438
6451
  JSON.stringify(existing.input),
6439
- jsonbArg(existing.groundTruth),
6440
- jsonbArg(existing.expectedTrajectory),
6452
+ jsonDataArg(existing.groundTruth),
6453
+ jsonDataArg(existing.expectedTrajectory),
6441
6454
  jsonbArg(existing.toolMocks),
6442
6455
  existing.unmockedToolPolicy ?? null,
6443
6456
  jsonbArg(existing.scorerIds),
@@ -6537,7 +6550,7 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6537
6550
  details: { datasetId: input.datasetId }
6538
6551
  });
6539
6552
  const externalIds = [...new Set(input.items.flatMap((item) => item.externalId ? [item.externalId] : []))];
6540
- const historyRows = externalIds.length ? await t.manyOrNone(`SELECT * FROM ${itemsTable} WHERE "datasetId" = $1 AND "externalId" = ANY($2::text[]) ORDER BY "datasetVersion"`, [input.datasetId, externalIds]) : [];
6553
+ const historyRows = externalIds.length ? await t.manyOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${itemsTable} WHERE "datasetId" = $1 AND "externalId" = ANY($2::text[]) ORDER BY "datasetVersion"`, [input.datasetId, externalIds]) : [];
6541
6554
  const plan = this.planDatasetItemBatch(input.items, historyRows.map((row) => this.transformItemRowFull(row)), () => crypto.randomUUID());
6542
6555
  const resolved = new Map([...plan.existingCurrentItems].map(([id, row]) => [id, this.datasetItemFromRow(row)]));
6543
6556
  if (plan.inserts.length > 0) {
@@ -6554,8 +6567,8 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6554
6567
  dataset.organizationId ?? null,
6555
6568
  dataset.projectId ?? null,
6556
6569
  JSON.stringify(item.input),
6557
- jsonbArg(item.groundTruth),
6558
- jsonbArg(item.expectedTrajectory),
6570
+ jsonDataArg(item.groundTruth),
6571
+ jsonDataArg(item.expectedTrajectory),
6559
6572
  jsonbArg(item.toolMocks),
6560
6573
  item.unmockedToolPolicy ?? null,
6561
6574
  jsonbArg(item.scorerIds),
@@ -6632,7 +6645,7 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6632
6645
  category: ErrorCategory.USER,
6633
6646
  details: { datasetId: input.datasetId }
6634
6647
  });
6635
- const currentItems = (await t.manyOrNone(`SELECT * FROM ${itemsTable} WHERE "id" = ANY($1::text[]) AND "datasetId" = $2 AND "validTo" IS NULL AND "isDeleted" = false`, [input.itemIds, input.datasetId])).map((row) => this.transformItemRow(row));
6648
+ const currentItems = (await t.manyOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${itemsTable} WHERE "id" = ANY($1::text[]) AND "datasetId" = $2 AND "validTo" IS NULL AND "isDeleted" = false`, [input.itemIds, input.datasetId])).map((row) => this.transformItemRow(row));
6636
6649
  if (currentItems.length === 0) return;
6637
6650
  const parentOrganizationId = dataset.organizationId ?? null;
6638
6651
  const parentProjectId = dataset.projectId ?? null;
@@ -6647,8 +6660,8 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6647
6660
  parentOrganizationId,
6648
6661
  parentProjectId,
6649
6662
  JSON.stringify(item.input),
6650
- jsonbArg(item.groundTruth),
6651
- jsonbArg(item.expectedTrajectory),
6663
+ jsonDataArg(item.groundTruth),
6664
+ jsonDataArg(item.expectedTrajectory),
6652
6665
  jsonbArg(item.toolMocks),
6653
6666
  item.unmockedToolPolicy ?? null,
6654
6667
  jsonbArg(item.scorerIds),
@@ -6688,8 +6701,8 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6688
6701
  schemaName: getSchemaName$5(this.#schema)
6689
6702
  });
6690
6703
  let result;
6691
- if (args.datasetVersion !== void 0) result = await client.oneOrNone(`SELECT * FROM ${tableName} WHERE "id" = $1 AND "datasetVersion" <= $2 AND ("validTo" IS NULL OR "validTo" > $2) AND "isDeleted" = false ORDER BY "datasetVersion" DESC LIMIT 1`, [args.id, args.datasetVersion]);
6692
- else result = await client.oneOrNone(`SELECT * FROM ${tableName} WHERE "id" = $1 AND "validTo" IS NULL AND "isDeleted" = false`, [args.id]);
6704
+ if (args.datasetVersion !== void 0) result = await client.oneOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${tableName} WHERE "id" = $1 AND "datasetVersion" <= $2 AND ("validTo" IS NULL OR "validTo" > $2) AND "isDeleted" = false ORDER BY "datasetVersion" DESC LIMIT 1`, [args.id, args.datasetVersion]);
6705
+ else result = await client.oneOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${tableName} WHERE "id" = $1 AND "validTo" IS NULL AND "isDeleted" = false`, [args.id]);
6693
6706
  return result ? this.transformItemRow(result) : null;
6694
6707
  } catch (error) {
6695
6708
  throw new MastraError({
@@ -6705,7 +6718,7 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6705
6718
  indexName: TABLE_DATASET_ITEMS,
6706
6719
  schemaName: getSchemaName$5(this.#schema)
6707
6720
  });
6708
- return (await this.#db.readClient.manyOrNone(`SELECT * FROM ${tableName} WHERE "datasetId" = $1 AND "datasetVersion" <= $2 AND ("validTo" IS NULL OR "validTo" > $3) AND "isDeleted" = false ORDER BY "createdAt" DESC, "id" ASC`, [
6721
+ return (await this.#db.readClient.manyOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${tableName} WHERE "datasetId" = $1 AND "datasetVersion" <= $2 AND ("validTo" IS NULL OR "validTo" > $3) AND "isDeleted" = false ORDER BY "createdAt" DESC, "id" ASC`, [
6709
6722
  datasetId,
6710
6723
  version,
6711
6724
  version
@@ -6724,7 +6737,7 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6724
6737
  indexName: TABLE_DATASET_ITEMS,
6725
6738
  schemaName: getSchemaName$5(this.#schema)
6726
6739
  });
6727
- return (await this.#db.readClient.manyOrNone(`SELECT * FROM ${tableName} WHERE "id" = $1 ORDER BY "datasetVersion" DESC`, [itemId]) || []).map((row) => this.transformItemRowFull(row));
6740
+ return (await this.#db.readClient.manyOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${tableName} WHERE "id" = $1 ORDER BY "datasetVersion" DESC`, [itemId]) || []).map((row) => this.transformItemRowFull(row));
6728
6741
  } catch (error) {
6729
6742
  throw new MastraError({
6730
6743
  id: createStorageErrorId("PG", "GET_ITEM_HISTORY", "FAILED"),
@@ -6796,7 +6809,7 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
6796
6809
  const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
6797
6810
  const limitValue = perPageInput === false ? total : perPage;
6798
6811
  return {
6799
- items: (await client.manyOrNone(`SELECT * FROM ${tableName} ${whereClause} ORDER BY "${orderBy.field}" ${orderBy.direction}, "id" ASC LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, [
6812
+ items: (await client.manyOrNone(`SELECT ${ITEM_SELECT_COLUMNS} FROM ${tableName} ${whereClause} ORDER BY "${orderBy.field}" ${orderBy.direction}, "id" ASC LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, [
6800
6813
  ...queryParams,
6801
6814
  limitValue,
6802
6815
  offset
@@ -17246,7 +17259,8 @@ const TRACE_FIELDS = {
17246
17259
  entityName: "r.\"entityName\"",
17247
17260
  entityType: "r.\"entityType\"",
17248
17261
  environment: "r.\"environment\"",
17249
- status: TRACE_STATUS_SQL
17262
+ status: TRACE_STATUS_SQL,
17263
+ tags: "r.\"tags\""
17250
17264
  };
17251
17265
  const SPAN_FIELDS = {
17252
17266
  name: "s.\"name\"",
@@ -17348,6 +17362,19 @@ function compileScalarPredicate(predicate, registry, parameterOffset, allowMetad
17348
17362
  sql: `${field} IS ${predicate.operator === "exists" ? "NOT " : ""}NULL`,
17349
17363
  values: fieldValues
17350
17364
  };
17365
+ if (predicate.type === "collection") {
17366
+ if (predicate.operator === "includes" || predicate.operator === "notIncludes") {
17367
+ const contains = `${field} @> ARRAY[$${parameterOffset}]::text[]`;
17368
+ return {
17369
+ sql: predicate.operator === "includes" ? contains : `cardinality(${field}) > 0 AND NOT (${contains})`,
17370
+ values: [...fieldValues, predicate.value]
17371
+ };
17372
+ }
17373
+ return {
17374
+ sql: `cardinality(${field}) ${predicate.operator === "empty" ? "=" : ">"} 0`,
17375
+ values: fieldValues
17376
+ };
17377
+ }
17351
17378
  if (predicate.type === "membership") {
17352
17379
  const list = placeholders(predicate.values, parameterOffset);
17353
17380
  if (predicate.operator === "in") return {
@@ -17401,6 +17428,7 @@ function compileFeedbackScalarPredicate(predicate, parameterOffset) {
17401
17428
  };
17402
17429
  }
17403
17430
  if (predicate.field !== "value") return compileScalarPredicate(predicate, FEEDBACK_FIELDS, parameterOffset);
17431
+ if (predicate.type === "collection") throw new Error(`Unsupported trusted trace-query field: ${predicate.field}`);
17404
17432
  if (predicate.type === "presence") {
17405
17433
  const present = `(s."valueString" IS NOT NULL OR s."valueNumber" IS NOT NULL)`;
17406
17434
  return {
@@ -17511,27 +17539,39 @@ function compileThreadPredicate(predicate, parameterOffset) {
17511
17539
  values: compiled.values
17512
17540
  };
17513
17541
  }
17514
- function compilePostgresTraceScope(schema, selection, relationCollections, deltaWindow) {
17542
+ function compilePostgresTraceScope(schema, selection, relationCollections, scope, deltaWindow) {
17515
17543
  const spanTable = qualifiedTable(schema, TABLE_SPAN_EVENTS);
17516
17544
  const scoreTable = qualifiedTable(schema, TABLE_SCORE_EVENTS);
17517
17545
  const feedbackTable = qualifiedTable(schema, TABLE_FEEDBACK_EVENTS);
17518
17546
  const values = [selection.timeRange.from, selection.timeRange.to];
17519
- const rootConditions = [
17520
- `r."parentSpanId" IS NULL`,
17521
- latestRootPredicate$1(spanTable),
17522
- `NOT r."isPending"`,
17523
- `r."endedAt" IS NOT NULL`,
17524
- `r."startedAt" >= $1`,
17525
- `r."startedAt" < $2`
17526
- ];
17547
+ const deltaConditions = [];
17527
17548
  if (deltaWindow) {
17528
17549
  values.push(deltaWindow.xactId, deltaWindow.cursorId, deltaWindow.safeHorizon);
17529
- rootConditions.push(`(r."xactId", r."cursorId") > ($3::xid8, $4::bigint)`, `r."xactId" < $5::xid8`);
17550
+ deltaConditions.push(`(r."xactId", r."cursorId") > ($3::xid8, $4::bigint)`, `r."xactId" < $5::xid8`);
17551
+ }
17552
+ const scopeConditions = [];
17553
+ if (scope) {
17554
+ values.push(scope.organizationId);
17555
+ scopeConditions.push(`"organizationId" = $${values.length}`);
17556
+ if (scope.resourceId !== void 0) {
17557
+ values.push(scope.resourceId);
17558
+ scopeConditions.push(`"resourceId" = $${values.length}`);
17559
+ }
17530
17560
  }
17561
+ const scopeSql = (alias) => scopeConditions.map((condition) => `\n AND ${alias}.${condition}`).join("");
17531
17562
  const ctes = [`root_scope AS MATERIALIZED (
17532
17563
  SELECT *
17533
17564
  FROM ${spanTable} r
17534
- WHERE ${rootConditions.join("\n AND ")}
17565
+ WHERE ${[
17566
+ `r."parentSpanId" IS NULL`,
17567
+ latestRootPredicate$1(spanTable),
17568
+ `NOT r."isPending"`,
17569
+ `r."endedAt" IS NOT NULL`,
17570
+ `r."startedAt" >= $1`,
17571
+ `r."startedAt" < $2`,
17572
+ ...deltaConditions,
17573
+ ...scopeConditions.map((condition) => `r.${condition}`)
17574
+ ].join("\n AND ")}
17535
17575
  )`];
17536
17576
  if (relationCollections.has("spans")) ctes.push(`current_spans AS MATERIALIZED (
17537
17577
  SELECT
@@ -17557,7 +17597,7 @@ function compilePostgresTraceScope(schema, selection, relationCollections, delta
17557
17597
  FROM ${spanTable} s
17558
17598
  WHERE s."traceId" IS NOT NULL
17559
17599
  AND s."traceId" IN (SELECT "traceId" FROM root_scope)
17560
- AND ${latestSpanPredicate$1(spanTable)}
17600
+ AND ${latestSpanPredicate$1(spanTable)}${scopeSql("s")}
17561
17601
  )`);
17562
17602
  if (relationCollections.has("scores")) ctes.push(`current_scores AS MATERIALIZED (
17563
17603
  SELECT
@@ -17574,7 +17614,7 @@ function compilePostgresTraceScope(schema, selection, relationCollections, delta
17574
17614
  FROM ${scoreTable} s
17575
17615
  WHERE s."traceId" IS NOT NULL
17576
17616
  AND s."traceId" IN (SELECT "traceId" FROM root_scope)
17577
- AND ${latestScorePredicate(scoreTable)}
17617
+ AND ${latestScorePredicate(scoreTable)}${scopeSql("s")}
17578
17618
  )`);
17579
17619
  if (relationCollections.has("feedback")) ctes.push(`current_feedback AS MATERIALIZED (
17580
17620
  SELECT
@@ -17593,7 +17633,7 @@ function compilePostgresTraceScope(schema, selection, relationCollections, delta
17593
17633
  FROM ${feedbackTable} s
17594
17634
  WHERE s."traceId" IS NOT NULL
17595
17635
  AND s."traceId" IN (SELECT "traceId" FROM root_scope)
17596
- AND ${latestFeedbackPredicate(feedbackTable)}
17636
+ AND ${latestFeedbackPredicate(feedbackTable)}${scopeSql("s")}
17597
17637
  )`);
17598
17638
  return {
17599
17639
  ctes,
@@ -17611,7 +17651,7 @@ function compilePostgresTraceQuery(schema, plan, mode = "data", safeHorizon) {
17611
17651
  safeHorizon
17612
17652
  };
17613
17653
  }
17614
- const { ctes, values } = compilePostgresTraceScope(schema, plan, relationCollections, deltaWindow);
17654
+ const { ctes, values } = compilePostgresTraceScope(schema, plan, relationCollections, plan.scope, deltaWindow);
17615
17655
  let predicateSql = "TRUE";
17616
17656
  if (plan.where) {
17617
17657
  const predicate = compilePredicate(plan.where, values.length + 1);
@@ -17689,7 +17729,7 @@ LIMIT $${values.length}`,
17689
17729
  function compilePostgresThreadQuery(schema, plan) {
17690
17730
  const relationCollections = collectRelationCollections(plan.traces.where);
17691
17731
  collectThreadRelationCollections(plan.where, relationCollections);
17692
- const { ctes, values } = compilePostgresTraceScope(schema, plan.traces, relationCollections);
17732
+ const { ctes, values } = compilePostgresTraceScope(schema, plan.traces, relationCollections, plan.scope);
17693
17733
  let eligibilitySql = "TRUE";
17694
17734
  if (plan.traces.where) {
17695
17735
  const eligibility = compilePredicate(plan.traces.where, values.length + 1);
@@ -17747,7 +17787,7 @@ function discoveryCollections(scope) {
17747
17787
  return scope === "trace" ? /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set([scope]);
17748
17788
  }
17749
17789
  function compilePostgresTraceQueryObservedFields(schema, plan) {
17750
- const { ctes, values } = compilePostgresTraceScope(schema, plan, /* @__PURE__ */ new Set());
17790
+ const { ctes, values } = compilePostgresTraceScope(schema, plan, /* @__PURE__ */ new Set(), plan.scope);
17751
17791
  const searchParameter = values.length + 1;
17752
17792
  const search = plan.search ? `AND strpos(lower('metadata.' || entry.key), lower($${searchParameter})) > 0` : "";
17753
17793
  if (plan.search) values.push(plan.search);
@@ -17771,23 +17811,24 @@ LIMIT $${values.length}`,
17771
17811
  };
17772
17812
  }
17773
17813
  function compilePostgresTraceQueryValues(schema, plan) {
17774
- const { ctes, values } = compilePostgresTraceScope(schema, plan, discoveryCollections(plan.predicateScope));
17775
- let field;
17776
- if (plan.predicateScope === "trace" && plan.path.startsWith("metadata.")) {
17814
+ const { ctes, values } = compilePostgresTraceScope(schema, plan, discoveryCollections(plan.predicateScope), plan.scope);
17815
+ let extracted;
17816
+ if (plan.predicateScope === "trace" && plan.path === "tags") extracted = `SELECT value FROM (SELECT DISTINCT r."traceId", UNNEST(r."tags") AS value FROM root_scope r) t`;
17817
+ else if (plan.predicateScope === "trace" && plan.path.startsWith("metadata.")) {
17777
17818
  const keyParameter = `$${values.length + 1}`;
17778
- field = `COALESCE(
17819
+ extracted = `SELECT COALESCE(
17779
17820
  CASE WHEN jsonb_typeof(r."metadataSearch" -> ${keyParameter}) = 'string' THEN r."metadataSearch" ->> ${keyParameter} END,
17780
17821
  CASE WHEN jsonb_typeof(r."metadataRaw" -> ${keyParameter}) = 'string' THEN NULLIF(btrim(r."metadataRaw" ->> ${keyParameter}), '') END
17781
- )`;
17822
+ )::text AS value FROM root_scope r`;
17782
17823
  values.push(plan.path.slice(9));
17783
- } else field = fieldSql(discoveryRegistry(plan.predicateScope), plan.path);
17824
+ } else extracted = `SELECT ${fieldSql(discoveryRegistry(plan.predicateScope), plan.path)}::text AS value FROM ${discoverySource(plan.predicateScope)}`;
17784
17825
  const searchParameter = values.length + 1;
17785
17826
  const search = plan.search ? `AND strpos(lower(value), lower($${searchParameter})) > 0` : "";
17786
17827
  if (plan.search) values.push(plan.search);
17787
17828
  values.push(plan.limit + 1);
17788
17829
  return {
17789
17830
  text: `WITH ${ctes.join(",\n")}, extracted AS (
17790
- SELECT ${field}::text AS value FROM ${discoverySource(plan.predicateScope)}
17831
+ ${extracted}
17791
17832
  )
17792
17833
  SELECT value, count(*)::bigint AS count
17793
17834
  FROM extracted
@@ -18886,7 +18927,8 @@ var ObservabilityStoragePostgresVNext = class ObservabilityStoragePostgresVNext
18886
18927
  "logs",
18887
18928
  "trace-query",
18888
18929
  "trace-query-discovery",
18889
- "thread-query"
18930
+ "thread-query",
18931
+ "trace-query-tenant-scope"
18890
18932
  ];
18891
18933
  return [
18892
18934
  "metrics",
@@ -18894,7 +18936,8 @@ var ObservabilityStoragePostgresVNext = class ObservabilityStoragePostgresVNext
18894
18936
  "delta-polling",
18895
18937
  "trace-query",
18896
18938
  "trace-query-discovery",
18897
- "thread-query"
18939
+ "thread-query",
18940
+ "trace-query-tenant-scope"
18898
18941
  ];
18899
18942
  }
18900
18943
  async #run(op, fn, details) {