Size: a a a

pgsql – PostgreSQL

2020 June 15

TS

Tagil Steel in pgsql – PostgreSQL
Yaroslav Schekin
Что такое "ленивым", в данной ситуации? ;)
В смысле, будет ли выполняться ELSE, если это не нужно?
Это зависит от того, что там — в случае constant folding и т.п. — будет, иначе executor будет выполнять ELSE только когда нужно, по идее (не уверен, что во всех случаях, конечно).

> И если да, то где это написано?

Т.е. на практике — чаще всего, выполняться не будет. Написано это здесь:

https://www.postgresql.org/docs/current/functions-conditional.html#FUNCTIONS-CASE

> То есть есть ли гарантия на уровне стандарта?

Но нет, гарантии как в PostgreSQL (см. https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-EXPRESS-EVAL ), так и в ISO SQL (насколько я понял — могу ошибаться, конечно) нет.

А в общем, в этом отношении postgres (как и многие другие СУБД, говорят) старается, чтобы это как можно чаще работало, потому что многие программисты этого (по каким-то причинам ;) ) ожидают. Но не всегда получается, как видите.
Насчет ленивого выполнения - да, именно так. Остановка выполнения тогда, когда полуен результат конструкции.
За ссылки спасибо, буду читать.
И еще - правильно ли я понимаю, что если это значение понадобится далее в нескольких агрегатах (при сложном GROUPING SETS), то оно будет вычислено только один раз?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Tagil Steel
Насчет ленивого выполнения - да, именно так. Остановка выполнения тогда, когда полуен результат конструкции.
За ссылки спасибо, буду читать.
И еще - правильно ли я понимаю, что если это значение понадобится далее в нескольких агрегатах (при сложном GROUPING SETS), то оно будет вычислено только один раз?
> если это значение понадобится далее в нескольких агрегатах (при сложном GROUPING SETS), то оно будет вычислено только один раз?

Агрегатные функции вообще всегда выполняются один раз, насколько я помню.
А вот если так вычисляются группы — другое дело, т.е. тут есть варианты / зависит от плана (лучше проверьте, если это важно).
источник
2020 June 16

0

0xFF in pgsql – PostgreSQL
CREATE TABLE seats
(   aircraft_code char(3) NOT NULL,      -- код самолета, IATA
   seat_no varchar(4) NOT NULL,      -- Номер места
   fare_condition varchar(10) NOT NULL,    -- Класс обслуживания
   FOREIGN KEY(aircraft_code)
          REFERENCES aircrafts(aircraft_code)
          ON DELETE CASCADE
);

INSERT INTO seats (seat_no, fare_condition) VALUES ('1', 'Buisness');

нулевое значение в колонке "aircraft_code" нарушает ограничение NOT NULL.

Но значения этого столбца заполняется значениями из таблицы aircrafts, не?
источник

0

0xFF in pgsql – PostgreSQL
Как правильно инсёртить?
источник

AB

Alexey Bulgakov in pgsql – PostgreSQL
0xFF
Как правильно инсёртить?
курсовая/лабораторная?
источник

0

0xFF in pgsql – PostgreSQL
Alexey Bulgakov
курсовая/лабораторная?
2
источник

0

0xFF in pgsql – PostgreSQL
Только не тролльте
источник

AB

Alexey Bulgakov in pgsql – PostgreSQL
ну так получите сначала код самолета перед вставкой. или уберите у поля ограничение not null
источник

AB

Alexey Bulgakov in pgsql – PostgreSQL
0xFF
Только не тролльте
я испугался, что это реальное приложение, тогда вам следовало оторвать руки :)
источник

0

0xFF in pgsql – PostgreSQL
Alexey Bulgakov
я испугался, что это реальное приложение, тогда вам следовало оторвать руки :)
--спасаю миллионы жизней--
источник

КТ

Кайржан Турмагамбето... in pgsql – PostgreSQL
0xFF
CREATE TABLE seats
(   aircraft_code char(3) NOT NULL,      -- код самолета, IATA
   seat_no varchar(4) NOT NULL,      -- Номер места
   fare_condition varchar(10) NOT NULL,    -- Класс обслуживания
   FOREIGN KEY(aircraft_code)
          REFERENCES aircrafts(aircraft_code)
          ON DELETE CASCADE
);

INSERT INTO seats (seat_no, fare_condition) VALUES ('1', 'Buisness');

нулевое значение в колонке "aircraft_code" нарушает ограничение NOT NULL.

Но значения этого столбца заполняется значениями из таблицы aircrafts, не?
Не " заполняется" а записи/строку которое вы вставляете, должно быть указан aircraft_code и оно должно существовать в таблице aircrafts.
Или же явно укажите null
источник

0

0xFF in pgsql – PostgreSQL
Во как
источник

AB

Alexey Bulgakov in pgsql – PostgreSQL
Кайржан Турмагамбетов
Не " заполняется" а записи/строку которое вы вставляете, должно быть указан aircraft_code и оно должно существовать в таблице aircrafts.
Или же явно укажите null
он и не пытается вставить значение поля aircraft_code
источник

КТ

Кайржан Турмагамбето... in pgsql – PostgreSQL
Alexey Bulgakov
он и не пытается вставить значение поля aircraft_code
Да, я не так высказался. Перефразировал
источник

Д

Денис in pgsql – PostgreSQL
Товарищи, приветствую! Подскажите, по проблеме, пожалуйста. На реплике возникает ошибка "ВАЖНО:  не удалось подключиться к главному серверу: неверный параметр соединения "passfile"", но .passfile выглядит так, как должен. PostgreSQL 9.6. Подскажите, куда копать?
источник

Д

Денис in pgsql – PostgreSQL
Для управления кластером использую patroni.
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Привет, посдкажите пожалуйста, как такое возможно
could not resize shared memory segment /postgresql to bytes no space left on device
База запущена на физическом сервере без всяких докеров. Подняли max_parallel_workers_per_gather и убавили work_mem, после этого начались такие проблемы
источник

М★

Михаил ★ in pgsql – PostgreSQL
Viktor Grigorev
Привет, посдкажите пожалуйста, как такое возможно
could not resize shared memory segment /postgresql to bytes no space left on device
База запущена на физическом сервере без всяких докеров. Подняли max_parallel_workers_per_gather и убавили work_mem, после этого начались такие проблемы
нет места на диске?
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
shared memory ? на диске место есть
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Viktor Grigorev
shared memory ? на диске место есть
df -h
источник