Subject Re: [ib-support] Help for a new user
Author Paul Schmidt
On 8 May 2002 at 15:57, imsas2002 wrote:

Let me give this a shot, see inline comments below:

> I am new to the InterBase/Firebird database architecture. I have a
> good amount of experience with MSSQL Server. We are planning on
> switching to IB/Firebird from MSSQL for one of our current projects to
> see how things go. I have spent the last 2 weeks or so getting
> acquainted with the new architecture, but I still have a few questions
> that I hope someone can help me with.
> We are using Win2K Server and Win98/Win2K clients.
> 1) I've had some problems with case sensitivity with the DB objects. I
> have also noticed that all compares using string values are case
> sensitive. Should all field names, table names, etcÂ… be upper case?

Firebird has two ways of dealing with this as below:

SELECT FIELD1, Field1, field1, FiELd1 /* all of these are the same */
SELECT "FIELD1", "Field1", "field1", "FiELd1" /* all of these are different */

Most people determine their own convention, for example I do all SQL as
uppercase, then it doesn't really matter. Some tools put quotes around field names
automatically, so you need to be careful with this.

> 2) Is there any way to kill or close a connection manually? What
> happens if a client locks during a request process? Does the server
> (IB/Firebird) cleanup dead or locked connections?

Closing a connection, is normally handled through your DB library, killing a
connection, is handled by the server.

> 3) I've seen some support in some of the dev environments that I've
> demoed for Version History. I have not been unable to find any version
> history support in the documentation. Is this a function provided by
> IB? Or are the dev environments providing it? Version History (row
> version) is a requirement of the project that I will be switching
> over. I have found a work around that will work, but I was just
> wondering if I had missed something.

Not sure what you mean here.....

> 4) Is there any way to gain an exclusive record/table lock? I have a
> table of job numbers that I need to limit exclusive sequential access
> to.

Only by opening a transaction, and updating the record, then holding the transaction
open, however, this only locks it against updates. Folks reading the table, simply
get the old value, until you commit. There is no mechanism that will prevent
reading the values.

Having said this, record locking is usually a bad idea, simply because, you can end
up with 47 users all waiting for a lock to expire, when the application that started it,
was written improperly, so that it never unlocks it. Access is notorious for this,
user1 locks a record, all the users are waiting for the lock to expire including user1
who is trying to lock it a second time.

> 5) Is there any way to determine (from within isql or a UDF) if there
> are any open or pending transactions?

There is an API function that will include some transaction info, some of the access
libraries will make use of this function, getting the info will be documented in the
access library.

> 6) And finally, is there anyway to ping a local lan computer and see
> if it has IB/FB installed?

IB/FB uses port 3050 (usually) so you can always try to telnet that port, or try
opening a database (every server has isc4.gdb).
Paul Schmidt, President
Tricat Technologies