( NevemTeve | 2024. 12. 26., cs – 07:10 )

Most úgy tűnik, hogy lenne egy pont, amikor utf8-ra konvertál [szerk: illetve nem konvertál, csak ellenőriz, és ha valid utf8, akkor beállítja az is_utf8 jelzőt], csak sajnos ezt akkor tenné, amikor már belerakta a <*> stringet egy utf8-szekvencia közepébe. Pedig ebben a történetben mindenki csak segíteni akart...

Kicsit megszórtam debuggal, azt vélem látni belőle, hogy a sv_insert az insert-offset-et byte-ként értette, az Oracle viszont character-ben adta. Ezt abból vélem gondolni, hogy az error-offset ékezetmentes változatban is 37.

/-----
oci8.c:ora_sql_error:1001 before insert offset=37
DO_UTF8=1 len/bufsize=53 cur=51 ptr=0x20126e0
0               1                        2                            3
012345678   9   012   3   456   7   89   0    12   3   45   6   789   0   12   3   45   6   7
0                1                                      2                                      3
012345678       901       234       56        78       90       123       45       67       7890123456
select '\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91 t\xc3\xbck\xc3\xb6rf\xc3\xbar\xc3\xb3g\xc3\xa9p' from duale
\-----
/-----
oci8.c:ora_sql_error:1003 after insert offset=37
DO_UTF8=1 len/bufsize=80 cur=54 ptr=0x20126e0
select '\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91 t\xc3\xbck\xc3\xb6rf\xc3\xbar\xc3\xb3g\xc3<*>\xa9p' from duale
\-----