feat: add Greenplum 7 compatibility and AI SQL generation

Greenplum 7 (PG12-based) compatibility:
- Auto-detect GP via version() string, store DbFlavor per connection
- connect returns ConnectResult with version + flavor
- Fix pg_total_relation_size to use c.oid (universal, safer on both PG/GP)
- Branch is_identity column query for GP (lacks the column)
- Branch list_sessions wait_event fields for GP
- Exclude gp_toolkit schema in schema listing, completion, lookup, AI context
- Smart StatusBar version display: GP shows "GP 7.0.0 (PG 12.4)"
- Fix connection list spinner showing on all cards during connect

AI SQL generation (Ollama):
- Add AI settings, model selection, and generate_sql command
- Frontend AI panel with prompt input and SQL output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 18:24:06 +03:00
parent d5cff8bd5e
commit e8d99c645b
27 changed files with 1276 additions and 113 deletions

View File

@@ -2,6 +2,8 @@ import { invoke } from "@tauri-apps/api/core";
import { listen, type UnlistenFn } from "@tauri-apps/api/event";
import type {
ConnectionConfig,
ConnectResult,
DbFlavor,
QueryResult,
PaginatedQueryResult,
SchemaObject,
@@ -40,7 +42,7 @@ export const testConnection = (config: ConnectionConfig) =>
invoke<string>("test_connection", { config });
export const connectDb = (config: ConnectionConfig) =>
invoke<void>("connect", { config });
invoke<ConnectResult>("connect", { config });
export const disconnectDb = (id: string) =>
invoke<void>("disconnect", { id });
@@ -55,6 +57,9 @@ export const setReadOnly = (connectionId: string, readOnly: boolean) =>
export const getReadOnly = (connectionId: string) =>
invoke<boolean>("get_read_only", { connectionId });
export const getDbFlavor = (connectionId: string) =>
invoke<DbFlavor>("get_db_flavor", { connectionId });
// Queries
export const executeQuery = (connectionId: string, sql: string) =>
invoke<QueryResult>("execute_query", { connectionId, sql });