@mastra/cloudflare-d1 1.0.2-alpha.0 → 1.0.3-alpha.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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # @mastra/cloudflare-d1
2
2
 
3
+ ## 1.0.3-alpha.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixed D1 listMessages returning empty results when using semantic recall with perPage=0 and many include targets, by batching UNION ALL queries to avoid SQLite's compound SELECT limit ([#14117](https://github.com/mastra-ai/mastra/pull/14117))
8
+
9
+ - Updated dependencies [[`cddf895`](https://github.com/mastra-ai/mastra/commit/cddf895532b8ee7f9fa814136ec672f53d37a9ba), [`aede3cc`](https://github.com/mastra-ai/mastra/commit/aede3cc2a83b54bbd9e9a54c8aedcd1708b2ef87), [`c4c7dad`](https://github.com/mastra-ai/mastra/commit/c4c7dadfe2e4584f079f6c24bfabdb8c4981827f), [`45c3112`](https://github.com/mastra-ai/mastra/commit/45c31122666a0cc56b94727099fcb1871ed1b3f6), [`5e7c287`](https://github.com/mastra-ai/mastra/commit/5e7c28701f2bce795dd5c811e4c3060bf2ea2242), [`7e17d3f`](https://github.com/mastra-ai/mastra/commit/7e17d3f656fdda2aad47c4beb8c491636d70820c)]:
10
+ - @mastra/core@1.12.0-alpha.0
11
+
12
+ ## 1.0.2
13
+
14
+ ### Patch Changes
15
+
16
+ - Added resilient column handling to insert and update operations. Unknown columns in records are now silently dropped instead of causing SQL errors, ensuring forward compatibility when newer domain packages add fields that haven't been migrated yet. ([#14021](https://github.com/mastra-ai/mastra/pull/14021))
17
+
18
+ For example, calling `db.insert({ tableName, record: { id: '1', title: 'Hello', futureField: 'value' } })` will silently ignore `futureField` if it doesn't exist in the database table, rather than throwing. The same applies to `update` — unknown fields in the data payload are dropped before building the SQL statement.
19
+
20
+ - Fixed slow semantic recall in the libsql, Cloudflare D1, and ClickHouse storage adapters. Recall performance no longer degrades as threads grow larger. (Fixes #11702) ([#14022](https://github.com/mastra-ai/mastra/pull/14022))
21
+
22
+ - Updated dependencies [[`4f71b43`](https://github.com/mastra-ai/mastra/commit/4f71b436a4a6b8839842d8da47b57b84509af56c), [`a070277`](https://github.com/mastra-ai/mastra/commit/a07027766ce195ba74d0783116d894cbab25d44c), [`b628b91`](https://github.com/mastra-ai/mastra/commit/b628b9128b372c0f54214d902b07279f03443900), [`332c014`](https://github.com/mastra-ai/mastra/commit/332c014e076b81edf7fe45b58205882726415e90), [`6b63153`](https://github.com/mastra-ai/mastra/commit/6b63153878ea841c0f4ce632ba66bb33e57e9c1b), [`4246e34`](https://github.com/mastra-ai/mastra/commit/4246e34cec9c26636d0965942268e6d07c346671), [`b8837ee`](https://github.com/mastra-ai/mastra/commit/b8837ee77e2e84197609762bfabd8b3da326d30c), [`866cc2c`](https://github.com/mastra-ai/mastra/commit/866cc2cb1f0e3b314afab5194f69477fada745d1), [`5d950f7`](https://github.com/mastra-ai/mastra/commit/5d950f7bf426a215a1808f0abef7de5c8336ba1c), [`28c85b1`](https://github.com/mastra-ai/mastra/commit/28c85b184fc32b40f7f160483c982da6d388ecbd), [`e9a08fb`](https://github.com/mastra-ai/mastra/commit/e9a08fbef1ada7e50e961e2f54f55e8c10b4a45c), [`1d0a8a8`](https://github.com/mastra-ai/mastra/commit/1d0a8a8acf33203d5744fc429b090ad8598aa8ed), [`631ffd8`](https://github.com/mastra-ai/mastra/commit/631ffd82fed108648b448b28e6a90e38c5f53bf5), [`6bcbf8a`](https://github.com/mastra-ai/mastra/commit/6bcbf8a6774d5a53b21d61db8a45ce2593ca1616), [`aae2295`](https://github.com/mastra-ai/mastra/commit/aae2295838a2d329ad6640829e87934790ffe5b8), [`aa61f29`](https://github.com/mastra-ai/mastra/commit/aa61f29ff8095ce46a4ae16e46c4d8c79b2b685b), [`7ff3714`](https://github.com/mastra-ai/mastra/commit/7ff37148515439bb3be009a60e02c3e363299760), [`18c3a90`](https://github.com/mastra-ai/mastra/commit/18c3a90c9e48cf69500e308affeb8eba5860b2af), [`41d79a1`](https://github.com/mastra-ai/mastra/commit/41d79a14bd8cb6de1e2565fd0a04786bae2f211b), [`f35487b`](https://github.com/mastra-ai/mastra/commit/f35487bb2d46c636e22aa71d90025613ae38235a), [`6dc2192`](https://github.com/mastra-ai/mastra/commit/6dc21921aef0f0efab15cd0805fa3d18f277a76f), [`eeb3a3f`](https://github.com/mastra-ai/mastra/commit/eeb3a3f43aca10cf49479eed2a84b7d9ecea02ba), [`e673376`](https://github.com/mastra-ai/mastra/commit/e6733763ad1321aa7e5ae15096b9c2104f93b1f3), [`05f8d90`](https://github.com/mastra-ai/mastra/commit/05f8d9009290ce6aa03428b3add635268615db85), [`b2204c9`](https://github.com/mastra-ai/mastra/commit/b2204c98a42848bbfb6f0440f005dc2b6354f1cd), [`a1bf1e3`](https://github.com/mastra-ai/mastra/commit/a1bf1e385ed4c0ef6f11b56c5887442970d127f2), [`b6f647a`](https://github.com/mastra-ai/mastra/commit/b6f647ae2388e091f366581595feb957e37d5b40), [`0c57b8b`](https://github.com/mastra-ai/mastra/commit/0c57b8b0a69a97b5a4ae3f79be6c610f29f3cf7b), [`b081f27`](https://github.com/mastra-ai/mastra/commit/b081f272cf411716e1d6bd72ceac4bcee2657b19), [`4b8da97`](https://github.com/mastra-ai/mastra/commit/4b8da97a5ce306e97869df6c39535d9069e563db), [`0c09eac`](https://github.com/mastra-ai/mastra/commit/0c09eacb1926f64cfdc9ae5c6d63385cf8c9f72c), [`6b9b93d`](https://github.com/mastra-ai/mastra/commit/6b9b93d6f459d1ba6e36f163abf62a085ddb3d64), [`31b6067`](https://github.com/mastra-ai/mastra/commit/31b6067d0cc3ab10e1b29c36147f3b5266bc714a), [`797ac42`](https://github.com/mastra-ai/mastra/commit/797ac4276de231ad2d694d9aeca75980f6cd0419), [`0bc289e`](https://github.com/mastra-ai/mastra/commit/0bc289e2d476bf46c5b91c21969e8d0c6864691c), [`9b75a06`](https://github.com/mastra-ai/mastra/commit/9b75a06e53ebb0b950ba7c1e83a0142047185f46), [`4c3a1b1`](https://github.com/mastra-ai/mastra/commit/4c3a1b122ea083e003d71092f30f3b31680b01c0), [`256df35`](https://github.com/mastra-ai/mastra/commit/256df3571d62beb3ad4971faa432927cc140e603), [`85cc3b3`](https://github.com/mastra-ai/mastra/commit/85cc3b3b6f32ae4b083c26498f50d5b250ba944b), [`97ea28c`](https://github.com/mastra-ai/mastra/commit/97ea28c746e9e4147d56047bbb1c4a92417a3fec), [`d567299`](https://github.com/mastra-ai/mastra/commit/d567299cf81e02bd9d5221d4bc05967d6c224161), [`716ffe6`](https://github.com/mastra-ai/mastra/commit/716ffe68bed81f7c2690bc8581b9e140f7bf1c3d), [`8296332`](https://github.com/mastra-ai/mastra/commit/8296332de21c16e3dfc3d0b2d615720a6dc88f2f), [`4df2116`](https://github.com/mastra-ai/mastra/commit/4df211619dd922c047d396ca41cd7027c8c4c8e7), [`2219c1a`](https://github.com/mastra-ai/mastra/commit/2219c1acbd21da116da877f0036ffb985a9dd5a3), [`17c4145`](https://github.com/mastra-ai/mastra/commit/17c4145166099354545582335b5252bdfdfd908b)]:
23
+ - @mastra/core@1.11.0
24
+
3
25
  ## 1.0.2-alpha.0
4
26
 
5
27
  ### Patch Changes
@@ -3,7 +3,7 @@ name: mastra-cloudflare-d1
3
3
  description: Documentation for @mastra/cloudflare-d1. Use when working with @mastra/cloudflare-d1 APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/cloudflare-d1"
6
- version: "1.0.2-alpha.0"
6
+ version: "1.0.3-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -16,7 +16,7 @@ Read the individual reference documents for detailed explanations and code examp
16
16
 
17
17
  ### Reference
18
18
 
19
- - [Reference: Cloudflare D1 Storage](references/reference-storage-cloudflare-d1.md) - Documentation for the Cloudflare D1 SQL storage implementation in Mastra.
19
+ - [Reference: Cloudflare D1 storage](references/reference-storage-cloudflare-d1.md) - Documentation for the Cloudflare D1 SQL storage implementation in Mastra.
20
20
 
21
21
 
22
22
  Read [assets/SOURCE_MAP.json](assets/SOURCE_MAP.json) for source code references.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.2-alpha.0",
2
+ "version": "1.0.3-alpha.0",
3
3
  "package": "@mastra/cloudflare-d1",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -1,4 +1,4 @@
1
- # Cloudflare D1 Storage
1
+ # Cloudflare D1 storage
2
2
 
3
3
  The Cloudflare D1 storage implementation provides a serverless SQL database solution using Cloudflare D1, supporting relational operations and transactional consistency.
4
4
 
@@ -139,7 +139,7 @@ Or in `wrangler.jsonc`:
139
139
 
140
140
  **tablePrefix** (`string`): Optional prefix for all table names (useful for environment isolation)
141
141
 
142
- ## Additional Notes
142
+ ## Additional notes
143
143
 
144
144
  ### Schema Management
145
145
 
package/dist/index.cjs CHANGED
@@ -1209,12 +1209,28 @@ var MemoryStorageD1 = class extends storage.MemoryStorage {
1209
1209
  const targetMap = new Map(
1210
1210
  targetResult.map((r) => [r.id, { threadId: r.thread_id, createdAt: r.createdAt }])
1211
1211
  );
1212
+ const MAX_UNION_TERMS = 5;
1212
1213
  const unionQueries = [];
1213
- const params = [];
1214
+ const unionParams = [];
1215
+ const allMessages = [];
1216
+ const flushBatch = async () => {
1217
+ if (unionQueries.length === 0) return;
1218
+ const sql = unionQueries.length === 1 ? unionQueries[0] : `${unionQueries.join(" UNION ALL ")} ORDER BY createdAt ASC, id ASC`;
1219
+ const result = await this.#db.executeQuery({ sql, params: unionParams });
1220
+ if (Array.isArray(result)) {
1221
+ allMessages.push(...result);
1222
+ }
1223
+ unionQueries.length = 0;
1224
+ unionParams.length = 0;
1225
+ };
1214
1226
  for (const inc of include) {
1215
1227
  const { id, withPreviousMessages = 0, withNextMessages = 0 } = inc;
1216
1228
  const target = targetMap.get(id);
1217
1229
  if (!target) continue;
1230
+ const termsNeeded = withNextMessages > 0 ? 2 : 1;
1231
+ if (unionQueries.length + termsNeeded > MAX_UNION_TERMS) {
1232
+ await flushBatch();
1233
+ }
1218
1234
  unionQueries.push(`SELECT * FROM (
1219
1235
  SELECT id, content, role, type, createdAt, thread_id AS threadId, resourceId
1220
1236
  FROM ${tableName}
@@ -1223,7 +1239,7 @@ var MemoryStorageD1 = class extends storage.MemoryStorage {
1223
1239
  ORDER BY createdAt DESC, id DESC
1224
1240
  LIMIT ?
1225
1241
  )`);
1226
- params.push(target.threadId, target.createdAt, withPreviousMessages + 1);
1242
+ unionParams.push(target.threadId, target.createdAt, withPreviousMessages + 1);
1227
1243
  if (withNextMessages > 0) {
1228
1244
  unionQueries.push(`SELECT * FROM (
1229
1245
  SELECT id, content, role, type, createdAt, thread_id AS threadId, resourceId
@@ -1233,22 +1249,12 @@ var MemoryStorageD1 = class extends storage.MemoryStorage {
1233
1249
  ORDER BY createdAt ASC, id ASC
1234
1250
  LIMIT ?
1235
1251
  )`);
1236
- params.push(target.threadId, target.createdAt, withNextMessages);
1252
+ unionParams.push(target.threadId, target.createdAt, withNextMessages);
1237
1253
  }
1238
1254
  }
1239
- if (unionQueries.length === 0) return null;
1240
- let finalQuery;
1241
- if (unionQueries.length === 1) {
1242
- finalQuery = unionQueries[0];
1243
- } else {
1244
- finalQuery = `${unionQueries.join(" UNION ALL ")} ORDER BY createdAt ASC, id ASC`;
1245
- }
1246
- const messages = await this.#db.executeQuery({ sql: finalQuery, params });
1247
- if (!Array.isArray(messages)) {
1248
- return [];
1249
- }
1255
+ await flushBatch();
1250
1256
  const seen = /* @__PURE__ */ new Set();
1251
- const processedMessages = messages.filter((message) => {
1257
+ const processedMessages = allMessages.filter((message) => {
1252
1258
  const id = message.id;
1253
1259
  if (seen.has(id)) return false;
1254
1260
  seen.add(id);