fix(dwh): validate adapter limits strictly
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user