Thread: BUG #5839: pgAdmin makes bad query for creating a table when default value specified

The following bug has been logged online:

Bug reference:      5839
Logged by:          Aren Cambre
Email address:      aren@arencambre.com
PostgreSQL version: 9.0.2
Operating system:   Windows 7 32 bit
Description:        pgAdmin makes bad query for creating a table when
default value specified
Details:

Using pgAdmin 1.12.2, I just tried to create a table with a character
varying(18) column. I put "none" (without the quotes) in the "Default value"
field for that column.

When I press OK to create the table, I get a dialog saying:
  An error has occurred:
  ERROR: column "none" does not exist

This is the SQL that's generated:

CREATE TABLE "raw"."TxDPS geocoding"
(
   "HA_Arrest_Key" character varying(18),
   gid integer,
   "whichToUse" character varying(20) NOT NULL DEFAULT none,
    PRIMARY KEY ("HA_Arrest_Key")
)
WITH (
  OIDS = FALSE
)
;
"Aren Cambre" <aren@arencambre.com> writes:
> Using pgAdmin 1.12.2, I just tried to create a table with a character
> varying(18) column. I put "none" (without the quotes) in the "Default value"
> field for that column.

> When I press OK to create the table, I get a dialog saying:
>   An error has occurred:
>   ERROR: column "none" does not exist

Well, yeah, that's what you'll get.  I don't see a bug here.
If you want the literal string 'none' as default, you should put quotes
around it.  If you don't want a default, you shouldn't put anything
there.

            regards, tom lane
This came from pgAdmin's *Default value* field. This field is supposed to
accept anything other than a string?

Aren

On Fri, Jan 14, 2011 at 9:51 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> "Aren Cambre" <aren@arencambre.com> writes:
> > Using pgAdmin 1.12.2, I just tried to create a table with a character
> > varying(18) column. I put "none" (without the quotes) in the "Default
> value"
> > field for that column.
>
> > When I press OK to create the table, I get a dialog saying:
> >   An error has occurred:
> >   ERROR: column "none" does not exist
>
> Well, yeah, that's what you'll get.  I don't see a bug here.
> If you want the literal string 'none' as default, you should put quotes
> around it.  If you don't want a default, you shouldn't put anything
> there.
>
>                        regards, tom lane
>
On 01/14/11 8:12 PM, Aren Cambre wrote:
> This came from pgAdmin's *Default value* field. This field is supposed
> to accept anything other than a string?

default value can be any valid expression
On Sat, Jan 15, 2011 at 4:36 AM, John R Pierce <pierce@hogranch.com> wrote:
> On 01/14/11 8:12 PM, Aren Cambre wrote:
>>
>> This came from pgAdmin's *Default value* field. This field is supposed to
>> accept anything other than a string?
>
> default value can be any valid expression

Exactly. pgAdmin doesn't have any way to know whether what you've
entered is a plain string or an expression of some kind, so it leaves
it to you to provide the quoting in this case.


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company