clickhouse-java icon indicating copy to clipboard operation
clickhouse-java copied to clipboard

User Agent is not being added properly to all queries

Open BentsiLeviav opened this issue 2 months ago • 1 comments

Description

Steps to reproduce

  1. Create the following table:
CREATE TABLE default.example_table
(
    `id` Int32,
    `name` String
)
ENGINE = MergeTree
ORDER BY id
SETTINGS index_granularity = 8192
  1. Run the following JDBC code:
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.

Image

I verified that all these queries are related to the same "batch".

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

BentsiLeviav avatar Oct 23 '25 10:10 BentsiLeviav

@BentsiLeviav Looks like wrong records are sources from JDBC V1 - and this is the strange. I will test on a local instance.

chernser avatar Oct 27 '25 13:10 chernser