From: | Michael Paesold <mpaesold(at)gmx(dot)at> |
---|---|
To: | Kris Jurka <books(at)ejurka(dot)com> |
Cc: | pgsql-jdbc(at)postgresql(dot)org, Dave Cramer <pg(at)fastcrypt(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Subject: | Re: [pgsql-jdbc] dollar-quoted CREATE FUNCTION statement fails |
Date: | 2006-10-06 07:40:15 |
Message-ID: | 4526085F.5030604@gmx.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Kris Jurka wrote:
> I haven't looked at either dollar quote patch, but will hopefully get to
> that and other JDBC items later this week. Not parsing comments, both
> -- and /* */ is a complaint we here as often if not if not with more
> frequency than dollar quoting. (Apparently there's a Hibernate option
> that puts things in comments.) So, yes that would be a good thing to
> look at.
I thought I'd keep you posted on my progress. Here is an updated
work-in-progress patch implementing dollar-quotes, -- and /* */ quotes
(also with SQL compliant nesting, i.e. /* /* */ */). It replaces my last
one.
It passes all tests, including the newly created one. In addition to
supporting comments now, I have changed how we iterate over the
character array. Instead of having just one big loop parsing all
constructs, I have created tight loops for finding the end of certain
constructs, exactly for single, double, and dollar quotes, and comments.
This reduces the runtime with all new added "features" by ~10% in my
test case (see below), whereas my first implementation (as well as the
one from Jure Koren) had a worsening effect on runtime. Although the
code is longer because of the inner loops, I think it is not less
understandable, especially with all the new cases, which would add quite
much of if (!... && ! ...) otherwise.
I did the runtime tests using the attached ParserSpeedTest.java. It
reads a bunch of SQL files into memory and then runs the parser on them.
Example:
java ParserSpeedTest 10000 ../../app/schema/*.sql
(call parser 10000 times on all given *.sql files)
My todo list for this patch:
- Add the same capabilities to V2Query. Should I just copy the
corresponding parts of the code there? I don't see an easy way for code
sharing here. Although it would be possible to factor parts into extra
methods, I don't see that this would be a real win. Should I try? Comments?
- Move the tests from the new class to the places where they belong,
e.g. a testDollarQuotes method in the PreparedStatementTest class.
Comments?
Best Regards
Michael
Attachment | Content-Type | Size |
---|---|---|
jdbc-v3proto-parser.patch | text/plain | 14.4 KB |
ParserSpeedTest.java | text/x-java | 2.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Kris Jurka | 2006-10-06 17:26:58 | Re: Query ResultSet parsing speedup patch (resend) |
Previous Message | Stefano B. | 2006-10-05 10:50:33 | CachedRowSetImpl: transaction isolation level error |