Меню

Ошибка субд xx000 error failed to build any 7 way joins

I have a table with a JSONB field containing nested arrays.
I would like to explode the data in those nested JSON arrays to multiple rows while keeping the information about the place of each value in the arrays structure.

I have some queries which work until a certain level of nesting but i came to a point where Postgres fails with a [XX000] ERROR: failed to build any 3-way joins that I don’t understand.

Is anybody able to indicate what I am doing wrong and/or what is this error meaning?


For convenience below is everything to reproduce the problem:

A very simple table:

CREATE TABLE random_table (
    random_field JSONB
);

A very nested JSONB data:

INSERT INTO public.random_table (random_field) VALUES ('{"bar": [[[1, 2, 3, 4]]], "foo": [[["abc", "def"], ["tuw", "xyz"]]]}');

A quite complex query:

SELECT *
FROM random_table
    LEFT OUTER JOIN LATERAL (
        SELECT *
        FROM jsonb_array_elements(random_table.random_field -> 'foo')
            WITH ORDINALITY AS foo_level_1(foo_1, foo_1_index)
        LEFT OUTER JOIN LATERAL (
            SELECT *
            FROM jsonb_array_elements(foo_1)
                WITH ORDINALITY AS foo_level_2(foo_2, foo_2_index)
--             LEFT OUTER JOIN LATERAL (
--                 SELECT *
--                 FROM jsonb_array_elements(foo_2)
--                     WITH ORDINALITY AS foo_level_3(foo_3, foo_3_index)
--             ) AS foo_lateral_2 ON TRUE
        ) AS foo_lateral_1 ON TRUE

--         FULL OUTER JOIN jsonb_array_elements(random_table.random_field -> 'bar')
--             WITH ORDINALITY AS bar_level_1(bar_1, bar_1_index) ON FALSE
--         LEFT OUTER JOIN LATERAL (
--             SELECT *
--             FROM jsonb_array_elements(bar_1)
--                 WITH ORDINALITY AS bar_level_2(bar_2, bar_2_index)
--         ) AS bar_lateral_1 ON TRUE
    ) AS pouet ON TRUE;

Note the two commented parts:

  • If the first one OR the second one is uncommented, the query seems to be working as expected (not finished but encouraging)
  • If both are uncommented, The [XX000] ERROR: failed to build any 3-way joins occurs

see the fiddle.

Obviously I would like to be able to uncomment the two commented parts and even complexify the FROM clause.

Any help will be greatly appreciated.

У меня есть таблица с полем JSONB, содержащим вложенные массивы. Я хотел бы разбить данные в этих вложенных массивах JSON на несколько строк, сохраняя информацию о месте каждого значения в структуре массивов.

У меня есть несколько запросов, которые работают до определенного уровня вложенности, но я дошел до того, что Postgres завершается с ошибкой [XX000] ERROR: failed to build any 3-way joins которые я не понимаю.

Кто-нибудь может указать, что я делаю неправильно и/или что означает эта ошибка?

Для удобства ниже есть все, чтобы воспроизвести проблему:

Очень простая таблица:

CREATE TABLE random_table (
random_field JSONB
);

Очень вложенные данные JSONB:

INSERT INTO public.random_table (random_field) VALUES ('{"bar": [[[1, 2, 3, 4]]], "foo": [[["abc", "def"], ["tuw", "xyz"]]]}');

Довольно сложный запрос:

SELECT *
FROM random_table
LEFT OUTER JOIN LATERAL (
SELECT *
FROM jsonb_array_elements(random_table.random_field -> 'foo')
WITH ORDINALITY AS foo_level_1(foo_1, foo_1_index)
LEFT OUTER JOIN LATERAL (
SELECT *
FROM jsonb_array_elements(foo_1)
WITH ORDINALITY AS foo_level_2(foo_2, foo_2_index)
-- LEFT OUTER JOIN LATERAL (
-- SELECT *
-- FROM jsonb_array_elements(foo_2)
-- WITH ORDINALITY AS foo_level_3(foo_3, foo_3_index)
-- ) AS foo_lateral_2 ON TRUE
) AS foo_lateral_1 ON TRUE

-- FULL OUTER JOIN jsonb_array_elements(random_table.random_field -> 'bar')
-- WITH ORDINALITY AS bar_level_1(bar_1, bar_1_index) ON FALSE
-- LEFT OUTER JOIN LATERAL (
-- SELECT *
-- FROM jsonb_array_elements(bar_1)
-- WITH ORDINALITY AS bar_level_2(bar_2, bar_2_index)
-- ) AS bar_lateral_1 ON TRUE
) AS pouet ON TRUE;

