powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
36 сообщений из 36, показаны все 2 страниц
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453043
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые коллеги!
Есть проект, в котором в качестве СУБД используем FB 2.5.
Рассматриваем переход с FB 2.5 на FB 3.0. В процессе тестирования возникло ряд проблем, а именно ряд sql-запросов, прекрасно работающие в FB 2.5, не выполняются в FB 3.0.
1. В частности, запрос такого типа:
Код: sql
1.
2.
3.
4.
5.
select t2.*
from sp_sel_table_1(:param) sp, --хранимая процедура
      table2 t2 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --вот здесь у FB3 возникают сложности с sp.key_id
where t2.key_id2=sp.key_id2            


выдается ошибка
Код: sql
1.
2.
3.
SQL error code = -206.
Column unknown.
sp.key_id 


хотя поля key_id хранимая процедура возвращает

2. Другой тип проблемного запроса:
Код: sql
1.
2.
3.
4.
5.
select t2.*
from (select key_id, key_id2 from table1 where filed_x=:param and value > 0) sel,
      table2 t2 -- некая таблица БД
      join table3 t3 on t3.key_id=sel.key_id --вот здесь у FB3 возникают сложности с sel.key_id
where t2.key_id2=sel.key_id2            


выдается ошибка
Код: sql
1.
2.
3.
SQL error code = -206.
Column unknown.
sel.key_id 
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453045
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird 3 запрещено смешивать явные и неявные join.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453051
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 15 мая 2017 г. 12:52:11:

Dimitry Sibiryakov> Firebird 3 запрещено смешивать явные и неявные join.о!

наконец-то, шеф!

(С) м/ф "Приключения капитана Врунгеля" (1980)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453055
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Класс!
и как быть? что посоветуете? переписывать все запросы (а если их сотня)... мммм.. неее..

Не понятно почему в FB3 не оставили к sql-запросам прежней версии FB2.5 совместить ну или хотя бы внести поддержку некого SQL Dialect 4, работающий по новым правилам.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453056
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum
Код: sql
1.
2.
table2 t2 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --вот здесь у FB3 возникают сложности с sp.key_id

Не вижу sp в данном join

Про смешивание явных и неявных join уже ответили
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453058
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Alxethereum!
You wrote on 15 мая 2017 г. 12:58:25:

