Excellent suggestion! Unfortunately the kids always veto my ideas for an 
Informix-themed halloween, preferring ghosts and vampires. They don't know real 
horror yet.


> On 11 Sep 2020, at 11:47, Michael Gentry <[email protected]> wrote:
> 
> Hugi...you need to save that story for Halloween...
> 
> 
> On Thu, Sep 10, 2020 at 3:00 PM Hugi Thordarson <[email protected]> wrote:
> 
>> Hi Sébastien,
>> 
>> Do you have the option of upgrading the Informix JDBC-driver? I seem to
>> recall that their more recent drivers *do* support
>> prepareStatement(String,int) but to use a newer JDBC driver you need a
>> compatible version of Informix (can't use the new JDBC-drivers to connect
>> to older versions of the DB). We couldn't do that—all the people that knew
>> the DB server were either dead or retired—but if that's possible in your
>> case, that would probably be the best solution.
>> 
>> ---- Story of an ugly workaround starts. Do not read if you are young,
>> impersonable or mentally unstable. In fact, probably just don't read this
>> at all.
>> 
>> But yes, I encountered this issue a couple of years ago and I didn't
>> really solve it. Cayenne 4.1+ will use prepareStatement( String, int ) if
>> the table has a DB-generated PK column. In my case, the non-solution I
>> ended with was make the generated PK "Cayenne generated". Then I
>> implemented a PKGenerator that just returned "null" for the PK. Then I
>> excluded the PK-column from insert statements using an
>> InsertBatchTranslator (because Informix would not populate the PK/serial's
>> value if it was set to null in the insert statement). Then I just threw
>> away the poor ObjectContext that did all these horrible things and
>> re-fetched the inserted objects in a new context, now with DB generated PKs.
>> This is obviously horrid. But it worked as a temporary workaround while we
>> were in the process of migrating to Postgres.
>> 
>> ---- Ugly workaround ends
>> 
>> So in short: I hope you can upgrade the JDBC driver. Or that I am in the
>> wrong and someone has a better solution for you.
>> 
>> - hugi
>> 
>> 
>> 
>>> On 10 Sep 2020, at 10:24, Sébastien Pérès-Labourdette <
>> [email protected]> wrote:
>>> 
>>> Hi there.
>>> 
>>> While integrating 4.1 we found that the informix jdbc driver from ibm
>>> does not support
>>> IfxSqliConnection:prepareStatement(String,int)
>>> 
>>> Invoked from
>>> connection.prepareStatement(compiled.getSql(), generatedKeys); in
>>> SQLTemplateAction.execute
>>> 
>>> FYI,4.0.2 sqltemplates are fine with this jdbc driver.
>>> 
>>> Is there anything we can do (replacing informix with any other rdbms not
>>> being an option) to get 4.1 sqltemplates running as smooth as the 4.0.2
>>> ones ?
>>> 
>>> --
>>> Sébastien
>>> 
>> 
>> 

Reply via email to