Re: JVM crash when select count(*) on large table through JDBC

Lists: pgsql-jdbc
From: "Kai Ruhl" <k(dot)ruhl(at)etamax(dot)de>
To: <pgsql-jdbc(at)postgresql(dot)org>
Subject: JVM crash when select count(*) on large table through JDBC
Date: 2008-02-22 16:25:15
Message-ID: EA13934D0B77D048A9BFD95BDA9D5C7D1DFC05@ariane5.etamax.site
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Hello,

I have a curious problem, which I would like to know whether somebody
can reproduce this: From a JVM using JDBC, I issue

select count(*) from big_table

where big table has more than 20 million entries (timestamps and
numbers). Upon PreparedStatement.executeQuery(), the VM quits, without
any message.

Java VM: 1.4.2-16 (latest one)
Pg-Jdbc: JDBC3 Postgresql Driver, Version 8.3-603
Server: PostgreSQL 8.1.11 (on Debian etch)

The most surprising thing is the lack of any error message (I had
expected a TimeOutException, or OutOfMemoryError, or the like), as if
someone had called System.exit().

The same commando, when executed through pgAdmin III, works.

As suggested on the website (http://jdbc.postgresql.org/lists.html), I
have searched the mailing lists, to no avail so far.

I would highly appreciate any reproduction of these results, or
suggestions for remedy.

Kind regards,

Kai Ruhl


From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Kai Ruhl <k(dot)ruhl(at)etamax(dot)de>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: JVM crash when select count(*) on large table through JDBC
Date: 2008-02-22 19:30:38
Message-ID: 6A512B66-38FD-4CB7-A2BC-73198ECC5563@fastcrypt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc


On 22-Feb-08, at 11:25 AM, Kai Ruhl wrote:

> Hello,
>
> I have a curious problem, which I would like to know whether somebody
> can reproduce this: From a JVM using JDBC, I issue
>
> select count(*) from big_table
>
> where big table has more than 20 million entries (timestamps and
> numbers). Upon PreparedStatement.executeQuery(), the VM quits, without
> any message.
>
It's my understanding that regardless of what a java program is doing
(aside from calling exit, or jni code) , it should never crash.

I would say there is a bug in your jvm.


From: "Andres Olarte" <olarte(dot)andres(at)gmail(dot)com>
To: "Kai Ruhl" <k(dot)ruhl(at)etamax(dot)de>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JVM crash when select count(*) on large table through JDBC
Date: 2008-02-22 20:19:02
Message-ID: 3fccaa690802221219u7c7fd66bk4cc152cb8819e26b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Just did a quick test with synthetic data (20M rows 3 columns: serial,
timestamp, and text). And it worked ok both on Java (with driver
postgresql-8.1-407.jdbc3.jar) and PgAdmin.

Perhaps you could try to build a test case to expose the problem?

On Fri, Feb 22, 2008 at 1:30 PM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:
>
> On 22-Feb-08, at 11:25 AM, Kai Ruhl wrote:
>
> > Hello,
> >
> > I have a curious problem, which I would like to know whether somebody
> > can reproduce this: From a JVM using JDBC, I issue
> >
> > select count(*) from big_table
> >
> > where big table has more than 20 million entries (timestamps and
> > numbers). Upon PreparedStatement.executeQuery(), the VM quits, without
> > any message.
> >
> It's my understanding that regardless of what a java program is doing
> (aside from calling exit, or jni code) , it should never crash.
>
> I would say there is a bug in your jvm.
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
>


From: Kris Jurka <books(at)ejurka(dot)com>
To: Andres Olarte <olarte(dot)andres(at)gmail(dot)com>
Cc: Kai Ruhl <k(dot)ruhl(at)etamax(dot)de>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JVM crash when select count(*) on large table through JDBC
Date: 2008-02-22 20:33:44
Message-ID: Pine.BSO.4.64.0802221531070.24398@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc


On Fri, 22 Feb 2008, Andres Olarte wrote:

> Just did a quick test with synthetic data (20M rows 3 columns: serial,
> timestamp, and text). And it worked ok both on Java (with driver
> postgresql-8.1-407.jdbc3.jar) and PgAdmin.
>
> Perhaps you could try to build a test case to expose the problem?

From a client perspective, select count(*) should be the same no matter
how many rows there are and what types of columns are in the table, so a
test case won't be helpful. If the JVM is just up and dying, that's the
JVM's fault not a pg issue.

Kris Jurka


From: "Andres Olarte" <olarte(dot)andres(at)gmail(dot)com>
To: "Kris Jurka" <books(at)ejurka(dot)com>
Cc: "Kai Ruhl" <k(dot)ruhl(at)etamax(dot)de>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JVM crash when select count(*) on large table through JDBC
Date: 2008-02-22 20:39:54
Message-ID: 3fccaa690802221239t4763c8e8y7ad83e2cd1cfb2a5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

I know it's the same to count 1 o 20M rows, but it takes much longer
to count 20M. I really don't know much about the internal of the
driver, but maybe some kind of time out?

On Fri, Feb 22, 2008 at 2:33 PM, Kris Jurka <books(at)ejurka(dot)com> wrote:
>
> On Fri, 22 Feb 2008, Andres Olarte wrote:
>
> > Just did a quick test with synthetic data (20M rows 3 columns: serial,
> > timestamp, and text). And it worked ok both on Java (with driver
> > postgresql-8.1-407.jdbc3.jar) and PgAdmin.
> >
> > Perhaps you could try to build a test case to expose the problem?
>
> From a client perspective, select count(*) should be the same no matter
> how many rows there are and what types of columns are in the table, so a
> test case won't be helpful. If the JVM is just up and dying, that's the
> JVM's fault not a pg issue.
>
> Kris Jurka
>


From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Andres Olarte <olarte(dot)andres(at)gmail(dot)com>
Cc: "Kris Jurka" <books(at)ejurka(dot)com>, "Kai Ruhl" <k(dot)ruhl(at)etamax(dot)de>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JVM crash when select count(*) on large table through JDBC
Date: 2008-02-22 21:13:18
Message-ID: 6CA15016-F105-4963-B9B2-3462EA2B3B53@fastcrypt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

As Kris said and I said. If your jvm crashes it's a jvm problem.

I know people that have queries that take 20 minutes or more...

Dave
On 22-Feb-08, at 3:39 PM, Andres Olarte wrote:

> I know it's the same to count 1 o 20M rows, but it takes much longer
> to count 20M. I really don't know much about the internal of the
> driver, but maybe some kind of time out?
>
> On Fri, Feb 22, 2008 at 2:33 PM, Kris Jurka <books(at)ejurka(dot)com> wrote:
>>
>> On Fri, 22 Feb 2008, Andres Olarte wrote:
>>
>>> Just did a quick test with synthetic data (20M rows 3 columns:
>>> serial,
>>> timestamp, and text). And it worked ok both on Java (with driver
>>> postgresql-8.1-407.jdbc3.jar) and PgAdmin.
>>>
>>> Perhaps you could try to build a test case to expose the problem?
>>
>> From a client perspective, select count(*) should be the same no
>> matter
>> how many rows there are and what types of columns are in the table,
>> so a
>> test case won't be helpful. If the JVM is just up and dying,
>> that's the
>> JVM's fault not a pg issue.
>>
>> Kris Jurka
>>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at
>
> http://www.postgresql.org/about/donate