Обратите внимание на две прокомментированные части:

    Если первый ИЛИ второй не комментируется, кажется, что запрос работает должным образом (не завершен, но обнадеживающий) Если оба не прокомментированы, [XX000] ERROR: failed to build any 3-way joins

увидеть скрипку

Очевидно, я хотел бы иметь возможность раскомментировать две прокомментированные части и даже усложнить предложение FROM.

Любая помощь будет оценена.

Войти или зарегистрироваться

8.х Проблема с Postgres 8.2.6

Тема в разделе «Установка платформы «1С:Предприятие 8″», создана пользователем nix0n, 28 мар 2008.




0/5,
Голосов: 0
  1. TopicStarter Overlay

    nix0n

    Offline

    nix0n

    Регистрация:
    17 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1

    Доборый день!

    На сервере был установлен Постгрес 8.1.5 из поставки 1С. Проблем не наблюдалось. После перехода на версию 8.2.6 (скачана с сайта 1С) при проведении платежных поручения возникает ошибка «failed to build any 8-way join». Это у всех так?


    nix0n,
    28 мар 2008
    #1

  2. BabySG

    Offline

    BabySG
    Администраторы
    Команда форума
    Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    18
    Баллы:
    29

    Есть такая ошибка тут ее описание.


    BabySG,
    28 мар 2008
    #2
  3. TopicStarter Overlay

    nix0n

    Offline

    nix0n

    Регистрация:
    17 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1

    Спасиб.
    Самое интересное, что валится на 1С демо-базе. Похоже господа не утруждают себя отладкой.


    nix0n,
    28 мар 2008
    #3
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Показать игнорируемое содержимое
Похожие темы

  1. decoder

    8.х
    Postgres (Windows) проблема создания базы

    decoder,
    5 июл 2007
    , в разделе: Установка платформы «1С:Предприятие 8»
    Ответов:
    4
    Просмотров:
    5.468
    LkMaksimka
    11 сен 2008

  2. Decard

    8.х
    1С 8.1 перенос базы с Postgres 8.2 на 8.3

    Decard,
    7 апр 2009
    , в разделе: Установка платформы «1С:Предприятие 8»
    Ответов:
    0
    Просмотров:
    3.487
    Decard
    7 апр 2009

  3. Tronen

    8.х
    Установка Postgres на ubuntu 11.10

    Tronen,
    29 дек 2011
    , в разделе: Установка платформы «1С:Предприятие 8»
    Ответов:
    1
    Просмотров:
    1.235
    aureliano
    13 янв 2012

  4. Tronen

    8.х
    Ошибка в БД на postgres

    Tronen,
    20 фев 2012
    , в разделе: Установка платформы «1С:Предприятие 8»
    Ответов:
    13
    Просмотров:
    3.198
    TODD22
    31 мар 2012

  5. MyNameNoName

    8.х
    Как удаленно узнать postgres x86 или x64?

    MyNameNoName,
    19 дек 2013
    , в разделе: Установка платформы «1С:Предприятие 8»
    Ответов:
    1
    Просмотров:
    862
    safarov
    1 янв 2014

Загрузка…
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

Re: BUG #2862: ERROR: failed to build any 7-way joins

From: Tom Lane
To: «Sergey»
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #2862: ERROR: failed to build any 7-way joins
Date: 2006-12-25 20:39:15
Message-ID: 25705.1167079155@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

«Sergey» writes:
> After migrating to 8.2 I received an error:
> ERROR: failed to build any 7-way joins

I think this is already reported and fixed, but your test case looks a
bit different from the previous examples — don’t suppose you’re in
a position to try it against CVS tip before we release 8.2.1?

regards, tom lane

In response to

  • BUG #2862: ERROR: failed to build any 7-way joins at 2006-12-23 12:46:17 from Sergey

Browse pgsql-bugs by date

From Date Subject
Next Message Tom Lane 2006-12-25 20:41:33 Re: SIMILAR TO incorrect with alternation
Previous Message Harpreet Dhaliwal 2006-12-25 17:32:17 Re: [GENERAL] NEED URGENT HELP.

Copyright © 1996-2023 The PostgreSQL Global Development Group

