Skip to content

Commit 7065378

Browse files
authored
chore: make databend_common_expression compilation cacheable (#17806)
expression
1 parent 1b4d54e commit 7065378

File tree

8 files changed

+31
-10
lines changed

8 files changed

+31
-10
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/common/version/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
//! The compilation artefact of this crate cannot be cached, so to avoid long ci compilation times,
16+
//! you should avoid introducing this crate in the underlying crate.
17+
1518
use std::sync::LazyLock;
1619

1720
use semver::Version;
@@ -52,6 +55,9 @@ pub static DATABEND_SEMVER: LazyLock<Version> = LazyLock::new(|| {
5255
Version::parse(semver).unwrap_or_else(|e| panic!("Invalid semver: {:?}: {}", semver, e))
5356
});
5457

58+
pub static UDF_CLIENT_USER_AGENT: LazyLock<String> =
59+
LazyLock::new(|| format!("databend-query/{}", *DATABEND_SEMVER));
60+
5561
pub static DATABEND_COMMIT_VERSION: LazyLock<String> = LazyLock::new(|| {
5662
let semver = DATABEND_GIT_SEMVER;
5763
let git_sha = VERGEN_GIT_SHA;

src/query/expression/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ databend-common-exception = { workspace = true }
2828
databend-common-grpc = { workspace = true }
2929
databend-common-hashtable = { workspace = true }
3030
databend-common-io = { workspace = true }
31-
databend-common-version = { workspace = true }
3231
educe = { workspace = true }
3332
either = { workspace = true }
3433
enum-as-inner = { workspace = true }

src/query/expression/src/utils/udf_client.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ use databend_common_base::headers::HEADER_TENANT;
2929
use databend_common_exception::ErrorCode;
3030
use databend_common_exception::Result;
3131
use databend_common_grpc::DNSService;
32-
use databend_common_version::DATABEND_SEMVER;
3332
use futures::stream;
3433
use futures::StreamExt;
3534
use futures::TryStreamExt;
@@ -65,13 +64,14 @@ impl UDFFlightClient {
6564
addr: &str,
6665
conn_timeout: u64,
6766
request_timeout: u64,
67+
user_agent: &str,
6868
) -> Result<Arc<Endpoint>> {
6969
let tls_config = ClientTlsConfig::new().with_native_roots();
7070
let endpoint = Endpoint::from_shared(addr.to_string())
7171
.map_err(|err| {
7272
ErrorCode::UDFServerConnectError(format!("Invalid UDF Server address: {err}"))
7373
})?
74-
.user_agent(format!("databend-query/{}", *DATABEND_SEMVER))
74+
.user_agent(user_agent)
7575
.map_err(|err| {
7676
ErrorCode::UDFServerConnectError(format!("Invalid UDF Client User Agent: {err}"))
7777
})?

src/query/service/src/pipelines/processors/transforms/transform_udf_server.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ use databend_common_metrics::external_server::record_running_requests_external_f
4141
use databend_common_metrics::external_server::record_running_requests_external_start;
4242
use databend_common_pipeline_transforms::processors::AsyncTransform;
4343
use databend_common_sql::executor::physical_plans::UdfFunctionDesc;
44+
use databend_common_version::UDF_CLIENT_USER_AGENT;
4445
use tokio::sync::Semaphore;
4546
use tonic::transport::Endpoint;
4647

@@ -81,8 +82,12 @@ impl TransformUdfServer {
8182
if endpoints.contains_key(server_addr) {
8283
continue;
8384
}
84-
let endpoint =
85-
UDFFlightClient::build_endpoint(server_addr, connect_timeout, request_timeout)?;
85+
let endpoint = UDFFlightClient::build_endpoint(
86+
server_addr,
87+
connect_timeout,
88+
request_timeout,
89+
UDF_CLIENT_USER_AGENT.as_str(),
90+
)?;
8691
endpoints.insert(server_addr.clone(), endpoint);
8792
}
8893
Ok(endpoints)

src/query/service/src/table_functions/others/udf.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ use databend_common_meta_app::schema::TableMeta;
5252
use databend_common_pipeline_core::Pipeline;
5353
use databend_common_pipeline_sources::OneBlockSource;
5454
use databend_common_storages_factory::Table;
55+
use databend_common_version::UDF_CLIENT_USER_AGENT;
5556
use url::Url;
5657

5758
pub struct UdfEchoTable {
@@ -142,8 +143,12 @@ impl Table for UdfEchoTable {
142143
let connect_timeout = settings.get_external_server_connect_timeout_secs()?;
143144
let request_timeout = settings.get_external_server_request_timeout_secs()?;
144145

145-
let endpoint =
146-
UDFFlightClient::build_endpoint(&self.address, connect_timeout, request_timeout)?;
146+
let endpoint = UDFFlightClient::build_endpoint(
147+
&self.address,
148+
connect_timeout,
149+
request_timeout,
150+
UDF_CLIENT_USER_AGENT.as_str(),
151+
)?;
147152
let mut client = UDFFlightClient::connect(endpoint, connect_timeout, 65536)
148153
.await?
149154
.with_tenant(ctx.get_tenant().tenant_name())?

src/query/sql/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ databend-common-storage = { workspace = true }
3030
databend-common-storages-result-cache = { workspace = true }
3131
databend-common-storages-view = { workspace = true }
3232
databend-common-users = { workspace = true }
33+
databend-common-version = { workspace = true }
3334
databend-enterprise-data-mask-feature = { workspace = true }
3435
databend-storages-common-cache = { workspace = true }
3536
databend-storages-common-io = { workspace = true }

src/query/sql/src/planner/binder/udf.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use databend_common_meta_app::principal::UDFDefinition as PlanUDFDefinition;
3232
use databend_common_meta_app::principal::UDFScript;
3333
use databend_common_meta_app::principal::UDFServer;
3434
use databend_common_meta_app::principal::UserDefinedFunction;
35+
use databend_common_version::UDF_CLIENT_USER_AGENT;
3536

3637
use crate::normalize_identifier;
3738
use crate::optimizer::ir::SExpr;
@@ -105,8 +106,12 @@ impl Binder {
105106
.get_settings()
106107
.get_external_server_request_batch_rows()? as usize;
107108

108-
let endpoint =
109-
UDFFlightClient::build_endpoint(address, connect_timeout, request_timeout)?;
109+
let endpoint = UDFFlightClient::build_endpoint(
110+
address,
111+
connect_timeout,
112+
request_timeout,
113+
UDF_CLIENT_USER_AGENT.as_str(),
114+
)?;
110115

111116
let mut client = UDFFlightClient::connect(endpoint, connect_timeout, batch_rows)
112117
.await?

0 commit comments

Comments
 (0)