Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Драйвер PosgreSQL (sources), "подпилить" postgresql драйвер 
:(
    Опции темы
vegaua
Дата 19.12.2012, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


path finder



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.12.2012

Репутация: нет
Всего: нет



Добрый день. Стоит задача "подпилить" postgresql драйвер для работы с через jdeveloper(что бы сущности, созданные в среде oracle корректно заливались в базу postgres).
Вопрос: какой класс в сорцах porsgres driver отвечает за создание sql запроса?
PM MAIL   Вверх
tzirechnoy
Дата 19.12.2012, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



За создание sql-запроса в драйверах postgresql отвечает приложэние и программист, которые этот драйвер используют.
Драйверов postgresql, кстати, заметно более одного, под разные языки в первую очередь. Ну, поскольку протокол простенький -- вот и наделали.
PM MAIL   Вверх
LSD
Дата 19.12.2012, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 3
Всего: 538



Цитата(vegaua @  19.12.2012,  13:54 Найти цитируемый пост)
Стоит задача "подпилить" postgresql драйвер для работы с через jdeveloper(что бы сущности, созданные в среде oracle корректно заливались в базу postgres).

О как, а синтаксический анализатор для разбора Oracle SQL синтаксиса у вас еже готов? smile


--------------------
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.
PM MAIL WWW   Вверх
vegaua
Дата 19.12.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


path finder



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.12.2012

Репутация: нет
Всего: нет



Цитата(LSD @ 19.12.2012,  13:19)
О как, а синтаксический анализатор для разбора Oracle SQL синтаксиса у вас еже готов? smile

уже готов. а какое значение он имеет сейчас? это уже следующий шаг.

Добавлено через 6 минут и 13 секунд
Цитата(tzirechnoy @ 19.12.2012,  13:13)
Драйверов postgresql, кстати, заметно более одного, под разные языки в первую очередь.

не наблюдал классификации драйверов postgresql по языкам, если можно - ссылочку.
использую драйвер postgresql-jdbc-9.0-802
PM MAIL   Вверх
LSD
Дата 19.12.2012, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 3
Всего: 538



Цитата(vegaua @  19.12.2012,  14:23 Найти цитируемый пост)
а какое значение он имеет сейчас?

Это 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.
PM MAIL WWW   Вверх
vegaua
Дата 19.12.2012, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


path finder



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.12.2012

Репутация: нет
Всего: нет



Цитата(LSD @ 19.12.2012,  14:09)
Цитата(vegaua @  19.12.2012,  14:23 Найти цитируемый пост)
а какое значение он имеет сейчас?

Это 30% работы, еще 60% это трансформация синтаксического дерева и 10% генерация SQL кода для Посгреса и написание своего врапера над двайвером.

 smile

Добавлено через 21 секунду
Вижу, что Вы хорошо вникли в суть проблемы, но помочь не можете или не хотите
PM MAIL   Вверх
LSD
Дата 19.12.2012, 15:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 3
Всего: 538



Цитата(vegaua @  19.12.2012,  15:57 Найти цитируемый пост)
Вижу, что Вы хорошо вникли в суть проблемы, но помочь не можете или не хотите

Я вник в проблему настолько насколько позволило описание проблемы. А вот вы не хотите понять простую вещь, что драйвер синтаксический разбор запросов не производит, это делает сервер. И не разбираясь в теме, лезть руками в драйвер совершенно не стоит.
Ну а раз у вас уже готов код по преобразованию запросов из диалекта 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.
PM MAIL WWW   Вверх
vegaua
Дата 19.12.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


path finder



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.12.2012

Репутация: нет
Всего: нет



Цитата(LSD @ 19.12.2012,  15:26)
Я вник в проблему настолько насколько позволило описание проблемы. А вот вы не хотите понять простую вещь, что драйвер синтаксический разбор запросов не производит, это делает сервер. И не разбираясь в теме, лезть руками в драйвер совершенно не стоит.
Ну а раз у вас уже готов код по преобразованию запросов из диалекта Oracle  в диалек PostgreSQL, то написать враппер обертку над драйвером PostgreSQL не составит труда. Берете документацию создаете свою реализацию которая будет деленировать вызовы к реальному драйверу, по пути подменяя запросы.

Зачем делать обертку над драйвером, если есть возможность дописать код внутри него? В классе AbstractJdbc2Statement есть метод parseSql в котором и происходит синтаксический разбор.
PM MAIL   Вверх
Zloxa
Дата 19.12.2012, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 3
Всего: 161



Цитата(vegaua @  19.12.2012,  16:51 Найти цитируемый пост)
 в котором и происходит синтаксический разбор. 

Синтаксический разбор, запросов, как правило, производится таки на сервере а не на клиенте (на стороне которого работает драйвер).  Может быть, конечно, на клиенте реализуется какой никакой препарсинг с целью разделить стайтменты, подставить макроподстановки... трансформировать в конце концов запрос в диалект платформы. Но на сервер отдается именно запрос. И указанный вами метод, скорее всего, и делает это - передает запрос серверу, и слушает его ответ. Потому таки первый вопрос - вопрос трансформации запросов с диалекта PG в диалект оракле. Задача мутная, рутинная и бесперспективная.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 20.12.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 3
Всего: 538



Цитата(vegaua @  19.12.2012,  16:51 Найти цитируемый пост)
Зачем делать обертку над драйвером, если есть возможность дописать код внутри него?

1. Проще локализовывать ошибки.
2. Можно спокойно обновлять драйвер не трогая враппер.
3. Хоть вы этого и не понимаете, но задача преобразования запросов из диалекта Oracle в диалект PostgreSQL, очень нетривиальна (разумеется если речь идет о полной поддержке синтаксиса, а не замене VARCHAR2 на VARCHAR). И требует много кода, не говоря уж про усилия по реализации.



Цитата(vegaua @  19.12.2012,  16:51 Найти цитируемый пост)
В классе AbstractJdbc2Statement есть метод parseSql в котором и происходит синтаксический разбор.

Очень странно, что человек который смог реализовать синтаксический анализатор для Oracle SQL, не смог понять что метод просто ищет закрывающую скобку в строке (там даже это написано в комментарии smile ) и используется для простого преобразования эскейп последовательностей.
Цитата
Filter the SQL string of Java SQL Escape clauses.

Currently implemented Escape clauses are those mentioned in 11.3
in the specification. Basically we look through the sql string for
{d xxx}, {t xxx}, {ts xxx}, {oj xxx} or {fn xxx} in non-string sql 
code. When we find them, we just strip the escape part leaving only
the xxx part.
So, something like "select * from x where d={d '2001-10-09'}" would
return "select * from x where d= '2001-10-09'".



--------------------
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.
PM MAIL WWW   Вверх
vegaua
Дата 20.12.2012, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


path finder



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.12.2012

Репутация: нет
Всего: нет



Цитата(LSD @ 20.12.2012,  11:59)
Хоть вы этого и не понимаете, но задача преобразования запросов из диалекта Oracle в диалект PostgreSQL, очень нетривиальна (разумеется если речь идет о полной поддержке синтаксиса, а не замене VARCHAR2 на VARCHAR). И требует много кода, не говоря уж про усилия по реализации.

ценят не по словам, а по делам
PM MAIL   Вверх
tzirechnoy
Дата 20.12.2012, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
не наблюдал классификации драйверов postgresql по языкам, если можно - ссылочку.


Я тожэ не наблюдал.

Но, как минимум, есть "основная" сишная libpq, на её основе построены дефолтные биндинги к dbi/perl и dbi/ruby, такжэ к хаскеллю, питону, тиклю. В тикле и питоне (как минимум) есть (в дополнение, если требуются) написанные биндинги на чистом тикле и питоне. Кстати, в питоне разнообразных адаптэров что-то вообще дофига разных. В common lispах есть и драйвер через биндинги к libpq, и чуть не два драйвера, написанных напрямую -- и не сказать, что какой-то один более дефолтный чем другой. Единственный известный мне jdbc-драйвер написан полностью на джаве.

Добавлено через 53 секунды
Ну и да, по сути Вам ужэ ответили (притом на два вопроса). А именно: драйвер нигде не создаёт запрос, а если нужны преобразования в jdbc -- то напишыте обёртку.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.