keboola / ex-teradata

MIT License
0 stars 0 forks source link

Internal error - A non-numeric value encountered #27

Closed Halama closed 6 years ago

Halama commented 6 years ago
{
    "output": "",
    "errorOutput": "[2018-09-12 06:17:04] CRITICAL: ErrorException:A non-numeric value encountered {\"errFile\":\"\/code\/vendor\/dibi\/dibi\/src\/Dibi\/Result.php\",\"errLine\":459,\"errCode\":0,\"errTrace\":\"#0 \/code\/vendor\/dibi\/dibi\/src\/Dibi\/Result.php(459): Keboola\\\\Component\\\\BaseComponent::Keboola\\\\Component\\\\{closure}(2, 'A non-numeric v...', '\/code\/vendor\/di...', 459, Array)\\n#1 \/code\/vendor\/dibi\/dibi\/src\/Dibi\/Result.php(170): Dibi\\\\Result->normalize(Array)\\n#2 \/code\/src\/Extractor.php(58): Dibi\\\\Result->fetch()\\n#3 \/code\/src\/Extractor.php(44): Keboola\\\\ExTeradata\\\\Extractor->fetchTableRows(Object(Dibi\\\\Result))\\n#4 \/code\/src\/CoreComponent.php(46): Keboola\\\\ExTeradata\\\\Extractor->extractTable('SELECT * FROM \\\"...', '\/data\/out\/table...')\\n#5 \/code\/src\/run.php(25): Keboola\\\\ExTeradata\\\\CoreComponent->run()\\n#6 {main}\",\"errPrevious\":\"\"} []",
    "container": {
        "id": "8654739-8654740-86218-0-keboola-ex-teradata",
        "image": "147946154733.dkr.ecr.us-east-1.amazonaws.com\/developer-portal-v2\/keboola.ex-teradata:0.0.14"
    }
}

It throws this error while fetching dbc.SessionInfo table.

Actimel commented 6 years ago

Co si exportoval za tabulku? Na toto uz narazil @ujovlado kdyz se snazil vyexportovat DBC.CollationsV, imho muzou za to sloupce kde je datovy typ Byte.

Halama commented 6 years ago

dbc.SessionInfo Měli bysme to nějak ošetřit. Buď nějaká konverze nebo v horším případě alespoň zařvat jako user error.

ujovlado commented 6 years ago

Myslim, ze by stacilo nieco ako "show create table xyz" ... a ked narazim na neexportovatelny stlpec (a exportuje sa cela tabulka), skoncilo by to ako user error a mohlo by upozornit, ze ak chcem tu tabulku exportnut, musim ten stlpec vynechat. -> co znamena napisat custom query.

Pri custom query by to mohlo fungovat podobne, leb by sa checklo ci "query string" neobsahuje jeden z vadnych stlpcov (ak by tam niekto napisal "select * from xyz", automaticky by znamenalo, ze obsahuje).

Neviem ako velmi do hlbky to riesit, mozno by zatial stacilo implementovat to do casti ked sa exportuje cela tabulka, to imho pokryje vacsinu pripadov. Ak to nebude stacit, potom ist dalej (checkovat aj custom query a pod.)

Halama commented 6 years ago

na custom query vubec fallbackovat nemusíš, lepší je v tom případě prostě vybrat sloupce které chceš a ty byte sloupce vynechat.

Halama commented 6 years ago

custom query určitě neparsovat nikdy

Actimel commented 6 years ago

Toto bude stejny problem jak jsem si myslel. Je tam sloupec LogonSequenceNo [BYTE(4)], ktery to cele odpali.

Zatim vubec nevim jak to vyresit, imho Dibi si s tim bude mit problem porad. Zatim bych to asi odchytil a vyhodil UserExceptionu az pri tom fetchi - jako takovy hotfix.

@ujovlado to co navrhujes sice vypada hezky, ale neni to dost dobre proveditelne. Zrovna ty vase dve tabulky nejsou realne tabulky, ale jen pohledy. Kdyz si vytahnu, jak byly vytvoreny napr. SHOW VIEW "DBC"."SessionInfo";, tak mi to nic nerekne. Vykopiroval bych, co vrati databaze, ale nemuzu to dostat z virtualboxu.

Halama commented 6 years ago

asi tak jak píšeš no. Ta dibi ten byte koukám vydetekuje jako integer a pak failne https://github.com/dg/dibi/blob/e7539102cb62e36e95c1842af7918ebbf70f4951/src/Dibi/Result.php#L458

Actimel commented 6 years ago

Ja na to koukam pres Teradata Studio Expres co mam ve virtualce a zjistil jsem to, ze puvodne ten sloupec integer je, ale az pak ve view, i kdyz se nijak netransformoval (podle SHOW VIEW), tak uz je jako Byte 😕

Actimel commented 6 years ago

Hotfix jsem zahrnul v #26