|
Ignite ODBC Driver problem
|
|||
---|---|---|---|
#18+
Всем привет Решили попробовать 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2017, 11:57 |
|
Ignite ODBC Driver problem
|
|||
---|---|---|---|
#18+
_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, который поддерживает каждый драйвер, и версия самого драйвера, это разные вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2017, 08:57 |
|
Ignite ODBC Driver problem
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2017, 10:29 |
|
Ignite ODBC Driver problem
|
|||
---|---|---|---|
#18+
_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 Все приплыли! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2017, 12:17 |
|
|
start [/forum/topic.php?fid=48&msg=39404036&tid=1856708]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 168ms |
0 / 0 |