Re: Updated COPY CSV patch - Mailing list pgsql-patches

From Andrew Dunstan
Subject Re: Updated COPY CSV patch
Date
Msg-id 407C150A.90908@dunslane.net
Whole thread Raw
In response to Re: Updated COPY CSV patch  (Bruno Wolff III <bruno@wolff.to>)
Responses Re: Updated COPY CSV patch
Re: Updated COPY CSV patch
List pgsql-patches
Bruno Wolff III wrote:

>On Tue, Apr 13, 2004 at 06:58:24 -0400,
>  Andrew Dunstan <andrew@dunslane.net> wrote:
>
>
>>One area that we should think about as an enhancement is NOT NULL fields.
>>As it stands now, we will get what we normally get when we try to insert
>>a  null into a NOT NULL field, namely an error. If the field has a simple
>>literal default we could force that. And in the special case of
>>text/varchar fields, it would be reasonable to force an empty string even
>>if no default is set. There isn't a nice easy answer, I'm afraid. We
>>shouldn't hold up putting this in on that account, but handling this
>>better is certainly a TODO.
>>
>>
>
>If you try to insert NULLs into a nonnull field you should get an error.
>If you have unquoted empty strings, and are not using the empty string as
>the NULL marker, then you can just not set the NULL code to be the empty
>string. If you need to turn this on and off by column, then perhaps it
>would be better to do that externally.
>
>As for setting default values, I think that is a good idea. I suggested
>a while back. There could be another keyword, DEFAULT, on the COPY FROM
>command that is used to define a code that will be replaced by the
>default value (or NULL if there is no default for a column) similar to
>how the NULL code is replaced by NULL.
>
>

Well, as I indicated we can deal with this in a subsequent round, I
think. However, here's an idea. We know (or can easily discover) if
there is a NOT NULL constraint that can apply to the attribute (or
domain if it is a domain type). If isnull is set on the read-in value in
such a case, instead of trying to insert null, and knowing we would
fail, try to insert the value we actually read (usually ''), even though
we think we found a null. This will succeed with text fields, and fail
with, for example, int fields. That strikes me as quite reasonable
behaviour, although perhaps qualifying for a warning. Or perhaps we
could enable such behaviour with a flag.

Of course, this would be for CSV mode only - standard TEXT mode should
work as now.

cheers

andrew (trying to be creative here)

pgsql-patches by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: Updated COPY CSV patch
Next
From: Bruce Momjian
Date:
Subject: Re: Updated COPY CSV patch