Запись, возвращаемая из функции, имеет объединенные столбцы

У меня есть таблица, в которой хранятся изменения аккаунта с течением времени. Мне нужно объединить это с двумя другими таблицами, чтобы создать некоторые записи для определенного дня, если эти записи еще не существуют.

Чтобы упростить ситуацию (я надеюсь), я инкапсулировал запрос, который возвращает правильные исторические данные, в функцию, которая принимает идентификатор учетной записи и день.

Если я выполню"Select * account_servicetier_for_day(20424, '2014-08-12')"Я получаю ожидаемый результат (все данные возвращаются из функции в отдельных столбцах). Если я использую функцию в другом запросе, я получаю все столбцы, объединенные в один:

("2014-08-12 14:20:37",hollenbeck,691,12129,20424,69.95,"2Mb/1Mb 20GB Limit",2048,1024,20.000)

Я использую «PostgreSQL 9.2.4 на x86_64-slackware-linux-gnu, скомпилированный с помощью gcc (GCC) 4.7.1, 64-bit».

Запрос:

Select
    '2014-08-12' As day, 0 As inbytes, 0 As outbytes, acct.username, acct.accountid, acct.userid,
    account_servicetier_for_day(acct.accountid, '2014-08-12')
From account_tab acct
Where acct.isdsl = 1
    And acct.dslservicetypeid Is Not Null
    And acct.accountid Not In (Select accountid From dailyaccounting_tab Where Day = '2014-08-12')
Order By acct.username

Функция:

CREATE OR REPLACE FUNCTION account_servicetier_for_day(_accountid integer, _day timestamp without time zone) RETURNS setof account_dsl_history_info AS
$BODY$
DECLARE _accountingrow record;
BEGIN
  Return Query
  Select * From account_dsl_history_info
  Where accountid = _accountid And timestamp <= _day + interval '1 day - 1 millisecond'
  Order By timestamp Desc 
  Limit 1;
END;
$BODY$ LANGUAGE plpgsql;

Ответы на вопрос(2)

Ваш ответ на вопрос