![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
vegaua |
|
|||
path finder Профиль Группа: Участник Сообщений: 5 Регистрация: 19.12.2012 Репутация: нет Всего: нет |
Добрый день. Стоит задача "подпилить" postgresql драйвер для работы с через jdeveloper(что бы сущности, созданные в среде oracle корректно заливались в базу postgres).
Вопрос: какой класс в сорцах porsgres driver отвечает за создание sql запроса? |
|||
|
||||
tzirechnoy |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
За создание sql-запроса в драйверах postgresql отвечает приложэние и программист, которые этот драйвер используют.
Драйверов postgresql, кстати, заметно более одного, под разные языки в первую очередь. Ну, поскольку протокол простенький -- вот и наделали. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
О как, а синтаксический анализатор для разбора Oracle SQL синтаксиса у вас еже готов? ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
vegaua |
|
||||
path finder Профиль Группа: Участник Сообщений: 5 Регистрация: 19.12.2012 Репутация: нет Всего: нет |
уже готов. а какое значение он имеет сейчас? это уже следующий шаг. Добавлено через 6 минут и 13 секунд
не наблюдал классификации драйверов postgresql по языкам, если можно - ссылочку. использую драйвер postgresql-jdbc-9.0-802 |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
Это 30% работы, еще 60% это трансформация синтаксического дерева и 10% генерация SQL кода для Посгреса и написание своего врапера над двайвером. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
vegaua |
|
|||
path finder Профиль Группа: Участник Сообщений: 5 Регистрация: 19.12.2012 Репутация: нет Всего: нет |
![]() Добавлено через 21 секунду Вижу, что Вы хорошо вникли в суть проблемы, но помочь не можете или не хотите |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
Я вник в проблему настолько насколько позволило описание проблемы. А вот вы не хотите понять простую вещь, что драйвер синтаксический разбор запросов не производит, это делает сервер. И не разбираясь в теме, лезть руками в драйвер совершенно не стоит. Ну а раз у вас уже готов код по преобразованию запросов из диалекта Oracle в диалек PostgreSQL, то написать враппер обертку над драйвером PostgreSQL не составит труда. Берете документацию создаете свою реализацию которая будет деленировать вызовы к реальному драйверу, по пути подменяя запросы. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
vegaua |
|
|||
path finder Профиль Группа: Участник Сообщений: 5 Регистрация: 19.12.2012 Репутация: нет Всего: нет |
Зачем делать обертку над драйвером, если есть возможность дописать код внутри него? В классе AbstractJdbc2Statement есть метод parseSql в котором и происходит синтаксический разбор. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 3 Всего: 161 |
Синтаксический разбор, запросов, как правило, производится таки на сервере а не на клиенте (на стороне которого работает драйвер). Может быть, конечно, на клиенте реализуется какой никакой препарсинг с целью разделить стайтменты, подставить макроподстановки... трансформировать в конце концов запрос в диалект платформы. Но на сервер отдается именно запрос. И указанный вами метод, скорее всего, и делает это - передает запрос серверу, и слушает его ответ. Потому таки первый вопрос - вопрос трансформации запросов с диалекта PG в диалект оракле. Задача мутная, рутинная и бесперспективная. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
1. Проще локализовывать ошибки. 2. Можно спокойно обновлять драйвер не трогая враппер. 3. Хоть вы этого и не понимаете, но задача преобразования запросов из диалекта Oracle в диалект PostgreSQL, очень нетривиальна (разумеется если речь идет о полной поддержке синтаксиса, а не замене VARCHAR2 на VARCHAR). И требует много кода, не говоря уж про усилия по реализации.
Очень странно, что человек который смог реализовать синтаксический анализатор для Oracle SQL, не смог понять что метод просто ищет закрывающую скобку в строке (там даже это написано в комментарии ![]()
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
vegaua |
|
|||
path finder Профиль Группа: Участник Сообщений: 5 Регистрация: 19.12.2012 Репутация: нет Всего: нет |
ценят не по словам, а по делам |
|||
|
||||
tzirechnoy |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Я тожэ не наблюдал. Но, как минимум, есть "основная" сишная libpq, на её основе построены дефолтные биндинги к dbi/perl и dbi/ruby, такжэ к хаскеллю, питону, тиклю. В тикле и питоне (как минимум) есть (в дополнение, если требуются) написанные биндинги на чистом тикле и питоне. Кстати, в питоне разнообразных адаптэров что-то вообще дофига разных. В common lispах есть и драйвер через биндинги к libpq, и чуть не два драйвера, написанных напрямую -- и не сказать, что какой-то один более дефолтный чем другой. Единственный известный мне jdbc-драйвер написан полностью на джаве. Добавлено через 53 секунды Ну и да, по сути Вам ужэ ответили (притом на два вопроса). А именно: драйвер нигде не создаёт запрос, а если нужны преобразования в jdbc -- то напишыте обёртку. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PostgreSQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |