busya
18f88a6928
fix(translate): repair dialect detection — UPSERT routing, whitespace, MySQL quoting, dead code
CRITICAL BUG-1: UPSERT routing generated invalid ON CONFLICT for MySQL,
MSSQL, Snowflake, Oracle, DuckDB. Now uses explicit UPSERT_SUPPORTED_DIALECTS
({'postgresql', 'redshift'}) — unknown dialects get plain INSERT.
BUG-2: _extract_dialect did not strip whitespace, inconsistent with
get_dialect_from_database. Fixed guard + normalized value.
BUG-3: Whitespace-only input (' ', '\n') returned itself instead of 'unknown'.
BUG-4: Dead code — removed 'greenplum' from POSTGRESQL_DIALECTS
(always normalized to 'postgresql').
BUG-5: MySQL identifier quoting used double quotes instead of native backticks.
Added BACKTICK_DIALECTS set.
MOCK-FIX: test_at_least_one_row_per_batch patched wrong path
(executor.estimate_token_budget -> _batch_sizer.estimate_token_budget).
Adds 131 orthogonal tests covering all 4 dialect detection code paths
across input formats, normalization, routing, quoting, encoding,
schema validation, and cross-component consistency.
2026-05-31 10:26:03 +03:00
..
2026-05-31 10:26:03 +03:00
2026-05-17 14:18:02 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-05-20 17:15:31 +03:00
2026-05-26 19:18:28 +03:00
2026-05-29 11:10:11 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-05-17 19:18:32 +03:00
2026-05-20 17:15:31 +03:00
2026-05-26 09:30:41 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 11:14:25 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 11:14:25 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 11:14:25 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 14:58:49 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 09:30:41 +03:00
2026-05-18 10:36:58 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 09:30:41 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 09:30:41 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 09:30:41 +03:00
2026-05-26 19:18:28 +03:00
2026-05-17 19:18:32 +03:00
2026-05-18 10:56:21 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 11:14:25 +03:00
2026-05-21 00:02:45 +03:00
2026-05-26 09:30:41 +03:00
2026-05-29 11:10:11 +03:00
2026-05-26 09:30:41 +03:00
2026-05-26 19:18:28 +03:00
2026-05-17 19:18:32 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 09:30:41 +03:00
2026-05-17 19:18:32 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 09:30:41 +03:00
2026-05-26 09:30:41 +03:00
2026-05-17 19:18:32 +03:00
2026-05-17 19:18:32 +03:00
2026-05-26 19:18:28 +03:00
2026-05-29 15:36:36 +03:00
2026-05-31 10:26:03 +03:00
2026-05-29 15:36:36 +03:00
2026-05-31 10:26:03 +03:00
2026-05-29 15:36:36 +03:00