fix(dameng): honor manual transaction default mode

This commit is contained in:
zipg authored and GitHub committed 2026-09-17 11:28:16 +08:00
1 parent c675c81131
commit e2ae5d29a1
13 files changed
+29 -13

No files matched your search

+1 -1
View File
@@ -7225,7 +7225,7 @@ export default withEnglishFallback({
executeModeCurrent: "Kursorun olduğu əmri icra et",
defaultTransactionMode: "Standart tranzaksiya təsdiqləmə rejimi",
defaultTransactionModeDescription:
'Yeni SQL redaktoru açıldıqda standart olaraq istifadə olunan tranzaksiya rejimi. "Əl ilə tranzaksiya" seçildikdə yeni redaktorlar əl ilə tranzaksiya rejimində açılır və dəyişiklikləri əl ilə təsdiqləmək və ya geri qaytarmaq tələb olunur; "Avtomatik təsdiqləmə" seçildikdə hər əmr avtomatik təsdiqlənir. Yalnız tranzaksiyaları dəstəkləyən verilənlər bazalarına (PostgreSQL, MySQL, Oracle, JDBC) tətbiq olunur.',
'Yeni SQL redaktoru açıldıqda standart olaraq istifadə olunan tranzaksiya rejimi. "Əl ilə tranzaksiya" seçildikdə yeni redaktorlar əl ilə tranzaksiya rejimində açılır və dəyişiklikləri əl ilə təsdiqləmək və ya geri qaytarmaq tələb olunur; "Avtomatik təsdiqləmə" seçildikdə hər əmr avtomatik təsdiqlənir. Yalnız tranzaksiyaları dəstəkləyən verilənlər bazalarına tətbiq olunur.',
defaultTransactionModeAuto: "Avtomatik təsdiqləmə",
defaultTransactionModeManual: "Əl ilə tranzaksiya",
executeAllOnBlankLine: "Boş sətirlərdən bütün SQL-i icra et",
+1 -1
View File
@@ -7414,7 +7414,7 @@ export default {
executeModeCurrent: "Execute statement at cursor",
defaultTransactionMode: "Default transaction commit mode",
defaultTransactionModeDescription:
'The transaction mode used by default when a new SQL editor is opened. With "Manual transaction", new editors start in manual transaction mode, requiring manual commit or rollback; with "Auto commit", each statement is committed automatically. Only applies to databases that support transactions (PostgreSQL, MySQL, Oracle, JDBC).',
'The transaction mode used by default when a new SQL editor is opened. With "Manual transaction", new editors start in manual transaction mode, requiring manual commit or rollback; with "Auto commit", each statement is committed automatically. Only applies to databases that support transactions.',
defaultTransactionModeAuto: "Auto commit",
defaultTransactionModeManual: "Manual transaction",
executeAllOnBlankLine: "Execute all SQL from blank lines",
+1 -1
View File
@@ -6942,7 +6942,7 @@ export default withEnglishFallback({
executeModeCurrent: "Ejecutar sentencia en el cursor",
defaultTransactionMode: "Modo de confirmación de transacción predeterminado",
defaultTransactionModeDescription:
'El modo de transacción que se usa de forma predeterminada al abrir un nuevo editor SQL. Con "Transacción manual", los nuevos editores inician en modo de transacción manual y requieren confirmación o reversión manual; con "Confirmación automática", cada sentencia se confirma automáticamente. Solo se aplica a bases de datos que admiten transacciones (PostgreSQL, MySQL, Oracle, JDBC).',
'El modo de transacción que se usa de forma predeterminada al abrir un nuevo editor SQL. Con "Transacción manual", los nuevos editores inician en modo de transacción manual y requieren confirmación o reversión manual; con "Confirmación automática", cada sentencia se confirma automáticamente. Solo se aplica a bases de datos que admiten transacciones.',
defaultTransactionModeAuto: "Confirmación automática",
defaultTransactionModeManual: "Transacción manual",
executeAllOnBlankLine: "Ejecutar todo el SQL desde líneas en blanco",
+1 -1
View File
@@ -6942,7 +6942,7 @@ export default withEnglishFallback({
executeModeCurrent: "Esegui istruzione al cursore",
defaultTransactionMode: "Modalità di commit transazione predefinita",
defaultTransactionModeDescription:
'La modalità di transazione utilizzata per impostazione predefinita quando si apre un nuovo editor SQL. Con "Transazione manuale", i nuovi editori iniziano in modalità di transazione manuale, richiedendo commit o rollback manuale; con "Commit automatico", ogni istruzione viene committata automaticamente. Si applica solo ai database che supportano le transazioni (PostgreSQL, MySQL, Oracle, JDBC).',
'La modalità di transazione utilizzata per impostazione predefinita quando si apre un nuovo editor SQL. Con "Transazione manuale", i nuovi editori iniziano in modalità di transazione manuale, richiedendo commit o rollback manuale; con "Commit automatico", ogni istruzione viene committata automaticamente. Si applica solo ai database che supportano le transazioni.',
defaultTransactionModeAuto: "Commit automatico",
defaultTransactionModeManual: "Transazione manuale",
executeAllOnBlankLine: "Esegui tutto l'SQL dalle righe vuote",
+1 -1
View File
@@ -6966,7 +6966,7 @@ export default withEnglishFallback({
executeModeCurrent: "カーソル位置の文を実行",
defaultTransactionMode: "既定のトランザクションコミットモード",
defaultTransactionModeDescription:
"新しい SQL エディタを開いたときに既定で使用するトランザクションモード。「手動トランザクション」を選択すると、新しいエディタは手動トランザクションモードで開始され、手動でコミットまたはロールバックします。「自動コミット」を選択すると、各ステートメントが自動的にコミットされます。トランザクションをサポートするデータベース(PostgreSQL、MySQL、Oracle、JDBC)のみに適用されます。",
"新しい SQL エディタを開いたときに既定で使用するトランザクションモード。「手動トランザクション」を選択すると、新しいエディタは手動トランザクションモードで開始され、手動でコミットまたはロールバックします。「自動コミット」を選択すると、各ステートメントが自動的にコミットされます。トランザクションをサポートするデータベースにのみ適用されます。",
defaultTransactionModeAuto: "自動コミット",
defaultTransactionModeManual: "手動トランザクション",
executeAllOnBlankLine: "空行ではすべてのSQLを実行",
+1 -1
View File
@@ -6710,7 +6710,7 @@ export default withEnglishFallback({
executeModeCurrent: "커서 위치의 구문 실행",
defaultTransactionMode: "기본 트랜잭션 커밋 모드",
defaultTransactionModeDescription:
'새 SQL 편집기를 열 때 기본적으로 사용되는 트랜잭션 모드입니다. "수동 트랜잭션"을 선택하면 새 편집기가 수동 트랜잭션 모드로 시작되어 수동으로 커밋 또는 롤백해야 합니다. "자동 커밋"을 선택하면 각 문이 자동으로 커밋됩니다. 트랜잭션을 지원하는 데이터베이스(PostgreSQL, MySQL, Oracle, JDBC)에만 적용됩니다.',
'새 SQL 편집기를 열 때 기본적으로 사용되는 트랜잭션 모드입니다. "수동 트랜잭션"을 선택하면 새 편집기가 수동 트랜잭션 모드로 시작되어 수동으로 커밋 또는 롤백해야 합니다. "자동 커밋"을 선택하면 각 문이 자동으로 커밋됩니다. 트랜잭션을 지원하는 데이터베이스에만 적용됩니다.',
defaultTransactionModeAuto: "자동 커밋",
defaultTransactionModeManual: "수동 트랜잭션",
executeAllOnBlankLine: "빈 줄에서 모든 SQL 실행",
+1 -1
View File
@@ -6944,7 +6944,7 @@ export default withEnglishFallback({
executeModeCurrent: "Executar instrução no cursor",
defaultTransactionMode: "Modo de confirmação de transação padrão",
defaultTransactionModeDescription:
'O modo de transação usado por padrão ao abrir um novo editor SQL. Com "Transação manual", novos editores iniciam no modo de transação manual, exigindo confirmação ou reversão manual; com "Confirmação automática", cada instrução é confirmada automaticamente. Aplica-se apenas a bancos de dados que oferecem suporte a transações (PostgreSQL, MySQL, Oracle, JDBC).',
'O modo de transação usado por padrão ao abrir um novo editor SQL. Com "Transação manual", novos editores iniciam no modo de transação manual, exigindo confirmação ou reversão manual; com "Confirmação automática", cada instrução é confirmada automaticamente. Aplica-se apenas a bancos de dados que oferecem suporte a transações.',
defaultTransactionModeAuto: "Confirmação automática",
defaultTransactionModeManual: "Transação manual",
executeAllOnBlankLine: "Executar todo o SQL em linhas em branco",
+1 -1
View File
@@ -7106,7 +7106,7 @@ export default withEnglishFallback({
executeModeCurrent: "İmleçteki ifadeyi çalıştır",
defaultTransactionMode: "Varsayılan işlem commit modu",
defaultTransactionModeDescription:
'Yeni bir SQL düzenleyici açıldığında varsayılan olarak kullanılan işlem modu. "Manuel işlem" ile yeni düzenleyiciler manuel işlem modunda başlar ve elle commit ya da rollback gerektirir; "Otomatik commit" ile her ifade otomatik olarak uygulanır. Yalnızca işlemleri destekleyen veritabanları için geçerlidir (PostgreSQL, MySQL, Oracle, JDBC).',
'Yeni bir SQL düzenleyici açıldığında varsayılan olarak kullanılan işlem modu. "Manuel işlem" ile yeni düzenleyiciler manuel işlem modunda başlar ve elle commit ya da rollback gerektirir; "Otomatik commit" ile her ifade otomatik olarak uygulanır. Yalnızca işlemleri destekleyen veritabanları için geçerlidir.',
defaultTransactionModeAuto: "Otomatik commit",
defaultTransactionModeManual: "Manuel işlem",
executeAllOnBlankLine: "Boş satırlarda tüm SQL'i çalıştır",
+1 -1
View File
@@ -7386,7 +7386,7 @@ export default withEnglishFallback({
executeModeAll: "执行全部 SQL",
executeModeCurrent: "执行光标所在语句",
defaultTransactionMode: "默认事务提交方式",
defaultTransactionModeDescription: "新建 SQL 编辑器时默认采用的事务提交方式。选择“手动事务”后,新打开的编辑器将以手动事务模式开始,需手动提交或回滚;选择“自动提交”则每条语句自动提交。仅支持事务的数据库(PostgreSQL、MySQL、Oracle、JDBC)生效。",
defaultTransactionModeDescription: "新建 SQL 编辑器时默认采用的事务提交方式。选择“手动事务”后,新打开的编辑器将以手动事务模式开始,需手动提交或回滚;选择“自动提交”则每条语句自动提交。仅对支持事务的数据库生效。",
defaultTransactionModeAuto: "自动提交",
defaultTransactionModeManual: "手动事务",
executeAllOnBlankLine: "空白位置执行全部 SQL",
+1 -1
View File
@@ -6255,7 +6255,7 @@ export default withEnglishFallback({
executeModeAll: "執行全部 SQL",
executeModeCurrent: "執行指標所在語句",
defaultTransactionMode: "預設交易提交方式",
defaultTransactionModeDescription: "新增 SQL 編輯器時預設採用的交易提交方式。選擇「手動交易」後,新開啟的編輯器將以手動交易模式開始,需手動提交或回滾;選擇「自動提交」則每條語句自動提交。僅支援交易的資料庫(PostgreSQL、MySQL、Oracle、JDBC)生效。",
defaultTransactionModeDescription: "新增 SQL 編輯器時預設採用的交易提交方式。選擇「手動交易」後,新開啟的編輯器將以手動交易模式開始,需手動提交或回滾;選擇「自動提交」則每條語句自動提交。僅對支援交易的資料庫生效。",
defaultTransactionModeAuto: "自動提交",
defaultTransactionModeManual: "手動交易",
executeAllOnBlankLine: "空白位置執行全部 SQL",
@@ -163,6 +163,7 @@ describe("supportsTransaction", () => {
expect(supportsTransaction("oracle")).toBe(true);
expect(supportsTransaction("jdbc")).toBe(true);
expect(supportsTransaction("oceanbase-oracle")).toBe(true);
expect(supportsTransaction("dameng")).toBe(true);
});
it("returns false for unsupported database types", () => {
@@ -175,7 +176,6 @@ describe("supportsTransaction", () => {
expect(supportsTransaction("sqlite")).toBe(false);
expect(supportsTransaction("clickhouse")).toBe(false);
expect(supportsTransaction("sqlserver")).toBe(false);
expect(supportsTransaction("dameng")).toBe(false);
expect(supportsTransaction("rqlite")).toBe(false);
expect(supportsTransaction("agent")).toBe(false);
});
@@ -201,6 +201,7 @@ describe("defaultAutoCommitForDbType", () => {
expect(defaultAutoCommitForDbType("oracle", "manual")).toBe(false);
expect(defaultAutoCommitForDbType("jdbc", "manual")).toBe(false);
expect(defaultAutoCommitForDbType("oceanbase-oracle", "manual")).toBe(false);
expect(defaultAutoCommitForDbType("dameng", "manual")).toBe(false);
expect(defaultAutoCommitForDbType("mysql", "auto")).toBe(true);
expect(defaultAutoCommitForDbType(undefined, "auto")).toBe(true);
});
@@ -209,7 +210,6 @@ describe("defaultAutoCommitForDbType", () => {
expect(defaultAutoCommitForDbType("redis", "manual")).toBe(true);
expect(defaultAutoCommitForDbType("mongodb", "manual")).toBe(true);
expect(defaultAutoCommitForDbType("sqlite", "manual")).toBe(true);
expect(defaultAutoCommitForDbType("dameng", "manual")).toBe(true);
expect(defaultAutoCommitForDbType("clickhouse", "manual")).toBe(true);
expect(defaultAutoCommitForDbType(undefined, "manual")).toBe(true);
});
@@ -257,7 +257,7 @@ export function usesPostgresLikeStructureCopy(dbType?: DatabaseType): boolean {
return !!dbType && PG_LIKE_STRUCTURE_TYPES.has(dbType);
}
const TRANSACTION_SUPPORTED_TYPES: readonly string[] = ["postgres", "mysql", "oracle", "jdbc", "oceanbase-oracle"];
const TRANSACTION_SUPPORTED_TYPES: readonly string[] = ["postgres", "mysql", "oracle", "jdbc", "oceanbase-oracle", "dameng"];
/** Oracle-family databases, kept ONLY for the Oracle-specific ALTER SESSION SET
* CURRENT_SCHEMA compensation in queryStore. Do not use for toolbar/dirty-bit
@@ -83,6 +83,22 @@ describe("queryStore default transaction mode", () => {
expect(tab.autoCommit).toBe(false);
});
it("creates a Dameng query tab in manual transaction mode when configured", async () => {
editorSettings.defaultTransactionMode = "manual";
mocks.getConnectionConfig.mockReturnValue({
id: "dameng-1",
name: "Dameng",
db_type: "dameng",
database: "DM",
});
const { useQueryStore } = await import("@/stores/queryStore");
const store = useQueryStore();
const tabId = store.createTab("dameng-1", "DM", "Query", "query", "PUBLIC");
expect(store.tabs.find((item) => item.id === tabId)!.autoCommit).toBe(false);
});
it("creates a query tab in auto-commit mode by default", async () => {
const { useQueryStore } = await import("@/stores/queryStore");
const store = useQueryStore();