Источник

BUG #2862: ERROR: failed to build any 7-way joins

From: «Sergey»
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #2862: ERROR: failed to build any 7-way joins
Date: 2006-12-23 12:46:17
Message-ID: 200612231246.kBNCkH9J067639@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged online:

Bug reference: 2862
Logged by: Sergey
Email address: for(dot)adv(at)gmail(dot)com
PostgreSQL version: 8.2.0-1
Operating system: Windows XP Pro SP2
Description: ERROR: failed to build any 7-way joins
Details:

After migrating to 8.2 I received an error:
ERROR: failed to build any 7-way joins
SQL state: XX000

STATEMENT: select * from v_well_main w LEFT OUTER JOIN v_state_main s ON
(w.»Id_well»=s.»Id_wl») LEFT OUTER JOIN v_expl_main e ON
(w.»Id_well»=e.»Id_wl») where w.»Id_dep»=7

View v_well_main contained statement:
SELECT w.»Id_well», w.»Name_wl», w.»Num», w.»Cod», c.»Name» AS
«Categor_name», w.»Inv_num», w.»Balance», w.»Obl», w.»Reg», w.»Sl_rada»,
w.»Latitude_deg», w.»Latitude_min», w.»Latitude_sec», w.»Longitude_deg»,
w.»Longitude_min», w.»Longitude_sec», w.»Topograf_note», w.»Passp_org»,
w.»Passp_date», w.»Executor», w.»Exec_phone», w.»Director», w.»Al_rotor»,
w.»Al_gr», w.»dP», o.»Id_org», o.»Name», o.»Address», o.»EDRPOU», o.»Phone»,
b.»Name» AS name_obl, b.»KOATUU» AS obl_koatuu, r.»Name» AS name_raj,
r.»KOATUU» AS raj_koatuu, s.»Name» AS sl, v.»Id_dep», v.»Name_dep», v.»Typ»,
v.obj_typ, v.»Begin», v.»End»
FROM v_well_obj v, «Categor_dic» c, «Well» w
LEFT JOIN «Obl_dic» b ON w.»Obl» = b.»Id_obl»
LEFT JOIN «Raj_dic» r ON w.»Reg» = r.»Id_raj»
LEFT JOIN «Sl_rad_dic» s ON w.»Sl_rada» = s.»Id_s»
LEFT JOIN «Org_dic» o ON w.»Passp_org» = o.»Id_org»
WHERE v.»Id_well» = w.»Id_well» AND c.»Id_cat» = w.»Categor»
ORDER BY w.»Num»;

The query was executed in pgAdmin III
If STATEMENT change to:
select * from v_well_main w where w.»Id_dep»=113
then it executed OK

Источник

Re: ERROR: failed to build any 4-way joins SQL state: XX000, PostgreSQL 8.2 beta1

From: Tom Lane
To: «JEAN-PIERRE PELLETIER»

Cc: pgsql-bugs(at)postgresql(dot)org Subject: Re: ERROR: failed to build any 4-way joins SQL state: XX000, PostgreSQL 8.2 beta1 Date: 2006-10-24 17:51:31 Message-ID: 21640.1161712291@sss.pgh.pa.us Views: Raw Message | Whole Thread | Download mbox | Resend email Thread: Lists: pgsql-bugs

writes:
> I have a query that throws «ERROR: failed to build any 4-way joins

Fixed — thanks for the report! (This didn’t make beta2, but will
be in the next one.)

regards, tom lane

In response to

  • ERROR: failed to build any 4-way joins SQL state: XX000, PostgreSQL 8.2 beta1 at 2006-10-24 15:27:14 from JEAN-PIERRE PELLETIER

Responses

  • Re: ERROR: failed to build any 4-way joins SQL state: XX000, PostgreSQL at 2006-11-08 15:00:57 from JEAN-PIERRE PELLETIER

Browse pgsql-bugs by date

From Date Subject
Next Message Andrus Moor 2006-10-24 18:10:38 BUG #2718: Failed to run initdb, log file does not exist
Previous Message Pavel 2006-10-24 15:43:37 BUG #2717: performance problem with enable_bitmapscan

Copyright © 1996-2023 The PostgreSQL Global Development Group

Источник

v.8 SQL Server — Ошибка СУБД

