-
-
Notifications
You must be signed in to change notification settings - Fork 233
Transliteration error if connection charset is narrower that storage and requested charsets #8082
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This is by design. When prepare is called, there is no additional information about charsets, then output message is generated using the connection charset. For external routines, they can override client charset. I remember many (all) were against it, fortunately I insisted and maintained it allowing external routines to not be broken by client options. |
Problem is not with output message generated during prepare, it is informational only. Problem is with output message received during |
You are wrong.
|
If you didn't notice: in contrast to isql my test application uses MessageMetadata for openCursor() different from one received after prepare(). If Firebird engine ignores it - this is the bug in the engine that must be fixed. |
And you are not understanding that the things you pass to openCursor was not passed to prepare, and the things ISQL are displaying are things generated at prepare. openCursor does not recompile statement and regenerate its BLR/nodes. I'm not saying it's good. I'm saying it's by design. |
We may check if generate messages using same charset of the original data may work without others problems. |
And it does not need to. The BLR you showed contain message definition and action definition. EXE nodes are generated from second part and they don't (need to) care about first part as long as parameter numbers match so the sole problem is that there is unnecessary data conversion Record -> DSC from prepare() -> DSC from openCursor(). The former conversion must be completely eliminated, not just checked. |
BTW, what does blr_stall do here? Its syntax and purpose is not documented anywhere. |
A funny fact: temporary BLOB created for necessary transliteration is created as a binary one. |
Also a temporary BLOB is created unnecessarily.
Test application is attached.
ctest.zip
The text was updated successfully, but these errors were encountered: