Size: a a a

pgsql – PostgreSQL

2021 March 06

SS

Steel Sword in pgsql – PostgreSQL
Конечно, всякие DECLARE, BEGIN, END и т.д. пропущены
источник

I

Ivan in pgsql – PostgreSQL
Steel Sword
WITH ins AS (
 INSERT INTO attendance
   (action, people_id, action_time)
 VALUES
   (p_action, p_people_id, p_action_time)
 RETURNING *
)

OPEN result_cursor FOR SELECT * FROM ins;
RETURN result_cursor;

Выдает:

ERROR:  syntax error at or near "OPEN"
LINE 41:  OPEN result_cursor FOR SELECT * FROM ins;
         ^
SQL state: 42601
Character: 1175

Неужели это невалидный код?
Скажите, а с курсорами вам удобно работать?
источник

SS

Steel Sword in pgsql – PostgreSQL
Ivan
Скажите, а с курсорами вам удобно работать?
Хз, я только пробую. А какие еще варианты? Можно RECORD, но он "обнуляет" информацию о таблице. Можно еще TABLE, но нужно выводить колонки. Курсоры выглядят удобными, но у меня ни разу не получилось их завести. Всегда SyntaxError.
источник

I

Ivan in pgsql – PostgreSQL
Таблица более явный вариант, всегда видно что на выход. Курсор,имхо, черный ящик
источник

M

Maxim in pgsql – PostgreSQL
Yaroslav Schekin
> Если клиенты в разных таймзонах они видят время в dateltime with zone в своём локальном времени по умолчанию.

Значит, такие клиенты. Ещё раз, если они это явно выставляют — Вы никак это не перебьёте.

> А так будут видит время в тайм зоне сервера :(

А если не выставляют — укажите нужную им в postgresql.conf, как обычно.
Ну это же каждому клиенту нужно руками ставить, что не удобно.
А так бы клиент, если явно не указана timezone определял сам, было бы намного удобней.
Странно что в 9.2 это вырезали, в mysql есть 🙁
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim
Ну это же каждому клиенту нужно руками ставить, что не удобно.
А так бы клиент, если явно не указана timezone определял сам, было бы намного удобней.
Странно что в 9.2 это вырезали, в mysql есть 🙁
> Ну это же каждому клиенту нужно руками ставить, что не удобно.

Я вообще Вас не понимаю, если честно. :(
Зачем клиенту "time zone сервера", зачем им что-то ставить?
Самим клиентам в какой time zone нужно работать?

> А так бы клиент, если явно не указана timezone определял сам, было бы намного удобней.

Нет, это было бы просто бесполезно, IMNSHO.

> Странно что в 9.2 это вырезали

Совершенно правильно сделали.

> в mysql есть

При чём тут дефекты MySQL? ;)
источник

D

Dmitriy in pgsql – PostgreSQL
Maxim
Подскажите как настрокить чтобы клиент postgres определял timezone по умолчания из среды запуска как в mysql ?
Не понимаю, зачем это нужно. В базе просто храните время в таймзоне сервера (timestamp with timezone). При показе времени юзеру просто конвертите в его таймзону. Или я что-то не так понял?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Dmitriy
Не понимаю, зачем это нужно. В базе просто храните время в таймзоне сервера (timestamp with timezone). При показе времени юзеру просто конвертите в его таймзону. Или я что-то не так понял?
Стандартное решение — в базе просто хранить timestamptz, а в сессии клиента задавать нужную ему time zone, да и всё.
источник

D

Dmitriy in pgsql – PostgreSQL
Yaroslav Schekin
Стандартное решение — в базе просто хранить timestamptz, а в сессии клиента задавать нужную ему time zone, да и всё.
Я про это и пишу, да
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Dmitriy
Я про это и пишу, да
Просто как-то непонятно написали. :)
Во-первых, в timestamp with time zone нет никакой time zone, тем более сервера.
Более того, такой вещи, как time zone сервера PostgreSQL, просто не существует.
источник

D

Dmitriy in pgsql – PostgreSQL
Yaroslav Schekin
Просто как-то непонятно написали. :)
Во-первых, в timestamp with time zone нет никакой time zone, тем более сервера.
Более того, такой вещи, как time zone сервера PostgreSQL, просто не существует.
Ну ок
источник

M

Maxim in pgsql – PostgreSQL
Да все верно, подход такой, но приходиться РУКАМИ в клиенте ставить PGTZ или TimeZone в конфиге.
По умолчанию TimeZone UTC

А так бы библиотека клиенты сама ставила зону и вуаля …
источник

D

Dmitriy in pgsql – PostgreSQL
Maxim
Да все верно, подход такой, но приходиться РУКАМИ в клиенте ставить PGTZ или TimeZone в конфиге.
По умолчанию TimeZone UTC

А так бы библиотека клиенты сама ставила зону и вуаля …
А на клиенте нельзя определять таймзону?
источник

D

Dmitriy in pgsql – PostgreSQL
Я имею в виду зачем это в конфиге хранить. В том же браузере это можно делать "на лету", вроде бы
источник

M

Maxim in pgsql – PostgreSQL
Собственно вопрос был, как вернуть автоматическое определение таймзоны клиентом постгрес
источник

M

Maxim in pgsql – PostgreSQL
Dmitriy
Я имею в виду зачем это в конфиге хранить. В том же браузере это можно делать "на лету", вроде бы
Да можно для сессии определить TZ, но тоже лишние движения на мой взгляд
источник

D

Dmitriy in pgsql – PostgreSQL
Maxim
Да можно для сессии определить TZ, но тоже лишние движения на мой взгляд
Зато не будет никаких проблем, например, с кешированием данных
источник

D

Dmitriy in pgsql – PostgreSQL
Которые от юзера и таймзоны не зависят
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim
Да все верно, подход такой, но приходиться РУКАМИ в клиенте ставить PGTZ или TimeZone в конфиге.
По умолчанию TimeZone UTC

А так бы библиотека клиенты сама ставила зону и вуаля …
> но приходиться РУКАМИ в клиенте ставить PGTZ или TimeZone в конфиге.

А как Вы хотели? Клиент-то выполняется вообще не на сервере PostgreSQL, и не имеет к нему непосредственного отношения.
Более того, он сам должен знать, какая time zone ему нужна (если это "мой" клиент, к примеру, мне нужна Europe/Moscow; а кому-то ещё, может, Europe/Kiev и так далее).

> А так бы библиотека клиенты сама ставила зону и вуаля …

Магия? ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim
Собственно вопрос был, как вернуть автоматическое определение таймзоны клиентом постгрес
Его там никогда не было и не могло быть. Вы просто не поняли, что означал этот код.
источник