fix(trino): support schema-aware table browsing and inserts

This commit is contained in:
t8y2
2026-05-13 20:46:27 +08:00
parent 2ba97869a1
commit 7f19a0376a
7 changed files with 61 additions and 4 deletions
+4 -2
View File
@@ -812,7 +812,9 @@ const tableUsesSyntheticRowId = computed(() =>
usesSyntheticRowIdKey(props.databaseType, props.tableMeta?.primaryKeys ?? []),
);
const hiveTableTransactional = ref<boolean | undefined>(undefined);
const canEditExistingRows = computed(() => canEditExistingTableRows(props.databaseType, hiveTableTransactional.value));
const canEditExistingRows = computed(() =>
canEditExistingTableRows(props.databaseType, hiveTableTransactional.value, props.tableMeta?.primaryKeys ?? []),
);
watch(
() => [props.databaseType, props.connectionId, props.database, props.tableMeta?.schema, props.tableMeta?.tableName],
async () => {
@@ -2033,7 +2035,7 @@ defineExpose({
{{ t("grid.refresh") }}
</Button>
<Button
v-if="useTransaction && editable && (tableMeta || customSave)"
v-if="editable && (tableMeta || customSave)"
variant="ghost"
size="sm"
class="h-5 text-xs px-1.5 shrink-0"
+9 -1
View File
@@ -12,6 +12,7 @@ export const SCHEMA_AWARE_TYPES = new Set<DatabaseType>([
"jdbc",
"h2",
"snowflake",
"trino",
"db2",
"informix",
]);
@@ -109,7 +110,14 @@ export const SINGLE_DATABASE_TYPES = new Set<DatabaseType>(["oracle", "dameng"])
export const FETCH_FIRST_TYPES = new Set<DatabaseType>(["oracle", "dameng"]);
export const TREE_SCHEMA_TYPES = new Set<DatabaseType>(["postgres", "redshift", "sqlserver", "gaussdb", "jdbc"]);
export const TREE_SCHEMA_TYPES = new Set<DatabaseType>([
"postgres",
"redshift",
"sqlserver",
"gaussdb",
"jdbc",
"trino",
]);
export const PG_LIKE_STRUCTURE_TYPES = new Set<DatabaseType>(["postgres", "redshift", "gaussdb"]);
+4 -1
View File
@@ -12,18 +12,21 @@ export function editablePrimaryKeys(databaseType: DatabaseType | undefined, colu
export function isTableDataEditable(databaseType: DatabaseType | undefined, primaryKeys: string[]): boolean {
if (databaseType === "hive") return true;
if (databaseType === "trino") return true;
return primaryKeys.length > 0;
}
export function supportsDataGridTransaction(databaseType: DatabaseType | undefined): boolean {
return databaseType !== "hive";
return databaseType !== "hive" && databaseType !== "trino";
}
export function canEditExistingTableRows(
databaseType: DatabaseType | undefined,
hiveTableTransactional?: boolean,
primaryKeys: string[] = [],
): boolean {
if (databaseType === "hive") return hiveTableTransactional === true;
if (databaseType === "trino") return primaryKeys.length > 0;
return true;
}