diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index 9b8175038c..933796be7c 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -307,14 +307,17 @@ export class PgInstrumentation extends InstrumentationBase { const [span] = memoryExporter.getFinishedSpans(); assert.ok(span); - const commentedQuery = addSqlCommenterComment( - trace.wrapSpanContext(span.spanContext()), - query - ); - const executedQueries = getExecutedQueries(); assert.equal(executedQueries.length, 1); assert.equal(executedQueries[0].text, query); - assert.notEqual(query, commentedQuery); } catch (e: any) { assert.ok(false, e.message); } @@ -879,15 +873,11 @@ describe('pg', () => { assert.ok(res); const [span] = memoryExporter.getFinishedSpans(); - const commentedQuery = addSqlCommenterComment( - trace.wrapSpanContext(span.spanContext()), - query - ); + assert.ok(span); const executedQueries = getExecutedQueries(); assert.equal(executedQueries.length, 1); assert.equal(executedQueries[0].text, query); - assert.notEqual(query, commentedQuery); done(); }, } as pg.QueryConfig); @@ -952,6 +942,33 @@ describe('pg', () => { }); }); + it('should not add sqlcommenter comment when addSqlCommenterCommentToQueries=true is specified with a prepared statement', async () => { + instrumentation.setConfig({ + addSqlCommenterCommentToQueries: true, + }); + + const span = tracer.startSpan('test span'); + await context.with(trace.setSpan(context.active(), span), async () => { + try { + const query = 'SELECT NOW()'; + const resPromise = await client.query({ + text: query, + name: 'prepared sqlcommenter', + }); + assert.ok(resPromise); + + const [span] = memoryExporter.getFinishedSpans(); + assert.ok(span); + + const executedQueries = getExecutedQueries(); + assert.equal(executedQueries.length, 1); + assert.equal(executedQueries[0].text, query); + } catch (e: any) { + assert.ok(false, e.message); + } + }); + }); + it('should not generate traces for client.query() when requireParentSpan=true is specified', done => { instrumentation.setConfig({ requireParentSpan: true,