src/backend/parser/parse_expr.c:exprTypmod() question

Поиск
Список
Период
Сортировка
От Teodor Sigaev
Тема src/backend/parser/parse_expr.c:exprTypmod() question
Дата
Msg-id 45227620.4090306@sigaev.ru
обсуждение исходный текст
Ответы Re: src/backend/parser/parse_expr.c:exprTypmod() question  (Gregory Stark <stark@enterprisedb.com>)
Список pgsql-hackers
I'm working on user-defined typmod and try to move all typmod calculations into 
type-specific functions. But there is a strange place:

/* *  exprTypmod - *    returns the type-specific attrmod of the expression, if it can be *    determined.  In most
cases,it can't and we return -1. */
 
int32
exprTypmod(Node *expr)
{
<skip>        case T_Const:            {                /* Be smart about string constants... */                Const
  *con = (Const *) expr;
 
                switch (con->consttype)                {                    case BPCHAROID:                        if
(!con->constisnull)                       {                            int32       len = 
 
VARSIZE(DatumGetPointer(con->constvalue)) - VARHDRSZ;
                            /* if multi-byte, take len and find # characters */                            if
(pg_database_encoding_max_length()> 1)                                len = 
 
pg_mbstrlen_with_len(VARDATA(DatumGetPointer(con->constvalue)), len);                            return len + VARHDRSZ;
                      }                        break;                    default:                        break;
      }            }            break;
 


So, I can't understand why it's needed at all. First, it's returns length as 
typmod, second, it looks like optimization, but I don't believe in significant 
benefits... It's a constant coming from query. Am I missing something?



-- 
Teodor Sigaev                                   E-mail: teodor@sigaev.ru
  WWW: http://www.sigaev.ru/
 


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

Предыдущее
От: "Magnus Hagander"
Дата:
Сообщение: tsearch2 error msg
Следующее
От: Teodor Sigaev
Дата:
Сообщение: Re: tsearch2 error msg