Commit Graph

2977 Commits

Author SHA1 Message Date
Guoyu Su d7e2eac307
fix(mongodb): honor current command execution mode (#2702) 2026-07-07 00:02:34 +08:00
二丫讲梵 18e5df6f5e
feat(query-editor): enhance current statement framing 2026-07-06 23:09:21 +08:00
t8y2 75fcd253cb fix(docs): browser changelog respects lang instead of falling back to GitHub 2026-07-06 22:59:50 +08:00
t8y2 23c36343b0 fix(grid): isolate table info drawer state 2026-07-06 22:25:32 +08:00
t8y2 d3b978ccba feat(results): add query result auto refresh menu 2026-07-06 22:14:22 +08:00
hhzorg 4024dc6a67
fix(milvus): send empty JSON body to databases/list endpoint
Follow-up to #2698. The databases/list call posted with no request body,
which the Milvus demo cluster used during testing accepts. Production
Milvus is stricter: a bodyless POST returns HTTP 200 with
`{"code":1801,...}` and omits the `data` field. Since the success check
only inspects the HTTP status, list_milvus_databases() parsed zero names
and silently fell back to `["default"]`, hiding every non-default database
in the sidebar.

Send an empty JSON object `{}` as the body, matching every other Milvus
v2 endpoint. With the body, the endpoint returns code 0 and the full
database list on both demo and production clusters.

Ref #2693

Co-authored-by: 朱豪豪 <zhu.hh.sz@belle.com.cn>
2026-07-06 22:04:19 +08:00
t8y2 9ad9261a6d feat(editor): support dragging selected SQL text 2026-07-06 22:01:26 +08:00
t8y2 1480e08d17 fix(kingbase): fallback database list catalog 2026-07-06 20:15:13 +08:00
t8y2 64d4afec1b test(tdengine): expect USE schema switch before query execution 2026-07-06 20:13:52 +08:00
jischeng 5db0fc4fb1
fix(grid): reuse local result rows for csv/xlsx export instead of re-running query
* fix(grid): reuse local result rows for csv/xlsx export instead of re-running query

Exporting the full result set ("导出当前结果集全部数据 CSV") previously
re-executed the source SQL on the database via the backend streaming path
(exportQueryResultViaBackend -> start_query_result_export), and the frontend
fallback (fullExportResult/fetchTabResultForExport) did the same. For a slow
query this means running it a second time just to export rows already on
screen, which can hang or crash (e.g. a 2-minute paimon query returning 30
rows).

When the in-memory result already holds the complete set (no server-side
pagination, not truncated, no further pages), skip both re-executing paths and
write the displayed rows directly. Large/truncated/paginated results keep the
original streaming behavior unchanged.

* fix(grid): export raw in-memory result for complete local result set

---------

Co-authored-by: t8y2 <1156263951@qq.com>
2026-07-06 20:06:57 +08:00
t8y2 15114f58dd fix(dameng): build index DDL from metadata 2026-07-06 20:01:53 +08:00
t8y2 ece47c85d6 fix(kingbase): prioritize selected schema search path 2026-07-06 19:42:58 +08:00
Guoyu Su 2b5aaa2a54
fix(desktop): clear connection error after successful test 2026-07-06 19:37:00 +08:00
t8y2 48aa5fa2e2 fix(transfer): use Oracle INSERT ALL for batch inserts 2026-07-06 19:26:46 +08:00
hhzorg 95b7b8b9a3
fix(milvus): list all databases and their collections in sidebar
Milvus supports multiple databases, but the sidebar only ever showed
collections under the hardcoded "default" database. The backend returned
["default"] for every vector store and the frontend loaded collections
for a single database and flattened them under the connection node.

- Backend (vector_driver): add list_databases() that calls Milvus
  /v2/vectordb/databases/list (falling back to "default" for older Milvus
  and for non-Milvus vector stores), and thread a database parameter
  through find_documents() instead of hardcoding "default".
- document_ops: list_databases_core delegates VectorDb to list_databases();
  find_documents_core forwards the selected database.
- Frontend: add a "vector-database" tree node type. For Milvus, connections
  expand into database nodes, which expand into their own collections.
  Collection node ids are namespaced by database to avoid collisions
  across databases, and the collection id is stored in meta so activation
  no longer parses the node id.

Fixes #2693

Co-authored-by: 朱豪豪 <zhu.hh.sz@belle.com.cn>
2026-07-06 19:24:55 +08:00
t8y2 b6b510d632 feat(sql): support MySQL routine blocks 2026-07-06 19:06:34 +08:00
ahua 7ff4d9f804
fix(sqlfile): make folder list update reactively 2026-07-06 18:47:45 +08:00
二丫讲梵 ff8e53d47b
feat(query): 优化多条查询语句结果展示与语句匹配问题 (#2697) 2026-07-06 18:39:36 +08:00
LSD 095cb867a5
fix(mongodb): remove duplicate refresh button in document browser (#2696) 2026-07-06 18:28:42 +08:00
zipg ce096ca21f
fix(completion): scoped table lookup, preserve casing, lower Oracle table-function boost
* fix: improve schema-qualified SQL completion

* fix(completion): preserve casing in completion table cache key and relaxed filter

---------

Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
Co-authored-by: t8y2 <1156263951@qq.com>
2026-07-06 18:28:23 +08:00
gggaiitx 2fd2b0e770
fix: allow default database for tree-schema databases
TREE_SCHEMA mode databases (saphana, jdbc, postgres, etc.) use an empty string to represent the default database selection. The previous check treated empty string as no database selected and incorrectly blocked query execution.
2026-07-06 18:22:56 +08:00
Hiep Le 78019c44e2
fix(mongo): support ISODate() and new Date() in MongoDB queries
* fix(mongo): hỗ trợ ISODate() và new Date() trong query MongoDB

Parser shell MongoDB ở frontend chỉ chuyển ObjectId(...) sang extended JSON,
nên filter chứa ISODate("...")/new Date("...") không parse được: câu lệnh rơi
xuống SQL executor và báo lỗi "Use MongoDB-specific commands".

Bổ sung rewrite ISODate(x)/new Date(x) -> {"$date":x} trong normalizeJsonArgument,
khớp với json_value_to_bson của backend (đã hiểu $date/$oid). Thêm test cho
filter dùng ISODate và new Date.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(mongo): decode $date extended JSON trong filter query

json_filter_value_to_bson chỉ chuyển {"$oid":...} nên filter chứa {"$date":...}
bị gửi thẳng lên server: { field: {"$date":...} } lỗi "unknown operator: $date",
còn { field: {"$gte": {"$date":...}} } so sánh với sub-document nên không khớp gì
(trả về rỗng).

Thêm nhánh parse_extended_json_date vào json_filter_value_to_bson, đồng bộ với
json_value_to_bson (vốn đã hiểu $date/$oid). Thêm test cho cả equality và $gte.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 18:21:15 +08:00
zipg a212ccbfa7
fix(kafka): support cluster address separators
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 18:11:10 +08:00
Moe. 51693bf296
fix(connection): allow immediate reconnect after canceling high-latency connection
* Fix: Scope Disconnects To Connection Attempts

- Allow reconnecting while a scoped disconnect is still pending
- Track successful local connection attempts for scoped backend disconnects
- Prevent older disconnect completions from clearing newer reconnect errors
- Update disconnect state immediately while preserving revision-safe cleanup
- Add regression tests for reconnect and pending disconnect race cases

* Fix: Clear Root Metadata Load On Connection Cancel

* Test: Mock Installed Agents In Connection Store Timeout Spec

* Test: Mock listInstalledAgents in connection store timeout tests
2026-07-06 18:06:05 +08:00
二丫讲梵 6d0a59a913
feat(editor): SQL editor execution button config toggle & optimization
- 在 SQL 编辑器的左侧添加每条语句的执行按钮
- 支持通过快捷键和右键菜单执行语句
- 增加多语言支持的相关文本描述
2026-07-06 18:01:31 +08:00
二丫讲梵 35d5e90378
feat(settings): improve sidebar search
- 新增设置选项以启用/禁用数据库内的表搜索
- 更新相关组件以支持表搜索功能
- 添加多语言支持的描述信息
2026-07-06 17:24:56 +08:00
zipg 7ccc632ce8
fix(sql): improve completion triggers
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 17:22:24 +08:00
t8y2 90bdacfd12 fix(grid): support multiline bulk edit values 2026-07-06 17:18:38 +08:00
LSD fa5e55a376
feat(mongodb): improve GridFS manager filtering and sorting
* docs: add GridFS manager filter and sort design

* feat: improve GridFS manager filtering and sorting
2026-07-06 17:17:33 +08:00
zipg 26647ff755
fix(ddl-viewer): fix selection style visibility
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 17:10:50 +08:00
zipg bc16f784ad
fix(sql): keep set operation statements together across newlines
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 17:01:25 +08:00
zipg f2c429afd9
fix: support metadata comment search
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 16:49:28 +08:00
t8y2 745f7f60b0 feat(postgres): add cascade table drop option 2026-07-06 15:45:47 +08:00
Abeautifulsnow 8539011f25
feat(ai): split Ask/Agent action menus with task-oriented Agent actions
* feat(ai): add task-oriented Agent actions with per-action contract

Introduce three Agent-native actions — query, exploreSchema,
executeAndExplain — so Agent mode surfaces task-oriented operations
instead of reusing Ask's SQL-producing action set.

- ai.ts: extend AiAction with the new actions; add ASK_ACTIONS /
  AGENT_ACTIONS and defaultActionForMode / isValidActionForMode
  helpers; raise maxTokens for the explanatory task actions.
- aiSkills.ts: add skill definitions (zh/en) for the three actions.
- aiAgentPlan.ts: task actions no longer emit a misleading
  "unsupported_action" execute step; they execute via the
  execute_query tool events, not the legacy client-side path.
- agent_loop.rs: per-action task-contract rules in both the prompt
  augmentation and repair paths (query -> execute & answer from real
  data; exploreSchema -> list_tables/get_columns; executeAndExplain
  -> run current SQL & explain).
- i18n (en/zh-CN/zh-TW): new action labels, placeholders, a
  generateNoExec label for Agent mode, and a task-oriented agent
  modeHint.

es/it/ja/pt-BR have no `ai` section and fall back to `en`, matching
existing coverage.

* feat(ai): split Ask/Agent action menus with mode-aware defaults

Wire the new Agent task actions into the assistant UI so each mode
shows a distinct, intent-matching action set.

- actionButtons is now a computed returning Ask or Agent buttons
  based on assistantMode. Agent menu: query / exploreSchema /
  executeAndExplain / generate (labeled "生成但不执行" via
  generateNoExec). Ask menu is unchanged.
- Switching mode lands on that mode's default (Ask -> generate,
  Agent -> query); the shared `generate` is not carried across
  because its label/semantics differ per mode. Vector DBs stay on
  `generate` since their action menu is hidden and they lack SQL
  tools (no execute_query contract).
- External Ask-style triggers (Fix with AI, Explain history) switch
  to Ask mode when invoked from Agent mode so the action is valid
  and the menu reflects what runs.
- Reset the active action to the mode default after each send.

* test(ai): cover Agent task-action contract and mode/action mapping

Lock in the deterministic parts of the Ask/Agent split so only the
LLM-behavior criteria need manual verification.

Backend (agent_loop.rs):
- query contract instructs the LLM to call execute_query and is not
  treated as a SQL-producing action.
- exploreSchema contract points to list_tables/get_columns and says
  not to execute data queries.
- executeAndExplain contract tells the LLM to run the current SQL.
- task actions do not require a SQL deliverable (a conclusion without
  a fenced SQL block still satisfies the contract).
- query repair prompt also targets execute_query.

Frontend (aiActions.spec.ts):
- defaultActionForMode: Ask -> generate, Agent -> query (not generate).
- isValidActionForMode: generate valid in both; Ask-only actions
  rejected in Agent mode and vice versa.
- ASK_ACTIONS / AGENT_ACTIONS composition (Agent menu starts with
  query and still offers generate).

* fix(ai): correct action menu on mode-switched triggers and i18n gaps

Issues found during review of the Ask/Agent action split:

- [#I01] triggerAction (Fix with AI / Explain history) invoked from
  Agent mode switched to Ask and set the action, but the mode-switch
  watch then reset activeAction to the Ask default ("generate"),
  overwriting the action just set — so the menu showed "Generate SQL"
  during a fix. Add a suppressModeActionReset flag so programmatic
  mode switches don't clobber the explicitly-set action.
- [#C01] Remove dead `unsupported_action` reason: buildAiAgentPlan no
  longer produces it, so drop the type variant and the unreachable
  skippedTitleKey case.
- [#I02] es/it/ja/pt-BR were missing the new Agent action keys
  (query/exploreSchema/executeAndExplain/generateNoExec) and their
  placeholders, causing English fallback in the Agent menu. Add the
  translations to match each locale's existing style.

* test(ai): align app-tests with task-action split

- aiSkills: add query/exploreSchema/executeAndExplain to the expected
  action set; broaden the id check (new ids are not _sql-suffixed) and
  relax the userInstruction assertion (schema inspection need not mention SQL).
- aiAgentPlan: drop the unsupported_action skipped step for non-generate
  actions (#C01 removed it from the plan and the reason union); add coverage
  for task-oriented Agent actions not driving client-side execution.

* test(ai): pin locale in dialect prompt spec

buildSystemPrompt selects zh/en copy via currentLocale(), which reflects the
host navigator.language. The spec asserts English strings, so it failed on
zh-CN machines (e.g. Windows with a Chinese system locale) while passing on
CI's en-US runners. Pin the locale to en in beforeAll so the assertions are
deterministic regardless of the host OS locale.
2026-07-06 14:41:39 +08:00
t8y2 c819885d2e feat(docs): add JDBC plugin offline download 2026-07-06 14:34:58 +08:00
t8y2 e84fb12fcc feat(sqlite): support SQLCipher encrypted databases 2026-07-06 14:24:28 +08:00
t8y2 92ef1ac3cf feat(structure): open editor from field and index nodes 2026-07-06 14:16:43 +08:00
t8y2 564c5beeff fix(sqlite): decode text-affinity blobs 2026-07-06 13:56:05 +08:00
t8y2 dd8d1d3556 fix(export): preserve MySQL typed literals 2026-07-06 13:48:36 +08:00
t8y2 0c965eb836 fix(oceanbase): sync query timeout before execution 2026-07-06 13:40:20 +08:00
t8y2 ae050dadd0 fix(oracle): avoid eager xmltype metadata lookup 2026-07-06 13:37:15 +08:00
t8y2 5db35307d3 fix(influxdb): support InfluxDB 2 connections 2026-07-06 13:30:12 +08:00
miracle b118ca31ed
[Feat]:实现SQL变量替换 (#2597) 2026-07-06 13:21:45 +08:00
wuxiemian 987b0fd263
fix: improve SQL table and JOIN completion (#2629) 2026-07-06 13:19:37 +08:00
wnyr dacd311490
fix(mysql): handle proxy database handshake fallback 2026-07-06 12:57:27 +08:00
t8y2 764b479679 fix(sidebar): ignore repeated row clicks during double-click 2026-07-06 12:54:33 +08:00
juve c652c5b0d5
fix(nix): fix desktop package build 2026-07-06 12:52:50 +08:00
zipg dc50356000
fix: 修复 Windows 快捷键显示异常 (#2599)
Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-07-06 12:48:55 +08:00
t8y2 526540d570 fix(postgres): retry stale cached metadata queries 2026-07-06 12:46:44 +08:00
onenewcode d70c883e81
fix(redis): stop duplicating pubsub messages 2026-07-06 12:07:55 +08:00