OpenGauss is based on PostgreSQL 9.2 and does not support WITH ORDINALITY
(PG 9.4+). When the native pg_get_tabledef() path fails, the fallback DDL
builder calls list_indexes() which previously only had two SQL variants, both
using WITH ORDINALITY — causing "syntax error at or near 'WITH'" on OpenGauss.
Add POSTGRES_INDEXES_OPENGAUSS_SQL as a third fallback that uses generate_series
and array_length instead, both available since PG 8.0.
Previously map_column_type mapped all text types (longtext, mediumtext) to
TEXT (64KB max) and all blob types (longblob, mediumblob) to BLOB (64KB
max). This caused "Data too long" errors when transferring large data from
MariaDB to MySQL.
Also improved INSERT error messages to include the table name and absolute
row number (offset + MySQL row) instead of just chunk index.
Fixes#796
Time-related column types (DATE, DATETIME, TIMESTAMP, TIME, etc.) need
their literal default values wrapped in single quotes. Previously, the
normalize_default function returned values verbatim, so a DATETIME
default like "2024-01-01 00:00:00" would generate invalid SQL:
DEFAULT 2024-01-01 00:00:00
instead of:
DEFAULT '2024-01-01 00:00:00'
SQL expressions (CURRENT_TIMESTAMP, NOW(), etc.) are correctly left
unquoted. Non-temporal types (INT, VARCHAR, etc.) are unaffected.
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.
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.