Обсуждение: A dynamic SQL/ecpg question

Поиск
Список
Период
Сортировка

A dynamic SQL/ecpg question

От
"Murphy Pope"
Дата:
Can anyone explain the difference between the following descriptor members?
 
LENGTH
OCTET_LENGTH
RETURNED_LENGTH
RETURNED_OCTET_LENGTH
 
From looking at the source code, the last two are identical and it looks like they return the length of an individual row/column value (i.e. for a varchar column, they would return the length of an actual varchar value).
 
I think OCTET_LENGTH will return the size of the column as stored in the database.
 
I can't quite figure out what LENGTH is supposed to do.  It returns PQfmod( ) - VARHDRSZ.  How is that different from the OCTET_LENGTH?
 
Thanks in advance.
 
            -- Murphy
 

Re: A dynamic SQL/ecpg question

От
Christof Petig
Дата:
Murphy Pope wrote:
> Can anyone explain the difference between the following descriptor members?
> 
>  
> 
> LENGTH
> 
> OCTET_LENGTH
> 
> RETURNED_LENGTH
> 
> RETURNED_OCTET_LENGTH
> 
>  
> 
>  From looking at the source code, the last two are identical and it 
> looks like they return the length of an individual row/column value 
> (i.e. for a varchar column, they would return the length of an actual 
> varchar value).
> 
>  
> 
> I think OCTET_LENGTH will return the size of the column as stored in the 
> database.
> 
>  
> 
> I can't quite figure out what LENGTH is supposed to do.  It returns 
> PQfmod( ) - VARHDRSZ.  How is that different from the OCTET_LENGTH?

The problem is with pgsql's frontend/backend protocol (libpq). You only 
get these two values, and I can't imagine a query which gives the 
requested values. So you can't get/set any sensible values for two of them. Christof