Re: DOMAIN/composite TYPE vs. base TYPE

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: DOMAIN/composite TYPE vs. base TYPE
Дата
Msg-id f42747a9-7376-5173-57bd-8c57e03e10a8@aklaver.com
обсуждение исходный текст
Ответ на Re: DOMAIN/composite TYPE vs. base TYPE  (Joe Abbate <jma@freedomcircle.com>)
Список pgsql-general
On 9/28/20 2:58 PM, Joe Abbate wrote:
> Hello Tom,
> 
> On 28/9/20 17:25, Tom Lane wrote:
>> Domain-over-composite might be a slightly simpler answer than your first
>> one.  It's only available in relatively late-model PG, and I'm not sure
>> about its performance relative to your other design, but it is an
>> alternative to think about.
> 
> "Domain-over-composite" meaning create a TYPE first (DATE, CHAR(1)) and 
> then a DOMAIN based on that type?  (1) How late model are we talking? 
> The DOMAIN syntax doesn't seem changed from PG 11 to PG 13? (2) Can a 
> CHECK constraint specify attributes of the composite?
> 
>> Note that attaching NOT NULL constraints at the domain level is almost
>> never a good idea, because then you find yourself with a semantically
>> impossible situation when, say, a column of that type is on the nullable
>> side of an outer join.  We allow such constraints, but they will be
>> nominally violated in cases like that.
> 
> NULLs: Tony Hoare's "billion dollars of pain and damage" transported to 
> SQL.

Except that the case Tom is talking about would occur due to something like:

select table_a left join table_b on table_a.id = table_b.id where 
table_b.id is null;

That has been very useful to me and I'm not sure that how anything you 
replace NULL with to represent 'unknown' would change the situation.

> 
> Joe
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: Joe Abbate
Дата:
Сообщение: Re: DOMAIN/composite TYPE vs. base TYPE
Следующее
От: Tom Lane
Дата:
Сообщение: Re: DOMAIN/composite TYPE vs. base TYPE