@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/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-memory-memory-class.md +2 -0
- package/dist/docs/references/reference-storage-retention.md +9 -7
- package/dist/index.cjs +96 -53
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +96 -53
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/datasets/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/v-next/index.d.ts +1 -1
- package/dist/storage/domains/observability/v-next/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/v-next/trace-query.d.ts.map +1 -1
- package/package.json +5 -5
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 ||
|
|
5820
|
-
targetIds: row.targetIds
|
|
5821
|
-
scorerIds: row.scorerIds
|
|
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 ??
|
|
5924
|
-
targetIds: input.targetIds ??
|
|
5925
|
-
scorerIds: input.scorerIds ??
|
|
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) ??
|
|
6053
|
-
targetIds: (args.targetIds !== void 0 ? args.targetIds : existing.targetIds) ??
|
|
6054
|
-
scorerIds: (args.scorerIds !== void 0 ? args.scorerIds : existing.scorerIds) ??
|
|
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
|
-
|
|
6233
|
-
|
|
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
|
-
|
|
6350
|
-
|
|
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
|
-
|
|
6440
|
-
|
|
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
|
|
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
|
-
|
|
6558
|
-
|
|
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
|
|
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
|
-
|
|
6651
|
-
|
|
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
|
|
6692
|
-
else result = await client.oneOrNone(`SELECT
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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 ${
|
|
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
|
|
17776
|
-
if (plan.predicateScope === "trace" && plan.path.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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) {
|