Re: DBD::Pg exorts char columns with trailing blanks

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Rob Sargent <robjsargent(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: DBD::Pg exorts char columns with trailing blanks
Date: 2019-10-18 15:19:01
Message-ID: e79504fc-95cb-59d4-85eb-6ad61c4c587a@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 10/18/19 8:15 AM, Rob Sargent wrote:
>
> On 10/18/19 8:51 AM, Adrian Klaver wrote:
>> On 10/18/19 7:42 AM, Matthias Apitz wrote:
>>> El día viernes, octubre 18, 2019 a las 03:01:58p. m. +0200, Tom Lane
>>> escribió:
>>>
>>>> Matthias Apitz <guru(at)unixarea(dot)de> writes:
>>>>> When we export char columns with our Perl tools, they come out with
>>>>> trailing blanks (in Sybase they don't). Can this be suppressed?
>>>>
>>>> Switch to varchar, perhaps?
>>>>
>>>>             regards, tom lane
>>>
>>> Sometimes people does not know, what they propose. We have a historical
>>> 25 years grown ILS which runs on top of Sybase, Oracle, Informix ... and
>>> should now be ported to PostgreSQL. We can't simple switch internal
>>> table structures and adopt some 10.000.000 lines of code (or debug while
>>> it is now crashing).
>>
>> That was not mentioned in the original post. Anyway:
>>
>> https://metacpan.org/pod/DBD::Pg#ChopBlanks-(boolean,-inherited)
>>
>> https://metacpan.org/pod/DBI
>>
>> "ChopBlanks
>>
>> Type: boolean, inherited
>>
>> The ChopBlanks attribute can be used to control the trimming of
>> trailing space characters from fixed width character (CHAR) fields. No
>> other field types are affected, even where field values have trailing
>> spaces.
>>
>> The default is false (although it is possible that the default may
>> change). Applications that need specific behaviour should set the
>> attribute as needed.
>>
>> Drivers are not required to support this attribute, but any driver
>> which does not support it must arrange to return undef as the
>> attribute value."
>>
>>>
>>> Thanks anyway.
>>>
>>>     matthias
>>>
>>>
>>
>>
> It seems to me you've simply exposed a bug in you ILS.  If blanks
> intentionally went in, would they not get truncated on the way out in
> the other systems?  If all trailing blanks are expendable perhaps your
> saves should remove them.  (And a trimming of the existing records is in
> order.)

The OP is dealing with char(acter) fields:

https://www.postgresql.org/docs/11/datatype-character.html

"If the string to be stored is shorter than the declared length, values
of type character will be space-padded; ..."

>
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Rob Sargent 2019-10-18 15:43:15 Re: DBD::Pg exorts char columns with trailing blanks
Previous Message Rob Sargent 2019-10-18 15:15:43 Re: DBD::Pg exorts char columns with trailing blanks