При получении любым способом доступа к документу (документ примерно вычислил) программа вылетает и выдает
Ошибка СУБД :
Microsoft OLE DB Provider for SQL Server :
Page (1:1083352), slot 82 for text, ntext, or image node does not exist
HRESULT=80004005,SQLSTATE=HY000,native=7105

Error: 7105, Severity: 22, State: 6

Не можем сделать ни перепроведение, ни восстановление последовательности, ни перенос данных, работа по сути парализована.
SQL server знаю плохо, размер базы 11Гб
Пробовал запускать Integrity Checks Job for DB Maintenance Plan — проходит несколько суток и не понятно работает она или нет ибо ничего не происходит.
Я даже готов вручную удалить эти документы из таблиц, только не знаю как к ним подобраться. Подскажите кто сталкивался с такой проблемой, как ее максимально быстро решить, время уже поджимает, бухгалтерия не может никак март закрыть изза этого.

RESOLUTION
Hotfix information
A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next SQL Server 2000 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the hotfix. For a complete list of Microsoft Product Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:
http://support.microsoft.com/contactus/?ws=support
Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.
Prerequisites
This hotfix requires SQL Server 2000 Service Pack 3 (SP3). For information about how to obtain SQL Server 2000 SP3, see the following article in the Microsoft Knowledge Base:
290211 How to obtain the latest SQL Server 2000 Service Pack

Additionally, this hotfix requires that you have SQL Server 2000 post-Service Pack 3hotfix build 2000.80.977 installed. For more information about SQL Server 2000 post-Service Pack 3 hotfix build 2000.80.977, click the following article number to view the article in the Microsoft Knowledge Base:
888007 You receive a «The product does not have a prerequisite update installed» error message when you try to install a SQL Server 2000 post-Service Pack 3 hotfix

Источник

Ошибки СУБД. 1С+PostgreSQL+Linux. Часть 2.

Ошибка СУБД:

Продолжение сообщения может быть различным:

DATABASE не пригоден для использования

Пример полного текста ошибки:

Описание ошибки:

База не запускается после установки и создания.

Решения:

Установим версию предназначенную для работы с 1С:Предприятием. Скачать такую можно с сайта 1С (при наличии купленного ИТС и открытого доступа), или приобрести у PostgresPro.

Либо проверим все ли зависимости были установлены. И установим недостающие.

ERROR: type «tt7» already exists

Пример полного текста ошибки:

Описание:

Данная ошибка является «плавающей» и может возникать в различных местах

Решение:

Выгрузим и загрузим базу данных средствами 1С:Предприятия(через файл *.dt).

ERROR: could not read block

Описание ошибки:

База не запускается. Разрушились диски.

Решения:

Переносим базу на другую дисковую систему.

Разворачиваем из резервной копии.

Не удалось запустить сервер PostgreSQL

Пример полного текста ошибки:

Описание:

Такая ситуация часто случается у начинающих администраторов в случае, если они хотят инициализировать сервер в каталог отличный от каталога по умолчанию. При этом сервер уже запустили из каталога по умолчанию.

В этой ситуации при попытке запуска видно ошибку – сервер не запускается.

А при проверке состояния видно, что сервер работает.

Если проверим запущенные процессы пользователя postgres, то можно увидеть, что порт 5432 занят кластером PostgreSQL, только запущенным из каталога по умолчанию.

Решение:

Остановим работающий кластер сервера СУБД.

Инициализируем кластер из нового каталога(если он не инициализирован).

Запустим из нового каталога.

Длительный запуск 1С:Предприятия при работе с СУБД PostgreSQL

Описание:

Длительный запуск, длительный захват объектов в хранилище, длительное сохранение конфигурации 1С:Предприятия.

Решение:

Такая проблема может быть связано с настройками СУБД PostgreSQL.

Рассчитаем настройки СУБД.

Описание настроек приведено на ИТС.

Выполним настройки, для этого перейдем в терминал psql:

Через psql установим параметры командой ALTER SYSTEM SET(параметры необходимо указать для вашей СУБД):

Из файла *xlsx загружаются в 1С иероглифы/ в файл выгружаются иероглифы.

Описание ошибки:

При загрузке данных из файла *.xlsx в 1С отображаются иероглифы. Используемая СУБД PostgreSQL/PostgresPro.

Также возможна проблема с кодировкой в выгружаемом файле из 1С:

Решение:

На сервере СУБД проверим и выполним настройку локали.

1. Проверим наличие локали:

2. Проверим переменную:

