From 822b33a713189a805f5e7137ab9db852cd9c6c52 Mon Sep 17 00:00:00 2001 From: Ezequiel Carrizo Date: Wed, 3 Dec 2025 18:29:40 +0000 Subject: [PATCH] fix(instrumentation-pg): normalize trailing spaces in database operation name Signed-off-by: Ezequiel Carrizo --- packages/instrumentation-pg/src/utils.ts | 8 ++++--- .../instrumentation-pg/test/utils.test.ts | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/instrumentation-pg/src/utils.ts b/packages/instrumentation-pg/src/utils.ts index 0f4cedef05..d5b958569b 100644 --- a/packages/instrumentation-pg/src/utils.ts +++ b/packages/instrumentation-pg/src/utils.ts @@ -104,11 +104,13 @@ export function getQuerySpanName( } export function parseNormalizedOperationName(queryText: string) { - const indexOfFirstSpace = queryText.indexOf(' '); + // Trim the query text to handle leading/trailing whitespace + const trimmedQuery = queryText.trim(); + const indexOfFirstSpace = trimmedQuery.indexOf(' '); let sqlCommand = indexOfFirstSpace === -1 - ? queryText - : queryText.slice(0, indexOfFirstSpace); + ? trimmedQuery + : trimmedQuery.slice(0, indexOfFirstSpace); sqlCommand = sqlCommand.toUpperCase(); // Handle query text being "COMMIT;", which has an extra semicolon before the space. diff --git a/packages/instrumentation-pg/test/utils.test.ts b/packages/instrumentation-pg/test/utils.test.ts index 673ab0d42c..44bf827e25 100644 --- a/packages/instrumentation-pg/test/utils.test.ts +++ b/packages/instrumentation-pg/test/utils.test.ts @@ -108,6 +108,27 @@ describe('utils.ts', () => { ); }); + it('remove leading whitespaces when parsing operation names', () => { + assert.strictEqual( + utils.getQuerySpanName('dbName', { text: ' SELECT $1' }), + 'pg.query:SELECT dbName' + ); + }); + + it('remove trailing whitespaces when parsing operation names', () => { + assert.strictEqual( + utils.getQuerySpanName('dbName', { text: 'SELECT $1 ' }), + 'pg.query:SELECT dbName' + ); + }); + + it('remove leading and trailing whitespace when parsing operation names', () => { + assert.strictEqual( + utils.getQuerySpanName('dbName', { text: ' SELECT $1 ' }), + 'pg.query:SELECT dbName' + ); + }); + it('omits db name if missing', () => { assert.strictEqual( utils.getQuerySpanName(undefined, dummyQuery),