172 похожих чатов

Привет! Прошу совета! Написал вьюху в postrgress сохранил ее. А

когда открыл код изменился. Выводит тоже, но в коде изменилась кодировка. Как мне открыть мой старый код? Спасибо

22 ответов

28 просмотров

Никак, думайте почему так произошло и старайтесь избегать.

Сергей- Автор вопроса
Ilya Anfimov
Никак, думайте почему так произошло и старайтесь и...

А что могло произойти, например? Ранее делал тоже самое в ms sql ни с чем подобным не сталкивался

Сергей
А что могло произойти, например? Ранее делал тоже ...

Ага напишите в коде юникод, для ms, я на вас посмотрю

А как именно изменился? В SQL существуют альтернативные синтаксические конструкции, позволяющие выразить одно и то же и PostgreSQL при построении дерева запроса производит приведение таких альтернативных синтаксисов к одному представлению, возврат из которого к текстовому запросу однозначный и не всегда соответствует исходному синтаксису. Например, xxx in (1,2,3) превратится в xxx = any(array[1,2,3]).

Сергей- Автор вопроса
Radist
А как именно изменился? В SQL существуют альтернат...

In заменились на array, кириллица на 344/433/444, а * на полный набор столбцов в таблицах

Сергей- Автор вопроса
Radist
А как именно изменился? В SQL существуют альтернат...

Есть ли возможность создавать представления так, что мой код не менялся?

Сергей
Есть ли возможность создавать представления так, ч...

В пг представления очень специфические. Настолько, что лишний раз с ними лично я стараюсь не связываться из-за того, что мой идеальный (вне сомнений)) код превращается в непотребство из бесконечных скобок.

Сергей
In заменились на array, кириллица на 344/433/444, ...

По поводу кириллицы - разбирайтесь с кодировками или используемым клиентом (мб. он криво с ними работает), остальные изменения синтаксический эквивалентны. Или вы ожидали, что при добавлении нового поля в таблицу, оно появится и во view? Так не бывает (разве что создавать event trigger, в котором пересоздавать view, при чём через drop). У view фиксированный набор колонок, т.к. вместо с самим представлением создаётся тип данных.

Сергей- Автор вопроса
Radist
По поводу кириллицы - разбирайтесь с кодировками и...

Я использую клиент dbeaver. Какой вы посоветуете использовать?

PavelDmitrenko
В пг представления очень специфические. Настолько,...

Храните код в системе контроля версий, а не в СУБД. PostgreSQL не хранит код (кроме кода хранимок) и не предназначен для этого. В остальном view превосходны для решения задачи "вот этот хитрый подзапрос надо использовать в 100500 других запросов и не охота его каждый раз писать".

Radist
Храните код в системе контроля версий, а не в СУБД...

view выполняют ровно такую же функцию, как вы описали, и в других РСУБД, но только ПГ смеет исказить мой код до неузнаваемости. Я понимаю, что это требуется, в частности, для типизации структур данных, но такое поведение всяко странно, особенно при опыте работы с другими рсубд (oracle, mssql, уверен, что большинство других)

Сергей
А что могло произойти, например? Ранее делал тоже ...

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

Сергей
Я использую клиент dbeaver. Какой вы посоветуете и...

create or replace view testview as select 'кириллица' cyr; в dbeaver 21.0.5 отображается как (создавал в нём же): CREATE OR REPLACE VIEW report.testview AS SELECT 'кириллица'::text AS cyr;

PavelDmitrenko
view выполняют ровно такую же функцию, как вы опис...

Просто никому это не нужно было до вас. Либо в других БД парсят запрос без преобразования альтернативных конструкций (хотя я не понимаю, зачем так делать). Можете попробовать предложить сообществу добавить в системный каталог DDL запроса (в том виде, в котором его исполнял пользователь). В худшем случае - получите аргументированный ответ на вопрос, почему это не нужно делать.

Сергей- Автор вопроса
Radist
create or replace view testview as select 'кирилли...

У меня вместо ::text '\320\272\320' и т.д

Radist
Просто никому это не нужно было до вас. Либо в дру...

Сообщество наверняка откажэтся. Поскольку видно много работы _ и не видно никаких плюсов.

Ilya Anfimov
Сообщество наверняка откажэтся. Поскольку видно мн...

Можно попробовать заказать данную доработку, если это принципиально прям, тут вопрос в том, примут ли патч.

Radist
Можно попробовать заказать данную доработку, если ...

Подозреваю, что нет: если делать подобный патч, он должен распространяться на другие объекты, а не только view. А это увеличит размер pg_catalog

Radist
Подозреваю, что нет: если делать подобный патч, он...

А также потому, что запрос может перестать соответствовать представлению (тот же select *)

Radist
Можно попробовать заказать данную доработку, если ...

Много работы дажэ не столько в переписывании каталога — сколько в обеспечении сквозной совместимости со всем, что есть.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта