diff --git a/packages/instrumentation-pg/src/instrumentation.ts b/packages/instrumentation-pg/src/instrumentation.ts index 69bb080e9e..1134272b19 100644 --- a/packages/instrumentation-pg/src/instrumentation.ts +++ b/packages/instrumentation-pg/src/instrumentation.ts @@ -341,6 +341,8 @@ export class PgInstrumentation extends InstrumentationBase { assert.strictEqual(resNoPromise, undefined); }); }); + + it('should record class-instance query', done => { + class Statement { + get name() { + return 'get_pg_tables'; + } + get text() { + return 'SELECT * FROM pg_tables WHERE schemaname = $1'; + } + } + const queryConfig = new Statement(); + const values = ['public']; + + const expectedAttributes = { + ...DEFAULT_ATTRIBUTES, + [ATTR_DB_STATEMENT]: queryConfig.text, + [AttributeNames.PG_PLAN]: queryConfig.name, + [AttributeNames.PG_VALUES]: values, + }; + + const span = tracer.startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + (client.query as any)( + queryConfig, + values, + (err: Error | null, res: any) => { + assert.strictEqual(err, null); + assert.ok(res); + runCallbackTest(span, expectedAttributes, events); + done(); + } + ); + }); + }); }); describe('when specifying a requestHook configuration', () => {