Skip to content

Commit 726d79b

Browse files
authored
fix: Handle 'date' time unit in timeOffset function properly (#17)
1 parent 965e9eb commit 726d79b

File tree

12 files changed

+68
-27
lines changed

12 files changed

+68
-27
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vegafusion-common/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vegafusion-common"
3-
version = "2.0.7"
3+
version = "2.0.8"
44
edition = "2021"
55
description = "Common components required by multiple VegaFusion crates"
66
license = "BSD-3-Clause"

vegafusion-core/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "vegafusion-core"
33
license = "BSD-3-Clause"
44
edition = "2021"
5-
version = "2.0.7"
5+
version = "2.0.8"
66
description = "Core components required by multiple VegaFusion crates, with WASM compatibility"
77

88
[features]
@@ -48,7 +48,7 @@ workspace = true
4848
[dependencies.vegafusion-common]
4949
path = "../vegafusion-common"
5050
features = ["json", "sqlparser"]
51-
version = "2.0.7"
51+
version = "2.0.8"
5252

5353
[dependencies.datafusion-common]
5454
workspace = true

vegafusion-python/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "vegafusion"
33
license = "BSD-3-Clause"
44
edition = "2021"
5-
version = "2.0.7"
5+
version = "2.0.8"
66
description = "VegaFusion Python interface"
77

88
[lib]
@@ -52,16 +52,16 @@ workspace = true
5252
[dependencies.vegafusion-common]
5353
path = "../vegafusion-common"
5454
features = ["pyo3", "base64"]
55-
version = "2.0.7"
55+
version = "2.0.8"
5656

5757
[dependencies.vegafusion-core]
5858
path = "../vegafusion-core"
5959
features = ["py", "tonic_support"]
60-
version = "2.0.7"
60+
version = "2.0.8"
6161

6262
[dependencies.vegafusion-runtime]
6363
path = "../vegafusion-runtime"
64-
version = "2.0.7"
64+
version = "2.0.8"
6565

6666
[dependencies.datafusion]
6767
workspace = true

vegafusion-python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "deepnote_vegafusion"
3-
version = "2.0.7"
3+
version = "2.0.8"
44
description = "Core tools for using VegaFusion from Python"
55
readme = "README.md"
66
requires-python = ">=3.9"

vegafusion-runtime/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ harness = false
66
name = "vegafusion-runtime"
77
license = "BSD-3-Clause"
88
edition = "2021"
9-
version = "2.0.7"
9+
version = "2.0.8"
1010
description = "VegaFusion Runtime"
1111

1212
[features]
@@ -115,12 +115,12 @@ workspace = true
115115
[dependencies.vegafusion-common]
116116
path = "../vegafusion-common"
117117
features = ["json", "sqlparser", "prettyprint", "object_store", "url"]
118-
version = "2.0.7"
118+
version = "2.0.8"
119119

120120
[dependencies.vegafusion-core]
121121
path = "../vegafusion-core"
122122
features = ["sqlparser"]
123-
version = "2.0.7"
123+
version = "2.0.8"
124124

125125
[dependencies.serde]
126126
workspace = true

vegafusion-runtime/src/expression/compiler/builtin_functions/date_time/time_offset.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ pub fn time_offset_fn(
9090
let interval = match unit.to_lowercase().as_str() {
9191
unit @ ("year" | "month") => interval_year_month_lit(&format!("{step} {unit}")),
9292
"quarter" => interval_year_month_lit(&format!("{} month", step * 3)),
93+
"date" => interval_datetime_lit(&format!("{step} day")),
9394
unit => interval_datetime_lit(&format!("{step} {unit}")),
9495
};
9596

vegafusion-runtime/tests/test_transform_formula.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use datafusion_common::ScalarValue;
77
use serde_json::json;
88
use util::check::check_transform_evaluation;
99
use util::datasets::vega_json_dataset;
10+
use vegafusion_common::data::table::VegaFusionTable;
1011
use vegafusion_core::spec::transform::formula::FormulaTransformSpec;
1112
use vegafusion_core::spec::transform::TransformSpec;
1213
use vegafusion_runtime::expression::compiler::config::CompilationConfig;
@@ -287,3 +288,42 @@ fn test_formula_span() {
287288
&eq_config,
288289
);
289290
}
291+
292+
#[test]
293+
fn test_formula_time_offset_date() {
294+
let dataset = VegaFusionTable::from_json(&json!([
295+
{"date": "2023-01-15"},
296+
{"date": "2023-06-20"},
297+
{"date": "2023-12-31"},
298+
]))
299+
.unwrap();
300+
301+
let transform_specs: Vec<TransformSpec> = serde_json::from_value(json!([
302+
{
303+
"type": "formula",
304+
"expr": "toDate(datum['date'])",
305+
"as": "timestamp"
306+
},
307+
{
308+
"type": "formula",
309+
"expr": "timeOffset('date', datum['timestamp'], -1)",
310+
"as": "prev_day"
311+
},
312+
{
313+
"type": "formula",
314+
"expr": "timeOffset('date', datum['timestamp'], 1)",
315+
"as": "next_day"
316+
},
317+
]))
318+
.unwrap();
319+
320+
let comp_config = Default::default();
321+
let eq_config = Default::default();
322+
323+
check_transform_evaluation(
324+
&dataset,
325+
transform_specs.as_slice(),
326+
&comp_config,
327+
&eq_config,
328+
);
329+
}

vegafusion-server/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ path = "src/main.rs"
55
[package]
66
name = "vegafusion-server"
77
license = "BSD-3-Clause"
8-
version = "2.0.7"
8+
version = "2.0.8"
99
edition = "2021"
1010
description = "VegaFusion Server"
1111
repository = "https://github.com/vega/vegafusion"
@@ -34,16 +34,16 @@ workspace = true
3434

3535
[dependencies.vegafusion-common]
3636
path = "../vegafusion-common"
37-
version = "2.0.7"
37+
version = "2.0.8"
3838

3939
[dependencies.vegafusion-core]
4040
path = "../vegafusion-core"
4141
features = ["tonic_support"]
42-
version = "2.0.7"
42+
version = "2.0.8"
4343

4444
[dependencies.vegafusion-runtime]
4545
path = "../vegafusion-runtime"
46-
version = "2.0.7"
46+
version = "2.0.8"
4747

4848
[dependencies.tokio]
4949
workspace = true

vegafusion-wasm/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "vegafusion-wasm"
33
license = "BSD-3-Clause"
4-
version = "2.0.7"
4+
version = "2.0.8"
55
edition = "2021"
66
description = "VegaFusion WASM package for embedding Vega charts in the browser with a connection to a VegaFusion Runtime"
77

@@ -41,15 +41,15 @@ workspace = true
4141
[dependencies.vegafusion-common]
4242
path = "../vegafusion-common"
4343
features = ["json"]
44-
version = "2.0.7"
44+
version = "2.0.8"
4545

4646
[dependencies.vegafusion-core]
4747
path = "../vegafusion-core"
48-
version = "2.0.7"
48+
version = "2.0.8"
4949

5050
[dependencies.vegafusion-runtime]
5151
path = "../vegafusion-runtime"
52-
version = "2.0.7"
52+
version = "2.0.8"
5353
default-features = false
5454
features = ["http-wasm"]
5555

0 commit comments

Comments
 (0)