to post messages and comments.

Короче, пасаны, смотрите, надо сделать преобразователь запросов вида
select f1, f2 from table1 where f1 = ? and f2 < ?
в запросы вида
select f1, f2 from table1 where f1 = $1 and f2 < $1
Так как постгре субада оригинальная и принимает параметры в таком вот странном виде, когда все другие принимают вместо параметров вопросики. При этом надо чтобы корректно обрабатывались случаи идентификаторов в кавычках ("table?") и строковых литералов с бэкквотами ('this is literal?\''), коментариев, блочных и строковых. Во всех этих случаях знаки вопросов надо игнорировать, только если знак вопроса не внутри кавычек и не внутри коментария он должен заменяться на $1, $2, $3 и так далее.
Как без байтоебства сделать ?

У меня постгре возвращает timestamp with time zone в таком виде
1864-05-09 20:28:03.39944+04:02:24
Это что, ISO ? В доках постгре о формате выводимой даты ни слова, запостил на стек, мне там ответили, что это зависит от локальной таймзоны. В связи с этим у меня вопрос: не слишком ли деспотично будет при коннекте делать
сразу
set timezone='utc'
И не париться по поводу разбора даты ? Пользователь по идее будет пользоваться сразу разобранной датой и маловероятно что ему захочется использовать другую таймзону чтобы вручную ее парсить. Предусматривать разные таймзоны со своими правилами форматирования времени, не логично как то. Или можно эту херню как то парсить нормально, с помощью нехи родных для линукс либ ? пакет time может парсить таймзону только вида HH:SS, а unix-time работает только с юникс таймом, то есть только начиная с 1970 года, что тоже не канает.

ну що за " default value for row or record variable is not supported" вкупе с громоздким синтаксисом для работы с датами заставляет все больше и больше скучать по восьмому(!) ораклу

узлы:
CREATE OR REPLACE FUNCTION dynamic_query(sql text, hernya text)
RETURNS SETOF RECORD AS $$
DECLARE
rec RECORD;
BEGIN
FOR rec IN EXECUTE sql
LOOP
RETURN NEXT rec;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION dynamic_query(q text, hernya text)
RETURN SETOF RECORDS AS $$
CLUSTER 'usercluster';
RUN ON ALL;
$$ LANGUAGE plproxy;