powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Ignite ODBC Driver problem
4 сообщений из 4, страница 1 из 1
Ignite ODBC Driver problem
    #39403342
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет

Решили попробовать Ignite ... скачали apache-ignite-fabric-1.8.0-bin.zip Скомпиллировал iginte.odbc.dll
В ODBC сделали соответсвующий профиль (т.е. драйвера встали нормально ... setup запускается)
Для коннекта из PowerBuilder ... в pbodb105.ini создали секцию [Apche Ignite]
[Apache Ignite]
PBSyntax='Ignite_SYNTAX'
PBNoCatalog='YES'
[Ignite_SYNTAX]
GetIdentity='Select @@identity'

При попытке приконнектиться выдает ODBC version is not supported

Собрал Debug версию драйвера ... выяснили:
Вызывается из ODBC32.dll ->
SQLRETURN SQLSetEnvAttr(SQLHENV env,
SQLINTEGER attr,
SQLPOINTER value,
SQLINTEGER valueLen)
{
/* с параметрами attr = 0x200, value = 2 !!! */
Далее ...
using odbc::Environment;
Environment *environment = reinterpret_cast<Environment*>(env);
environment->SetAttribute(attr, value, valueLen);
Далее ...
IGNITE_ODBC_API_CALL(InternalSetAttribute(attr, value, len));
Далее...
SqlResult Environment::InternalSetAttribute(int32_t attr, void* value, int32_t len)
а в ней ...
EnvironmentAttribute attribute = EnvironmentAttributeToInternal(attr);
switch (attribute)
{ case IGNITE_SQL_ENV_ATTR_ODBC_VERSION:
{ int32_t version = static_cast<int32_t>(reinterpret_cast<intptr_t>(value));
if (version != odbcVersion)
// odbcVersion это как я понял версия ODBC драйвера .. она = 3
// а version (это параметр value) = 2
{
AddStatusRecord(SQL_STATE_01S02_OPTION_VALUE_CHANGED,
"ODBC version is not supported.");

Получается что ODBC32.dll "говорит" что она версии 2!!! хотя на самом деле вроде как 6.3.9600.17415 ... или я что-то не понимаю!

Потом PowerBuilder все равно пытается приконнектиться ... типа "падает" .. но это уже другая история

PS: при попытке коннекта из Excel (типа внешние данные .. сделать запрос) ТОЖЕ САМОЕ
OS - windows 8.1 x64
...
Рейтинг: 0 / 0
Ignite ODBC Driver problem
    #39403888
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_Всем привет

Решили попробовать Ignite ... скачали apache-ignite-fabric-1.8.0-bin.zip Скомпиллировал iginte.odbc.dll
В ODBC сделали соответсвующий профиль (т.е. драйвера встали нормально ... setup запускается)
Для коннекта из PowerBuilder ... в pbodb105.ini создали секцию [Apche Ignite]
[Apache Ignite]
PBSyntax='Ignite_SYNTAX'
PBNoCatalog='YES'
[Ignite_SYNTAX]
GetIdentity='Select @@identity'

При попытке приконнектиться выдает ODBC version is not supported

Собрал Debug версию драйвера ... выяснили:
Вызывается из ODBC32.dll ->
SQLRETURN SQLSetEnvAttr(SQLHENV env,
SQLINTEGER attr,
SQLPOINTER value,
SQLINTEGER valueLen)
{
/* с параметрами attr = 0x200, value = 2 !!! */
Далее ...
using odbc::Environment;
Environment *environment = reinterpret_cast<Environment*>(env);
environment->SetAttribute(attr, value, valueLen);
Далее ...
IGNITE_ODBC_API_CALL(InternalSetAttribute(attr, value, len));
Далее...
SqlResult Environment::InternalSetAttribute(int32_t attr, void* value, int32_t len)
а в ней ...
EnvironmentAttribute attribute = EnvironmentAttributeToInternal(attr);
switch (attribute)
{ case IGNITE_SQL_ENV_ATTR_ODBC_VERSION:
{ int32_t version = static_cast<int32_t>(reinterpret_cast<intptr_t>(value));
if (version != odbcVersion)
// odbcVersion это как я понял версия ODBC драйвера .. она = 3
// а version (это параметр value) = 2
{
AddStatusRecord(SQL_STATE_01S02_OPTION_VALUE_CHANGED,
"ODBC version is not supported.");

Получается что ODBC32.dll "говорит" что она версии 2!!! хотя на самом деле вроде как 6.3.9600.17415 ... или я что-то не понимаю!

Потом PowerBuilder все равно пытается приконнектиться ... типа "падает" .. но это уже другая история

PS: при попытке коннекта из Excel (типа внешние данные .. сделать запрос) ТОЖЕ САМОЕ
OS - windows 8.1 x64

есть версии ODBC, так называемый уровень API, который поддерживает каждый драйвер, и версия самого драйвера, это разные вещи.
...
Рейтинг: 0 / 0
Ignite ODBC Driver problem
    #39403936
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

В файле environment.cpp ..
namespace ignite
{
namespace odbc
{
Environment::Environment() :
odbcVersion(SQL_OV_ODBC3), odbcNts(SQL_TRUE)
{
// No-op.
}

так вот эта самая odbcVersion сравнивается с тем что приходит в качестве параметра в функцию
SQLRETURN SQLSetEnvAttr(SQLHENV env,
SQLINTEGER attr,
SQLPOINTER value,
SQLINTEGER valueLen)
attr = 200 (т.е. SQL_ATTR_ODBC_VERSION)
а вот value = 2 !!!
вот это я не понимаю! вызов идет из ODBC32.DLL т.е. драйверу говорят что мол у OS ODBC версии 2
а драйвер говорит что он сам версии 3 и ... далее
AddStatusRecord(SQL_STATE_01S02_OPTION_VALUE_CHANGED,
"ODBC version is not supported.");
Может я чтото в свойствах компилятора не указал? Хотя я вроде все указания выполнил ...

* IGNITE_HOME environment variable must be set to Ignite installation directory.
* Update Include Directories in Project Properties with paths to:
* $(IGNITE_HOME)\platforms\cpp\common\include
* $(IGNITE_HOME)\platforms\cpp\common\os\win\include
* $(IGNITE_HOME)\platforms\cpp\jni\include
* $(IGNITE_HOME)\platforms\cpp\jni\os\win\include
* $(IGNITE_HOME)\platforms\cpp\binary\include
* $(IGNITE_HOME)\platforms\cpp\core\include
* $(JAVA_HOME)\include
* $(JAVA_HOME)\include\win32
* Update Library Directories with path to the built binaries
* Update Linker\Input\Additional Dependencies in Project Properties with path to
* ignite.common.lib
* ignite.jni.lib
* ignite.binary.lib
* ignite.core.lib
...
Рейтинг: 0 / 0
Ignite ODBC Driver problem
    #39404036
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Drive_,
Продолжил исследование ..
Первым делом вызывается
SQLAllocHandle: called: 1 00939B64
дальше внутренняя функция SQLAllocEnv
которая возвращает SQL_SUCCESS и создает SQLHENV
которая в свою очередь является указателем на класс odbc::Environment
внутри которого ...
- ignite::odbc::diagnostic::DiagnosableAdapter {diagnosticRecords={...} connection=0x00000000 }
+ ignite::odbc::diagnostic::DiagnosableAdapter
+ ignite::odbc::diagnostic::Diagnosable {...} ignite::odbc::diagnostic::Diagnosable
+ diagnosticRecords {rowCount=0 dynamicFunction="" dynamicFunctionCode=0 ...} ignite::odbc::diagnostic::DiagnosticRecordStorage
+ connection 0x00000000 {socket={...} connected=??? parser={...} ...} const ignite::odbc::Connection *
odbcVersion 3 int
odbcNts 1 int

это все отдается в ODBC32 ... и следующий вызов
SQLRETURN SQLSetEnvAttr(SQLHENV env,
SQLINTEGER attr,
SQLPOINTER value,
SQLINTEGER valueLen)
{
с параметрами attr=200,value=2

Все приплыли!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Ignite ODBC Driver problem
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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