From: | "Dave Cramer" <Dave(at)micro-automation(dot)net> |
---|---|
To: | "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>, "Arsalan Zaidi" <azaidi(at)directi(dot)com> |
Cc: | "PostgreSQL jdbc list" <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: Re: [INTERFACES] New code for JDBC driver |
Date: | 2001-06-30 18:21:54 |
Message-ID: | 005301c10191$8ae2ce50$0201a8c0@inspiron |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces pgsql-jdbc |
Can you give us some background. What is this trying to solve?
>From the look of it the purpose is to remove embedded semicolons and quotes.
>From my POV this should be handled by the backend.
My reasons are as follows:
1) Any attempt at parsing the query by the driver will slow the driver down.
2) If the purpose of parsing is to make an incorrect query correct; then I
would prefer the backend fail and make me fix my code.
Dave
----- Original Message -----
From: "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: "Arsalan Zaidi" <azaidi(at)directi(dot)com>
Cc: "PostgreSQL jdbc list" <pgsql-jdbc(at)postgresql(dot)org>
Sent: Saturday, June 30, 2001 12:42 PM
Subject: [JDBC] Re: [INTERFACES] New code for JDBC driver
> > No response for my query since yesterday.
> >
> > I've changed the code in Connection.escapeSQL() to look for semicolons
> > outside '' and ""'s.
> >
> > It's not been well tested, but it seems to work. Someone might want to
add
> > it to the source tree, or to their own local versions if they wish.
> >
>
> OK, here is the diff, I think. Can jdbc people comment on it?
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
> + If your life is a hard drive, | 830 Blythe Avenue
> + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
>
----------------------------------------------------------------------------
----
> *** Connection.java Wed Jun 6 20:09:32 2001
> --- /bjm/x Sat Jun 30 12:35:39 2001
> ***************
> *** 931,937 ****
> --- 21,123 ----
> index = sql.indexOf("{d");
> }
> file://System.out.println ("modified SQL: " + sql);
> +
> +
> +
> +
> + file://---- Added by Arsalan
> + String query = sql;
> +
> + file://2== uninitialised 1==true 0==false
> + int openTick = 2;
> + int openQuote = 2;
> + char oneChar;
> +
> + // query = query.toLowerCase();
> +
> + if(query.indexOf(";") == -1) // no semi's at all
> + {
> return sql;
> }
>
> + for(int i=0; i<query.length(); i++)
> + {
> + oneChar = query.charAt(i);
> +
> + if((oneChar == ';' && openTick == 0 && openQuote != 1) || (oneChar
== ';' && openQuote == 0 && openTick != 1))
> + {
> + throw new SQLException("Found an external SEMICOLON!! at i = "+i);
> + }
> +
> + if(oneChar == '\'') file://is a '
> + {
> +
> + System.out.println("in '");
> + int j = i;
> + if(++j < query.length())
> + {
> + if(query.charAt(j) == '\'') file://is an escape
> + {
> + i++; file://skip them
> + continue;
> + }
> + else file://genuine tick!
> + {
> + if(openTick == 0)
> + {
> + openTick = 1;
> + }
> + else if(openTick == 1)
> + {
> + openTick = 0;
> + }
> + else if(openTick == 2) file://initialise it
> + {
> + openTick = 1;
> + }
> + }
> + }
> + }
> +
> +
> + if(oneChar == '"') file://is a "
> + {
> + System.out.println("in \"");
> + int j = i;
> + if(++j < query.length())
> + {
> + if(query.charAt(j) == '"') file://is an escape
> + {
> + i++; file://skip them
> + continue;
> + }
> + else file://genuine quote!
> + {
> + if(openQuote == 0)
> +
> + openQuote = 1;
> + }
> + else if(openQuote == 1)
> + {
> + openQuote = 0;
> + }
> + else if(openQuote == 2) file://initialise it
> + {
> + openQuote = 1;
> + }
> + }
> + }
> + }
> +
> +
> + }
> +
> +
> +
> +
> + file://------Addition ends
> +
> +
> +
> + return sql;
> }
>
----------------------------------------------------------------------------
----
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
>
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2001-06-30 18:35:11 | Re: Re: [INTERFACES] New code for JDBC driver |
Previous Message | Christian Ullrich | 2001-06-30 17:37:30 | libpq++ on Windows |
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2001-06-30 18:35:11 | Re: Re: [INTERFACES] New code for JDBC driver |
Previous Message | Bruce Momjian | 2001-06-30 16:42:46 | Re: [INTERFACES] New code for JDBC driver |