powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Автоматический анализ таблицы: тип "uint1" не существует
5 сообщений из 5, страница 1 из 1
Автоматический анализ таблицы: тип "uint1" не существует
    #40135216
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расширение uint1 установлено. Любые операции с типом "uint1" работают корректно.
Но при автоматическом анализе таблиц PostgreSql ругается на этот тип (без конца пишет ошибки в логи PostgreSQL):
Код: sql
1.
2.
3.
4.
5.
6.
2022-02-18 20:00:21.442 MSK [2194] КОНТЕКСТ:  внедрённая в код SQL-функция "FUNC1"
	SQL-функция "FUNC2" (при старте)
	автоматический анализ таблицы "SCHEMA.public.TABLE"
2022-02-18 20:00:21.562 MSK [2194] ОШИБКА:  тип "uint1" не существует (символ 59)
2022-02-18 20:00:21.562 MSK [2194] ЗАПРОС:  
		SELECT CAST(('x' || lpad($1, 8,'0'))::bit(32)::int4 AS uint1);


Почему при автоматическом анализе PostgreSQL не видит тип "uint1" ?
Судя по всему, при автоматическом анализе он не видит типы в схеме "public". Почему ?
...
Рейтинг: 0 / 0
Автоматический анализ таблицы: тип "uint1" не существует
    #40135220
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип " uint1 " задействован в функциях, которые используются в индексных выражениях и в ограничениях.
Т.е. при автоматическом анализе таблиц PostgreSQL, судя по всему, проверяет все выражения и типы и вдруг обнаруживает, что тип "uint1" он не знает...
Хотя те же самые функции, использующие тип "uint1", выполняет корректно, все запросы тоже выполняет корректно.
Единственное объяснение - не видит типы из схемы "public" в момент выполнения автоматического анализа таблиц...
...
Рейтинг: 0 / 0
Автоматический анализ таблицы: тип "uint1" не существует
    #40135221
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И команда " \dT * ", и SQL-запрос на выборку типов из системных таблиц PostgreSQL выводят все типы данных, включая uint1 .
Тип " uint1 " находится в схеме "public".

Вот "проблемная" функция FUNC1:
Код: sql
1.
2.
3.
CREATE OR REPLACE FUNCTION public.FUNC1(IN text) RETURNS uint1 AS $$
	SELECT CAST(('x' || lpad($1, 8,'0'))::bit(32)::int4 AS uint1);
$$ LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;
...
Рейтинг: 0 / 0
Автоматический анализ таблицы: тип "uint1" не существует
    #40135228
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если внутри функции вместо " uint1 " указывать явно " public.uint1 ", то ошибка не генерируется.
Вопрос в том, почему PostgreSQL не ищет типы данных в схеме " public " при выполнении автоматического (фонового) анализа таблиц...

Код: sql
1.
2.
3.
SELECT current_schemas(true);   -- {pg_catalog,public,topology}
SELECT current_schemas(false);  -- {public,topology}
SHOW search_path;               -- public, public, topology, "$user"
...
Рейтинг: 0 / 0
Автоматический анализ таблицы: тип "uint1" не существует
    #40135276
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02
Вопрос в том, почему PostgreSQL не ищет типы данных в схеме " public " при выполнении автоматического (фонового) анализа таблиц...

CVE-2018-1058
Намеренно.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Автоматический анализ таблицы: тип "uint1" не существует
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (7): Анонимы (4), Yandex Bot, Bing Bot 3 мин., Google Bot 4 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]