Корректное значение результатов выполнения команд 2, 3:

3. Если результат не соответствует, выполним:

5. Выполним перезапуск серверов СУБД

Еще можно посмотреть

Отладка на сервере 1С на Linux

Настройка отладки на Linux сервере 1С. Пошаговый процесс настройки tcp и http отладки.

Установка двух версий сервера 1С на Linux

Пошаговый процесс установки и запуска двух версий сервера 1С на Linux. Полное описание настройки второго экземпляра сервера 1С.

Утилита ring license для 1С версии 8.3.14 и выше под Linux

Для чего нужен 1C ring license? На текущий момент широко распространено использование программных лицензий. И системы на базе 1С в этом не исключение. Но, помимо простой активации пин-кодов, программная лицензия 1С также нуждается в обслуживании. Для обслуживания разработчику требуются знания об инструменте для получения списков, информации, анализа состояния файлов программных лицензий. Об этом инструменте мы […]

Очистка кэша: серверного и клиентского для 1С:Предприятия

Лечим непонятные ошибки 1С Предприятия чисткой так называемого кеша — служебных файлов с настройками 1С

НАСТРОЙКА PG_PROFILER ДЛЯ POSTGRESQL 11.

Помимо анализа планов и запросов СУБД в технологическом журнале 1С, также бывает полезным анализировать статистику по запросам в pg_profiler. Тем более, что она уже собирается в сгруппированном по запросам виде. Ниже приведем инструкцию по его настройке. 1. Инсталляция и настройка pg_profile. 2. Настройка отображения pg_profiler через веб-сервер apache. Инсталляция и настройка pg_profile. 1. Скачаем pg_profile […]

ОШИБКА 1С:ПРЕДПРИЯТИЯ «ПОТЕРЯНО СОЕДИНЕНИЕ»

У пользователя во время работы может возникать сообщение: [crayon-63c0430add38c987527644/] После чего рабочий режим либо восстанавливается, либо нет. В сообщении достаточно ясно описана возникшая ситуация, но необходимо понимать, что по другую сторону экрана пользователя, ландшафт системы может быть несколько сложнее, чем он себе представляет. И сервер «с которым потеряно соединение» может быть не только сервер 1С:Предприятия. […]

Хранение файлов 1С в томах на nfs-шаре Linux

Пошаговая настройка варианта хранения файлов 1С Предприятия во внешнем NFS хранилище на ОС Linux

Источник

   bonik

17.04.07 — 06:41

При получении любым способом доступа к документу (документ примерно вычислил) программа вылетает и выдает

Ошибка СУБД :

Microsoft OLE DB Provider for SQL Server :

Page (1:1083352), slot 82 for text, ntext, or image node does not exist

HRESULT=80004005,SQLSTATE=HY000,native=7105

 Error: 7105, Severity: 22, State: 6

  Не можем сделать ни перепроведение, ни восстановление последовательности, ни перенос данных, работа по сути парализована.

  SQL server знаю плохо, размер базы 11Гб

  Пробовал запускать Integrity Checks Job for DB Maintenance Plan  — проходит несколько суток и не понятно работает она или нет ибо ничего не происходит.

  Я даже готов вручную удалить эти документы из таблиц, только не знаю как к ним подобраться. Подскажите кто сталкивался с такой проблемой, как ее максимально быстро решить, время уже поджимает, бухгалтерия не может никак март закрыть изза этого…

   ТелепатБот

1 — 17.04.07 — 06:41

   MRAK

2 — 17.04.07 — 08:35

Попробуйте на SQL.RU там вам именно по СУБД толково объяснят

   чувак

3 — 17.04.07 — 08:37

(0) Можно удалить из EM

   masky

4 — 17.04.07 — 08:49

результат select @@version в студию.

   bonik

5 — 17.04.07 — 08:52

Microsoft SQL Server  2000 — 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Developer Edition on Windows NT 5.2 (Build 3790: )

   masky

6 — 17.04.07 — 09:13

dbcc что говорит?

   Господин ПЖ

7 — 17.04.07 — 09:23

   Господин ПЖ

8 — 17.04.07 — 09:24

RESOLUTION

Hotfix information

A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next SQL Server 2000 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the hotfix. For a complete list of Microsoft Product Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:

http://support.microsoft.com/contactus/?ws=support

Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

Prerequisites

