Known Issues
Живой реестр известных проблем для repeatable triage.
Каноничный источник: этот runbook в angarabook/src/operations/.
Purpose
- Явно фиксировать известные gaps;
- привязывать reproducible repro + expected SQLSTATE/shape;
- упрощать release decision.
Usage rules
- Добавлять issue сразу, когда проблема воспроизводима и временно допустима.
- Предпочитать ссылку на regression test, который фиксирует ожидаемое поведение.
- Закрывать issue только после фикса + обновления tests/evidence.
Entry template (minimum)
- ID
- Area
- Severity
- Affects
- Repro
- Expected
- Observed
- Status
- Owner
- Next step
Fixed in v0.6.5.5
GAP-C2: UPDATE SET col = func() not supported
- Status: Fixed in RM-0.6.5.5.
- Summary:
UPDATE SETnow supports function calls (e.g.,NOW()) andCASTexpressions, unblocking Odoo 19 record writes.
GAP-C5: date_trunc() not implemented
- Status: Fixed in RM-0.6.5.5.
- Summary:
date_trunc(field, timestamp)is fully implemented for all standard fields, unblocking Odoo reporting.
GAP-DJ-001/002: Missing set_config() and obj_description()
- Status: Fixed in RM-0.6.5.5.
- Summary: Added stubs for
set_configandobj_descriptionto ensure Django ORM introspection and migrations work without monkey-patches.
Protocol: Timestamp UTC serialization & OID mapping
- Status: Fixed in RM-0.6.5.5.
- Summary:
TIMESTAMP WITHOUT TIME ZONEis now correctly mapped to OID 1114 and serialized in UTC without offset, fixing time-shift issues inpsycopg3.
Fixed in v0.6.5.3
GAP-RUST-001: Missing ParameterDescription in Extended Query Protocol
- Status: Fixed in RM-0.6.5.3.
- Summary:
ParameterDescription(‘t’) is now sent beforeRowDescription/NoDatafor Statement Describe, unblockingsqlxandtokio-postgresEQP.
GAP-A1: Cast expressions fail in Extended Query Protocol
- Status: Fixed in RM-0.6.5.3.
- Summary:
SELECT 1::int4and arithmetic via EQP no longer cause “vector type mismatch Utf8”.
GAP-A2: date/timestamp encoding violation in pgwire
- Status: Fixed in RM-0.6.5.3.
- Summary:
dateandtimestampvalues are returned in ISO-8601 format, not as raw integers.
GAP-C1: pg_catalog.pg_index missing
- Status: Fixed in RM-0.6.5.3.
- Summary:
pg_catalog.pg_indexnow returns an empty resultset instead of an error.
GAP-C3: IS NULL / IS NOT NULL predicates not supported
- Status: Fixed in RM-0.6.5.3.
- Summary:
IS NULLandIS NOT NULLwork in the general query path.
GAP-C4: = ANY(ARRAY[…]) not supported
- Status: Fixed in RM-0.6.5.3.
- Summary:
col = ANY(ARRAY[v1, v2, v3])now works (desugars toIN).
GAP-C6: pg_class WHERE filter bypass
- Status: Fixed in RM-0.6.5.3.
- Summary:
pg_class WHERE relname = 'foo'filter now works correctly.
GAP-C7: CREATE SEQUENCE + nextval() catalog registration
- Status: Fixed in RM-0.6.5.3.
- Summary:
CREATE SEQUENCE+nextval()works in the simple query path.
KI-2026-005: SQLSTATE leakage
- Status: Fixed in RM-0.6.5.3.
- Summary: Internal execution errors (e.g., raw
54000) are no longer leaked directly to clients and are properly mapped to standard protocol errors.
Current open issues
KI-2026-006 — SELECT ... FOR UPDATE supports only the documented single-table form
- ID:
KI-2026-006 - Area: SQL / Row locking
- Severity: Medium (application compatibility)
- Affects: clients that rely on
SELECT ... FOR UPDATEwith joins, subqueries,NOWAIT,SKIP LOCKED, orFOR SHARE - Repro:
- Prepare two simple tables:
SET search_path = public; CREATE TABLE t_lock_a (id INT); CREATE TABLE t_lock_b (id INT); INSERT INTO t_lock_a (id) VALUES (1); INSERT INTO t_lock_b (id) VALUES (1); - Run a locking query outside the documented single-table form:
SELECT t_lock_a.id FROM t_lock_a JOIN t_lock_b ON t_lock_a.id = t_lock_b.id FOR UPDATE; - Or run a lock-clause variant:
SELECT id FROM t_lock_a FOR UPDATE SKIP LOCKED;
- Prepare two simple tables:
- Expected: unsupported locking forms fail closed with SQLSTATE
0A000 feature_not_supported; parser-level incompatibility may fail earlier with SQLSTATE42601 syntax_error. - Observed: only the plain single-table
FOR UPDATEpath withidin projection is part of the documented contract. - Status: Open.
- Owner: SQL / MVCC owner
- Next step: define the full lock-clause compatibility matrix before documenting additional forms as supported.
KI-2026-004 — current_setting() returned NULL for unknown keys (fixed RM-0.6.5.1)
- ID:
KI-2026-004 - Area: SQL / Session claims
- Severity: Minor (operator UX)
- Affects: clients calling
current_setting('app.nonexistent')and expecting PostgreSQL-compatible error - Repro:
SELECT current_setting('app.nonexistent')on a session without that claim set - Expected:
ERROR: unrecognized configuration parameter "app.nonexistent"(SQLSTATE42704) - Observed: result was
NULL(silent empty result), diverging from PostgreSQL semantics - Status: Fixed (
RM-0.6.5.1 Track Z item Z4). Unit testcurrent_setting_unknown_key_returns_42704pins the fix. - Owner: Core team
- Next step: N/A — closed.
KI-2026-001 — WAL strict-mode latency on write-heavy workloads
- ID:
KI-2026-001 - Area: WAL / Commit path
- Severity: Major (performance)
- Affects: deployments with
ANGARABASE_TRANSACTION_LOG_DURABILITY=strictand frequent DML commits - Repro:
- Run write-heavy transactional workload (
INSERT/UPDATE/DELETE) in strict durability mode. - Compare commit latency against the same workload with grouped flush boundaries.
- Run write-heavy transactional workload (
- Expected: strict mode preserves durability with near-commit-boundary flush cost.
- Observed: per-record fsync amplification can inflate commit latency noticeably.
- Status: Open (tracked as
TD-2026-0184, scheduled RM-0.6.4.0) - Owner: WAL owner / Core team
- Next step: land commit-boundary fsync consolidation and re-run strict-mode benchmark pack.
KI-2026-002 — Grafana 12 UI importer fails on canonical dashboard JSON
- ID:
KI-2026-002 - Area: Observability / Dashboards
- Severity: Medium (operator UX)
- Affects: manual dashboard import through Grafana 12 UI
- Repro:
- Open Grafana 12.x and use “Import dashboard”.
- Load one of
tools/observability/grafana/*.json.
- Expected: dashboard imports via UI without manual rewriting.
- Observed: Grafana 12 UI may fail with
Cannot read properties of undefined (reading 'type'). - Status: Mitigated workaround available (
tools/observability/grafana/import/bundle, tracked byTD-2026-0163) - Owner: Observability owner
- Next step: keep canonical JSON as source of truth; for Grafana 12 manual import use the
import/bundle flow.
KI-2026-003 — No offline major-version migrator yet
- ID:
KI-2026-003 - Area: Upgrade / Operations
- Severity: Medium (operational risk)
- Affects: major upgrades that require on-disk format change
- Repro:
- Prepare data dir with one format version.
- Attempt direct startup with incompatible major format.
- Expected: supported offline migrator path for major on-disk transitions.
- Observed: fail-closed behavior works, but migration path is still dump/restore.
- Status: Open (
TD-2026-0170, linked riskR-0.6.3.11-04) - Owner: Core team
- Next step: design and implement offline migrator contract in a dedicated train.