googleapis / googleapis/google-cloud-java

[bigquery-jdbc] Expose dry-run / query cost estimation API

未关闭
#14,264 0 条评论 1 个 reaction 已指派 1 人 已被 @logachev 认领 在 GitHub 查看
主要语言
Java
星标
2.1k
派生
1.2k
平均合并
1 天 23 小时
30 天内合并 PR
157

描述

### Problem

BigQuery clients often need to estimate the amount of data a query will process **before executing it**, because BigQuery billing depends on bytes processed.

The BigQuery API supports this through dry runs and returns `totalBytesProcessed`. The Java BigQuery client also exposes this capability, including `Connection.dryRun(String)` / `BigQueryDryRunResult`.

However, `google-cloud-bigquery-jdbc` does not currently expose an equivalent public API through `BigQueryConnection` or `BigQueryStatement`.

This prevents JDBC-based database tools such as DataGrip from providing the same pre-execution cost information that the BigQuery Console provides.

### Requested API

It would be useful to expose dry-run/query estimation as a BigQuery-specific JDBC extension, for example through an unwrapped `BigQueryConnection` or `BigQueryStatement`:

```java
BigQueryStatement statement =
jdbcStatement.unwrap(BigQueryStatement.class);

BigQueryDryRunResult result = statement.dryRun(sql);
long bytes = result.getTotalBytesProcessed();
```

The exact API shape is not important; the main requirement is to perform the dry run using the **existing JDBC connection configuration and authentication**.

Ideally it should preserve:

* authentication/credentials
* project
* location
* default dataset
* session configuration
* prepared-statement parameters, where applicable

### Motivation

For database IDEs and other JDBC tools, this would allow:

> This query will process approximately 1.8 TB.

to be shown before execution, optionally allowing clients to warn users about unexpectedly expensive queries.

`MaximumBytesBilled` is useful as a hard safety limit, but it does not expose the estimated number of bytes to the JDBC client before execution.

The underlying BigQuery APIs already provide dry-run estimation, so this request is specifically about making that capability accessible through the JDBC driver.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。