keboola / php-db-import

MIT License
4 stars 0 forks source link

Add query timeout #59

Closed yustme closed 5 years ago

yustme commented 5 years ago

Add a query timeout parametr. ExceptionHandler is extended to handle according error message

Relates to https://github.com/keboola/connection/pull/1829

yustme commented 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:

Halama commented 5 years ago

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

yustme commented 5 years ago

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();
    }   
}
Halama commented 5 years ago

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.

yustme commented 5 years ago

Udělal jsem to přímo v tom kodu KBC, protože jak si napsal je to mnohem menší úprava