Pull to refresh

Comments 14

Нельзя использовать в логической репликации.

Что это означает?

Таблица с таким столбцом не будет реплицироваться?

Столбец не будет реплицироваться? Но зачем, если он вычислимый на стороне приемника репликации.

я не знаю, возможно некоторые вычисления могут зависеть от каких-то факторов (локаль, например), и данные разъедутся. Х.з, инфы пока что очень мало

Очень странно иметь реплики с отличными конфигурациями

Ничего странного, разные задачи бывают. Не просто разные конфигурации, но и разные ОС, мажорные версии прогресса, или вообще можно логически реплицировать в JSON и стримить через кафку в другие СУБД (не постгрес).

  • Нельзя индексировать.

То, что их нельзя индексировать, выглядит как-то ну очень глупо неочевидно. Индексированный виртуальный или хранимый - в чём разница, кроме места хранения?

  • Нельзя изменять выражение (ALTER TABLE… DROP EXPRESSION).

ALTER TABLE… DROP EXPRESSION - это не изменение выражения. Это изменение типа поля - с вычисляемого на статическое.

   в чём разница, кроме места хранения?

тоже удивился. Ведь по выраженияем в pg можно индексы делать, почему по выражениям, описанным в колонке нельзя. Видимо просто не допилили пока что.

Вот именно. По сути вся разница в том, что выражение переносится из метаданных индекса в метаданные таблицы, и ему присваивается имя, трактуемое как имя поля. А все остальные проблемы по сути уже решены.

В пг так яростно пилят некоторые фичи, что зачастую получается откровенное говно не пригодное к использованию. С виртуальными колонками выходит именно так. Мы их запилили, но использовать их Вы мало где сможете. У меня закономерный вопрос - а нахрена такое пилить?

поправлю про drop expression

Я можно кейс из реальной жизни - зачем ?

Тупой пример - это влияние по общим правилам нескольких полей в одно поле, ФИО, например.

Раньше это решалось через создание view с доп калькулируемым столбцом. Но текущее решение ничего нового чего давало view не имеет. Поэтому и выглядит странным.

Собственно по сравнению с представлением единственный плюс вычисляемого поля - это возможность его индексировать. Но именно этой фичи и не реализовано.

И, насколько я понимаю, не реализована ещё одна фича вычисляемого поля, которая очень нужна, если таковое поле вводится в структуру уже эксплуатируемой таблицы - возможность сделать такое поле скрытым (INVISIBLE). При отсутствии подобной фичи поломается много кода, особенно неаккуратно написанного кода - такого, где выполняются COPY/INSERT без указания списка полей. Да и SELECT *, опять же без списка конкретных полей, поплывёт, если где-то используется позиционная обработка или привязка структуры отображения к структуре полученного набора.

Это все очень интересно, но вот подскажите знатоки.

Как при установке в windows posgresql-installer.exe --locale указать американскую локализацию, мне нужно автоматизировать этот процесс и я написал маленький скрипт на плюсах, но самый принципиальный параметр локализация никак. En срабатывает корректно, а как выбрать именно американскую en_us, кстати такое написание, как и en_us.utf.8, "en_us.utf8", и все прочие вариации не срабатывает. В документации написано ini-file, пишет мол не правильно указываешь параметр.

Простите за оффтоп, но просто крик души.

Поднимитесь в самый верх страницы. Нажмите галочку между словом "Хабр" и кнопкой "Как стать автором", выберите Q&A... а там разберётесь.

Sign up to leave a comment.

Articles