Preserve usage origin metadata in Postgres lists

This commit is contained in:
RWDai
2026-05-17 21:09:59 +08:00
parent fcaafb3939
commit b2266b588e
3 changed files with 23 additions and 6 deletions

View File

@@ -106,9 +106,15 @@ SELECT
NULL::json AS client_response_body, NULL::json AS client_response_body,
NULL::bytea AS client_response_body_compressed, NULL::bytea AS client_response_body_compressed,
CASE CASE
WHEN ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false') WHEN NULLIF(BTRIM("usage".request_metadata->>'client_ip'), '') IS NOT NULL
OR NULLIF(BTRIM("usage".request_metadata->>'user_agent'), '') IS NOT NULL
OR ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false')
OR ("usage".request_metadata->>'upstream_is_stream') IN ('true', 'false') OR ("usage".request_metadata->>'upstream_is_stream') IN ('true', 'false')
THEN jsonb_build_object( THEN jsonb_strip_nulls(jsonb_build_object(
'client_ip',
NULLIF(BTRIM("usage".request_metadata->>'client_ip'), ''),
'user_agent',
NULLIF(BTRIM("usage".request_metadata->>'user_agent'), ''),
'client_requested_stream', 'client_requested_stream',
CASE CASE
WHEN ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false') WHEN ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false')
@@ -121,7 +127,7 @@ SELECT
THEN ("usage".request_metadata->>'upstream_is_stream')::boolean THEN ("usage".request_metadata->>'upstream_is_stream')::boolean
ELSE NULL ELSE NULL
END END
)::json ))::json
ELSE NULL::json ELSE NULL::json
END AS request_metadata, END AS request_metadata,
NULL::varchar AS http_request_body_ref, NULL::varchar AS http_request_body_ref,

View File

@@ -106,9 +106,15 @@ SELECT
NULL::json AS client_response_body, NULL::json AS client_response_body,
NULL::bytea AS client_response_body_compressed, NULL::bytea AS client_response_body_compressed,
CASE CASE
WHEN ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false') WHEN NULLIF(BTRIM("usage".request_metadata->>'client_ip'), '') IS NOT NULL
OR NULLIF(BTRIM("usage".request_metadata->>'user_agent'), '') IS NOT NULL
OR ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false')
OR ("usage".request_metadata->>'upstream_is_stream') IN ('true', 'false') OR ("usage".request_metadata->>'upstream_is_stream') IN ('true', 'false')
THEN jsonb_build_object( THEN jsonb_strip_nulls(jsonb_build_object(
'client_ip',
NULLIF(BTRIM("usage".request_metadata->>'client_ip'), ''),
'user_agent',
NULLIF(BTRIM("usage".request_metadata->>'user_agent'), ''),
'client_requested_stream', 'client_requested_stream',
CASE CASE
WHEN ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false') WHEN ("usage".request_metadata->>'client_requested_stream') IN ('true', 'false')
@@ -121,7 +127,7 @@ SELECT
THEN ("usage".request_metadata->>'upstream_is_stream')::boolean THEN ("usage".request_metadata->>'upstream_is_stream')::boolean
ELSE NULL ELSE NULL
END END
)::json ))::json
ELSE NULL::json ELSE NULL::json
END AS request_metadata, END AS request_metadata,
NULL::varchar AS http_request_body_ref, NULL::varchar AS http_request_body_ref,

View File

@@ -623,6 +623,11 @@ fn usage_sql_uses_json_null_placeholders_for_usage_payload_columns() {
super::LIST_USAGE_AUDITS_PREFIX, super::LIST_USAGE_AUDITS_PREFIX,
super::LIST_RECENT_USAGE_AUDITS_PREFIX, super::LIST_RECENT_USAGE_AUDITS_PREFIX,
] { ] {
assert!(sql.contains("jsonb_strip_nulls(jsonb_build_object("));
assert!(sql.contains("'client_ip'"));
assert!(sql.contains("request_metadata->>'client_ip'"));
assert!(sql.contains("'user_agent'"));
assert!(sql.contains("request_metadata->>'user_agent'"));
assert!(sql.contains("CAST(\"usage\".input_tokens AS INTEGER) AS input_tokens")); assert!(sql.contains("CAST(\"usage\".input_tokens AS INTEGER) AS input_tokens"));
assert!(sql.contains( assert!(sql.contains(
"usage_settlement_snapshots.billing_input_tokens AS settlement_billing_input_tokens" "usage_settlement_snapshots.billing_input_tokens AS settlement_billing_input_tokens"