This hotfix requires SQL Server 2000 Service Pack 3 (SP3). For information about how to obtain SQL Server 2000 SP3, see the following article in the Microsoft Knowledge Base:

290211 How to obtain the latest SQL Server 2000 Service Pack

Additionally, this hotfix requires that you have SQL Server 2000 post-Service Pack 3hotfix build 2000.80.977 installed. For more information about SQL Server 2000 post-Service Pack 3 hotfix build 2000.80.977, click the following article number to view the article in the Microsoft Knowledge Base:

888007 You receive a «The product does not have a prerequisite update installed» error message when you try to install a SQL Server 2000 post-Service Pack 3 hotfix

   masky

9 — 17.04.07 — 09:26

(8)

CAUSE

This problem occurs if the following conditions are true:• You are running SQL Server 2000 with an affinity mask.

• The affinity mask is set to use a number of processors that is a multiple of seven.

   masky

10 — 17.04.07 — 09:26

>number of processors that is a multiple of seven

не думаю что у него столько есть

   bonik

11 — 17.04.07 — 09:27

получается надо пставить

Пакет обновления 4 (SP4) для SQL Server 2000

или даже

SQL Server 2005

   Господин ПЖ

12 — 17.04.07 — 09:27

(10) :))

   Господин ПЖ

13 — 17.04.07 — 09:31

Как то это не по людски 11 Гб на DE держать… в качестве сервера наверное WinXP?..

   masky

14 — 17.04.07 — 09:31

(11) не выдумывай, а.. если не разбираешься.. что те dbcc говорит?

   masky

15 — 17.04.07 — 09:32

(13) халявят они.

   bonik

16 — 17.04.07 — 09:35

хорошая идея — dbcc — запустил

CHECKDB found 1 allocation errors and 18 consistency errors in database ‘test’.

repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (test_UPR_err repair_rebuild).

запустил и его

CHECKDB found 1 allocation errors and 20 consistency errors in database ‘test_UPR_err’.

CHECKDB fixed 1 allocation errors and 20 consistency errors in database ‘test_UPR_err’.

DBCC execution completed.

Вот только теперь не знаю сделал он мне data_loss или нет? Подскажите как проверить?

   masky

17 — 17.04.07 — 09:43

(16) останавливаешь сервер. копируешь файлы куда нить. запускаешь с repair_allow_data_loss . смотришь.

   bonik

18 — 17.04.07 — 09:44

и?

   masky

19 — 17.04.07 — 09:44

(16) а , дык ты запустил.. ну тогда запускаешь ТИИ.

   bonik

20 — 17.04.07 — 09:45

я сделал копию — запустил — получил что вроде все исправлено — а как теперь проверить — есть потеря данных или нет — он это в логе как отмечает??

   bonik

21 — 17.04.07 — 09:47

ТИИ —  Это чего такое?

  

bonik

22 — 17.04.07 — 10:01

ТиИ — Тестирование и Исправление ИБ, пункт меню Администрирование Конфигуратора :-))

Describe the issue
In some rare cases database could throw XX000 error with message «cache lookup failed for function «. Reverting to savepoint before query and re-executing query fixes the problem.
According to the autosave parameter description, we expected jdbc driver to fix this error with autosave=conservative but it does not.

Driver Version?
42.2.12
42.2.13-20200331.194247-1

Java Version?
jdk-8.0.252.09-hotspot

OS Version?
Window 7 x64

PostgreSQL Version?
reproduced for: PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11), 64-bit
cannot reproduce for: PostgreSQL 12.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit

To Reproduce
Save as «TestXX000.java», modify connection string in getConn() function, compile and run in the presence of jdbc driver:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.Locale;
import java.util.Properties;

public class TestXX000 {

    //@fmt:off
    private static final String FUNC0 = 
            "create or replace function public.textXX000_internal(t in text, flag in boolean default true) returns text as $$n" +
            "select case when flag then t else (select nspname::text from pg_catalog.pg_namespace where nspname = 'public') endn" + 
            "$$ language sql stable called on null input;";
    private static final String FUNC = 
            "BEGIN;n" +
            "DROP SCHEMA IF EXISTS textXX000 CASCADE;n" + 
            "CREATE SCHEMA textXX000;n" +
            "GRANT USAGE ON SCHEMA textXX000 TO public;n" + 
            "ALTER DEFAULT PRIVILEGES IN SCHEMA textXX000 GRANT EXECUTE ON FUNCTIONS TO public;n" + 
            "SET SEARCH_PATH TO testXX000;rn" + 
            "create or replace function textXX000.testXX000(t in text, i integer) returns text as $$n" +
            "beginn" + 
            "  return t || i;n" + 
            "end;n" + 
            "$$ language plpgsql stable returns null on null input;" + 
            "END;";
    private static final String FUNCOIDS =
            "SELECT n as func, n::regproc::oid as idrn" + 
            "  from unnest('{public.textXX000_internal,textXX000.testXX000}'::text[]) n";
    private static final String SQL = 
            "select textXX000.testXX000(public.textXX000_internal(?), ?);";
    //@fmt:on

