@voltro/plugin-duckdb 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1968 -0
- package/dist/index.js +40 -18
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -54,38 +54,60 @@ var r = "duckdb", i = "voltro_events", a = null, o = () => a === null ? e.tryPro
|
|
|
54
54
|
params: l,
|
|
55
55
|
types: u
|
|
56
56
|
};
|
|
57
|
-
}, C = (t, n, r) =>
|
|
57
|
+
}, C = (e, t, n, r, i) => [
|
|
58
|
+
`INSERT INTO ${e} (id, data, version, is_deleted) VALUES (?, ?::JSON, ?::BIGINT, ?) ON CONFLICT (id) DO UPDATE SET data = EXCLUDED.data, version = EXCLUDED.version, is_deleted = EXCLUDED.is_deleted WHERE EXCLUDED.version > ${e}.version`,
|
|
59
|
+
[
|
|
60
|
+
t,
|
|
61
|
+
n,
|
|
62
|
+
String(r),
|
|
63
|
+
i
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
a.VARCHAR,
|
|
67
|
+
a.VARCHAR,
|
|
68
|
+
a.VARCHAR,
|
|
69
|
+
a.BOOLEAN
|
|
70
|
+
]
|
|
71
|
+
], w = (t, n, r) => {
|
|
58
72
|
let i = /* @__PURE__ */ new Set(), o = (n, r) => e.gen(function* () {
|
|
59
73
|
if (i.has(r)) return;
|
|
60
74
|
u(n, r, "mirror table name");
|
|
61
75
|
let a = yield* g(t), o = c(r);
|
|
62
76
|
yield* e.tryPromise({
|
|
63
|
-
try: () => a.run(`CREATE TABLE IF NOT EXISTS ${o} (id VARCHAR PRIMARY KEY, data JSON NOT NULL)`),
|
|
77
|
+
try: () => a.run(`CREATE TABLE IF NOT EXISTS ${o} (id VARCHAR PRIMARY KEY, data JSON NOT NULL, version BIGINT NOT NULL DEFAULT 0, is_deleted BOOLEAN NOT NULL DEFAULT false)`),
|
|
64
78
|
catch: (e) => e
|
|
65
79
|
}), i.add(r);
|
|
66
80
|
});
|
|
67
81
|
return {
|
|
68
82
|
tables: n,
|
|
69
83
|
primaryKey: r,
|
|
70
|
-
upsert: (n, i) => e.gen(function* () {
|
|
84
|
+
upsert: ({ table: n, row: i, version: a }) => e.gen(function* () {
|
|
71
85
|
yield* o("mirror.upsert", n);
|
|
72
|
-
let s = yield* g(t),
|
|
86
|
+
let s = yield* g(t), l = c(n), u = String(i[r]);
|
|
73
87
|
yield* e.tryPromise({
|
|
74
|
-
try: () => s.run(
|
|
88
|
+
try: () => s.run(...C(l, u, JSON.stringify(i), a, !1)),
|
|
75
89
|
catch: (e) => e
|
|
76
90
|
});
|
|
77
91
|
}).pipe(h("mirror.upsert")),
|
|
78
|
-
remove: (n, r) => e.gen(function* () {
|
|
92
|
+
remove: ({ table: n, primaryKeyValue: r, version: i }) => e.gen(function* () {
|
|
79
93
|
yield* o("mirror.remove", n);
|
|
80
|
-
let
|
|
94
|
+
let a = yield* g(t), s = c(n), l = String(r);
|
|
81
95
|
yield* e.tryPromise({
|
|
82
|
-
try: () =>
|
|
96
|
+
try: () => a.run(...C(s, l, "{}", i, !0)),
|
|
83
97
|
catch: (e) => e
|
|
84
98
|
});
|
|
85
|
-
}).pipe(h("mirror.remove"))
|
|
99
|
+
}).pipe(h("mirror.remove")),
|
|
100
|
+
maxVersion: ({ table: n, primaryKeyValue: r }) => e.gen(function* () {
|
|
101
|
+
yield* o("mirror.maxVersion", n);
|
|
102
|
+
let i = yield* g(t), s = c(n), l = (yield* e.tryPromise({
|
|
103
|
+
try: () => i.runAndReadAll(`SELECT version FROM ${s} WHERE id = ?`, [String(r)], [a.VARCHAR]),
|
|
104
|
+
catch: (e) => e
|
|
105
|
+
})).getRowObjectsJS()[0]?.version;
|
|
106
|
+
return l == null ? null : Number(l);
|
|
107
|
+
}).pipe(h("mirror.maxVersion"))
|
|
86
108
|
};
|
|
87
|
-
},
|
|
88
|
-
let o = n.mirrorTables ?? [], c = o.length > 0 ?
|
|
109
|
+
}, T = (t, n) => {
|
|
110
|
+
let o = n.mirrorTables ?? [], c = o.length > 0 ? w(t, o, n.mirrorPrimaryKey ?? "id") : void 0;
|
|
89
111
|
return {
|
|
90
112
|
info: {
|
|
91
113
|
provider: r,
|
|
@@ -162,7 +184,7 @@ var r = "duckdb", i = "voltro_events", a = null, o = () => a === null ? e.tryPro
|
|
|
162
184
|
}).pipe(h("topN")),
|
|
163
185
|
...c === void 0 ? {} : { mirror: c }
|
|
164
186
|
};
|
|
165
|
-
},
|
|
187
|
+
}, E = (t, i) => e.gen(function* () {
|
|
166
188
|
if (t.conn !== null) return;
|
|
167
189
|
let a = yield* o(), s = yield* e.tryPromise({
|
|
168
190
|
try: async () => {
|
|
@@ -179,7 +201,7 @@ var r = "duckdb", i = "voltro_events", a = null, o = () => a === null ? e.tryPro
|
|
|
179
201
|
})
|
|
180
202
|
});
|
|
181
203
|
t.instance = s.instance, t.conn = s.connection;
|
|
182
|
-
}),
|
|
204
|
+
}), D = (t) => e.gen(function* () {
|
|
183
205
|
let { conn: n, instance: i } = t;
|
|
184
206
|
t.conn = null, t.instance = null, !(n === null && i === null) && (yield* e.try(() => {
|
|
185
207
|
n?.closeSync(), i?.closeSync();
|
|
@@ -187,17 +209,17 @@ var r = "duckdb", i = "voltro_events", a = null, o = () => a === null ? e.tryPro
|
|
|
187
209
|
provider: r,
|
|
188
210
|
err: t
|
|
189
211
|
}))));
|
|
190
|
-
}),
|
|
212
|
+
}), O = (e = {}) => {
|
|
191
213
|
let t = {
|
|
192
214
|
conn: null,
|
|
193
215
|
instance: null
|
|
194
216
|
};
|
|
195
217
|
return {
|
|
196
218
|
kind: "duckdb",
|
|
197
|
-
build: (n) =>
|
|
198
|
-
initialize: () =>
|
|
199
|
-
dispose: () =>
|
|
219
|
+
build: (n) => T(t, e),
|
|
220
|
+
initialize: () => E(t, e),
|
|
221
|
+
dispose: () => D(t)
|
|
200
222
|
};
|
|
201
223
|
};
|
|
202
224
|
//#endregion
|
|
203
|
-
export {
|
|
225
|
+
export { O as duckdbAnalytics };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voltro/plugin-duckdb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "Embedded DuckDB AnalyticsSink. Runs DuckDB in-process for real OLAP performance without an external service. Events land in a DuckDB column-store table; aggregate / timeseries / topN queries execute vectorized.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"voltro",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"node": ">=24.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@voltro/runtime": "0.
|
|
36
|
+
"@voltro/runtime": "0.35.0"
|
|
37
37
|
},
|
|
38
38
|
"optionalDependencies": {
|
|
39
39
|
"@duckdb/node-api": "1.5.5-r.2"
|