Since we already have the define ISC_STATUS_LENGTH for the the length of
the status vector, we should use it! Replaced 'status[20]' with
'status[ISC_STATUS_LENGTH]'.
Replaced the different symbolic names for the maximum length of a path
(MAX_PATH, MAX_PATH_LENGTH, MAXPATHLEN) with one uniq symbol MAXPATHLEN.
New helper class created to serve it properly.
2. Added exception re-raise semantics.
Syntax: EXCEPTION;
If there was handled exception, re-initiate it, otherwise evaluate to no-op.
3. Implemented run-time exception messages.
Syntax: EXCEPTION <exception_name> [<value>];
If <value> is specified, evaluate it and use instead of RDB$EXCEPTION_MESSAGE.
4. Added new SQLCODE and GDSCODE system variables.
Available in procedures/triggers only.
If there wasn't any exception raised, return zero (success), otherwise return an error code.
5. Implemented ROWS_AFFECTED system variable.
Available in procedures/triggers only.
Count rows affected by the last INSERT/UPDATE/DELETE statement.
For any other statement, result is always zero.
o since the define 'VAX' was only used to tell that the byte order is
LITTLE_ENDIAN (it have nothing else to do with the VAX computer family)
it can safely replaced with '!WORDS_BIGENDIAN'.
o check if pointers are 64 bit
o replaced HAS_64BIT_POINTERS with 'SIZEOF_VOID_P == 8'
The method used to get the derciber for parameters is taken from MAKE_desc_from_list in make.cpp
Example : SELECT CASE FieldA WHEN :param1 THEN 1 WHEN 2 THEN 2 ELSE NULL END FROM TableA
Note : At least one "know describer" must be in the list else no describer could be guested (logic but...) !
in dialect 3 only.
2. BREAK statement has been disabled in triggers (like EXIT) because of the known
BLR limitations. I hope it can be safely used in stored procedures though, hence
I'd prefer to have it officially documented.
3. More complete implementation of the GROUP BY clause. You can group by internal
functions and have ability to use more complex grouping conditions than before.
By Arno Brinkman.
4. Allowed declaring and defining local variables at the same time.
By Claudio Valderrama.
Syntax: declare [variable] <var_name> <var_type> [{= | default} <default_value>]
5. Allowed ordinals to be used in the GROUP BY clause (like ORDER BY).
By Arno Brinkman.
Example: select extract(month from order_date), sum(order_sum) from orders group by 1
6. The first approach to the ALTER VIEW statement. Only high-level implementation so far.
A lot of work in dfw.epp, metd.epp, etc. still required.
By Dmitry Yemanov.