BUG #13919: Cast error when table is empty.

Started by Nonameabout 10 years ago2 messagesbugs
Jump to latest
#1Noname
mail@eaden.net

The following bug has been logged on the website:

Bug reference: 13919
Logged by: Eaden McKee
Email address: mail@eaden.net
PostgreSQL version: 9.4.1
Operating system: Any
Description:

When trying to change the type of column I received the error :

PG::DatatypeMismatch: ERROR: column "date_of_birth" cannot be cast
automatically to type date
HINT: Specify a USING expression to perform the conversion.

I totally understand the error. However, there are no rows in the table, so
it IS possible to automatically to cast 0 strings into 0 dates.

If there are no rows, can the column type just be changed?

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #13919: Cast error when table is empty.

mail@eaden.net writes:

When trying to change the type of column I received the error :

PG::DatatypeMismatch: ERROR: column "date_of_birth" cannot be cast
automatically to type date
HINT: Specify a USING expression to perform the conversion.

I totally understand the error. However, there are no rows in the table, so
it IS possible to automatically to cast 0 strings into 0 dates.

If there are no rows, can the column type just be changed?

I do not see a good reason to create a special case for this. If there's
no data in the table, and you don't feel like creating a fully valid
ALTER command, why don't you just drop and recreate the table? Or for
that matter you could just make up some useless USING expression,
say USING NULL::date.

(Also, I believe we apply the USING expression to the column's default
value, and also to indexes if any, so "there are no rows" is far from
a complete statement of the restrictions that would have to apply before
ignoring the lack of a datatype transform could work.)

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs