|
|
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
Привет! Изучая чужие SPL коды я наткнулся на то, что синтаксический анализатор SPL пронимает то, что по документации понимать не должен: 1) Работают "сишные" комментарии /* */ 2) Работает "сишный" формат операции проверки на равенство if (a==b) then ... Отсюда вопросы - никто не знает, откуда взялись эти сюрпризы? И какие ещё недокументированные фичи кроются в SPL? BTW, IDS 7.31, Sun-техника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 22:26 |
|
||
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
Других фич не знаю (если честно, не знал и этих:)). Могу только подтвердить, что указазанные конструкции у нас тоже работают. IBM Informix Dynamic Server Version 9.40.UC4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 10:14 |
|
||
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
Вместо <> можно юзать != ----------------------------------------------------------- Решительный шаг вперед -- результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 10:34 |
|
||
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
Это и не удивительно, если учесть, что почти весь код Информикса написан на Си. Я с этим сталкивался ранее, особенно поимел геморою с теми самыми "сишные" комментарии /* */ Как оказалось, на тот момент это был баг 133673, но не уверен, что таких багов с недокументированными фичами больше не осталось. Так что применять их не советую. Вот нашел тот пример от 2002 года, демонстрирующий баг ------------ Create DATABASE test; -- Нормальная процедура -- CREATE PROCEDURE proc1( val CHAR ) RETURNING CHAR; DEFINE src CHAR( 2 ); DEFINE ret CHAR; END PROCEDURE; -- Нормальная процедура (хотя комментарий неразрешенный) -- CREATE PROCEDURE proc2( val CHAR ) RETURNING CHAR; DEFINE src CHAR( 2 ); DEFINE ret CHAR; /* '' */ END PROCEDURE; -- Нормальная процедура (законный коментарий и одна кавычка внутри) -- CREATE PROCEDURE proc3( val CHAR ) RETURNING CHAR; DEFINE src CHAR( 2 ); DEFINE ret CHAR; { ' } END PROCEDURE; -- -- Плохая процедура (с одинарной кавычкой <'> и нечетным их числом в незаконных комментариях) -- -- CREATE PROCEDURE proc_bad( val CHAR ) RETURNING CHAR; DEFINE src CHAR( 2 ); DEFINE ret CHAR; /* ' */ END PROCEDURE; -- -- Таблица создается только для того, что бы видеть операторы после процедуры -- create table customer ( customer_num serial not null , fname char(15), lname char(15) ); insert into customer values(0,'123456','7890'); insert into customer values(0,'23456','890'); ------------------------------------------ -- Procedure list (IDS 7.30+) ------------------------------------------ select procname[1,18] ,procid ,owner[1,8] ,substr(mode,1,2) mode ,codesize ,datasize from sysprocedures where procname matches 'proc*' ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 11:46 |
|
||
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисВместо <> можно юзать != Почти всю сознательную жизнь это применял. В доке по SQL таких примеров тоже пруд-пруди. Сильно удивился. Специально полез в доку и нашел, что это все таки законный для Informix оператор :) Стр.4-248, Relational Operator, IBM Informix Guide to SQL: Syntax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 11:50 |
|
||
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
vasilis Специально полез в доку и нашел, что это все таки законный для Informix оператор :) Стр.4-248, Relational Operator, IBM Informix Guide to SQL: Syntax Я знаю :), я не говорил что они незаконные. Просто в доке забыли (не успели) описать некоторые вещи. http://publib.boulder.ibm.com/infocenter/ids9help/index.jsp?topic=/com.ibm.sqls.doc/sqls1074.htm = or == Equal to <> or != Not equal to ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 12:02 |
|
||
|
Синтакс SPL. Описание < Реальность
|
|||
|---|---|---|---|
|
#18+
Спасибо всем ответившим. 2Журавлев Денис В родной документации к нашему антиквариату (7.31) Приведенный вами фрагмент выглядит так: Informix Guide to SQL. Segments. 4-161Relational Operator A relational operator compares two expressions quantitatively. Use the Relational Operator segment whenever you see a reference to a relational operator in a syntax diagram. Syntax Each operator shown in the syntax diagram has a particular meaning. < <= > <> = >= != + Relational Operator Meaning < Less than <= Less than or equal to > Greater than = Equal to >= Greater than or equal to <> Not equal to != Not equal to ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 12:42 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33310846&tid=1608877]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 380ms |

| 0 / 0 |
