Skip to content

Commit b708912

Browse files
committed
Remove cell deltas from public API
1 parent ee5ecb1 commit b708912

File tree

11 files changed

+80
-260
lines changed

11 files changed

+80
-260
lines changed

cpp/perspective/src/cpp/context_zero.cpp

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -407,11 +407,6 @@ t_ctx0::notify(const t_data_table& flattened, const t_data_table& delta,
407407
}
408408
psp_log_time(repr() + " notify.has_filter_path.updated_traversal");
409409

410-
// calculate cell deltas if enabled
411-
if (get_deltas_enabled()) {
412-
calc_step_delta(flattened, prev, curr, transitions);
413-
}
414-
415410
m_has_delta = m_deltas->size() > 0 || m_delta_pkeys.size() > 0 || delete_encountered;
416411

417412
psp_log_time(repr() + " notify.has_filter_path.exit");
@@ -447,10 +442,7 @@ t_ctx0::notify(const t_data_table& flattened, const t_data_table& delta,
447442

448443
psp_log_time(repr() + " notify.no_filter_path.updated_traversal");
449444

450-
// calculate cell deltas if enabled
451-
if (get_deltas_enabled()) {
452-
calc_step_delta(flattened, prev, curr, transitions);
453-
}
445+
454446
m_has_delta = m_deltas->size() > 0 || m_delta_pkeys.size() > 0 || delete_encountered;
455447

456448
psp_log_time(repr() + " notify.no_filter_path.exit");
@@ -489,12 +481,6 @@ t_ctx0::notify(const t_data_table& flattened) {
489481
add_delta_pkey(pkey);
490482
}
491483

492-
// Calculate the step delta, if enabled in the context through an on_update
493-
// callback with the "cell" or "row" mode set.
494-
if (get_deltas_enabled()) {
495-
calc_step_delta(flattened);
496-
}
497-
498484
return;
499485
}
500486

@@ -513,12 +499,6 @@ t_ctx0::notify(const t_data_table& flattened) {
513499
// Add primary key to track row delta
514500
add_delta_pkey(pkey);
515501
}
516-
517-
// Calculate the step delta, if enabled in the context through an on_update
518-
// callback with the "cell" or "row" mode set.
519-
if (get_deltas_enabled()) {
520-
calc_step_delta(flattened);
521-
}
522502
}
523503

524504
void

cpp/perspective/src/cpp/gnode_state.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,21 @@ t_gstate::read_column(const std::string& colname, const std::vector<t_tscalar>&
415415
std::swap(rval, out_data);
416416
}
417417

