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

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

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

22 ответов

34 просмотра

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

Сергей- Автор вопроса
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
Можно попробовать заказать данную доработку, если ...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта