fix(oracle): skip rowid for view data queries

This commit is contained in:
t8y2 committed 2026-07-04 17:07:43 +08:00
1 parent 7e7c4944e9
commit 223ecbec20
16 files changed
+78 -31

No files matched your search

@@ -33,7 +33,7 @@ export function useDataGridActions(activeTab: ComputedRef<QueryTab | undefined>)
const effectiveDbType = effectiveDatabaseTypeForConnection(config);
const tableMeta = tableMetaForDataTab(tab);
const primaryKeys = tab.tableMeta ? tab.tableMeta.primaryKeys : (tableMeta?.primaryKeys ?? []);
const useRowId = usesSyntheticRowIdKey(effectiveDbType, primaryKeys);
const useRowId = usesSyntheticRowIdKey(effectiveDbType, primaryKeys, tableMeta?.tableType);
return buildTableSelectSql({
databaseType: effectiveDbType,
schema: tableMeta?.schema,
@@ -14,6 +14,7 @@ export type NavigationTarget = {
database: string;
schema?: string;
tableName: string;
tableType?: string;
columnName?: string;
whereInput?: string;
};
@@ -55,13 +56,15 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
if (!config) throw new Error("Connection config not found");
const effectiveDbType = effectiveDatabaseTypeForConnection(config);
const querySchema = metadataSchemaForConnection(config, target.database, target.schema);
const targetTableType = target.tableType ?? "TABLE";
if (config.db_type === "neo4j") {
const columns = await api.getColumns(target.connectionId, target.database, querySchema, target.tableName);
const primaryKeys = editableRowIdentifierColumns(effectiveDbType, columns);
const primaryKeys = editableRowIdentifierColumns(effectiveDbType, columns, undefined, targetTableType);
const sql = await buildTableSelectSql({
databaseType: effectiveDbType,
schema: target.schema,
tableName: target.tableName,
tableType: targetTableType,
columns: columns.map((column) => column.name),
primaryKeys,
whereInput: target.whereInput,
@@ -71,7 +74,7 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
queryStore.setTableMeta(tabId, {
schema: target.schema,
tableName: target.tableName,
tableType: "TABLE",
tableType: targetTableType,
columns,
primaryKeys,
});
@@ -82,6 +85,7 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
databaseType: effectiveDbType,
schema: target.schema,
tableName: target.tableName,
tableType: targetTableType,
whereInput: target.whereInput,
limit: pageLimit,
});
@@ -89,7 +93,7 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
queryStore.setTableMeta(tabId, {
schema: target.schema,
tableName: target.tableName,
tableType: "TABLE",
tableType: targetTableType,
columns: [],
primaryKeys: [],
});
@@ -106,6 +110,7 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
databaseType: effectiveDbType,
schema: target.schema,
tableName: target.tableName,
tableType: targetTableType,
whereInput: target.whereInput,
limit: 0,
});
@@ -115,12 +120,12 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
try {
const columns = await api.getColumns(target.connectionId, target.database, querySchema, target.tableName);
const indexes = await api.listIndexes(target.connectionId, target.database, querySchema, target.tableName).catch(() => []);
const primaryKeys = editableRowIdentifierColumns(effectiveDbType, columns, indexes);
const useRowId = usesSyntheticRowIdKey(effectiveDbType, primaryKeys);
const primaryKeys = editableRowIdentifierColumns(effectiveDbType, columns, indexes, targetTableType);
const useRowId = usesSyntheticRowIdKey(effectiveDbType, primaryKeys, targetTableType);
queryStore.setTableMeta(tabId, {
schema: target.schema,
tableName: target.tableName,
tableType: "TABLE",
tableType: targetTableType,
columns,
primaryKeys,
});
@@ -129,6 +134,7 @@ async function openTableTarget(target: NavigationTarget, options: { tableInfoTab
databaseType: effectiveDbType,
schema: target.schema,
tableName: target.tableName,
tableType: targetTableType,
whereInput: target.whereInput,
primaryKeys,
columns: columns.map((column) => column.name),