Skip to content

unrecognized node type: 375 #241

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Guzya opened this issue Dec 1, 2021 · 4 comments
Closed

unrecognized node type: 375 #241

Guzya opened this issue Dec 1, 2021 · 4 comments

Comments

@Guzya
Copy link

Guzya commented Dec 1, 2021

Problem description

Выполняю пример из доки по диапазонному секционированию и получаю ошибку.

CREATE TABLE journal (
id SERIAL,
dt TIMESTAMP NOT NULL,
level INTEGER,
msg TEXT);

-- добавление в таблицу некоторых данных
INSERT INTO journal (dt, level, msg)
SELECT g, random() * 6, md5(g::text)
FROM generate_series('2015-01-01'::date, '2015-12-31'::date, '1 minute') as g;

-- секционирование таблицы по диапазонам
SELECT create_range_partitions('journal', 'dt', '2015-01-01'::date, '1 month'::interval);

ERROR: unrecognized node type: 375
КОНТЕКСТ: PL/pgSQL function create_range_partitions(regclass,text,anyelement,interval,integer,boolean) line 63 at assignment

Environment

partitions=# SELECT * FROM pg_extension;
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
------------+----------+--------------+----------------+------------+-----------------+--------------
plpgsql | 10 | 11 | f | 1.0 | |
pg_pathman | 10 | 2200 | f | 1.5 | {860666,860677} | {"",""}

                                                  version                                                       

PostgreSQL 11.11 (Debian 11.11-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
(1 строка)

partitions=# SELECT get_pathman_lib_version();
ERROR: function get_pathman_lib_version() does not exist
СТРОКА 1: SELECT get_pathman_lib_version();
^
ПОДСКАЗКА: No function matches the given name and argument types. You might need to add explicit type casts.

partitions=# \df pathm
Список функций
Схема | Имя | Тип данных результата | Типы данных аргументов | Тип
--------+------------------------------------+-----------------------+-------------------------------------------------------------+-------
public | add_to_pathman_config | boolean | parent_relid regclass, expression text | функ.
public | add_to_pathman_config | boolean | parent_relid regclass, expression text, range_interval text | функ.
public | disable_pathman_for | void | parent_relid regclass | функ.
public | pathman_config_params_trigger_func | trigger | | функ.
public | pathman_ddl_trigger_func | event_trigger | | функ.
public | pathman_set_param | void | relation regclass, param text, value anyelement | функ.
public | pathman_version | cstring | | функ.
(7 строк)

@kovdb75
Copy link
Collaborator

kovdb75 commented Jan 14, 2022

К сожалению, у меня нет Debian.
Попробовал воспроизвести проблему на текущей ветке REL_11_STABLE (PostgreSQL 11.14) под Windows 10 Pro (21H2 19044.1466) и под Ubuntu 20.04.3 LTS:

  1. Исходники PostgreSQL взял отсюда:
git clone git://git.postgresql.org/git/postgresql.git
git checkout REL_11_STABLE
  1. Исходники pg_pathman взял отсюда:
git clone https://github.com/postgrespro/pg_pathman
  1. После сборки (PostgreSQL + pg_pathman) создал новую базу данных, прописал "shared_preload_libraries='pg_variables'" в файле postgresql.conf и выполнил скрипт:
CREATE EXTENSION pg_pathman;

SELECT version();
SELECT pathman_version();

CREATE TABLE journal (
id SERIAL,
dt TIMESTAMP NOT NULL,
level INTEGER,
msg TEXT);

-- добавление в таблицу некоторых данных
INSERT INTO journal (dt, level, msg)
SELECT g, random() * 6, md5(g::text)
FROM generate_series('2015-01-01'::date, '2015-12-31'::date, '1 minute') as g;

-- секционирование таблицы по диапазонам
SELECT create_range_partitions('journal', 'dt', '2015-01-01'::date, '1 month'::interval);

DROP TABLE journal CASCADE;
DROP EXTENSION pg_pathman;
  1. В результате ошибок не увидел - ниже результат для Windows (для Ubuntu результат похожий):
CREATE EXTENSION
                           version                           
-------------------------------------------------------------
 PostgreSQL 11.14, compiled by Visual C++ build 1929, 64-bit
(1 row)

 pathman_version 
-----------------
 1.5.12
(1 row)

CREATE TABLE
INSERT 0 524161
 create_range_partitions 
-------------------------
                      12
(1 row)

DROP TABLE
DROP EXTENSION
  1. Нужны дополнительные данные, которые бы позволили воспроизвести ошибку (в идеале - тестовый пример, генерирующий ошибку) ...

@Guzya
Copy link
Author

Guzya commented Jan 16, 2022

Там вряд ли дело в debian, у нас на прод debian 9 и работает все нормально.
А тут я решил доп. тестирование по одной из задач провести, в связи с чем развернул на своем тестовом сервере pg_pathman, а он ошибку кидает. На еще одном тестовом сервере попытался и там та же проблема.

На втором тестовом (аналогичен первому) та же ситуация

db1=# create extension pg_pathman ;
CREATE EXTENSION
db1=# 
db1=# CREATE TABLE journal (
db1(# id SERIAL,
db1(# dt TIMESTAMP NOT NULL,
db1(# level INTEGER,
db1(# msg TEXT);
CREATE TABLE
db1=# 
db1=# -- добавление в таблицу некоторых данных
db1=# INSERT INTO journal (dt, level, msg)
db1-# SELECT g, random() * 6, md5(g::text)
db1-# FROM generate_series('2015-01-01'::date, '2015-12-31'::date, '1 minute') as g;
INSERT 0 524161
db1=# SELECT create_range_partitions('journal', 'dt', '2015-01-01'::date, '1 month'::interval);
ОШИБКА:  unrecognized node type: 375
КОНТЕКСТ:  функция PL/pgSQL create_range_partitions(regclass,text,anyelement,interval,integer,boolean), строка 63, оператор присваивание
db1=# 

Включил debug5, прикрепляю кусок лога.

2022-01-16 19:12:00.543 MSK [7806] postgres@db1 ОТЛАДКА:  создание индекса "pg_toast_407486_index" для таблицы "pg_toast_407486" в непараллельном режиме
2022-01-16 19:12:00.543 MSK [7806] postgres@db1 КОНТЕКСТ:  функция PL/pgSQL create_range_partitions(regclass,text,anyelement,interval,integer,boolean), строка 63, оператор присваивание
2022-01-16 19:12:00.547 MSK [7806] postgres@db1 ОШИБКА:  unrecognized node type: 375

postgres.log.gz

@kovdb75
Copy link
Collaborator

kovdb75 commented Jan 18, 2022

Можно Вас попросить написать полную версию Debian и каким образом Вы устанавливали Postgresql и pg_pathman (из каких пакетов, или, если собирали сами - из каких исходников)?
Это нужно для повторения сборки на тестовой машине.

@Guzya
Copy link
Author

Guzya commented Jan 19, 2022

Проблема решилась, установкой из исходников непосредственно на серверах.

До того pg_pathman ставился из пакета собранного для размещения в нашем локальном репозитории (исходники те же).
Удалил этот пакет, скачал исходники и поставил ч\з

make install USE_PGXS=1

Большое спасибо за помощь!!!

@Guzya Guzya closed this as completed Jan 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants