Subject Re: [firebird-support] UDF definition metadata on FB 2.0.3
Author Helen Borrie
At 12:51 PM 17/10/2007, you wrote:

>But shouldn't LOWER be "LOWER"?

If you defined it as "LOWER" then it is "LOWER". The database engine
itself isn't capable of displaying anything on a screen. Did you do
the system table queries?

FYI, if an identifier is created using the double-quotes convention,
it makes the identifier name case-sensitive. By contrast,
identifiers created without the quotes are case-insensitive, i.e.,
regardless of how you state them in your DDL, the engine stores them
as upper-case. The engine will tolerate references to case-sensitive
upper-case identifiers *without* the quoted identifiers, unless the
identifier is also a reserved word.

If you had defined your UDF with quotes, using "lower" instead of
"LOWER", you would see lower in the displays, not LOWER. You could
test the behaviour of your particular toolset by declaring (and
dropping again afterwards) the UDF as "lower" (using quotes).

I'm sure this couldn't possibly be confusing. ;-)


>Anyway, I need to extract the metadata for the complete database, so
>would you expect a tool like IBOConsole to do this correctly?

Tools of the kind that IBOConsole is would be expected to extract
metadata correctly. But "extracting metadata" and "displaying stuff"
aren't the same job. We usually associate "extracting metadata" with
an output script that can be used to reconstruct a database. So look
at the extracted metadata and see what the tools do with the quoted
identifiers. They are right if they put them in for identifiers that
were declared with d/quotes, and wrong if they leave them out.

In addition, it wouldn't be an absolute surprise if IBOConsole gave
you metadata from a Fb 2 database with flaws since, as far as I know,
nobody has compiled that program in recent years. You would want to
be using a build over the underlying IBO version 4.8 data access
components that work with Fb 2 databases. (If you have done such a
build, then it should be reliable; although I don't know that
IBOConsole was ever famous for extracting metadata in a usable order,
i.e., dependency-aware.) If IBOConsole depends on its programmer's
"hard-coded" knowledge of the structure of the system tables then,
theoretically, it would only be "reliable" with a v.1.5 or earlier database.

(I don't know how IBOConsole goes about the task of extracting
metadata, btw. It's a derivative of a really klutzy piece of
programming called IBConsole, written by a Borland trainee and
distributed with the IB 6 beta in the milliennium year. In
converting it to use the IBO data access layer, IBOConsole's author
Lorenzo Mengoni did improve the original code in some places. It was
a long time ago.)

I use IB_SQL (always the latest build) for metadata extraction. the
-x (extract) switch of isql does a good job, too. I just like
IB_SQL's tool because it gives me alerts at the end of the script for
things it is suspicious about. Other utility programs provide
similar tools as well and the same goes for them: make sure you use
a version that supports Fb 2.

./heLen