Found a way to extract it for below dbx-java library.
-> databricks-jdbc library version : `2.6.32`
private static String extractQueryIdFromDbxStatement(Hive42PreparedStatement statement) {
byte[] guid = ((HiveJDBCNativeQueryExecutor) statement.getQueryExecutor())
.getExeContext()
.m_fetchResultsReq
.getOperationHandle()
.getOperationId()
.getGuid();
return (guid != null && guid.length > 0) ?
formatGuid(HexFormat.of().formatHex(guid)) :
EMPTY_STRING;
}
private static String formatGuid(String input) {
if (input.length() != 32) return input;
return String.format("%s-%s-%s-%s-%s",
input.substring(0, 8),
input.substring(8, 12),
input.substring(12, 16),
input.substring(16, 20),
input.substring(20, 32));
}
In short - get preparedStatement from the connection obtained from DriverManager above like
PreparedStatement pstmt = conn.prepareStatement(query);
& then pass preapredStatement to `extractQueryIdFromDbxStatement` method shown above - which will either return formatted statement-id or a empty string if not found.
To be on safer side - use try/catch for extracting & handle errors as your desire.