Re: Content for talk on Postgres Type System at PostgresConf

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Guyren Howe <guyren(at)gmail(dot)com>, Postgres General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Content for talk on Postgres Type System at PostgresConf
Date: 2024-03-01 09:18:19
Message-ID: b82f8886db61a3395e6eab94981258274cdbacd3.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, 2024-02-29 at 13:38 -0800, Guyren Howe wrote:
> what are the misconceptions, or where might I find them for  myself?

In addition to what was already said:

> My current understanding:
>  * character is fixed-length, blank-padded. Not sure when you’d
> want that, but it seems clear. Is the name just confusing?

I find the semantics confusing:

test=> SELECT 'a'::character(10);
bpchar
════════════
a
(1 row)

Ok, it is 10 characters long.

test=> SELECT length('a'::character(10));
length
════════
1
(1 row)

Or is it?

test=> SELECT 'a'::character(10) || 'b'::character(10);
?column?
══════════
ab
(1 row)

And why is the result not 20 characters long, with spaces between "a" and "b"?

Best avoid "character".

>  * timestamptz is just converted to a timestamp in UTC. Folks might
> imagine that it stores the time zone but it doesn’t.

Yes, and I find that lots of people are confused by that.

You could talk about the interaction with the "timezone" parameter, and
that it is not so much a timestamp with time zone, but an "absolute timestamp",
and in combination with "timestamp" a great way to let the database handle
the difficult task of time zone conversion for you.

Yours,
Laurenz Albe

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Devrim Gündüz 2024-03-01 10:57:36 Re: FW: SUSE repositories not longer available
Previous Message Kyotaro Horiguchi 2024-03-01 01:37:16 Re: walreceiver fails on asynchronous replica [EXTERNAL] [SEC=UNOFFICIAL]