Skip to content

fix: PSQL query regressions#3748

Merged
davidleomay merged 5 commits into
developfrom
fix/psql-query-regressions
May 22, 2026
Merged

fix: PSQL query regressions#3748
davidleomay merged 5 commits into
developfrom
fix/psql-query-regressions

Conversation

@TaprootFreak
Copy link
Copy Markdown
Collaborator

Kontext

Nach dem MSSQL→PostgreSQL-Cutover (#3620, #3744, #3745) zeigen die PRD-Logs systematische HTTP 500 auf mehreren Endpoints. Diese PR behebt zwei bestätigte Query-Regressionen.

Fixes

1. getNextRef — MSSQL-LIKE-Zeichenklasse
user.repository.ts filterte mit Like('%[0-9]-[0-9]%'). Die [0-9]-Zeichenklasse ist MSSQL-LIKE-Syntax; PostgreSQL-LIKE behandelt [ ] als Literale → 0 Treffer → findOne liefert nullCannot read properties of null (reading 'ref').
Betroffen: PUT /v1/userData/* und GET /v1/auth/mail/confirm (Account-Merge).
Fix: PostgreSQL-Regex-Operator ~ '[0-9]-[0-9]' via Raw().

2. transaction/single — PostgreSQL-1664-Spalten-Limit
getTransaction() lädt einen tiefen Relations-Baum (buyCrypto+6, buyFiat+4, user→userData u.a.). Die JOIN-Strategie erzeugt eine SELECT-Targetlist über ~23 Entities und überschreitet PostgreSQLs Limit von 1664 Spalten (QueryFailedError: target lists can have at most 1664 entries). MSSQL erlaubte mehr.
Fix: relationLoadStrategy: 'query' global in der TypeORM-Config — jede Relation wird als separate Query geladen statt als Riesen-JOIN. Behebt das Limit app-weit, nicht nur an dieser Stelle.

Nicht in dieser PR

  • GET /v1/support/*relation "support_note" does not exist: fix: support note migration for PSQL #3744 ist bereits auf main; die Tabelle fehlt auf der PRD-DB. Deployment-/Migrations-Frage, kein Code-Fix.
  • PUT /v1/buyCrypto/*Converting circular structure to JSON: eigenständiger Serialisierungs-Bug, separat zu untersuchen.

Test plan

  • PUT /v1/userData/{id} für einen User ohne ref mit KYC-Level ≥ 50 → ref wird vergeben, kein 500
  • GET /v1/auth/mail/confirm mit Account-Merge → kein 500
  • GET /v1/transaction/single?uid=... → 200 statt target lists-Fehler
  • Stichprobe weiterer Endpoints mit tiefen Relations (Verhaltensänderung durch globalen relationLoadStrategy)

TaprootFreak and others added 2 commits May 22, 2026 11:20
- user.repository: replace MSSQL LIKE character-class with PostgreSQL
  regex operator in getNextRef; the [0-9] class matched 0 rows on
  Postgres, causing a null deref on every userData update and mail
  confirm with account merge
- config: set relationLoadStrategy 'query' to avoid PostgreSQL's
  1664-column target-list limit when finding deep relation trees
  (broke GET /v1/transaction/single)
@davidleomay davidleomay marked this pull request as ready for review May 22, 2026 09:39
@davidleomay davidleomay self-requested a review as a code owner May 22, 2026 09:39
@github-actions
Copy link
Copy Markdown

❌ ESLint: 1 errors, 2 warnings

@davidleomay davidleomay merged commit 23a5f84 into develop May 22, 2026
7 checks passed
@davidleomay davidleomay deleted the fix/psql-query-regressions branch May 22, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants