Subject Re: [ib-support] First keyword in Firebird not in InterBase
Author Arno Brinkman
Hi,

> I really would like to know why First is a keyword in Firebird and not
> in InterBase.

with FIRST you can return only the FIRST n ROWS of a select.
SELECT [FIRST n] [SKIP n] ....

For example : SELECT FIRST 5 * FROM TableX
This returns the first 5 records from the select statement.

> This is really not good as I now how to roll back to InterBase instead
> of Firebird.
>
> Why was this done. It is not feasible for me to start changing the names
> of columns in many tables and many db's.
>
> Not to mention if and when I do that I have to go through all my apps.
>
> This is really upsetting me as I was really excited about using
> Firebird, but I feel like the bird just took a huge crap on me.
>
> I use First in storing names like
>
> First,Middle,Last,Suffix.
>
> I have more tables, triggers, and etc. than it is feasible to update.

I would advice you to not use keywords that are reserved by an SQL standard
like SQL-92, SQL-2000

Here is a little paste from the SQL-92 standard :
----------------------------------------------------------------------
<reserved word> ::=
ABSOLUTE | ACTION | ADD | ALL | ALLOCATE | ALTER | AND
| ANY | ARE | AS | ASC
| ASSERTION | AT | AUTHORIZATION | AVG
| BEGIN | BETWEEN | BIT | BIT_LENGTH | BOTH | BY
| CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR |
CHARACTER | CHAR_
LENGTH
| CHARACTER_LENGTH | CHECK | CLOSE | COALESCE | COLLATE |
COLLATION

| COLUMN | COMMIT | CONNECT | CONNECTION | CONSTRAINT
| CONSTRAINTS | CONTINUE
| CONVERT | CORRESPONDING | COUNT | CREATE | CROSS | CURRENT
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_
USER | CURSOR
| DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT
| DEFERRABLE

| DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR |
DIAGNOSTICS

| DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
| ELSE | END | END-EXEC | ESCAPE | EXCEPT | EXCEPTION
| EXEC | EXECUTE | EXISTS
| EXTERNAL | EXTRACT
| FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM
| FULL

| GET | GLOBAL | GO | GOTO | GRANT | GROUP
| HAVING | HOUR
| IDENTITY | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER |
INPUT

| INSENSITIVE | INSERT | INT | INTEGER | INTERSECT | INTERVAL
| INTO | IS

| ISOLATION
| JOIN
| KEY
| LANGUAGE | LAST | LEADING | LEFT | LEVEL | LIKE | LOCAL |
LOWER

| MATCH | MAX | MIN | MINUTE | MODULE | MONTH
| NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO | NOT | NULL

| NULLIF | NUMERIC
| OCTET_LENGTH | OF | ON | ONLY | OPEN | OPTION | OR
| ORDER | OUTER
| OUTPUT | OVERLAPS

| PAD | PARTIAL | POSITION | PRECISION | PREPARE | PRESERVE |
PRIMARY

| PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
| READ | REAL | REFERENCES | RELATIVE | RESTRICT | REVOKE |
RIGHT

| ROLLBACK | ROWS
| SCHEMA | SCROLL | SECOND | SECTION | SELECT | SESSION |
SESSION_
USER | SET
| SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE | SQLERROR |
SQLSTATE

| SUBSTRING | SUM | SYSTEM_USER
| TABLE | TEMPORARY | THEN | TIME | TIMESTAMP | TIMEZONE_
HOUR | TIMEZONE_MINUTE
| TO | TRAILING | TRANSACTION | TRANSLATE | TRANSLATION | TRIM
| TRUE

| UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE | USER |
USING

| VALUE | VALUES | VARCHAR | VARYING | VIEW
| WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
| YEAR
| ZONE
----------------------------------------------------------------------

> So is this a bug or the direction Firebird is heading.

No this isn't a bug as you see.



Regards,
Arno