fix(oracle): support explain plans with custom JDBC drivers

Closes #6050
This commit is contained in:
t8y2 committed 2026-08-13 02:24:46 +00:00
1 parent 93e9be46a9
commit d10cdaa0fb
5 files changed
+357 -11

No files matched your search

@@ -734,6 +734,30 @@ SELECT @value AS Message;`;
expect(activeTab.value?.result).toEqual(result);
});
it("uses the inferred Oracle dialect when explaining through custom JDBC", async () => {
const sql = "SELECT * FROM DUAL";
const activeTab = ref<QueryTab | undefined>({ ...queryTab("ORCL"), sql });
const activeConnection = ref<ConnectionConfig | undefined>({
...connection("jdbc"),
connection_string: "jdbc:oracle:thin:@127.0.0.1:1521:ORCL",
jdbc_driver_class: "oracle.jdbc.OracleDriver",
});
const activeOutputView = ref<"result" | "summary" | "explain" | "chart">("result");
const queryStore = useQueryStore();
const explainTabSql = vi.spyOn(queryStore, "explainTabSql").mockResolvedValue({ ok: true, sql });
const execution = useSqlExecution({
activeTab: computed(() => activeTab.value),
activeConnection: computed(() => activeConnection.value),
executableSql: computed(() => sql),
activeOutputView,
});
await execution.tryExplain();
expect(explainTabSql).toHaveBeenCalledWith("tab-1", sql, "oracle", "explain");
});
it("keeps the new-result-tab intent through Redis command confirmation", async () => {
const sql = "DEL user:1";
const activeTab = ref<QueryTab | undefined>({ ...queryTab("0"), sql });
@@ -484,7 +484,9 @@ export function useSqlExecution(deps: {
}
deps.activeOutputView.value = "explain";
const result = await queryStore.explainTabSql(tab.id, sql, deps.activeConnection.value?.db_type, explainMode.value);
const connection = deps.activeConnection.value;
const databaseType = effectiveDatabaseTypeForConnection(connection) ?? connection?.db_type;
const result = await queryStore.explainTabSql(tab.id, sql, databaseType, explainMode.value);
if (!result.ok) {
toast(explainReasonMessage(result.reason), 5000);
return;