ClickHouse / ClickHouse/clickhouse-java
User Agent is not being added properly to all queries
- 主要言語
- Java
- スター
- 1.6k
- フォーク
- 636
- 平均マージ
- 2日 23時間
- マージ済み PR(30日)
- 29
説明
## Description
### Steps to reproduce
1. Create the following table:
```sql
CREATE TABLE default.example_table
(
`id` Int32,
`name` String
)
ENGINE = MergeTree
ORDER BY id
SETTINGS index_granularity = 8192
```
2. Run the following JDBC code:
```java
package com.google.cloud.teleport.v2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCMain {
private static final Logger log = LoggerFactory.getLogger(JDBCMain.class);
static final String TABLE_NAME = "default.example_table";
public static void main(String[] args) throws Exception {
String url = System.getProperty("chUrl", "jdbc:ch://localhost:8123?client_name=thisisatest");
// Set user and password if needed
Properties properties = new Properties();
properties.setProperty("user", System.getProperty("chUser", "default"));
properties.setProperty("password", System.getProperty("chPassword", "123456"));
printInsertedData(url, properties);
}
static void printInsertedData(String url, Properties properties) throws SQLException {
try (Connection conn = DriverManager.getConnection(url, properties)) {//Grab a connection using the jdbc DriverManager
try (Statement stmt = conn.createStatement()) {
try (ResultSet rs = stmt.executeQuery("SELECT * FROM " + TABLE_NAME)) {
while (rs.next()) {
//Print the values of the current row
log.info(rs.getString(1));
log.info(rs.getString(2));
}
}
}
}
}
}
```
### Error Log or Exception StackTrace
When querying the `query_log` table, we get the following data. The full result is attached as a CSV.
I verified that all these queries are related to the same "batch".
[jdbc_user_agent_issue.csv](https://github.com/user-attachments/files/23096043/jdbc_user_agent_issue.csv)
### Expected Behaviour
The `client_name` should be applied to all related queries, including internal queries being fired by the client.
#### Client Configuration
Added as a connection string in the example above.
#### Environment
* Client version: 0.9.2
コントリビューションガイド
調査の方向性
JDBCMain の接続設定から始め、query_log と添付された CSV を調べながら SELECT を再現します。client_name がメインクエリと内部クエリにどのように伝播されるかを追跡します。同じ batch 内のすべてのクエリに設定された client_name が付与されれば完了です。issue では、repository のファイルもテストも指定されていません。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java, sql
- 領域
- backend, databases
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 42/100