Alxethereum> *что посоветуете?* переписывать все запросы (а если их сотня)... мммм.. неее..жизнь - говно.
но мы привыкли...
(С)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453061
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как наименее болезненно и быстро решить подобные проблемы с запросами? Выковыривать из проекта - большой гемор.. (тем более, если запросов много динамических).
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453063
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, тут программист нужен.
(С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453071
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereumКак наименее болезненно и быстро решить подобные проблемы с запросами?

Забыть про Firebird 3, раз уж умудрились сваять такой кривой проект.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453073
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, за совет! Очччень помог.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453075
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Alxethereum!
You wrote on 15 мая 2017 г. 13:12:11:

Alxethereum> Спасибо, за совет! Очччень помог.
ну, ты заходи... если шо..
(С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453076
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum,

надо было сразу писать нормальные запросы. Про кривость смешивания явных и неявных джойнов было сказано ещё лет 15 назад. Это категорически не рекомендовалось, но кто-то пропускал советы мимо ушей. Теперь это запретили, о чём говорится в Release Notes.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453079
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, я, конечно, могу опять начинать рассказывать про плавную миграцию при помощи
мультимастер репликации, но если вы такого наворотили в приложении, то база, я подозреваю,
и вовсе невменяема.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453083
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы пишите, что в FB3 запретили соединять явные и неявные join. А как быть тогда с таким запросом - он в FB3 выполняется (всего лишь поменял местами ХП с таблицей - join'a не добавлял и работает... что-то напоминает из серии "наполовину беременная" .

Код: sql
1.
2.
3.
4.
5.
select t2.*
from table2 t2,
      sp_sel_table_1(:param) sp
      join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id
where t2.key_id2=sp.key_id2     
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453090
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum
Код: sql
1.
2.
sp_sel_table_1(:param) sp
      join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id

Потому что тут в join есть sp

Хватит упираться, начинай работать :)
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453093
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum,

Цитата из документации Смешивание явного и неявного соединения

Смешивание явных и неявных соединений не рекомендуется, но позволяется. Некоторые виды
смешивания запрещены в Firebird.
Например, такой запрос вызовет ошибку "Column does not belong to referenced table"
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM
TA, TB
JOIN TC ON TA.COL1 = TC.COL1
WHERE TA.COL2 = TB.COL2


Это происходит потому, что явный JOIN не может видеть таблицу TA. Однако следующий
запрос будет выполнен без ошибок, поскольку изоляция не нарушена.
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM
TA, TB
JOIN TC ON TB.COL1 = TC.COL1
WHERE TA.COL2 = TB.COL2

...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453095
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereumВыковыривать из проекта?Да.

Причем собственно версия 3 здесь влияет мало, сам запрос не читаем, сопровождать муторно.
Сам повыпилил кучу такого Г****, но точно не все(засели гады, аки партизаны) и вроде бы не падает на тестовом сервере с трешкой.

Dimitry SibiryakovFirebird 3 запрещено смешивать явные и неявные join.Я бы не был столь категоричен, ниже пример того, как писать не надо, но тем не менее на трешке оно сработало:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select D.*, S.NSKL, K.INN, K.KPP, K.UR_ST, K.TIP_KL, K.AT_KL_ID, K.NAME, K.SITY, T.NAME AS T_OPL, R.STATUS AS OTGR, A.ADR_DOK, A.ADR_DOV,
(select first 1 G.DOSTAV from DOG_R_DOS G where G.DOG_R = D.ID) as DOSTAV,
(select V.NDOK from DOSTAVKA V, DOG_R_DOS G where V.ID = G.DOSTAV and G.DOG_R = D.ID) as DOSDOK,
(select W.STATUS from DOG_R_WAY W where W.DOG_R = D.ID) as WAY,
(select X.DOG_R from DOG_R_VISA X where X.DOG_R = D.ID) as VISA
from DOG_AV D 
LEFT JOIN DOG_R_STAT R ON R.DOG_R = D.ID
LEFT JOIN DOG_R_ADR A ON A.DOG_R = D.ID, SPSKL S, SPKL K, TIP_OPL T 
where S.ID = D.SPSKL 
and K.ID = D.SPKL 
and T.ID = D.TIP_OPL

...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453098
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

ДЕ как-то пояснял мне какие именно смешения запрещены. В примере выше это видно
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453101
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum,

смешения выпилить это ещё пол дела. Лучше вообще все неявные джойны повыпиливать.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453105
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДЕ как-то пояснял мне какие именно смешения запрещены.Мой пример адресован ДСу, как пример опровергающий его заявление.

Пример кандидат на переписывание, как только мои шаловливые ручонки до него дотянутся.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453109
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad...Потому что тут в join есть sp

Народ здесь пишет, что в FB3 запретили явные и неявные join смешивать.
Если внимательно посмотрим на запросы ниже у обоих есть смешивания явного и неявного join, но один в FB3 работает, а другой нет.

не работает (ошибка SQL error code = -206. Column unknown. sel.key_id
Код: sql
1.
2.
3.
4.
5.
select t2.*
from sp_sel_table_1(:param) sp, --хранимая процедура
      table2 t2 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --вот здесь у FB3 возникают сложности с sp.key_id
where t2.key_id2=sp.key_id2    




работает:
Код: sql
1.
2.
3.
4.
5.
select t2.*
from table2 t2,
      sp_sel_table_1(:param) sp
      join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id
where t2.key_id2=sp.key_id2  
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453111
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum,

я для кого выше доку цитировал?
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453114
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис..я для кого выше доку цитировал?
Доки это хорошо, но если здесь утверждают, что в FB3 запретили явные и неявные join смешивать, то почему 2ой пример выше работает в FB3?
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453115
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereumНарод здесь пишет, что в FB3 запретили явные и неявные join смешивать.Уже всё расжевали. Неужели что-то осталось не понятно ?
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453116
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereumНарод здесь пишет, что в FB3 запретили явные и неявные join смешивать.Народ в лице ДСа малёху погорячился. Явного и однозначного запрета нет, но так писать все равно не надо. Оно и на двойке иной раз "уходило в себя" с подобными запросами, пример правда навскидку не приведу, но переписывал нечто подобное.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453121
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum,

по сути DS сказал правильно. Да некоторые запросы разрешены, но лучше считать, что запрещены все смешения явных и неявных JOIN.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453136
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисAlxEthereum,

по сути DS сказал правильно. Да некоторые запросы разрешены, но лучше считать, что запрещены все смешения явных и неявных JOIN.

Хорошо! Можно ли тогда в качестве быстрого патча sql-запросов сделать так (не проверял, но думаю на производительность это не повлияет?!):
Код: sql
1.
2.
3.
4.
5.
select t2.*
from sp_sel_table_1(:param) sp --хранимая процедура
      join table2 t2 on 1=1 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id
where t2.key_id2=sp.key_id2   



было так:
Код: sql
1.
2.
3.
4.
5.
select t2.*
from sp_sel_table_1(:param) sp, --хранимая процедура
      table2 t2 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --вот здесь у FB3 возникают сложности с sp.key_id
where t2.key_id2=sp.key_id2   
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453137
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlxEthereum,

ну зачем один кривой запрос на другой заменять? Вот так нельзя что ли сделать

Код: sql
1.
2.
3.
4.
select t2.*
from sp_sel_table_1(:param) sp --хранимая процедура
      join table2 t2 on t2.key_id2=sp.key_id2 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453138
AlxEthereum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Симонов Денис]AlxEthereum,
ну зачем один кривой запрос на другой заменять?

понимаю, первый легче автоматизировать - написать парсер, а ваш вариант только ручками
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453143
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Alxethereum!
You wrote on 15 мая 2017 г. 14:01:17:

Alxethereum> первый легче автоматизировать - написать парсердля этого программист нужен.
(С)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453178
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну припиши фиктивный where, в данном случае вреда от него минимум, если у тебя там динамически добавляются "and нечто = чему-то"
Код: sql
1.
2.
3.
4.
5.
select t2.*
from sp_sel_table_1(:param) sp --хранимая процедура
      join table2 t2 on t2.key_id2=sp.key_id2 -- некая таблица БД
      join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id
where 1=1 
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39453179
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя я бы предпочел написать вот так:
Код: sql
1.
2.
3.
4.
select t2.*
from sp_sel_table_1(:param) sp --хранимая процедура
     left join table2 t2 on t2.key_id2=sp.key_id2 -- некая таблица БД
     left join table3 t3 on t3.key_id=sp.key_id --все ок с sp.key_id

так спокойней.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39454439
dedRasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, в тему:

У меня накопилось много запросов, в которых алиас колонок задается кириллицей - чтоб быстро скопипастить результат для начальства. В FB2.5 проблем с этим не было. Сейчас извлек один такой запрос и попробовал в FB3.02SS. Результат:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE PERSONAL (
    PERSONNEL_ID    INTEGER NOT NULL,
    FAMILYNAME      VARCHAR(50),
    FIRSTNAME       VARCHAR(50),
    PATRONIM        VARCHAR(50),
    FIRSTENTRYDATE  DATE
);

select
        personal.personnel_id    "Код ИДК",
        personal.familyname      "Фамилия",
        personal.firstname       "Имя",
        personal.patronim        "Отчество"
        ,personal.firstentrydate "Дата начала контроля"
from PERSONAL

Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.
expected length 31, actual 20.




Если закомментировать последнюю колонку в запросе, то запрос проходит. С пустой таблицей результат тот же.
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39454449
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dedRastaалиас колонок задается кириллицей
В 3.0 максимальная длина имени поля/таблицы 31 символ?
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39454671
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПолуОФФ:
expected length 31, actual 20
Некорректное сообщение об ошибке, вот и вводится народ в заблуждение. Типа, ожидали от тебя длину поля не больше 31, а ты ажна 20 пихаешь.)
...
Рейтинг: 0 / 0
FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
    #39454708
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExterisПолуОФФ:Есть топик, где это обсуждается, можно продолжить там, не вижу смысла оффтопить тут. Насколько я понял на это в трешке уже забит болт, а в четверке починено.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 3.0 проблемы в выполнении sql-запросов, прекрасно работающие в FB 2.5
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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