Skip to content

Commit aeb765b

Browse files
committed
fix: no exception on optional columns
1 parent e9eb1de commit aeb765b

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

apps/api/src/modules/traces/service.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ async function getMetadataColumnNames(greptimeDb: GreptimeDb) {
3535
`SELECT column_name
3636
FROM information_schema.columns
3737
WHERE table_name = 'opentelemetry_traces'
38-
AND column_name LIKE '${METADATA_PREFIX}%'`,
38+
AND (column_name LIKE '${METADATA_PREFIX}%'
39+
OR column_name IN (
40+
'span_attributes.gen_ai.usage.cache_read.input_tokens',
41+
'span_attributes.gen_ai.usage.reasoning.output_tokens'
42+
))`,
3943
)) as Array<{ column_name: unknown }>;
4044
metadataColumnsCache.set("metadata_columns", result);
4145
return result;
@@ -54,7 +58,9 @@ export async function listTraces(
5458
statusFilter?: "ok" | "error",
5559
operationFilter?: "chat" | "embeddings",
5660
) {
57-
const metadataColumns = await getMetadataColumnNames(greptimeDb);
61+
const metadataColumns = (await getMetadataColumnNames(greptimeDb)).filter(({ column_name }) =>
62+
String(column_name).startsWith(METADATA_PREFIX),
63+
);
5864
const metadataKeys = metadataColumns.map(({ column_name }) =>
5965
String(column_name).slice(METADATA_PREFIX.length),
6066
);
@@ -158,12 +164,18 @@ export async function getSpans(
158164
branchSlug: string,
159165
traceId: string,
160166
) {
161-
const metadataColumns = await getMetadataColumnNames(greptimeDb);
167+
const columnNames = await getMetadataColumnNames(greptimeDb);
162168

163-
const metadataSelectSql = metadataColumns
169+
const metadataSelectSql = columnNames
170+
.filter(({ column_name }) => String(column_name).startsWith(METADATA_PREFIX))
164171
.map(({ column_name }) => `"${escapeSqlIdentifier(String(column_name))}"`)
165172
.join(",\n ");
166173

174+
const optionalCol = (col: string, alias: string) =>
175+
columnNames.some(({ column_name }) => String(column_name) === col)
176+
? `"${col}" AS ${alias}`
177+
: `NULL AS ${alias}`;
178+
167179
// Parametrized version to restore once https://github.com/GreptimeTeam/greptimedb/issues/7819 is fixed:
168180
// const params = [traceId, organizationId, agentSlug, branchSlug];
169181
// WHERE "trace_id" = $1
@@ -189,8 +201,8 @@ export async function getSpans(
189201
"span_attributes.gen_ai.usage.input_tokens" AS input_tokens,
190202
"span_attributes.gen_ai.usage.output_tokens" AS output_tokens,
191203
"span_attributes.gen_ai.usage.total_tokens" AS total_tokens,
192-
"span_attributes.gen_ai.usage.cache_read.input_tokens" AS cache_read_input_tokens,
193-
"span_attributes.gen_ai.usage.reasoning.output_tokens" AS reasoning_tokens,
204+
${optionalCol("span_attributes.gen_ai.usage.cache_read.input_tokens", "cache_read_input_tokens")},
205+
${optionalCol("span_attributes.gen_ai.usage.reasoning.output_tokens", "reasoning_tokens")},
194206
"span_attributes.hebo.agent.slug",
195207
"span_attributes.hebo.branch.slug",
196208
"span_attributes.hebo.organization.id"

0 commit comments

Comments
 (0)