fix(dwh): validate adapter limits strictly

This commit is contained in:
2026-07-11 20:19:05 +02:00
parent 216984aac8
commit f6302b31dd
7 changed files with 84 additions and 19 deletions
+9 -3
View File
@@ -9,7 +9,14 @@ il client mantiene solo l'iniezione del LIMIT (per il rilevamento del troncament
import time
from tht.execute import ExecResult, ExecutionError, PlanSummary, _inject_limit, assert_read_only
from tht.execute import (
ExecResult,
ExecutionError,
PlanSummary,
_inject_limit,
assert_read_only,
require_positive_int,
)
from tht.rest.client import RestError
from tht.rest.explain import parse_text_plan
@@ -17,8 +24,7 @@ from tht.rest.explain import parse_text_plan
def run_controlled_rest(client, sql: str, *, limit: int) -> ExecResult:
# Guard read-only client-side anche sul path REST (D7): non delegare l'unica verifica
# al server. Stesso check strutturale del path diretto.
if limit <= 0:
raise ValueError("limit must be a positive integer")
limit = require_positive_int(limit, name="limit")
assert_read_only(sql)
final_sql, injected = _inject_limit(sql, limit)
start = time.monotonic()