Size: a a a

pgsql – PostgreSQL

2020 June 15

Y

Yury in pgsql – PostgreSQL
Artyom Poteshkin
Всем привет. Такой вопрос: "Имеет ли смысл запись NOT NULL DEFAULT 0, или же можно не писать NOT NULL в этом случае?"
кек)))
источник

Т

Т.А in pgsql – PostgreSQL
не получается зайти в консоль
источник

Т

Т.А in pgsql – PostgreSQL
Т.А
не получается зайти в консоль
источник

Т

Татьяна in pgsql – PostgreSQL
​​Хорошая подборка UDF (User Defined Functions) в BigQuery, которые дают SQL больше функциональности. Еще примеры - подборка 1, подборка 2.

@BigQuery
источник

Т

Т.А in pgsql – PostgreSQL
блин установил pgbouncer и всё вроде бы хорошо, но иногода база тупо просто не отвечает
pool_mode = transaction
max_client_conn = 600
default_pool_size = 32
источник

Т

Т.А in pgsql – PostgreSQL
Т.А
блин установил pgbouncer и всё вроде бы хорошо, но иногода база тупо просто не отвечает
pool_mode = transaction
max_client_conn = 600
default_pool_size = 32
select "cardUsers".* from "cardUsers" where "token" = $1 - query_wait_timeout
источник

GB

George Bessonov in pgsql – PostgreSQL
Yaroslav Schekin
Вы так и не поняли, как это работает, мне кажется... Вам здесь вообще не нужен UTC!
Что-то вроде:
CREATE TABLE airports(
code text NOT NULL PRIMARY KEY,
name text NOT NULL,
time_zone text NOT NULL --  , <прочие поля>
);

CREATE TABLE flights(
-- ...
departure_airport_id REFERENCES airports,
arrival_airport_id REFERENCES airports,
departure_ts timestamptz NOT NULL,
arrival_ts timestamptz NOT NULL
);

И далее что-то вроде:
SELECT f.departure_ts AT TIME ZONE departure_airport.time_zone AS departure_local,
      f.arrival_ts AT TIME ZONE arrival_airport.time_zone AS arrival_local --- , ...
 FROM flights AS f
 JOIN airports AS departure_airport
   ON departure_airport.id = f.departure_airport_id
 JOIN airports AS arrival_airport
   ON arrival_airport.id = f.arrival_airport_id

И всё.
я понял как это работает.
Я не хочу использовать timestamptz, т.к. провайдер БД для приложения будет отдавать его как ZonedDateTime с зоной текущего подключения. А я хотел бы, чтобы семантика колонки была одной и той же - момент абсолютного времени (Instant), чтобы у коллег не возникало и малейшего подозрения, что время - уже в нужной таймзоне и чтобы система типов приложения это подозрение моментально опровергала при попытке его сделать =)
добавлять at utc в скриптах - более вербозно, но эту цену я готов взять, ибо сырого sql в проекте значительно меньше, чем ORM-ного кода
источник

Т

Т.А in pgsql – PostgreSQL
Т.А
select "cardUsers".* from "cardUsers" where "token" = $1 - query_wait_timeout
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> Я не хочу использовать timestamptz

А зря не хотите. Дело в том, что timestamptz в PostgreSQL — это default type для этой категории типов, естественно.
Поэтому все преобразования и функции по умолчанию "тянет" в эту сторону. Т.е. обходиться без него можно, но ни разу не ошибиться (и эти ошибки будут совсем не очевидны!) не так-то просто.

> т.к. провайдер БД для приложения будет отдавать его как ZonedDateTime с зоной текущего подключения

Хмм... то есть? Что это за тип в postgres-овских терминах? Или, если это текст, как выглядят эти константы?

> А я хотел бы, чтобы семантика колонки была одной и той же - момент абсолютного времени (Instant),

И это как раз timestamptz!

> что время - уже в нужной таймзоне

В нормальных клиентах наличие части вроде "+07" в конце каждого значения толсто намекает, что это timestamptz.  ;)

> но эту цену я готов взять

А заплатить можете ещё и другую — ошибками.
источник

SB

S B in pgsql – PostgreSQL
покажите раздел [databases] файла конфигурации pgbouncer
источник

SB

S B in pgsql – PostgreSQL
включите логирование ошибок log_pooler_errors = 1
источник

Т

Т.А in pgsql – PostgreSQL
S B
покажите раздел [databases] файла конфигурации pgbouncer
источник

SB

S B in pgsql – PostgreSQL
Т.А
select "cardUsers".* from "cardUsers" where "token" = $1 - query_wait_timeout
query_wait_timeout — означает что у вас переполнился pool_size, если в определении пула вы не меняли default_pool_size и при режиме `pool_mode = transaction` — это означает что вы открыли более 32 транзакций в этом пуле, все последующие будут ждать query_wait_timeout секунд и если места в пуле не появится — будут отменены, что у Вас и происходит
источник

Т

Т.А in pgsql – PostgreSQL
S B
включите логирование ошибок log_pooler_errors = 1
вроде включено по дефолту. на всякий случай убрал ;
источник

SB

S B in pgsql – PostgreSQL
Т.А
вроде включено по дефолту. на всякий случай убрал ;
по дефолту по моему выключено, нужно явно поставить 1
источник

AP

Anton Patsev in pgsql – PostgreSQL
источник

Т

Т.А in pgsql – PostgreSQL
S B
query_wait_timeout — означает что у вас переполнился pool_size, если в определении пула вы не меняли default_pool_size и при режиме `pool_mode = transaction` — это означает что вы открыли более 32 транзакций в этом пуле, все последующие будут ждать query_wait_timeout секунд и если места в пуле не появится — будут отменены, что у Вас и происходит
а какое решение?
источник

SB

S B in pgsql – PostgreSQL
решение чего?
источник

SB

S B in pgsql – PostgreSQL
у вас нет никакой проблемы, всё работает как и задумано
источник

Т

Т.А in pgsql – PostgreSQL
источник