Переход с Interbase 5.6 на Yaffil

Совместимость InterBase, Firebird, Yaffil между собой и по версиям

Модераторы: kdv, Alexey Kovyazin

Ответить
VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Переход с Interbase 5.6 на Yaffil

Сообщение VJVS » 23 янв 2007, 16:19

Здравствуйте!

Перейду сразу к проблеме!

Стоит БД на Interbase 5.6 уже лет 10 и под нее написана UDF. Теперь необходимо перейти на Yaffil, но он не поддерживает некотороые команды описанные в библиотеке.

Вопрос в следующем: можно ли как-то исправить эту ошибку не переписывая UDF?

Очень прошу помочь!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 янв 2007, 16:47

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: Переход с Interbase 5.6 на Yaffil

Сообщение WildSery » 23 янв 2007, 17:57

VJVS писал(а):под нее написана UDF. Теперь необходимо перейти на Yaffil, но он не поддерживает некотороые команды описанные в библиотеке.
Какое отношение имеет сервер (Yaffil или IB или FB) к командам внутри библиотеки?

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 25 янв 2007, 15:29

Запрос выглядит следующим образом:

select max(Cast(substring(claim_code :?: ,1,positionstr('àï',a.claim_code)-1) as Integer)) as c from act_claim a where claim_code like '%àï01àó'

В UDF.DLL описана функция substring, а смайлик - это место, куда указывает сообщение об ошибке.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 25 янв 2007, 15:32

вы что, не можете положить udf.dll в папку UDF установки Yaffil?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 25 янв 2007, 16:27

в Yaffil функция substring - встроенная в сервер и она по синтаксису не совместима с вашей UDF

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 26 янв 2007, 09:47

kdv писал(а):вы что, не можете положить udf.dll в папку UDF установки Yaffil?
Выше я упоминал, что я положил библиотеку в папку, иначе программа вообще не стала бы работать!

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 26 янв 2007, 09:48

dimitr писал(а):в Yaffil функция substring - встроенная в сервер и она по синтаксису не совместима с вашей UDF
Можно ли это как-то исправить?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 26 янв 2007, 09:59

Взять FB1 где substring-а нет. Дополнительный плюс - не придется платить за дятла или пиратствовать.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 26 янв 2007, 10:11

Выше я упоминал, что я положил библиотеку в папку, иначе программа вообще не стала бы работать!
кстати, не упоминал. вы свои сообщения перечитывайте, прежде чем утверждать такое.
собственно, udf можно объявить как substr1 например, и везде поменять вызовы substring на substr1.

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 29 янв 2007, 13:09

Dimitry Sibiryakov писал(а):Взять FB1 где substring-а нет. Дополнительный плюс - не придется платить за дятла или пиратствовать.
Ставил FB1. Та же ошибка!

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 29 янв 2007, 13:30

VJVS писал(а):Ставил FB1. Та же ошибка!
И эту ошибку ты никому не скажешь даже под пытками. Ну и фиг с тобой, юный партизан.

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 29 янв 2007, 13:33

После долгих тестов, я пришел к выводу, что функция substring относится не к UDF.DLL (хотя она там есть), а к языку SQL.

Как теперь это можно решить? Неужели в IB5.6 поддерживается эта функция, а в Yaffil или FB нет.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 янв 2007, 14:09

Как теперь это можно решить? Неужели в IB5.6 поддерживается эта функция, а в Yaffil или FB нет.
наоборот. эта функция уже встроена в Yaffil и Firebird, что и вызывает у Вас проблемы. Потому что ее синтаксис не тот, который у используемой Вами UDF.

Если Вы не программировали БД, которую пытаетесь перенести с 5.6 на Yaffil или FB, то я не знаю, как Вам объяснить, что нужно сделать. Эти вопросы обычно решает разработчик системы, а не пользователь.

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 29 янв 2007, 18:06

kdv писал(а):
Как теперь это можно решить? Неужели в IB5.6 поддерживается эта функция, а в Yaffil или FB нет.
наоборот. эта функция уже встроена в Yaffil и Firebird, что и вызывает у Вас проблемы. Потому что ее синтаксис не тот, который у используемой Вами UDF.

Если Вы не программировали БД, которую пытаетесь перенести с 5.6 на Yaffil или FB, то я не знаю, как Вам объяснить, что нужно сделать. Эти вопросы обычно решает разработчик системы, а не пользователь.
Я действительно не программировал эту базу, но все же я не такой уж пользователь. Поэтому прошу мне все же объяснить или хотя бы подсказать, где я могу найти источник!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 янв 2007, 18:54

Поэтому прошу мне все же объяснить или хотя бы подсказать, где я могу найти источник!
источник чего?

объясняю:
есть база созданная в 5.6. В ней объявлена udf с именем substring.

в Yaffil и Firebird уже есть встроенная substring, с другим синтаксисом вызова.

Вариантов два:

- переписать запросы на вызов substring из FB/YA

или

- задекларировать функцию из udf не как substring, а как substr1 например, переписать запросы изменив substring на substr.

дальше объяснять?

VJVS
Сообщения: 11
Зарегистрирован: 22 янв 2007, 09:30

Сообщение VJVS » 30 янв 2007, 12:48

kdv писал(а):
Поэтому прошу мне все же объяснить или хотя бы подсказать, где я могу найти источник!
источник чего?

объясняю:
есть база созданная в 5.6. В ней объявлена udf с именем substring.

в Yaffil и Firebird уже есть встроенная substring, с другим синтаксисом вызова.

Вариантов два:

- переписать запросы на вызов substring из FB/YA

или

- задекларировать функцию из udf не как substring, а как substr1 например, переписать запросы изменив substring на substr.

дальше объяснять?

Все, спасибо! :P
Вся проблема оказалась в том, что синтаксис в Yaffil совсем иной, чем в IB5.6:
- IB5.6 = SUBSTRING(<stringexpr>,<pos>,FOR<length>)
- Yaffil = SUBSTRING(<stringexpr>FROM<pos>FOR<length>)
В моем случае это надо долго переписывать программу.

kdv Большое спасибо!!!

Ответить