Closed yustme closed 5 years ago
@Halama pokud to dám přímo do spojení, tak už mám všechny dotazy omezený na ten timeout a nemůžu spustit něco delšího (nevím jestli to někde bude potřeba, ale je to omezení).
Když se vyhodí nějaká vyjímka, tak předpokládám, že ten kód skončí a jelikož to je SESSION
tak při dalším spojení jsem zase na původní hodnotě.
Ten UNSET
určitě :+1:
No ono nikdy moc nemůžeš vědět jak to někdo použije a jestli to po vyjímce žije dál nebo ne. Ale dejme tomu. Ještě si říkám jestli se tady na to nevyprdnout, moc se mi to nezdá. A neudělat to jako to je u Redshiftu přímo v appce tam kde to je potřeba https://github.com/keboola/connection/blob/ee14b2cca06e3224c5826244d8e893dae2bd6a46/application/modules/storage/services/Backend/Redshift.php#L65
Tzn. v případě toho data preview pro snflk ten alter sesssion timeout hodit sem https://github.com/keboola/connection/blob/ee14b2cca06e3224c5826244d8e893dae2bd6a46/application/modules/storage/services/BucketBackend/Snowflake.php#L331
A co udělat:
if ($timeoutInSeconds) {
$this->setTimeout($timeoutInSeconds);
}
try {
$stmt = odbc_prepare($this->connection, $sql);
odbc_execute($stmt, $this->repairBinding($bind));
odbc_free_result($stmt);
} catch (\Throwable $e) {
throw (new ExceptionHandler())->createException($e);
} finally {
if ($timeoutInSeconds) {
$this->disableTimeout();
}
}
jo tuhle variantu jsem myslel tím že by se to dalo ošetřit. Nechávám to na tobě jestli to upravit tady v té třídě nebo ten alter session zavolat v appce.
Udělal jsem to přímo v tom kodu KBC, protože jak si napsal je to mnohem menší úprava
Add a query timeout parametr. ExceptionHandler is extended to handle according error message
Relates to https://github.com/keboola/connection/pull/1829