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),