-
Notifications
You must be signed in to change notification settings - Fork 1k
Implement db.query.summary for SqlClientAttributesExtractor #15548
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
f299e7c to
c5970ae
Compare
| equalTo( | ||
| DbAttributes.DB_QUERY_SUMMARY, | ||
| emitStableDatabaseSemconv() ? "CALL" : null)), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should this be CALL NEXT VALUE?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be better to call it CALL Customer_SEQ or maybe CALL NEXT VALUE FOR Customer_SEQ. Having the summary contain the sequence name feels more informative. The sample summaries in the spec also contain the table names.
e761302 to
69592b0
Compare
69592b0 to
ef34cbd
Compare
Pass the caught exception as the cause when rethrowing UnsupportedOperationException to avoid compilation error when -Werror is enabled.
When SQL query text cannot be parsed (e.g., invalid SQL or non-SQL text), the span name was incorrectly falling back to server.address instead of the default 'DB Query' name. According to semconv, server.address should only be used as part of the target when combined with an operation (e.g., 'SELECT localhost'). When there is no operation, the fallback should be db.system.name or the default span name. This change ensures that server.address is only used when we have a valid operation to combine it with, preventing span names like 'localhost' when the SQL cannot be parsed. Fixes failing tests in: - :instrumentation:jdbc:javaagent:testStableSemconv - :instrumentation:jdbc:library:testStableSemconv - :instrumentation:cassandra:cassandra-3.0:javaagent:testStableSemconv
Per the stable database semantic conventions, when neither operation nor target are available, the span name should be db.system.name. Updated the test to expect 'other_sql' (the db.system.name value) for stable semconv, while keeping 'DB Query' for old semconv to maintain backward compatibility.
- Fix computeSpanNameStable to return DEFAULT_SPAN_NAME instead of null when db.system is null - Include server address in target fallback even when no operation exists - Fix SqlStatementSanitizerTest to use getQueryText() instead of deprecated getFullStatement() Resolves test failures in DbClientSpanNameExtractorTest where span names were expected but null was returned.
ef34cbd to
a93e84c
Compare
No description provided.