Thread: Small problem with embedded comments in a statement

Small problem with embedded comments in a statement

From
Thomas Kellerer
Date:
Hello,

When running the following query:

String sql = "select * from table1\n" +
              "--select * from table2;\n" +
              "--select * from table3";

I get an error:
org.postgresql.util.PSQLException: Multiple ResultSets were returned by the query.

But as the second and third SELECT are behing a comment, they should be ignored,
right? Actually when removing the semicolon after table2, then everything works
fine.

Is this a bug in the JDBC driver, or is this intended behaviour?

Best regards
Thomas

P.S.: before you ask why I run such a SQL statement: I'm maintaining an
open-source query tool and sometimes unwanted statements are simply un-commented
from within the editor, but the application still sends the whole string that
the user supplied.

Re: Small problem with embedded comments in a statement

From
Kris Jurka
Date:

On Tue, 26 Sep 2006, Thomas Kellerer wrote:

> When running the following query:
>
> String sql = "select * from table1\n" +
>             "--select * from table2;\n" +
>             "--select * from table3";
> I get an error:
> org.postgresql.util.PSQLException: Multiple ResultSets were returned by the
> query.
>
> But as the second and third SELECT are behing a comment, they should be
> ignored, right? Actually when removing the semicolon after table2, then
> everything works fine.
>
> Is this a bug in the JDBC driver, or is this intended behaviour?
>

Yes, it's a bug, but one that's likely to be here for a while.  Right now
the JDBC driver splits queries on semicolons because you cannot submit
multipart queries via the extended query protocol.  So it splits them at
the semicolons and issues them separately.  The parsing code is very
simple and doesn't handle -- or /* */ comments or dollar quotes.

For your case you could change from using executeQuery to plain execute()
which supports returning multiple resultsets, but there are plenty of
other bugs that cannot be so easily worked around here.


Kris Jurka