Re: [HACKERS] Re: subselects

Поиск
Список
Период
Сортировка
От Vadim B. Mikheev
Тема Re: [HACKERS] Re: subselects
Дата
Msg-id 34B9E3B5.CF9AC8E3@sable.krasnoyarsk.su
обсуждение исходный текст
Ответ на Re: subselects  (Bruce Momjian <maillist@candle.pha.pa.us>)
Ответы Re: [HACKERS] Re: subselects  (Bruce Momjian <maillist@candle.pha.pa.us>)
Re: [HACKERS] Re: subselects  (Bruce Momjian <maillist@candle.pha.pa.us>)
Re: [HACKERS] Re: subselects  (Bruce Momjian <maillist@candle.pha.pa.us>)
Список pgsql-hackers
Thomas G. Lockhart wrote:
>
> btw, to implement "(a,b,c) OP (d,e,f)" I made a new routine in the parser called
> makeRowExpr() which breaks this up into a sequence of "and" and/or "or" expressions.
> If lists are handled farther back, this routine should move to there also and the
> parser will just pass the lists. Note that some assumptions have to be made about the
> meaning of "(a,b) OP (c,d)", since usually we only have knowledge of the behavior of
> "a OP c". Easy for the standard SQL operators, unknown for others, but maybe it is OK
> to disallow those cases or to look for specific appearance of the operator to guess
> the behavior (e.g. if the operator has "<" or "=" or ">" then build as "and"s and if
> it has "<>" or "!" then build as "or"s.

Oh, god! I never thought about this!
Ok, I have to agree:

1. Only <, <=, =, >, >=, <> is allowed with subselects
2. Use OR's for <>, and so - we need in bool useor in SubLink
   for <>, <> ANY and <> ALL:

typedef struct SubLink {
    NodeTag        type;
    int        linkType; /* EXISTS, ALL, ANY, EXPR */
    bool        useor;    /* TRUE for <> */
    List            *lefthand; /* List of Var/Const nodes on the left */
    List            *oper;     /* List of Oper nodes */
    Query            *subquery; /* */
} SubLink;

Vadim

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

Предыдущее
От: Zeugswetter Andreas DBT
Дата:
Сообщение: = is not always defined as equality is bad
Следующее
От: "Vadim B. Mikheev"
Дата:
Сообщение: Re: [HACKERS] Re: subselects