[sup] Parameters: forward natively server-side, else strict {name:Type} renderer + parity test

Ouverte
#355 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Calme
Stack technique
sql, typescript

Piste de recherche

Commencez par runQuery et le chemin de requête /api/cluster/{id}/query, puis examinez core/param-serialize.ts et le scanner d’occurrences existant. Notez d’abord si le forwarding natif est disponible ; dans le cas contraire, implémentez le renderer strict spécifié et vérifiez la checklist d’acceptation, notamment la parité des résultats, des types et de toTypeName() avec le comportement natif de param_*.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

enhancement sup

Part of #352. Native param_* are not forwarded by the proxy (verified UNKNOWN_QUERY_PARAMETER).

Preferred: forward params server-side (ACM-side ask)

Given tight ACM integration is a plus, the cleanest fix is to have /api/cluster/{id}/query accept a structured param map (and settings) and bind them natively in ClickHouse — no client-side SQL rewriting, full type parity. Raise with the ACM team first; if accepted, this issue reduces to wiring runQuery's params through the request body.

Fallback: strict client-side {name:Type} renderer

If native forwarding isn't available, render typed value placeholders {name:Type} (CH syntax) → SQL literals, typed values only, no free-form/identifier macros. Do not reuse core/param-serialize.ts (it targets the HTTP param_* channel: passes scalar strings raw, treats unknown types as opaque — not inline-SQL-safe or type-equivalent). Instead a separate strict renderTypedSqlExpression:

  1. explicit allowlist of supported type ASTs (reject unknown);
  2. parse compound values into structured values (never trust free-form strings);
  3. quote every textual component; emit explicit casts where CH semantics need them (e.g. {x:UUID}CAST('…' AS UUID), Date/DateTime64/Decimal/Enum/IPv4/6/large-int);
  4. reuse the existing occurrence scanner's exact spans (ignores placeholders in literals/comments); replace right-to-left.

Acceptance

  • Decision recorded: native forwarding vs. client renderer.
  • If renderer: allowlisted types render + CAST where needed; unsupported values fail closed.
  • Parity test: same query+values via native param_* (public build) vs. this path → identical results, types, and toTypeName().
Langage dominant
TypeScript
Étoiles
8
Forks
2
Merge moyen
1 h 34 min
PR mergées (30 j)
6

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Altinity/altinity-sql-browser

Toutes les issues de Altinity/altinity-sql-browser

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.