418+
void
419+
t_gstate::read_column(const std::string& colname, std::vector<t_tscalar>& out_data) const {
420+
std::shared_ptr<const t_column> col = m_table->get_const_column(colname);
421+
const t_column* col_ = col.get();
422+
t_uindex col_size = col_->size();
423+
std::vector<t_tscalar> rval(col_size);
424+
425+
for (t_index idx = 0; idx < col_size; ++idx) {
426+
rval[idx].set(col_->get_scalar(idx));
427+
}
428+
429+
std::swap(rval, out_data);
430+
}
431+
432+
418433
t_tscalar
419434
t_gstate::get(t_tscalar pkey, const std::string& colname) const {
420435
t_mapping::const_iterator iter = m_mapping.find(pkey);

cpp/perspective/src/include/perspective/base.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
#pragma once
1111

1212
#ifdef WIN32
13+
#ifndef NOMINMAX
14+
#define NOMINMAX
15+
#endif
1316
#include <windows.h>
1417
#endif // WIN32
1518

cpp/perspective/src/include/perspective/first.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@
2020

2121
#pragma once
2222

23+
#ifdef WIN32
24+
#ifndef NOMINMAX
25+
#define NOMINMAX
26+
#endif // ifndex nominmax
27+
#endif // win32
28+
2329
#ifdef PSP_VERIFY
2430
#define PSP_STORAGE_VERIFY
2531
#define PSP_COLUMN_VERIFY

cpp/perspective/src/include/perspective/gnode_state.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,14 @@ class PERSPECTIVE_EXPORT t_gstate {
109109
void read_column(const std::string& colname, const std::vector<t_tscalar>& pkeys,
110110
std::vector<double>& out_data, bool include_nones) const;
111111

112+
/**
113+
* @brief Read the entirety of a column into `out_data`.
114+
*
115+
* @param colname
116+
* @param out_data
117+
*/
118+
void read_column(const std::string& colname, std::vector<t_tscalar>& out_data) const;
119+
112120
/**
113121
* @brief Apply the lambda `fn` to each primary-keyed value in the column,
114122
* stopping when the lambda returns `true`.

packages/perspective-bench/bench/perspective.benchmark.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -219,19 +219,6 @@ describe("Deltas", async () => {
219219
});
220220

221221
describe("mixed", async () => {
222-
describe("ctx0", async () => {
223-
table = worker.table(data.arrow.slice());
224-
view = table.view();
225-
view.on_update(() => {}, {mode: "cell"});
226-
const test_data = await static_view.to_arrow({end_row: 500});
227-
benchmark("cell delta", async () => {
228-
for (let i = 0; i < 3; i++) {
229-
table.update(test_data.slice());
230-
await table.size();
231-
}
232-
});
233-
});
234-
235222
describe("ctx0", async () => {
236223
table = worker.table(data.arrow.slice());
237224
view = table.view();

packages/perspective/src/js/perspective.js

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -807,18 +807,16 @@ export default function(Module) {
807807
* update was triggered on, and `delta`, whose value is dependent on the
808808
* `mode` parameter:
809809
* - "none" (default): `delta` is `undefined`.
810-
* - "cell": `delta` is the new data for each updated cell, serialized
811-
* to JSON format.
812810
* - "row": `delta` is an Arrow of the updated rows.
813811
*/
814812
view.prototype.on_update = function(callback, {mode = "none"} = {}) {
815813
_call_process(this.table.get_id());
816814

817-
if (["none", "cell", "row"].indexOf(mode) === -1) {
818-
throw new Error(`Invalid update mode "${mode}" - valid modes are "none", "cell" and "row".`);
815+
if (["none", "row"].indexOf(mode) === -1) {
816+
throw new Error(`Invalid update mode "${mode}" - valid modes are "none" and "row".`);
819817
}
820818

821-
if (mode === "cell" || mode === "row") {
819+
if (mode === "row") {
822820
// Enable deltas only if needed by callback
823821
if (!this._View._get_deltas_enabled()) {
824822
this._View._set_deltas_enabled(true);
@@ -838,25 +836,11 @@ export default function(Module) {
838836

839837
let updated = {port_id};
840838

841-
switch (mode) {
842-
case "cell":
843-
{
844-
if (cache[port_id]["step_delta"] === undefined) {
845-
cache[port_id]["step_delta"] = await this._get_step_delta();
846-
}
847-
updated.delta = cache[port_id]["step_delta"];
848-
}
849-
break;
850-
case "row":
851-
{
852-
if (cache[port_id]["row_delta"] === undefined) {
853-
cache[port_id]["row_delta"] = await this._get_row_delta();
854-
}
855-
updated.delta = cache[port_id]["row_delta"];
856-
}
857-
break;
858-
default:
859-
break;
839+
if (mode === "row") {
840+
if (cache[port_id]["row_delta"] === undefined) {
841+
cache[port_id]["row_delta"] = await this._get_row_delta();
842+
}
843+
updated.delta = cache[port_id]["row_delta"];
860844
}
861845

862846
// Call the callback with the updated object containing

packages/perspective/test/js/computed/deltas.js

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -92,44 +92,6 @@ module.exports = perspective => {
9292
});
9393
});
9494

95-
it("Returns partially updated step delta for normal and computed columns", async function(done) {
96-
let table = perspective.table(
97-
[
98-
{x: 1, y: "a", z: true},
99-
{x: 2, y: "b", z: false},
100-
{x: 3, y: "c", z: true},
101-
{x: 4, y: "d", z: false}
102-
],
103-
{index: "x"}
104-
);
105-
let view = table.view({
106-
computed_columns: [
107-
{
108-
column: "upper",
109-
computed_function_name: "Uppercase",
110-
inputs: ["y"]
111-
}
112-
]
113-
});
114-
view.on_update(
115-
function(updated) {
116-
expect(updated.delta).toEqual([
117-
{x: 1, y: "string1", z: false, upper: "STRING1"},
118-
{x: 2, y: "string2", z: true, upper: "STRING2"}
119-
]);
120-
view.delete();
121-
table.delete();
122-
done();
123-
},
124-
{mode: "cell"}
125-
);
126-
127-
table.update([
128-
{x: 1, y: "string1", z: false},
129-
{x: 2, y: "string2", z: true}
130-
]);
131-
});
132-
13395
it("Returns partially updated rows for normal and computed columns", async function(done) {
13496
const table = perspective.table(
13597
{

packages/perspective/test/js/delta.js

Lines changed: 0 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -41,137 +41,6 @@ async function match_delta(perspective, delta, expected) {
4141
}
4242

4343
module.exports = perspective => {
44-
describe("Step delta", function() {
45-
it("Should calculate step delta for 0-sided contexts", async function(done) {
46-
let table = perspective.table(data, {index: "x"});
47-
let view = table.view();
48-
view.on_update(
49-
function(updated) {
50-
expect(updated.delta).toEqual([
51-
{x: 1, y: "string1", z: true},
52-
{x: 2, y: "string2", z: false}
53-
]);
54-
view.delete();
55-
table.delete();
56-
done();
57-
},
58-
{mode: "cell"}
59-
);
60-
table.update(partial_change_y);
61-
});
62-
63-
it("Should calculate step delta for 0-sided contexts from schema", async function(done) {
64-
let table = perspective.table(
65-
{
66-
x: "integer",
67-
y: "string",
68-
z: "boolean"
69-
},
70-
{index: "x"}
71-
);
72-
let view = table.view();
73-
view.on_update(
74-
function(updated) {
75-
expect(updated.delta).toEqual(data);
76-
view.delete();
77-
table.delete();
78-
done();
79-
},
80-
{mode: "cell"}
81-
);
82-
table.update(data);
83-
});
84-
85-
it("Should calculate step delta for added rows in 0-sided contexts from schema", async function(done) {
86-
let table = perspective.table({
87-
x: "integer",
88-
y: "string",
89-
z: "boolean"
90-
});
91-
let view = table.view();
92-
view.on_update(
93-
function(updated) {
94-
expect(updated.delta).toEqual(data);
95-
view.delete();
96-
table.delete();
97-
done();
98-
},
99-
{mode: "cell"}
100-
);
101-
table.update(data);
102-
});
103-
104-
it("Should calculate step delta for added rows in 0-sided filtered contexts from schema", async function(done) {
105-
let table = perspective.table({
106-
x: "integer",
107-
y: "string",
108-
z: "boolean"
109-
});
110-
let view = table.view({
111-
filter: [["x", ">", 3]]
112-
});
113-
view.on_update(
114-
function(updated) {
115-
expect(updated.delta).toEqual([
116-
{
117-
x: 4,
118-
y: "d",
119-
z: false
120-
}
121-
]);
122-
view.delete();
123-
table.delete();
124-
done();
125-
},
126-
{mode: "cell"}
127-
);
128-
table.update(data);
129-
});
130-
131-
it("Should calculate step delta for added rows with partial nones in 0-sided contexts from schema", async function(done) {
132-
let table = perspective.table({
133-
x: "integer",
134-
y: "string",
135-
z: "boolean"
136-
});
137-
let view = table.view();
138-
view.on_update(
139-
function(updated) {
140-
expect(updated.delta).toEqual([
141-
{x: 1, y: "a", z: true},
142-
{x: 2, y: "b", z: null}
143-
]);
144-
view.delete();
145-
table.delete();
146-
done();
147-
},
148-
{mode: "cell"}
149-
);
150-
table.update([
151-
{x: 1, y: "a", z: true},
152-
{x: 2, y: "b"}
153-
]);
154-
});
155-
156-
it.skip("Should calculate step delta for 0-sided contexts during non-sequential updates", async function(done) {
157-
let table = perspective.table(data, {index: "x"});
158-
let view = table.view();
159-
view.on_update(
160-
function(updated) {
161-
expect(updated.delta).toEqual([
162-
{x: 1, y: "string1", z: true},
163-
{x: 4, y: "string2", z: false}
164-
]);
165-
view.delete();
166-
table.delete();
167-
done();
168-
},
169-
{mode: "cell"}
170-
);
171-
table.update(partial_change_nonseq);
172-
});
173-
});
174-
17544
describe("Row delta", function() {
17645
describe("0-sided row delta", function() {
17746
it("returns changed rows", async function(done) {

0 commit comments

Comments
 (0)