    public static void main(String[] args) throws SQLException, InterruptedException {
        Locale.setDefault(Locale.ENGLISH);
        Thread thr = new Thread(TestXX000::threadFunc);
        thr.start();
        Thread.sleep(1000);

        try (Connection conn = getConn();
                // PreparedStatement ps2 = conn.prepareStatement("DEALLOCATE ALL");
                PreparedStatement ps = conn.prepareStatement(SQL)) {
            conn.setAutoCommit(false);
            for (int i = 0; i < 3; ++i) {
                ps.setString(1, "iteration # ");
                ps.setInt(2, i);

                // ps2.execute();
                Savepoint sp = conn.setSavepoint("123");
                try (ResultSet rs = ps.executeQuery()) {
                    boolean b = rs.next();
                    System.out.println(
                            "ok: " + b + (b ? " " + ps.getMetaData().getColumnName(1) + " = " + rs.getString(1) : ""));
                } catch (SQLException e) {
                    System.err.println(e.getSQLState() + " " + e.getMessage());
                    if ("XX000".equals(e.getSQLState()))
                        conn.rollback(sp);
                    else
                        throw e;
                } finally {
                    conn.releaseSavepoint(sp);
                }
                Thread.sleep(1000);
            }
        } finally {
            thr.interrupt();
            thr.join();
        }
    }

    private static void threadFunc() {
        try (Connection conn = getConn();
                Statement st = conn.createStatement();
                PreparedStatement ps = conn.prepareStatement(FUNCOIDS)) {
            conn.setAutoCommit(true);
            st.execute(FUNC0);
            for (int i = 2; i > 0; --i) {
                st.execute(FUNC);
                try (ResultSet rs = ps.executeQuery()) {
                    StringBuilder b = new StringBuilder();
                    while (rs.next()) {
                        if (b.length() > 0)
                            b.append(",");
                        b.append(rs.getString("func")).append("=").append(rs.getLong("id"));
                    }
                    System.out.println("recompiled: " + b);
                }
                Thread.sleep(750);
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        } catch (SQLException e) {
            System.out.println(e.getSQLState());
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    private static Connection getConn() throws SQLException {
        Properties props = new Properties();
        props.setProperty("user", "postgres");
        props.setProperty("password", "postgres");
        props.setProperty("loggerLevel", "TRACE");
        props.setProperty("loggerFile", "pgjdbc-trace.log");
        props.put("autosave", "conservative");
        // props.put("prepareThreshold", 0);

        return DriverManager.getConnection("jdbc:postgresql://IP:5432/DATABASE", props);
    }

}

Provided functions and query are the minimal reproduced example.

Expected behaviour
JDBC driver handles «ERROR: cache lookup failed for function <…>» itself, no savepoint required.
The output expected to be:

recompiled: public.textXX000_internal=208173185,textXX000.testXX000=208182048
ok: true testxx000 = iteration # 0
recompiled: public.textXX000_internal=208173185,textXX000.testXX000=208182051
ok: true testxx000 = iteration # 1
ok: true testxx000 = iteration # 2

Actual behaviour
Program must handle error itself, one execution result is missing, actual output is:

recompiled: public.textXX000_internal=208173185,textXX000.testXX000=208182048
ok: true testxx000 = iteration # 0
recompiled: public.textXX000_internal=208173185,textXX000.testXX000=208182051
XX000 ERROR: cache lookup failed for function 208182048
  Location: File: lsyscache.c, Routine: get_func_cost, Line: 1616
  Server SQLState: XX000
ok: true testxx000 = iteration # 2

May be a postgresql problem, but seems not affected latest postgresql version.

Logs
pgjdbc-trace.log.zip

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка субд the transaction
  • Ошибка субд out of memory for query result 1с postgresql