vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Hello, What might this be? Sincerely, Joshua D. Drake -- Your PostgreSQL solutions company - Command Prompt, Inc. 1.800.492.2240 PostgreSQL Replication, Consulting, Custom Programming, 24x7 support Managed Services, Shared and Dedicated Hosting Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/ ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@postgresql.org so that your message can get through to the mailing list cleanly |
| |||
| On Mon, Aug 01, 2005 at 11:58:34AM -0700, Joshua D. Drake wrote: > What might this be? Whether to warn on '\' in non-E'' strings. AFAIK Bruce wants to turn this to 'on' in 8.2. -- marko ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| |||
| The documentation about this is a little brief (reading from the developer docs, section 4.1.2.1.). Does the SQL standard provide no way to have a NULL character in a string constant? Is single-quote the only special character? If I have a system on 7.4 or 8.0 right now, what is the recommended "right" way to write string constants with backslashes? I can't use E'' yet, so if I need to include a backslash it seems like there's no chance it will be forward-compatible. In the E'' constants, the special characters are only single-quote, backslash, and NULL right? Regards, Jeff Davis Marko Kreen wrote: > On Mon, Aug 01, 2005 at 11:58:34AM -0700, Joshua D. Drake wrote: > >>What might this be? > > > Whether to warn on '\' in non-E'' strings. > > AFAIK Bruce wants to turn this to 'on' in 8.2. > ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq |
| |||
| On Mon, 1 Aug 2005, Jeff Davis wrote: > Does the SQL standard provide no way to have a NULL character in a > string constant? Is single-quote the only special character? I don't think it forbids you from using the null character. It's not like the strings are zero terminated. Some encodings might not allow the null character, but that's different. ps. null character does not have anything to do with the sql NULL. I'm sure there is someone somewhere that need this info. -- /Dennis Björklund ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| |||
| Dennis Bjorklund wrote: > On Mon, 1 Aug 2005, Jeff Davis wrote: > > >>Does the SQL standard provide no way to have a NULL character in a >>string constant? Is single-quote the only special character? > > > I don't think it forbids you from using the null character. It's not like > the strings are zero terminated. Some encodings might not allow the null > character, but that's different. > But doesn't PostgreSQL forbid us from using the NULL character in a query at all? Don't we always have to escape or encode it in some way? Does this new attempt at standard-compliant strings allow PostgreSQL to accept a null character in a string? > ps. null character does not have anything to do with the sql NULL. I'm > sure there is someone somewhere that need this info. > Yeah, I was talking about '\0'. Regards, Jeff Davis ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| |||
| On Tue, 2 Aug 2005, Jeff Davis wrote: > >>Does the SQL standard provide no way to have a NULL character in a > >>string constant? Is single-quote the only special character? > > > > I don't think it forbids you from using the null character. It's not like > > the strings are zero terminated. Some encodings might not allow the null > > character, but that's different. > > But doesn't PostgreSQL forbid us from using the NULL character in a > query at all? Don't we always have to escape or encode it in some way? Pg does not allow \0 in strings at all. Try SELECT 'abc\0def'; in the current version of pg. The sql standard doesn't forbid null values in strings as far as I know and that's all I talked about. To have a sql standard string with null inside you just insert the 0 byte (for normal single byte encodings), no escaping needed. Internally pg handles strings as \0-terminated entities which is a bit unfortunate but that's what we have. That's why 'abc\0def' became the string 'abc'. Most character sets forbid \0 in strings anyway. -- /Dennis Björklund ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings |
| |||
| Dennis Bjorklund wrote: > On Tue, 2 Aug 2005, Jeff Davis wrote: > > >>>>Does the SQL standard provide no way to have a NULL character in a >>>>string constant? Is single-quote the only special character? >>> >>>I don't think it forbids you from using the null character. It's not like >>>the strings are zero terminated. Some encodings might not allow the null >>>character, but that's different. >> >>But doesn't PostgreSQL forbid us from using the NULL character in a >>query at all? Don't we always have to escape or encode it in some way? > > > Pg does not allow \0 in strings at all. Try SELECT 'abc\0def'; in the > current version of pg. > > The sql standard doesn't forbid null values in strings as far as I know > and that's all I talked about. To have a sql standard string with null > inside you just insert the 0 byte (for normal single byte encodings), no > escaping needed. I guess what I'm trying to find out: does this mean that after all this change to the way strings are handled in the future, PostgreSQL still won't be standards-compliant for the basic '' string? Also, let's say I have apps now in 7.4/8.0, and I want them to be forward-compatible. Should I make a type called E so that the E'' notation will work, and then use that for strings? What is the "right" way to do it? I found a few things in the archives, but I didn't see these particular things addressed. Regards, Jeff Davis ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| |||
| Am Mittwoch, 3. August 2005 01:18 schrieb Jeff Davis: > I guess what I'm trying to find out: does this mean that after all this > change to the way strings are handled in the future, PostgreSQL still > won't be standards-compliant for the basic '' string? It will be more conforming regarding backslashes. There may be other conformance issues, but they are not considered here. > Also, let's say I have apps now in 7.4/8.0, and I want them to be > forward-compatible. Should I make a type called E so that the E'' > notation will work, and then use that for strings? What is the "right" > way to do it? To be standards-conforming, don't use any backslash escapes. If you must use them, use the E'' notation. -- Peter Eisentraut http://developer.postgresql.org/~petere/ ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster |
| |||
| Peter Eisentraut wrote: >>Also, let's say I have apps now in 7.4/8.0, and I want them to be >>forward-compatible. Should I make a type called E so that the E'' >>notation will work, and then use that for strings? What is the "right" >>way to do it? > > To be standards-conforming, don't use any backslash escapes. If you must use > them, use the E'' notation. That doesn't really answer the question, though, since none of 7.4/8.0/8.1 interprets '' strings in a strictly standards-conforming way as I understand it. The impression I got from previous discussion was that you need to check the value of the standard_compliant_strings GUC, and double backslashes inside '' only if it was false or missing. -O ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@postgresql.org so that your message can get through to the mailing list cleanly |
| ||||
| Am Mittwoch, 3. August 2005 15:40 schrieb Oliver Jowett: > > To be standards-conforming, don't use any backslash escapes. If you must > > use them, use the E'' notation. > > That doesn't really answer the question, though, since none of > 7.4/8.0/8.1 interprets '' strings in a strictly standards-conforming way > as I understand it. That is correct, but eventually standards_compliant_strings will be true by default and then you have to use E'' to get backslash escapes. The above advice is the future-proof way to go from 8.1 on. -- Peter Eisentraut http://developer.postgresql.org/~petere/ ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster |