build: support build without git (#3309)

* build: support build without git

Signed-off-by: tison <wander4096@gmail.com>

* chore

Signed-off-by: tison <wander4096@gmail.com>

* address comment

Signed-off-by: tison <wander4096@gmail.com>

* fix syntax

Signed-off-by: tison <wander4096@gmail.com>

---------

Signed-off-by: tison <wander4096@gmail.com>
This commit is contained in:
tison
2024-02-18 18:30:01 +08:00
committed by GitHub
parent b889d57b32
commit 4e04a4e48f
35 changed files with 154 additions and 116 deletions

View File

@@ -81,7 +81,7 @@ jobs:
# Shares across multiple jobs
shared-key: "check-toml"
- name: Install taplo
run: cargo +stable install taplo-cli --version ^0.8 --locked
run: cargo +stable install taplo-cli --version ^0.9 --locked
- name: Run taplo
run: taplo format --check

6
Cargo.lock generated
View File

@@ -1243,7 +1243,6 @@ dependencies = [
"arrow-schema",
"async-stream",
"async-trait",
"build-data",
"catalog",
"chrono",
"common-catalog",
@@ -1257,6 +1256,7 @@ dependencies = [
"common-telemetry",
"common-test-util",
"common-time",
"common-version",
"dashmap",
"datafusion",
"datatypes",
@@ -1782,7 +1782,6 @@ dependencies = [
"api",
"arc-swap",
"async-trait",
"build-data",
"chrono-tz 0.6.3",
"common-error",
"common-macro",
@@ -1790,6 +1789,7 @@ dependencies = [
"common-runtime",
"common-telemetry",
"common-time",
"common-version",
"datafusion",
"datatypes",
"libc",
@@ -8882,7 +8882,6 @@ dependencies = [
"axum-macros",
"axum-test-helper 0.3.0",
"base64 0.21.5",
"build-data",
"bytes",
"catalog",
"chrono",
@@ -8901,6 +8900,7 @@ dependencies = [
"common-telemetry",
"common-test-util",
"common-time",
"common-version",
"datafusion",
"datafusion-common",
"datafusion-expr",

View File

@@ -164,7 +164,6 @@ common-grpc-expr = { path = "src/common/grpc-expr" }
common-macro = { path = "src/common/macro" }
common-mem-prof = { path = "src/common/mem-prof" }
common-meta = { path = "src/common/meta" }
common-pprof = { path = "src/common/pprof" }
common-procedure = { path = "src/common/procedure" }
common-procedure-test = { path = "src/common/procedure-test" }
common-query = { path = "src/common/query" }

View File

@@ -10,11 +10,10 @@ testing = []
[dependencies]
api.workspace = true
arc-swap = "1.0"
arrow-schema.workspace = true
arrow.workspace = true
arrow-schema.workspace = true
async-stream.workspace = true
async-trait = "0.1"
build-data = "0.1"
common-catalog.workspace = true
common-error.workspace = true
common-grpc.workspace = true
@@ -25,6 +24,7 @@ common-recordbatch.workspace = true
common-runtime.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
common-version.workspace = true
dashmap.workspace = true
datafusion.workspace = true
datatypes.workspace = true

View File

@@ -21,8 +21,6 @@ use datatypes::vectors::{Int64Vector, StringVector};
use crate::information_schema::table_names::*;
const UNKNOWN: &str = "unknown";
/// Find the schema and columns by the table_name, only valid for memory tables.
/// Safety: the user MUST ensure the table schema exists, panic otherwise.
pub fn get_schema_columns(table_name: &str) -> (SchemaRef, Vec<VectorRef>) {
@@ -72,30 +70,27 @@ pub fn get_schema_columns(table_name: &str) -> (SchemaRef, Vec<VectorRef>) {
],
),
BUILD_INFO => (
string_columns(&[
"GIT_BRANCH",
"GIT_COMMIT",
"GIT_COMMIT_SHORT",
"GIT_DIRTY",
"PKG_VERSION",
]),
vec![
Arc::new(StringVector::from(vec![
build_data::get_git_branch().unwrap_or_else(|_| UNKNOWN.to_string())
])),
Arc::new(StringVector::from(vec![
build_data::get_git_commit().unwrap_or_else(|_| UNKNOWN.to_string())
])),
Arc::new(StringVector::from(vec![
build_data::get_git_commit_short().unwrap_or_else(|_| UNKNOWN.to_string())
])),
Arc::new(StringVector::from(vec![
build_data::get_git_dirty().map_or(UNKNOWN.to_string(), |v| v.to_string())
])),
Arc::new(StringVector::from(vec![option_env!("CARGO_PKG_VERSION")])),
],
),
BUILD_INFO => {
let build_info = common_version::build_info();
(
string_columns(&[
"GIT_BRANCH",
"GIT_COMMIT",
"GIT_COMMIT_SHORT",
"GIT_DIRTY",
"PKG_VERSION",
]),
vec![
Arc::new(StringVector::from(vec![build_info.branch.to_string()])),
Arc::new(StringVector::from(vec![build_info.commit.to_string()])),
Arc::new(StringVector::from(vec![build_info
.commit_short
.to_string()])),
Arc::new(StringVector::from(vec![build_info.dirty.to_string()])),
Arc::new(StringVector::from(vec![build_info.version.to_string()])),
],
)
}
CHARACTER_SETS => (
vec![

View File

@@ -36,8 +36,8 @@ prost.workspace = true
rand.workspace = true
session.workspace = true
snafu.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
tokio.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
tonic.workspace = true
[dev-dependencies]

View File

@@ -13,5 +13,5 @@
// limitations under the License.
fn main() {
common_version::setup_git_versions();
common_version::setup_build_info();
}

View File

@@ -5,8 +5,8 @@ edition.workspace = true
license.workspace = true
[dependencies]
arrow-schema.workspace = true
arrow.workspace = true
arrow-schema.workspace = true
async-compression = { version = "0.3", features = [
"bzip2",
"gzip",
@@ -34,8 +34,8 @@ regex = "1.7"
serde.workspace = true
snafu.workspace = true
strum.workspace = true
tokio-util.workspace = true
tokio.workspace = true
tokio-util.workspace = true
url = "2.3"
[dev-dependencies]

View File

@@ -8,7 +8,6 @@ license.workspace = true
api.workspace = true
arc-swap = "1.0"
async-trait.workspace = true
build-data = "0.1"
chrono-tz = "0.6"
common-error.workspace = true
common-macro.workspace = true
@@ -16,6 +15,7 @@ common-query.workspace = true
common-runtime.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
common-version.workspace = true
datafusion.workspace = true
datatypes.workspace = true
libc = "0.2"

View File

@@ -22,8 +22,6 @@ use datatypes::vectors::{StringVector, VectorRef};
use crate::function::{Function, FunctionContext};
const DEFAULT_VALUE: &str = "unknown";
/// Generates build information
#[derive(Clone, Debug, Default)]
pub struct BuildFunction;
@@ -52,15 +50,7 @@ impl Function for BuildFunction {
}
fn eval(&self, _func_ctx: FunctionContext, _columns: &[VectorRef]) -> Result<VectorRef> {
let build_info = format!(
"branch: {}\ncommit: {}\ncommit short: {}\ndirty: {}\nversion: {}",
build_data::get_git_branch().unwrap_or_else(|_| DEFAULT_VALUE.to_string()),
build_data::get_git_commit().unwrap_or_else(|_| DEFAULT_VALUE.to_string()),
build_data::get_git_commit_short().unwrap_or_else(|_| DEFAULT_VALUE.to_string()),
build_data::get_git_dirty().map_or(DEFAULT_VALUE.to_string(), |v| v.to_string()),
env!("CARGO_PKG_VERSION")
);
let build_info = common_version::build_info().to_string();
let v = Arc::new(StringVector::from(vec![build_info]));
Ok(v)
}
@@ -87,14 +77,7 @@ mod tests {
volatility: Volatility::Immutable
} if valid_types == vec![ConcreteDataType::string_datatype()]
));
let build_info = format!(
"branch: {}\ncommit: {}\ncommit short: {}\ndirty: {}\nversion: {}",
build_data::get_git_branch().unwrap_or_else(|_| DEFAULT_VALUE.to_string()),
build_data::get_git_commit().unwrap_or_else(|_| DEFAULT_VALUE.to_string()),
build_data::get_git_commit_short().unwrap_or_else(|_| DEFAULT_VALUE.to_string()),
build_data::get_git_dirty().map_or(DEFAULT_VALUE.to_string(), |v| v.to_string()),
env!("CARGO_PKG_VERSION")
);
let build_info = common_version::build_info().to_string();
let vector = build.eval(FunctionContext::default(), &[]).unwrap();
let expect: VectorRef = Arc::new(StringVector::from(vec![build_info]));
assert_eq!(expect, vector);

View File

@@ -13,5 +13,5 @@
// limitations under the License.
fn main() {
common_version::setup_git_versions();
common_version::setup_build_info();
}

View File

@@ -28,8 +28,8 @@ common-wal.workspace = true
datatypes.workspace = true
derive_builder.workspace = true
etcd-client.workspace = true
futures-util.workspace = true
futures.workspace = true
futures-util.workspace = true
hex = { version = "0.4" }
humantime-serde.workspace = true
lazy_static.workspace = true

View File

@@ -11,9 +11,9 @@ common-error.workspace = true
common-macro.workspace = true
common-recordbatch.workspace = true
common-time.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
serde.workspace = true
snafu.workspace = true

View File

@@ -9,8 +9,8 @@ arc-swap = "1.6"
common-base.workspace = true
common-error.workspace = true
common-macro.workspace = true
datafusion-common.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datatypes.workspace = true
futures.workspace = true
paste = "1.0"

View File

@@ -14,10 +14,10 @@ once_cell.workspace = true
paste.workspace = true
prometheus.workspace = true
snafu.workspace = true
tokio.workspace = true
tokio-metrics = "0.3"
tokio-metrics-collector = "0.2"
tokio-util.workspace = true
tokio.workspace = true
[dev-dependencies]
tokio-test = "0.4"

View File

@@ -13,10 +13,10 @@ common-catalog.workspace = true
common-error.workspace = true
common-macro.workspace = true
common-telemetry.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion-substrait.workspace = true
datafusion.workspace = true
datatypes.workspace = true
futures = "0.3"
promql.workspace = true

View File

@@ -6,8 +6,8 @@ license.workspace = true
[dependencies]
arrow.workspace = true
chrono-tz = "0.8"
chrono.workspace = true
chrono-tz = "0.8"
common-error.workspace = true
common-macro.workspace = true
once_cell.workspace = true

View File

@@ -12,24 +12,89 @@
// See the License for the specific language governing permissions and
// limitations under the License.
const DEFAULT_VALUE: &str = "unknown";
use std::borrow::Cow;
use std::fmt::Display;
use std::sync::OnceLock;
const UNKNOWN: &str = "unknown";
pub struct BuildInfo {
pub branch: Cow<'static, str>,
pub commit: Cow<'static, str>,
pub commit_short: Cow<'static, str>,
pub dirty: Cow<'static, str>,
pub timestamp: Cow<'static, str>,
/// Rustc Version
pub rustc: Cow<'static, str>,
/// GreptimeDB Version
pub version: Cow<'static, str>,
}
impl Display for BuildInfo {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
[
format!("branch: {}", self.branch),
format!("commit: {}", self.commit),
format!("commit_short: {}", self.commit_short),
format!("dirty: {}", self.dirty),
format!("version: {}", self.version),
]
.join("\n")
)
}
}
static BUILD: OnceLock<BuildInfo> = OnceLock::new();
pub fn build_info() -> &'static BuildInfo {
BUILD.get_or_init(|| {
let branch = build_data::get_git_branch()
.map(Cow::Owned)
.unwrap_or(Cow::Borrowed(UNKNOWN));
let commit = build_data::get_git_commit()
.map(Cow::Owned)
.unwrap_or(Cow::Borrowed(UNKNOWN));
let commit_short = build_data::get_git_commit_short()
.map(Cow::Owned)
.unwrap_or(Cow::Borrowed(UNKNOWN));
let dirty = build_data::get_git_dirty()
.map(|b| Cow::Owned(b.to_string()))
.unwrap_or(Cow::Borrowed(UNKNOWN));
let timestamp = build_data::get_source_time()
.map(|ts| Cow::Owned(build_data::format_timestamp(ts)))
.unwrap_or(Cow::Borrowed(UNKNOWN));
let rustc = build_data::get_rustc_version()
.map(Cow::Owned)
.unwrap_or(Cow::Borrowed(UNKNOWN));
let version = Cow::Borrowed(env!("CARGO_PKG_VERSION"));
BuildInfo {
branch,
commit,
commit_short,
dirty,
timestamp,
rustc,
version,
}
})
}
#[allow(clippy::print_stdout)]
pub fn setup_git_versions() {
println!(
"cargo:rustc-env=GIT_COMMIT={}",
build_data::get_git_commit().unwrap_or_else(|_| DEFAULT_VALUE.to_string())
);
pub fn setup_build_info() {
let build_info = build_info();
println!("cargo:rustc-env=GIT_COMMIT={}", build_info.commit);
println!(
"cargo:rustc-env=GIT_COMMIT_SHORT={}",
build_data::get_git_commit_short().unwrap_or_else(|_| DEFAULT_VALUE.to_string())
);
println!(
"cargo:rustc-env=GIT_BRANCH={}",
build_data::get_git_branch().unwrap_or_else(|_| DEFAULT_VALUE.to_string())
);
println!(
"cargo:rustc-env=GIT_DIRTY={}",
build_data::get_git_dirty().map_or(DEFAULT_VALUE.to_string(), |v| v.to_string())
build_info.commit_short
);
println!("cargo:rustc-env=GIT_BRANCH={}", build_info.branch);
println!("cargo:rustc-env=GIT_DIRTY={}", build_info.dirty);
println!("cargo:rustc-env=GIT_DIRTY={}", build_info.dirty);
println!("cargo:rustc-env=RUSTC_VERSION={}", build_info.rustc);
println!("cargo:rustc-env=SOURCE_TIMESTAMP={}", build_info.timestamp);
}

View File

@@ -23,8 +23,8 @@ common-datasource.workspace = true
common-error.workspace = true
common-function.workspace = true
common-greptimedb-telemetry.workspace = true
common-grpc-expr.workspace = true
common-grpc.workspace = true
common-grpc-expr.workspace = true
common-macro.workspace = true
common-meta.workspace = true
common-procedure.workspace = true
@@ -35,9 +35,9 @@ common-telemetry.workspace = true
common-time.workspace = true
common-wal.workspace = true
dashmap.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
file-engine.workspace = true
futures = "0.3"
@@ -65,8 +65,8 @@ sql.workspace = true
store-api.workspace = true
substrait.workspace = true
table.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
tokio.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
toml.workspace = true
tonic.workspace = true
tower = { version = "0.4", features = ["full"] }

View File

@@ -9,9 +9,9 @@ default = []
test = []
[dependencies]
arrow.workspace = true
arrow-array.workspace = true
arrow-schema.workspace = true
arrow.workspace = true
common-base.workspace = true
common-decimal.workspace = true
common-error.workspace = true

View File

@@ -26,8 +26,8 @@ common-config.workspace = true
common-datasource.workspace = true
common-error.workspace = true
common-function.workspace = true
common-grpc-expr.workspace = true
common-grpc.workspace = true
common-grpc-expr.workspace = true
common-macro.workspace = true
common-meta.workspace = true
common-procedure.workspace = true
@@ -36,9 +36,9 @@ common-recordbatch.workspace = true
common-runtime.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datanode.workspace = true
datatypes.workspace = true
file-engine.workspace = true

View File

@@ -19,12 +19,12 @@ greptime-proto.workspace = true
mockall.workspace = true
pin-project.workspace = true
prost.workspace = true
regex-automata.workspace = true
regex.workspace = true
regex-automata.workspace = true
snafu.workspace = true
[dev-dependencies]
rand.workspace = true
tempfile.workspace = true
tokio-util.workspace = true
tokio.workspace = true
tokio-util.workspace = true

View File

@@ -25,8 +25,8 @@ common-telemetry.workspace = true
common-time.workspace = true
common-wal.workspace = true
dashmap.workspace = true
futures-util.workspace = true
futures.workspace = true
futures-util.workspace = true
protobuf = { version = "2", features = ["bytes"] }
raft-engine.workspace = true
rskafka.workspace = true
@@ -34,8 +34,8 @@ serde.workspace = true
serde_json.workspace = true
snafu.workspace = true
store-api.workspace = true
tokio-util.workspace = true
tokio.workspace = true
tokio-util.workspace = true
[dev-dependencies]
common-meta = { workspace = true, features = ["testing"] }

View File

@@ -20,8 +20,8 @@ serde.workspace = true
serde_json.workspace = true
snafu.workspace = true
table.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
tokio.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
tonic.workspace = true
[dev-dependencies]

View File

@@ -18,8 +18,8 @@ common-base.workspace = true
common-catalog.workspace = true
common-error.workspace = true
common-greptimedb-telemetry.workspace = true
common-grpc-expr.workspace = true
common-grpc.workspace = true
common-grpc-expr.workspace = true
common-macro.workspace = true
common-meta.workspace = true
common-procedure.workspace = true
@@ -51,8 +51,8 @@ snafu.workspace = true
store-api.workspace = true
strum.workspace = true
table.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
tokio.workspace = true
tokio-stream = { workspace = true, features = ["net"] }
toml.workspace = true
tonic.workspace = true
tower = "0.4"

View File

@@ -34,9 +34,9 @@ common-test-util = { workspace = true, optional = true }
common-time.workspace = true
common-wal.workspace = true
dashmap.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
futures.workspace = true
humantime-serde.workspace = true
@@ -62,9 +62,9 @@ snafu.workspace = true
store-api.workspace = true
strum.workspace = true
table.workspace = true
tokio.workspace = true
tokio-stream.workspace = true
tokio-util.workspace = true
tokio.workspace = true
uuid.workspace = true
[dev-dependencies]

View File

@@ -27,9 +27,9 @@ common-recordbatch.workspace = true
common-runtime.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
file-engine.workspace = true
futures = "0.3"

View File

@@ -13,9 +13,9 @@ common-macro.workspace = true
common-meta.workspace = true
common-query.workspace = true
common-telemetry.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
lazy_static.workspace = true
meta-client.workspace = true

View File

@@ -17,5 +17,5 @@ serde_json.workspace = true
snafu.workspace = true
[dev-dependencies]
tokio-util.workspace = true
tokio.workspace = true
tokio-util.workspace = true

View File

@@ -8,8 +8,8 @@ license.workspace = true
ahash.workspace = true
api.workspace = true
arc-swap = "1.0"
arrow-schema.workspace = true
arrow.workspace = true
arrow-schema.workspace = true
async-recursion = "1.0"
async-stream.workspace = true
async-trait = "0.1"
@@ -27,12 +27,12 @@ common-query.workspace = true
common-recordbatch.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion-optimizer.workspace = true
datafusion-physical-expr.workspace = true
datafusion-sql.workspace = true
datafusion.workspace = true
datatypes.workspace = true
futures = "0.3"
futures-util.workspace = true
@@ -45,8 +45,8 @@ object-store.workspace = true
once_cell.workspace = true
partition.workspace = true
prometheus.workspace = true
promql-parser = "0.1.1"
promql.workspace = true
promql-parser = "0.1.1"
regex.workspace = true
serde.workspace = true
serde_json.workspace = true

View File

@@ -45,8 +45,8 @@ datafusion-common = { workspace = true, optional = true }
datafusion-expr = { workspace = true, optional = true }
datafusion-physical-expr = { workspace = true, optional = true }
datatypes.workspace = true
futures-util.workspace = true
futures.workspace = true
futures-util.workspace = true
lazy_static.workspace = true
once_cell.workspace = true
paste = { workspace = true, optional = true }

View File

@@ -13,14 +13,14 @@ testing = []
[dependencies]
aide = { version = "0.9", features = ["axum"] }
api.workspace = true
arrow.workspace = true
arrow-flight.workspace = true
arrow-ipc.workspace = true
arrow-schema.workspace = true
arrow.workspace = true
async-trait = "0.1"
auth.workspace = true
axum-macros = "0.3.8"
axum.workspace = true
axum-macros = "0.3.8"
base64.workspace = true
bytes.workspace = true
catalog.workspace = true
@@ -28,8 +28,8 @@ chrono.workspace = true
common-base.workspace = true
common-catalog.workspace = true
common-error.workspace = true
common-grpc-expr.workspace = true
common-grpc.workspace = true
common-grpc-expr.workspace = true
common-macro.workspace = true
common-mem-prof = { workspace = true, optional = true }
common-meta.workspace = true
@@ -38,9 +38,9 @@ common-recordbatch.workspace = true
common-runtime.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
derive_builder.workspace = true
digest = "0.10"
@@ -91,11 +91,11 @@ snap = "1"
sql.workspace = true
strum.workspace = true
table.workspace = true
tokio.workspace = true
tokio-rustls = "0.25"
tokio-stream = { workspace = true, features = ["net"] }
tokio.workspace = true
tonic-reflection = "0.10"
tonic.workspace = true
tonic-reflection = "0.10"
tower = { version = "0.4", features = ["full"] }
tower-http = { version = "0.3", features = ["full"] }
urlencoding = "2.1"
@@ -123,4 +123,4 @@ tokio-postgres-rustls = "0.11"
tokio-test = "0.4"
[build-dependencies]
build-data = "0.1.4"
common-version.workspace = true

View File

@@ -13,11 +13,7 @@
// limitations under the License.
fn main() {
build_data::set_RUSTC_VERSION();
build_data::set_GIT_BRANCH();
build_data::set_GIT_COMMIT();
build_data::set_SOURCE_TIMESTAMP();
common_version::setup_build_info();
#[cfg(feature = "dashboard")]
fetch_dashboard_assets();
}

View File

@@ -21,10 +21,10 @@ common-query.workspace = true
common-recordbatch.workspace = true
common-telemetry.workspace = true
common-time.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-expr.workspace = true
datafusion-physical-expr.workspace = true
datafusion.workspace = true
datatypes.workspace = true
derive_builder.workspace = true
futures.workspace = true

View File

@@ -12,8 +12,8 @@ api.workspace = true
arrow-flight.workspace = true
async-trait = "0.1"
auth.workspace = true
axum-test-helper = { git = "https://github.com/sunng87/axum-test-helper.git", branch = "patch-1" }
axum.workspace = true
axum-test-helper = { git = "https://github.com/sunng87/axum-test-helper.git", branch = "patch-1" }
catalog.workspace = true
chrono.workspace = true
client = { workspace = true, features = ["testing"] }
@@ -71,8 +71,8 @@ tower = "0.4"
uuid.workspace = true
[dev-dependencies]
datafusion-expr.workspace = true
datafusion.workspace = true
datafusion-expr.workspace = true
itertools.workspace = true
opentelemetry-proto.workspace = true
partition.workspace = true