You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Collin Peters <ca...@gmail.com> on 2007/03/16 00:13:36 UTC

Support for database specific SQL config

Hello again,

I am wondering if iBatis has any kind of support for database level
SQL config.  I am using PostgreSQL as my dbms and it has the ability
to set certain values to be used in the SQL 'session'.  For example,
if I am in a different timezone than the server, the call to 'SELECT
CURRENT_TIME' (or SELECT now()) should return my current time, not the
servers current time.

http://www.postgresql.org/docs/8.1/interactive/sql-set.html

In an old PHP project I had, I included this SQL in an abstraction
layer.  i.e. I would call db_query("SELECT ...")  instead of
pg_query("SELECT ...").   In the db_query abstraction call I would
prepend the following SQL "SET TIME ZONE 'PST8PDT;".  So the full SQL
executed would be:
SET TIME ZONE 'PST8PDT;
SELECT ...

PostgreSQL would then run that query as if it were in my timezone.
Hopefully that is clear.  I am wondering if iBatis has any
functionality built in for this.  I could not find anything in the
docs about this and didn't know where to begin for searching for it
either.  I am hoping there is some iBatis magic that makes this all
easier.  It would be a nightmare to have to manually add that bit of
SQL to every other piece of SQL I have.

Regards,
Collin

Re: Support for database specific SQL config

Posted by Chris Lamey <cl...@localmatters.com>.
I don't know offhand, but I would a) first see if the postgres JDBC can
support what you want (because if it can't, iBATIS can't either) and b)
try a simple throwaway app with iBATIS to see what happens.

Personally, I would try another approach, using session and set like
that isn't something I've seen before in the Java world.  The postgres
now() function returns with a timezone (if your column is setup to use a
timezone), so I usually just have a SimpleDateFormat'er in a higher
layer that takes the returned value from the db and deals with it locale
specific.  That way if you cache a date from the db via iBATIS, it can
be interpreted into multiple locales.

Cheers,
Chris

On Thu, 2007-03-15 at 16:13 -0700, Collin Peters wrote:
> Hello again,
> 
> I am wondering if iBatis has any kind of support for database level
> SQL config.  I am using PostgreSQL as my dbms and it has the ability
> to set certain values to be used in the SQL 'session'.  For example,
> if I am in a different timezone than the server, the call to 'SELECT
> CURRENT_TIME' (or SELECT now()) should return my current time, not the
> servers current time.
> 
> http://www.postgresql.org/docs/8.1/interactive/sql-set.html
> 
> In an old PHP project I had, I included this SQL in an abstraction
> layer.  i.e. I would call db_query("SELECT ...")  instead of
> pg_query("SELECT ...").   In the db_query abstraction call I would
> prepend the following SQL "SET TIME ZONE 'PST8PDT;".  So the full SQL
> executed would be:
> SET TIME ZONE 'PST8PDT;
> SELECT ...
> 
> PostgreSQL would then run that query as if it were in my timezone.
> Hopefully that is clear.  I am wondering if iBatis has any
> functionality built in for this.  I could not find anything in the
> docs about this and didn't know where to begin for searching for it
> either.  I am hoping there is some iBatis magic that makes this all
> easier.  It would be a nightmare to have to manually add that bit of
> SQL to every other piece of SQL I have.
> 
> Regards,
> Collin

Re: Support for database specific SQL config

Posted by Jeff Butler <je...@gmail.com>.
You could accomplish this by writing your own implementation for the
<dataSource> element.  Your implementation could delegate to some existing
implementation, but set up the connection before returning it to iBATIS.

Jeff Butler



On 3/15/07, Collin Peters <ca...@gmail.com> wrote:
>
> Hello again,
>
> I am wondering if iBatis has any kind of support for database level
> SQL config.  I am using PostgreSQL as my dbms and it has the ability
> to set certain values to be used in the SQL 'session'.  For example,
> if I am in a different timezone than the server, the call to 'SELECT
> CURRENT_TIME' (or SELECT now()) should return my current time, not the
> servers current time.
>
> http://www.postgresql.org/docs/8.1/interactive/sql-set.html
>
> In an old PHP project I had, I included this SQL in an abstraction
> layer.  i.e. I would call db_query("SELECT ...")  instead of
> pg_query("SELECT ...").   In the db_query abstraction call I would
> prepend the following SQL "SET TIME ZONE 'PST8PDT;".  So the full SQL
> executed would be:
> SET TIME ZONE 'PST8PDT;
> SELECT ...
>
> PostgreSQL would then run that query as if it were in my timezone.
> Hopefully that is clear.  I am wondering if iBatis has any
> functionality built in for this.  I could not find anything in the
> docs about this and didn't know where to begin for searching for it
> either.  I am hoping there is some iBatis magic that makes this all
> easier.  It would be a nightmare to have to manually add that bit of
> SQL to every other piece of SQL I have.
>
> Regards,
> Collin
>