Retrieving unused tuple attributes in ExecScan

Поиск
Список
Период
Сортировка
От Ma, Marcus
Тема Retrieving unused tuple attributes in ExecScan
Дата
Msg-id 787AF06F-D8EC-4AF3-B433-727F9399E2E1@amazon.com
обсуждение исходный текст
Ответы Re: Retrieving unused tuple attributes in ExecScan  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers

Hey,

 

If I understand correctly, when a Sequential Scan takes place, the ExecScan function (located in executor/execScan.c) does not retrieve all attributes per tuple in the TupleTableSlot and only retrieves the necessary attribute. So for example, let’s imagine we have a table t1 with 3 number fields, c1, c2, and c3. So in the command:

 

Select * from t1 where t1.c1 > 500;

 

The returned TupleTableSlot will have its field of tts_values in the form (X, 0, 0), where X is the real value of t1.c1 but the fields of c2 and c3 are not actually retrieved because they aren’t used. Similarly, for the command:

 

Select * from t1;

 

The TupleTableSlot will always return the values of (0, 0, 0) because no comparisons are necessary. I am working on code where I’ll need access to attributes that aren’t listed in any qualification – what code should I change in execScan, or nodeSeqScan to be able to retrieve any attribute of a tuple? Basically, being able to make execScan return (X, Y, Z) instead of (0, 0, 0) even if the command doesn’t use any attribute comparisons.

 

Marcus

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

Предыдущее
От: Dean Rasheed
Дата:
Сообщение: Re: Making the subquery alias optional in the FROM clause
Следующее
От: Jacob Champion
Дата:
Сообщение: Re: [PoC] Let libpq reject unexpected authentication requests