From 92b67d31364db9c09ec3f6067551f4e9f382227d Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Mon, 18 May 2026 15:27:01 +0800 Subject: [PATCH] fix(yashandb): save grid edits without transactions --- .../src/lib/databaseTableDataCapabilities.ts | 9 +++++++++ packages/app-tests/dataGridSql.test.ts | 20 +++++++++++++++++++ .../app-tests/databaseCapabilities.test.ts | 8 ++++++++ packages/app-tests/tableEditing.test.ts | 1 + 4 files changed, 38 insertions(+) diff --git a/apps/desktop/src/lib/databaseTableDataCapabilities.ts b/apps/desktop/src/lib/databaseTableDataCapabilities.ts index fb8ff40b2..059e99472 100644 --- a/apps/desktop/src/lib/databaseTableDataCapabilities.ts +++ b/apps/desktop/src/lib/databaseTableDataCapabilities.ts @@ -71,6 +71,15 @@ const DATABASE_CAPABILITY_OVERRIDES: Partial { + const statements = buildDataGridSaveStatements({ + databaseType: "yashandb", + tableMeta: { + schema: "DBX_DEMO", + tableName: "METRICS_DAILY", + primaryKeys: ["DAY_DATE"], + }, + columns: ["DAY_DATE", "ACTIVE_USERS", "QUERY_COUNT", "REVENUE"], + rows: [["2026-05-17", 3, 391, 88.8]], + dirtyRows: [[0, [[1, 123123]]]], + deletedRows: [], + newRows: [], + }); + + assert.deepEqual(statements, [ + `UPDATE "DBX_DEMO"."METRICS_DAILY" SET "ACTIVE_USERS" = 123123 WHERE "DAY_DATE" = '2026-05-17';`, + ]); +}); + test("builds TDengine append-only grid save statements", () => { const newTs = tdengineTimestampLiteral("2026-05-16 09:40:00.000"); const statements = buildDataGridSaveStatements({ diff --git a/packages/app-tests/databaseCapabilities.test.ts b/packages/app-tests/databaseCapabilities.test.ts index 94bff0855..07c6fcb6d 100644 --- a/packages/app-tests/databaseCapabilities.test.ts +++ b/packages/app-tests/databaseCapabilities.test.ts @@ -73,6 +73,14 @@ test("describes table editing capabilities for special database engines", () => transaction: false, }); + assert.deepEqual(getDatabaseCapability("yashandb").tableData, { + insert: false, + updateRequiresPrimaryKey: true, + deleteRequiresPrimaryKey: true, + requiresTransactionalTableForExistingRows: false, + transaction: false, + }); + assert.equal(getDatabaseCapability("oracle").syntheticKey, "oracle-rowid"); assert.equal(getDatabaseCapability("neo4j").syntheticKey, "neo4j-element-id"); }); diff --git a/packages/app-tests/tableEditing.test.ts b/packages/app-tests/tableEditing.test.ts index ac03c7e2b..23d6dd0f5 100644 --- a/packages/app-tests/tableEditing.test.ts +++ b/packages/app-tests/tableEditing.test.ts @@ -59,6 +59,7 @@ test("does not use transactional grid saves for Hive", () => { assert.equal(supportsDataGridTransaction("hive"), false); assert.equal(supportsDataGridTransaction("trino"), false); assert.equal(supportsDataGridTransaction("jdbc"), false); + assert.equal(supportsDataGridTransaction("yashandb"), false); assert.equal(supportsDataGridTransaction("postgres"), true); });