Hello,
> Please check the *Server side prepare* option of your datasource or
> add UseServerSidePrepare=1 to your connection string.
I tried, but it doesn't work completely. Actually, when I just use
UseServerSidePrepare = 1 in odbc.ini, I get some error like this:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to
allocate 3086129905 bytes) in testbase.php on line 64
Then when I add Parse = 1 it works fine on the command line, ie. when I
call the php-cgi instance with the testscript.
But is soon as I start the script through Apache und mod_php with the
same ldd-dependencies, I again get exhausted memory errors.
I traced the query - it's as simple as "select count(*) from sessions
where cust_id = ?" - and I found these lines:
[ODBC][3429][1320890058.574677][SQLNumResultCols.c][248]
Exit:[SQL_SUCCESS]
Count = 0xb7f2a80c -> 1
[ODBC][3429][1320890058.574872][SQLColAttributes.c][280]
Entry:
Statement = 0x9c3cff0
Column Number = 1
Field Identifier = SQL_COLUMN_NAME
Character Attr = 0xb7f2a82c
Buffer Length = 32
String Length = 0xbff54e3a
Numeric Attribute = (nil)
[ODBC][3429][1320890058.576863][SQLColAttributes.c][597]
Exit:[SQL_SUCCESS]
So SQLNumResultCols = 1 seems to be correct. But String Length =
0xbff54e3a seems to be very absurd! That's 3220524602 bytes which means
around 3 GB! But the correct result is an integer of 5. Any idea how
this problem arises? Does psqlodbc through mod_php not set the
Parse-option? What is the actual problem? I didn't have such problems
with the DBD::Pg driver.
Kind regards
Marten