On May 24, 2012, at 5:06 PM, Adam Heath wrote:

> On 05/24/2012 03:22 AM, Jacopo Cappellato wrote:
>> 
>> On May 24, 2012, at 9:04 AM, Jacques Le Roux wrote:
>> 
>>> From: "Jacopo Cappellato" <jacopo.cappell...@hotwaxmedia.com>
>>>> On May 23, 2012, at 9:25 PM, Adam Heath wrote:
>>>> 
>>>>> On 05/23/2012 01:13 PM, Jacopo Cappellato wrote:
>>>>>> Using count() was simply a trick to be sure to get a record back even if 
>>>>>> the entity is empty... but if we use an entity that we are sure is 
>>>>>> populated we don't have to use it, of course. Of course if we use 
>>>>>> count(*) we have to use it in an entity with a very low number of 
>>>>>> rows... but I too would prefer to avoid it.
>>>>> 
>>>>> select 1;
>>>> 
>>>> Thank you Adam, this is the "trick" I was looking for when I mentioned 
>>>> option #3 in my first email.
>>>> I will test the system with it and then commit.
>>>> 
>>>> Jacopo
>>> 
>>> Which entity will you use Jacopo?
>> 
>> When I first saw Adam's comment I thought he was suggesting to simply execute
>> 
>> "select 1"
>> 
>> in order to run a "query" with no table to return a "record" with one field 
>> containing 1.
>> But I maybe misunderstood the suggestion and at least on Derby this doesn't 
>> seem to work; but I still need to fully test.
>> In my opinion adding a new entity for this would be an overkill; one 
>> solution could be the following:
>> 
>> select count(key_name) from entity_key_store where 1 = 2
> 
> Ah, grr, I'm so used to postgres, sorry for the trick not working.
> 
> In oracle, postgres, and mysql, the following works.  It returns 0
> rows, but tests the connection, and sql parsing in the server.  Would
> this be good enough?
> 
> select 1 from entity_key_store where key_name = '' limit 1;
> 
> Using '1 = 2' still causes a SEQ_SCAN on the table(explain in postgres
> says this).  key_name has an index on it, so that part is faster.
> Since key_name is the primary key, you might not need the limit, but
> it couldn't hurt(except for a slightly slower parsing of the sql).

Yeah, I like it, thanks man!

Jacques: it is probably not a bad idea to add an attribute to make it 
configurable from the datasource xml setup but at the moment I would not spend 
too much time on this; if you want I can create a Jira ticket with low priority 
as a reminder for the future.
But I would actually avoid it also because the new JDBC API has a isValid (or 
similar) method that should replace this trick at some point in the future.

Thanks again,

Jacopo



Reply via email to