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

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

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

22 ответов

31 просмотр

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

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

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта