powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix & ODBC & квотируемые идентификаторы
12 сообщений из 12, страница 1 из 1
Informix & ODBC & квотируемые идентификаторы
    #35246161
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем

На рабочей станции я залогинен как Administrator. После создания демо БД при помощи
dbdemo_ids.cmd -log, я получил в словаре в качестве владельца - Administrator. При попытке
выполнить запрос select * from administrator.orders получаю - объект в БД не существует.
select * from "Administrator".orders выполняется.

Отсюда возникли вопросы:

1) Квотируемые идентификаторы поддерживаются ("Administrator"), но атрибут соединения
SQL_IDENTIFIER_QUOTE_CHAR возвращает одиночный пробел, что значит - источник данных
не поддерживает квотируемые идентификаторы. Кому верить ?

2) Атрибуты соединения SQL_QUOTED_IDENTIFIER_CASE, SQL_IDENTIFIER_CASE возвращают
SQL_IC_LOWER, что значит - идентификаторы (как квотируемые, так и простые) являются
регистронезависимыми и в словаре хранятся в нижнем регистре. Но "Administrator" в моем
случае - регистрозависимое. Кому верить ?

Удачи,
Дмитрий

--
AnyDAC - компоненты для доступа к Oracle, MySQL, MSSQL, Interbase,
Firebird, MSAccess, IBM DB2, Advantage DS, Sybase ASA, DbExpress, ODBC.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247029
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу скажу: ниже нет ни слова про odbc.

В информиксе бывают ansi и не ansi базы. Большинство девелоперов просто не подозревают, что в базе могут быть две таблицы с одинаковым именем, но с разными владельцами, и владельца в запросах не указывают.
http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.ddi.doc/ddi32.htm

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
create database test1 with log;
Database created.


create table aaa.t1(a integer)
Table created.


create table bbb.t1(a integer);
   310 : Table (bbb.t1) already exists in database.


select * from aaa.t1;
          a 
No rows found.


select * from t1;
          a 
No rows found.


select * from "t1";
   201 : A syntax error has occurred.


есть переменная DELIMIDENT=y, которая включает возможность заключать имена идентификаторов в кавычки.
export DELIMIDENT=y


create table aaa."T1"(a integer);
Table created.


select * from "t1";
          a 
No rows found.


---------------------------------------------------------------
create database test2 with log mode ansi;
Database created.


create table aaa.t1(a integer);
Table created.


create table bbb.t1(a integer);
Table created.


create table "Aaa".t1(a integer);
Table created.


create table "aAa"."T1"(a integer);
Table created.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247325
Алексан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievПривет Всем

На рабочей станции я залогинен как Administrator. После создания демо БД при помощи
dbdemo_ids.cmd -log, я получил в словаре в качестве владельца - Administrator. При попытке
выполнить запрос select * from administrator.orders получаю - объект в БД не существует.
select * from "Administrator".orders выполняется.

Отсюда возникли вопросы:

1) Квотируемые идентификаторы поддерживаются ("Administrator"), но атрибут соединения
SQL_IDENTIFIER_QUOTE_CHAR возвращает одиночный пробел, что значит - источник данных
не поддерживает квотируемые идентификаторы. Кому верить ?

2) Атрибуты соединения SQL_QUOTED_IDENTIFIER_CASE, SQL_IDENTIFIER_CASE возвращают
SQL_IC_LOWER, что значит - идентификаторы (как квотируемые, так и простые) являются
регистронезависимыми и в словаре хранятся в нижнем регистре. Но "Administrator" в моем
случае - регистрозависимое. Кому верить ?

1) Не уверен, что понимаю Ваш термин "Квотируемые идентификаторы". На всякий случай скажу, что у Informix'а нет понятия схемы, а имя владельца входит в полное имя объекта.

2). Я вижу, что запрос
echo select * from "informix".sysdatabases | dbaccess sysmaster - правильный,
echo select * from "informix".Sysdatabases | dbaccess sysmaster - правильный, а
echo select * from "INFORMIX".sysdatabases | dbaccess sysmaster - неправильный ( 206: The specified table (INFORMIX.sysdatabases) is not in the database.)

Также несомненно, что имена таблиц хранятся в нижнем регистре, а имена владельцев к нижнему регистру не приводятся.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247470
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексан
Также несомненно, что имена таблиц хранятся в нижнем регистре, а имена владельцев к нижнему регистру не приводятся.
дад
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
echo "select owner, tabname from systables where lower(tabname) = 't1' "|dbaccess test2

Database selected.




owner    AAA
tabname  t1

owner    BBB
tabname  t1

owner    Aaa
tabname  t1

owner    aAa
tabname  T1

owner    aaa
tabname  T1

owner    aaa
tabname  t1

 6  row(s) retrieved.



Data committed.


Database closed.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247579
Алексан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис Алексан
Также несомненно, что имена таблиц хранятся в нижнем регистре, а имена владельцев к нижнему регистру не приводятся.
дад
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
echo "select owner, tabname from systables where lower(tabname) = 't1' "|dbaccess test2

Database selected.




owner    AAA
tabname  t1

owner    BBB
tabname  t1

owner    Aaa
tabname  t1

owner    aAa
tabname  T1

owner    aaa
tabname  T1

owner    aaa
tabname  t1

 6  row(s) retrieved.



Data committed.


Database closed.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
C:\IBM\IDS100TC6>echo create table t1 (c1 char) | dbaccess d2

Database selected.


Table created.



Database closed.


C:\IBM\IDS100TC6>echo create table T1 (c1 char) | dbaccess d2

Database selected.


   310 : Table (AS.t1) already exists in database.
Error in line  1 
Near character position  26 


Database closed.


C:\IBM\IDS100TC6>onstat -

IBM Informix Dynamic Server Version  10 . 00 .TC6     -- On-Line -- Up 6 days 18:31:09 -- 21568 Kbytes


C:\IBM\IDS100TC6>
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247694
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да хоть 7-ка, один фиг, можно, и в этом моя глубокая печаль.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
informix@nag:~> echo "create table \"T2\"(a integer)"|dbaccess test2

Database selected.


Table created.



Data committed.


Database closed.

informix@nag:~> echo "create table \"t2\"(a integer)"|dbaccess test2

Database selected.


Table created.



Data committed.


Database closed.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247787
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем в информиксе можно окавычивать владельца объекта всегда, если владелелец не окавычен, он будет приведен в нижний регистр.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35247822
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ansi бд
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
echo "create table ccc.t4(a integer)"|dbaccess test2
Table created.

informix@nag:~> echo "select * from t4"|dbaccess test2
   206 : The specified table (informix.t4) is not in the database.
   111 : ISAM error:  no record found.
Database closed.

тоже самое не ansi бд
Код: plaintext
1.
2.
3.
4.
5.
6.
informix@nag:~> echo "create table ccc.t4(a integer)"|dbaccess test1
Table created.

informix@nag:~> echo "select * from t4"|dbaccess test1
          a 
No rows found.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35250197
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денисда хоть 7-ка, один фиг, можно, и в этом моя глубокая печаль.
Денис, в чем твоя "глубокая печаль" ? Может мы ее развеем ? :)
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35250240
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis Журавлев Денисда хоть 7-ка, один фиг, можно, и в этом моя глубокая печаль.
Денис, в чем твоя "глубокая печаль" ? Может мы ее развеем ? :)Такие возможности в информиксе есть, значит надо сделать в esqleditor-е поддержку анси баз и DELIMIDENT, в общем еще пилить и пилить.
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35250483
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денисподдержку анси баз и DELIMIDENT, в общем еще пилить и пилить.
Послушал я вас - огромное спасибо за обсуждение. Понял, что ODBC в плане
метаданных источника данных не совершенно :)
...
Рейтинг: 0 / 0
Informix & ODBC & квотируемые идентификаторы
    #35250496
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev Журавлев Денисподдержку анси баз и DELIMIDENT, в общем еще пилить и пилить.
Послушал я вас - огромное спасибо за обсуждение. Понял, что ODBC в плане
метаданных источника данных не совершенно :)Сложно утверждать.

Попробуй в setnet32 поставь DELIMIDENT в "y" и посмотри SQL_IDENTIFIER_QUOTE_CHAR
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix & ODBC & квотируемые идентификаторы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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