-
-
Notifications
You must be signed in to change notification settings - Fork 8
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
show-stopper bug in pgsql_prepare()
#91
Comments
Yes, that's the problem with the string constants I was talking about in #21 (comment), I am working on it. Thanks |
This should now be fixed in the internal repository, this
is emitted as:
|
Thank you for the update. Should I try to test with the current version or is a bugfix version that includes #88 and maybe even VARCHAR2 likely until mid of next week (I'm on a longer vacation afterwards)? |
I don’t think I can manage a “full” release, a pre-release containing only the updated source and an autoconf-enabled tarball is more likely (but not sure). I already made a few modifications for #88 (letting “smart” cursor init be the default) but I could not reproduce your problem (my test cases pass but there is obviously something missing); a minimal test case, if you have time, might help. The new EXEC SQL VAR stuff could also be coming in the same timeframe and pre-release (still: if possible, not 100% sure) but since it touches a core part of the runtime, I am a little afraid of regressions, so I will have to see how it behaves. Thanks. |
Looks like you've fixed a different issue here - in the compiler.
Sample from above: the prepared statement variable in COBOL contains: Sample 2 (which there is no workaround for): and an even more strange output from
|
pgsql_prepare()
Quick Hack - which possibly chrashes something else and most likely dynamic parameters: - std::string prepared_sql = pgsql_prepare(sql);
+ std::string prepared_sql = std::string(sql); possibly could improved to still support dynamic parameters with some "if find '?' ... but fixing |
You are right, I will check this. |
I rewrote
|
This is a maintenance pre-release for GixSQL. It fixes a few issues and adds two new databases drivers (Oracle and SQLite). The next "standard" release (presumably v1.0.18) will have feature parity for all database drivers. - Added new Oracle driver, based on ODPI - Added new SQLite driver - Solution for "PG: issue with prepared statements" (#99) - Solution for "PCursors cannot be re-opened after close" (#98) - Solution for "libgixpp: setStatus is called for errors without DBI parm passed - sets SQLERRM" (#94) - Solution for "error handling (especially for 07001)" (#92) - Solution for "show-stopper bug in pgsql_prepare" (#91) - Solution for "PREPARE does not work with VARLENGTH groups (ocesql compat)" (#79) - Partial solution for "PREPARE does not work with VARLENGTH groups (ocesql compat)" (#68) - Solution for "The PostgreSQL driver needs START TRANSACTION before using cursors" (#14) - Solution for "FR: support EXEC SQL VAR" (#21) - Fixed a bug in "problems with "codegen / logic issue for "GIXSQLCursorDeclareParams" (#88) - Fixed COMP-3 handling in drivers other than PostgreSQL - Rewrote the test suite (still MSTest-based) to dynamically generate a matrix of test to be run on the various platforms/database drivers
- Added new Oracle driver, based on ODPI - Added new SQLite driver - All the drivers have been updated and now implement the complete set of supported features - Solution for "PG: issue with prepared statements" (#99) - Solution for "PCursors cannot be re-opened after close" (#98) - Solution for "libgixpp: setStatus is called for errors without DBI parm passed - sets SQLERRM" (#94) - Solution for "error handling (especially for 07001)" (#92) - Solution for "show-stopper bug in pgsql_prepare" (#91) - Solution for "PREPARE does not work with VARLENGTH groups (ocesql compat)" (#79) - Partial solution for "PREPARE does not work with VARLENGTH groups (ocesql compat)" (#68) - Solution for "The PostgreSQL driver needs START TRANSACTION before using cursors" (#14) - Solution for "FR: support EXEC SQL VAR" (#21) - Fixed a bug in "problems with "codegen / logic issue for "GIXSQLCursorDeclareParams" (#88) - Solution for "FR: allow mapping of "NoRecCode"' (#95) - added --no-rec-code parameter to gixpp - Tokens in the parser have been labeled to improve diagnostics (pulled PR #96 by @GitMensch) - Fixed COMP-3 handling in drivers other than PostgreSQL - Rewrote the test suite (still MSTest-based) to dynamically generate a matrix of test to be run on the various platforms/database drivers - Added options for parameter generation in gixpp (-a was removed) - Added new GIXSQL_FIXUP_PARAMS option for runtime, to automatically convert parameter format in prepared statments - "Native" cursors are now the default for the PostgreSQL driver - "Smart" cursor initialization is now the default for all cursors, including those declared in WORKING-STORAGE (-L was removed from gixpp), should fix #101 - Removed dynamic cursor emulation from the ODBC driver when using PostgreSQL
That looks to be fixed, so closing. |
The tests #000 and mridoni#91 always fail. This commit disables them temporary.
Disable two tests The tests #000 and mridoni#91 always fail. This commit disables them temporary.
This function eats any quotation -
gixsql/runtime/libgixsql-pgsql/DbInterfacePGSQL.cpp
Lines 265 to 294 in 081674b
Input:
SET APPLICATION_NAME TO "Identifier1 Identifier2 Identifier3"
Output:
SET APPLICATION_NAME TO Identifier1 Identifier2 Identifer3
Result from DB:
Workaround for this specific statement:
SET APPLICATION_NAME TO "Identifier1-Identifier2-Identifier3"
, but that's unlikely to be possible in every other case (and not that easy to look for in the complete code).The text was updated successfully, but these errors were encountered: