From: "Jacopo Cappellato" <[email protected]>
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" <[email protected]>
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.
OK then forget it ;o)
Jacques
Thanks again,
Jacopo