- Add accessCapabilities based on UCanAccess DDL support testing
- CREATE TABLE, ADD COLUMN, CREATE INDEX are supported
- DROP COLUMN, ALTER COLUMN, RENAME COLUMN, DROP INDEX are not supported
- Use H2 SQL dialect for generated DDL
When parseFilterValue converts numeric strings to JS Number, integers
exceeding Number.MAX_SAFE_INTEGER lose precision (e.g. 2062449923745665025
becomes 2062449923745665024). Keep them as strings so the Rust backend can
parse them exactly via serde_json::Number.
Many JDBC drivers depend on SLF4J and commons-lang3 at runtime but
don't shade them. Bundling these in the plugin JAR avoids
NoClassDefFoundError when users import driver JARs.
Previously, cancelling a DuckDB query only dropped the tokio CancellationToken,
but the actual DuckDB C call continued running in spawn_blocking. This caused
the UI to show "正在停止..." until timeout silently expired.
Now, RunningQueries stores per-execution interrupt callbacks. For DuckDB and
ExternalTabular branches, an InterruptHandle is registered on query start so
cancel() calls duckdb_interrupt() at the C level, truly stopping the query.
- table_structure_sql: merge separate MODIFY statements for type, nullability,
and default into a single MODIFY statement. This fixes Dameng's requirement
that MODIFY includes the full column definition.
- DbxJdbcPlugin: move DATA_DEFAULT to first SELECT position and read it first
in the ResultSet loop (LONG columns must be read before other columns).
Add an "SRV (MongoDB Atlas)" toggle in the MongoDB connection form.
When enabled, the backend uses mongodb+srv:// scheme and omits the
port, matching the behavior of pasting a mongodb+srv:// URL directly.
Previously execute_batch always used the hardcoded 30s default timeout,
ignoring the user's query_timeout_secs connection setting. This caused
long-running ALTER TABLE statements on large tables to time out even
when the user configured a longer timeout or disabled it entirely.
Add a configurable option in Settings > Navigation to reuse an existing data
tab instead of creating a new one each time a table is clicked in the sidebar.
pgvector's vector(N) type uses a custom binary format (4-byte header
+ N×4-byte f32 array) that tokio-postgres doesn't natively support.
Add a PgRawBytes adapter and decoder so vector columns render as
JSON float arrays instead of null.